# NeXtMidas 3.6.3 Release Notes

Changes between release 3.6.0 and 3.6.1 are listed in blue.

Changes between release 3.6.1 and 3.6.2 are listed in green.

Changes between release 3.6.2 and 3.6.3 are listed in teal.

(This release requires Java version 6 (or later) to build and run.)

NeXtMidas SYS Option Tree Tested on: (All tests with Java 6, Java 7, and Java 8, unless otherwise noted (1))
OS Version | Platform | Native Compiler(2) (SYS Option tree) | Web Browser(3) (WebStart/Applet)
--- | --- | --- | ---
RHEL 5u11 | Linux (x86_64) | gcc 4.1.2 / Intel 11.1 / Intel 12.1 / Intel 13.1 | Firefox 38.1.1
RHEL/CentOS 6u9 | Linux (x86_64) | gcc 4.4.7 / Intel 13.1 / Intel 14.0/ Intel 15.0 / Intel 16.0/ Intel 17.0 | Firefox 52.4
RHEL/CentOS 7u4 | Linux (x86_64) | gcc 4.8.5 / Intel 15.0 / Intel 16.0 / Intel 17.0 | Firefox 52.7
Windows 7 SP1 | Windows (x86) | pre-compiled DLLs (gcc 4.8.3) | Firefox 58.0 / IE 11.0.9
Windows 10 Pro | Windows (x86_64) | pre-compiled DLLs (gcc 4.8.3) | Firefox 58.0 / IE 11.0.45
XBC And NeXtOpt Tested on: (XBC - Allows running of X-Midas Fortran/C++ primitives in NeXtMidas) (NeXtOpt - NeXtMidas as an option tree for X-Midas) (All tests with Java 6, Java 7, and Java 8, unless otherwise noted (1))
OS Version | Platform | X-Midas Mode | C/C++ Compiler(2) | Fortran Compiler(4)
RHEL 5u11 | Linux (x86_64) | NeXtOpt (X-Midas 4.10.5) | Intel 11.1 | Intel 11.1
NeXtOpt (X-Midas 4.12.3) | gcc 4.1.2 / Intel 11.1 / Intel 12.1 / Intel 13.1 | Intel 11.1 / Intel 12.1 / Intel 13.1
NeXtOpt (X-Midas 4.14.0) | Intel 13.1 | Intel 13.1
XBC ("64Bit") | gcc 4.1.2 / Intel 11.1 / Intel 12.1 / Intel 13.1 | Intel 11.1 / Intel 12.1 /Intel 13.1
RHEL/CentOS 6.9 | Linux (x86_64) | NeXtOpt (X-Midas 4.12.3) | Intel 13.1 / Intel 14.0 / Intel 15.0 | Intel 13.1 / Intel 14.0 / Intel 15.0
NeXtOpt (X-Midas 4.14.0) | Intel 14.0 / Intel 15.0 / Intel 16.0 | Intel 14.0 / Intel 15.0 / Intel 16.0
NeXtOpt (X-Midas 4.15.0) | Intel 16.0 / Intel 17.0 | Intel 16.0 / Intel 17.0
XBC ("64Bit") | gcc 4.4.7 / Intel 13.1 / Intel 14.0 / Intel 15.0 / Intel 16.0 / Intel 17.0 | Intel 13.1 / Intel 14.0 / Intel 15.0 / Intel 16.0 / Intel 17.0
RHEL/CentOS 7u4 | Linux (x86_64) | NeXtOpt (X-Midas 4.12.3) | Intel 15.0 | Intel 15.0
NeXtOpt (X-Midas 4.14.0) | Intel 15.0 /Intel 16.0 / Intel 17.0 | Intel 15.0 /Intel 16.0 / Intel 17.0
NeXtOpt (X-Midas 4.15.2) | Intel 15.0 /Intel 16.0 / Intel 17.0 | Intel 15.0 /Intel 16.0 / Intel 17.0
XBC ("64Bit") | gcc 4.8.5 / Intel 15.0 / Intel 16.0 / Intel 17.0 | Intel 15.0 / Intel 16.0 / Intel 17.0
(1) Platforms were tested on the latest version of JDK 6 (6.0_45), JDK 7 (7.0_80) and with JDK 8 (8.0_161) and JDK 9 (9.0.1). Note: Limited testing with JDK 9. See Known Third-Party Bugs to see why JDK 8u20 to 8u31 are not supported. The 64-bit version of Java should be used when running on a 64-bit system, early versions of the 32-bit JDK6 were known to have incorrect behavior on 64-bit systems. All tests use the Java VM from Oracle (see http://java.oracle.com/). (2) $NM_CC and $NM_CXX was set to point to the Intel C/C++ compiler (icc and icpc), where applicable. (3) Note: With Firefox, the new (Next-Generation) Java plugin (included with Java 6 update 10 and later) must be used (i.e. $JAVAHOME/jre/lib/i386/libnpjp2.so) for Java applets to work. Please see http://www.java.com/en/download/faq/firefox_newplugin.xml for more details. (4) $NM_FORTRAN was set to point to the Intel Fortran compiler (ifort). Official support for using the Portland Group (PGI) Fortran compiler with XBC and NeXtOpt has been discontinued due to limitations related to multi-threading and use on 64-bit systems. (5) Java 8 / JDK 8 and Java 9 / JDK 9 are not available for Solaris on SUN/SPARC 32-bit platform.

#### Online Documentation

- `Via Web Browser: $NMROOT/htdocs/help/index.html
  (Now includes the NeXtMidas Training Class and an updated version of the NeXtMidas User's Guide.)`

#### Java 6 Migration

- Since Java 6 and later performs additional error-checking during compilation, some users may see "new" warning messages printed when their option trees are compiled. These warnings are normal and fixing them can usually be done in a way that does not impact portability of the option tree (i.e. the warnings can be addressed without losing the ability to run under older NeXtMidas/Java versions).

#### What Might Break (Changes in Behavior)

BUILD | - | In 3.5.0, when building native code in an option tree, it's inc area (path) is now specified before the build flags specified in build.props (i.e. before the $NMROOT/nxm/sys/inc and $NMROOT/nxm/xbc/inc include paths). This is not expected to impact many users (if any). See DR 836253-1 for details.
| - | In 3.5.0, when building native code, the link flags are now specified after the object file, so that libraries specified via -l<libname> option (i.e. -lm) are in the proper order so that the linker can properly resolve all references and use the most optimal mechanism. This is not expected to impact many users (if any). See DR 808736-3 for details.
| - | In 3.5.3, the -source 1.6 and -target -1.6 javac flags have been removed from build.props for user option trees. To properly support the lowest desired Java version, build with the lowest desired JDK. The rationale for this because building with JDK 7 or JDK 8 and targeting Java 6 platforms will NOT be 100% backwards compatible unless you also have JDK 6 on the build machine and the proper build flags set (not set by default). See DR 845590-1 for details. If a lower target Java version (e.g. JDK 7) is desired after NeXtMidas was built with a later Java version (e.g. JDK 8): 1. It is recommended to extract from tarball or zip and build with desired JDK (e.g. JDK 7). 2. If that is not possible, then here is a workaround to "downgrade" target Java version in a built NeXtMidas 3.5.4+ baseline: `a. nm make clean b. nm make all` -or- in a NeXtMidas 3.5.3 baseline an additional step (a0) is necessary: `a0. nm make boot a. nm make clean b. nm make all`
| - | In 3.5.3, the default Fortran compiler was changed to ifort (from pgf77), since the Portland Group's compilers are NOT officially supported in NeXtMidas for use in XBC since NeXtMidas 3.2. This also effects NeXtOpt (X-Midas) users, which still supports pgf77 at this time, but the community has mostly transitioned to the Intel compilers and official support for PGI compilers will be phased out in X-Midas in 2015. To revert to using pgf77, either set NM_FORTRAN or XM_FORTRAN environment variable to "pgf77". See DR 847235-1 for details.
Convert / Datalist | - | In 3.5.0, a fix was made to correct behavior in which Scalar Packed data was being wrongly displayed in LIST and DATALIST. This only occurred when the data in the message did not match the OS in terms of Endianess. Some users who expect the data represented the incorrect way will notice a change. This is not expected to impact many users (if any). See DR 813135-1 for details.
DataFile | - | In 3.5.4, nxm.sys.lib.DataFile.setRecordDefs(Table defs) was updated to use the "NAME" key in the definition table (if it exists) over the key name containing the definition table when setting the record name. This is not expected to impact many users (if any).
DUAL5000;UCL | - | In 3.5.2, /LTC and /LTCTOL will now work (i.e. It is now possible to enable light time correction).
FCALC | - | In 3.5.1, a fix was made allow FCALC to have a constant as its first input value, rather than requiring the first input to be a file. Also as part of this change, only the data needed to perform a calculation is read and processes (with a combination of a large file and small file, and also in cases with a file with a size that was greater than one Transfer Length and not a multiple of the Transfer Length). Integer DIVIDE Operations (TYPE=L) now no longer automatically give divide by 0 errors in these cases. Another behavior change is that operators with 3 inputs can now work properly with 2 of their 3 inputs being constants.
FNAME | - | Since 3.5.4, specifying the WRITE AUX (for AREA and OPT) will now give a fully resolved path, rather than giving a path with an AUX name.
GCONTROL TVAL | - | In 3.5.1, the default INCrement for TVAL is now 1 second as opposed to (MAX-MIN)/20. See DR 667208-19 for details.
HEADERMOD | - | In 3.5.2, HEADERMOD now throws an Exception when given an invalid single character tag and when given the invalid tag REL (e.g. HEADERMOD ram:junk t=2000 or HEADERMOD ram:junk REP=IEEE), rather than failing silently.
IF/ASSERT OEQ | - | In 3.5.1, object equivalence tests for BaseFile now default to OEQ/S/D/H and tests for DataFile now default to OEQ/S/D/H/K. This is to allow the use of file size as a simple hashcode, and to follow the Java Object's equals-hashcode contract. See DR 838872-1 for details.
IF/ASSERT CONTAINS | - | In 3.5.4, the `CONTAINS` test now supports any Object (A) that implements the java.util.Map interface, such that if key (B) is found in the Map (e.g. Hashtable, HashMap, etc.), it will return true. Previously, this test only supported nxm.sys.lib.Table so any other Object (A) results in false. See DR 819382-3 for details.
IF/ASSERT EQS | - | In 3.5.4, the /CS switch for string comparison tests (e.g. EQS, EQSS, STARTS, ENDS, etc.) is parsed via Args.getState(..) vs Args.isPresent(), so when /CS=false is specified, it will NOT do a case-sensitive string comparison test.
Args | - | In 3.5.0, command line argument parsing (i.e. in nxm.sys.lib.Args.resolveString()) no longer uppercases quoted strings parameters during on-the-fly method invocations on result variables. This is the correct behavior and effects the ASSERT, IF, SET, and RESULTS commands. See DR 837983-1 for details.
Drawable | - | In 3.5.4, new methods were added to the nxm.sys.inc.Drawable interface. All of these new interface methods are implemented in nxm.sys.libg.Layer and nxm.sys.libg.Feature, so sub-classes of Layer or Feature should generally only require a recompile.
KeyObject | - | In 3.5.2, setIndex now throws an Exception if the object is not indexable, rather than failing silently.
| - | In 3.5.2, setKey now throws an Exception in all cases where it is given an invalid key. Previously, some rare cases failed silently.
Layer | - | In 3.5.2, in nxm.sys.libg.Layer both the field "ref" and the return type of the method getRef() now are the type MidasReference rather than Object. Generally this just requires a recompile.
PANEL | - | In 3.5.4, the PUSHPOP icon has been changed from the Shaded 'X' to North-East and South-West arrows. To revert to the old (deprecated) behavior, set the system property BUGFIX.PLOT_PANEL_REVERT_TO_SHADEDX_PUSHPOP_ICON to true. See DR 849607-1 for details.
PLOT | - | In 3.5.3, LayerWMS.setLayers(String list) no longer supports the undocumented option to use space as a delimiter. Use commas as the delimiter. To revert to the old (deprecated) behavior, set the system property BUGFIX.PLOT_LAYERWMS_ALLOW_SPACE_AS_DELIMITER to true or set the AllowSpaceAsDelimiter property of the WMS layer to true before setting the layer list, e.g. {LT="WMS",URL="...",AllowSpaceAsDelimiter=true,Layers="..."}. See DR 846472-1 for details.
| - | In 3.5.4, Feature.isType(..) was updated to support automatic-translation between HLINE/VLINE and XLINE/YLINE, returning true as appropriate. Prior versions only looked for an exact match and returned false when the analogous setting was specified. See nxm.sys.libg.Feature for details.
RESULTS | - | In 3.5.4, adding multiple additional layers to a table without adding the root layers first will now result in an ERROR (unless the switch /ADDROOT is used). Previously this failed silently. (example: "nM> newtable.a.b 3" will now give an ERROR, unless newtable.a already exists)
TIMEX / Time | - | In 3.5.1, many of the nxm.sys.lib.Time / TIMEX methods were affected by a change that now truncates (rather than rounds) fractional digits to the highest number of supported digits. This change affects the Time methods getSoD() and getSoY() and the methods that use them (getFoD(), getHour(), getMinute(), getSecond(), getDoY(), getMonthIndex(), getMonth(), getMonthName(), getMonthTrigraph(), and toQuadwords()) and makes it so the return values are valid and consistent with each other even in high precision cases. A correction was also made to the hour field of Time code that returns human readable Time strings. See DR 839864-1 for details.
| - | In 3.5.4, nxm.sys.lib.Time and hence TIMEX, was updated to always output ISO8601 time format using full date and time output. So time values less than 86400 seconds (i.e. less than one day) will now display as 1950-01-01THH:mm:ss.SSSZ vs HH:mm:ss.SSSZ in NeXtMidas 3.3.0 to 3.5.3. This also results in an input time string of "24:00:00Z" to be outputted as "1950-01-02T00:00:00Z" vs the original input string for ISO8601 format. Parsing of ISO8601 time strings still supports it without the date. See DR 850797-1 for details.
XGEOPLOT | - | In 3.5.1, when XGEOPLOT processes a T5REC message the default is now merging Point properties rather than setting/overriding Points. To revert to the old behavior, set the system property BUGFIX.XGEOPLOT_T5REC_MSG_MERGE_PROPERTIES to false.
Classes removed | - | Deprecated classes that have been removed: `nxm.sys.libg.MText -> use nxm.sys.libg.MJText instead tools.DRManager -> not used and was always internal use only`
Methods/Fields removed | - | Deprecated methods/fields that have been removed/changed: `nxm.sys.intr.Environment.getServer() -> meant to be private, use "ENV GET SERVER <results_label> nxm.sys.lib.Cache.LFU -> not implemented nxm.sys.lib.Cache.SLFU -> not implemented nxm.sys.lib.Convert.type(Object,...) -> use type(byte[],int,byte,byte[],int,byte,int) instead. nxm.sys.lib.Privileges.getPrivName(..) -> not used`

#### New Features Added

New Commands | - | COPYHEADER;UCL - Copies BLUE file headers with zero-ed data values. See explain file for details.
| - | UPRIGHTSPECTRUM;DSP (Beta Version) - Uprights inverted data based either on the BLUE Keyword SNAP_SPECTRAL_SENSE, the Platinum Keyword DATA_INVERSION_FLAG or a /FORCEINVERSION switch. See explain file for more details.
Macro/Shell Enhancements | - | New switch (/CMDRUNMODE=) that can be used to alter how a command is executed. See SWITCH explain file for details.
ASSERT/IF | - | Added support for STARTS [with] test as a counterpart to the existing ENDS [with] test. See IF explain file for details.
| - | In 3.5.4, added support for any Object that implements java.util.Map interface on the `CONTAINS` test with new `CONTAINS/K` alias (for contains key). For example, this allows to check if a java.util.Hashtable contains a particular key (Object). When the specified Map is not a Table, the key is NOT converted to a String to allow checking if keys exists in Maps that are NOT keyed by Strings. See IF explain file for details and/or DR 819382-3.
| - | In 3.5.4, new `CONTAINS/V` test to is if a value exists in specified java.util.Map (e.g. Table) object. This return the results of Map.containsValue(Object), which does an Object equals comparison on the value. See IF explain file for details and/or DR 819382-3.
CONVERT | - | Users can now specify start, stop, and delta time for the SVINERP function using the new TIMESPEC keyword only parameter. See CONVERT explain file for details.
| - | In 3.5.4, the BLUE2XML and XML2BLUE functions where added to convert a Midas BLUE file to XML (text file or results String) and from that XML (file or results String) back to a Midas BLUE file. See the CONVERT explain file for details.
| - | In 3.5.4, the FILE2XML function was added to convert a file (BLUE, CSV, e.g. any file that implements ListFile or PlotFile interface) to XML (file or results String). See the CONVERT explain file for details.
ENVIRONMENT | - | In 3.5.2, a simple case-insensitive string filter can be specified to search for Java system property names and values, via ENVIRONMENT SHOW PROP <filter>.
FNAME | - | Since 3.5.4, specifying the WRITE AUX (for AREA and OPT) will now give a fully resolved path, rather than giving a path with an AUX name.
GENERATE | - | Added support for allowing a customized Keystore when creating, bundling and signing JAR files. See GENERATE explain file for details. In 3.5.2, custom jarsigner options can be specified: 1. in build.props via the "jarsigner.flags" property (lowest precedence), 2. via <keystoreTbl> argument with "MOREOPTIONS=" key, 3. via /SIGNOPTIONS= switch (highest precedence).
MidasToJavaLogger | - | Since 3.5.4, NeXtMidas can send its messages to the java.util.logging.Logger, based on the presence of a supplied Java logging.properties file. This code will support filtering based on message levels (SEVERE,WARNING,INFO) but will report all NeXtMidas messages as coming from "nxm.sys.lib.NeXtMidas". See API docs for details.
PANEL | - | In 3.5.4, Added new PUSHPOP icon (NE and SW arrows) and the ability to have a second custom icon to the left of the PUSHPOP icon. The custom icon can be the Shaded 'X' or any Symbol supported by the nxm.sys.libg.Symbol class (includes all single characters, ARROW, DIAMOND, CIRCLE, etc.). Also added the ability to choose the action(s) of these icons. The PUSHPOP icon's action(s) can be either PUSHPOP, send a PUSHPOPCLICKED Message, or both [DEFAULT = PUSHPOP]. The custom icon's action can be to either auto-CLOSE the graphical command in that Pane and the Pane, send a CUSTOMICONCLICKED Message, or both. The custom icon of SHADEDX (shaded 'X') has the default behavior of auto-CLOSE, whereas all the other custom icons have a default behavior of no action. Note: A temporary measure is in place to revert back to the old Shaded 'X' for the PUSHPOP icon using the system property BUGFIX.PANEL_REVERT_TO_SHADEDX_PUSHPOP_ICON. See the PANEL explain file or DRs 849606-1 and 849607-1 for details.
PLOT | - | Added the BaseLayer concept. Users can now set any Layer to be the PLOT base layer. The Base Layer is used to determine the View, Mode, and Units of the Plot. See DR 813238-3 for details.
| - | In 3.5.2, added support for /OPENWARN=<mask>, where mask is formed from NONE, PRINT and POPUP, to allow user to control where warning messages are displayed when a file can not be opened.
| - | In 3.5.2, added support for Keyword Only Parameter BUTTONWARN={LMB=<act>,MMB=<act>,RMB=<act>} to allow user to control the action taken when the LMB, MMB, or RMB is clicked. The actions can be "DEFAULT","NONE","MENU","MARK"/"MARK_MESSAGE",or "UNZOOM".
| - | In 3.5.3, LayerWMS supports displaying a layer with a space and other non-ASCII characters in it's name. See DR 846472-1 for details.
| - | In 3.5.3, LayerT5 supports the ability to select what color a selected point becomes. See DR 781220-17 for details.
| - | Since 3.5.4, the original MouseEvent, generated by a user interacting with the Plot, is saved in a table in the "quals" field of the Plot Message under the key ORIG_MSG_DATA. See DR 819394-3 for details.
SEDIT | - | Added support for NSEArch, STARTSwith, and ENDSwith. Extended NELements to support full string delimiters. See explain file for details.
TABLE | - | In 3.5.3, support was added for T:.. times in tables to be coverted to Time objects. Previous behavior was a NPE and before that a "NULL" string.
| - | In 3.5.3, support was added for serialization of Time objects in tables to T:yyyy:MM:dd::HH:mm:ss.SSSSSSSSSSSS time strings using the new Table flag SerializeTimeAsTColon.
THEME | - | In 3.5.3, added support for new Gear4 which is the same as Gear3 except widget highlight is a slightly brighter blue.
TIME/TIMEX | - | In 3.5.2, added support for new Time format FULL_STD, that always outputs the full yyyy:MM:dd:HH:mm:ss:SSS, even when the time is one day or less.
| - | In 3.5.2, added support for an enhanced simpleDateFormat that allows up to femtoseconds to be specified for outgoing TIME and TIMEX time strings and for incoming TIMEX time strings. A grouping of 3 or less Ss in a simpleDateFormat is still interpreted as milliseconds, but groupings of 4 or more are interpreted a digits of fractional seconds.
| - | In 3.5.3, added support for T:... time as acceptable incoming STD format.
Transform/GeodeticUtil | - | In 3.5.3, added new utility methods to nxm.sys.lib.Transform.java and nxm.sys.lib.GeodeticUtil.java. See API docs or DRs 843929-1 and 843930-1 for details.
XBC | - | Added support for following UTILITIES (SEDIT) APIs: M$ELEMENTS, M$ENDSWITH, M$NELEMENTS, M$NFORMAT, M$NSEARCH, M$RANGE, M$STARTSWITH and M$WORD.
XGEOPLOT | - | When processing a T5REC message, an index=0 now means ALL Points. This matches X-Midas's XGEOPLOT behavior. Point properties are now merged as the default (see What Might Break). See DR 815442-3 for details.
Libraries | - | Cache - added AUTO (non thread-safe) and SAUTO (thread-safe) cache types to automatically used internal cache size limit algorithm that performs best in most scenarios. See nxm.sys.lib.Cache for details.
| - | LayerDrawable - New layer supporting a set of layers or features. See nxm.sys.libg.LayerDrawable for details.
| - | MidasReference - See nxm.sys.inc.MidasReference and/or DR 836168-1 for details.
| - | ProvisionalUseOnly - New annotation used to mark new APIs that are intended for evaluation purposes and have provisional-support as they may change in upcoming beta series based on user feedback. See nxm.sys.inc.ProvisionalUseOnly for details.
| - | Table - In 3.5.4, Table.Iterator has a new reset() method for multiple use scenarios and implements java.lang.Iterable interface so it can be used in Java 5+ For-Each loops. See nxm.sys.lib.Table for details.
| - | Time - Added support for converting to/from Calendar and XMLGregorianCalendar formats. See See nxm.sys.lib.Time and/or DR 667186-19 for details.

#### Known Third-Party Bugs

The following are known third-party bugs and limitations that may cause problems for NeXtMidas users.

Java | - | On 2011-February-08, Oracle released a patch to correct Security Alert CVE-2010-4476 (Java Runtime Environment hangs when converting some floating point strings to a binary floating-point number). This vulnerability affects all (non-patched) versions of the Java Development Kit / Java Runtime Environment prior to version 6u24. Please correct this vulnerability on your system by running the Floating Point Updater patch, or, by upgrading to Java 6u24 or later releases.
Java Plug-in 8, 7u60 to 7u75 | - | The Oracle Java plug-in (for running Applets) for Mozilla (Firefox) is broken in Java 8, 7u60, 7u65, 7u67, 7u71, 7u72, and 7u75 on RHEL/CentOS 5. Java 7u55 and prior are unaffected. It is fixed in Java 8u5 and Java 7u76. It affects BOTH 32-bit and 64-bit Java versions on RHEL 5. This is not an issue under RHEL/CentOS 6. See Java Bugs JDK-8047710 and JDK-8029314 JDK 8 / OEL 5.x: Java Plug-in needs libstdc++.so.6(GLIBCXX_3.4.9) for more information.
JDK 8u20 to 8u31 | - | The Java Development Kit 8u20, 8u25, and 8u31's javac has a bug that prevent it from being used to build/compile the NeXtMidas baseline. This is not an issue in JDK 8u11 and prior. It is fixed in JDK 8u40. This only affects build time, Java 8 can still be used for runtime. See Java Bugs JDK-8058511 and JDK-8062272 StackOverflowError at com.sun.tools.javac.code.Types.lub for more information.
OpenJDK | - | When using OpenJDK,some users have experienced minor graphical glitches in NeXtMidas GUIs, as well as issues with monospaced fonts not actually being monospaced (which is an issue when OpenJDK is coupled with certain installations of RHEL).
PLOT | - | There is a rendering problem when PLOT is run from a Linux session inside VirtualPC on Windows XP. This appears to be a problem with graphics drivers in some versions of VirtualPC. We have been unable to duplicate the problem on a stand-alone installation of either Linux or Windows XP.
SOURCEDG SINKDG | - | SOURCEDG/SINKDG running on Red Hat Enterprise Linux 4 (RHEL4) and later with dual IPv4 and IPv6 network stacks may encounter BindExceptions and/or SocketTimeoutExceptions due to a bug in the IPv6 stack on RHEL4 (see Java Bugs 6347853 and 6218155). You can avoid this issue by forcing Java to use the IPv4 stack (just do a "`setenv NM_USER_JVM_FLAGS -Djava.net.preferIPv4Stack=true`" prior to running nmstart).
XBC | - | Building static libraries with both the -fPIC and -i-static flag is still "experimental" in the Intel 9.1/10.x/11.x Fortran compiler (see thread 30222879 on the "Intel Software Network Forums" for details). In practice, this only appears to affect users on 64-bit systems. As a work-around only builds on 32-bit machines include the "-i-static" flags in "ifort.comp.append.32bit" and "ifort.link.append.32bit" properties in $NMROOT/nxm/sys/cfg/build.props. On 64-bit platform, the compiler will default to dynamically linking the Intel runtime libraries, so users will need to run with the LD_LIBRARY_PATH environment set to include the Intel libraries installed location.
| - | The Intel C/C++ prior to 11.1.059 (update 3) has a bug that causes the BUILD of C++ HOST primitives that access the Mu pointer to fail with an error message like: "(0): internal error: 0_1561 ... compilation aborted for $NMROOT/nxm/xbc/host/test_mu_okio.cc (code 4). ". The Intel compiler has a bug in compiling code that access a thread local storage constant pointer (which is the definition of the Mu pointer). See Intel issue DPD200138828 at http://software.intel.com/en-us/articles/intel-professional-edition-compilers-111-fixes-list/. GCC does not have this bug. To workaround this Intel compiler bug (by not making the Mu a const pointer), define _WORKAROUND_INTEL_COMPILER_ERROR_0_1561 in your build.props (e.g. "native.lin.cflags.append=-D_WORKAROUND_INTEL_COMPILER_ERROR_0_1561") or directly in the C++ source file.
| - | There is a known issue running OpenMP in NeXtMidas. To workaround uncomment additional properties [ifort.libs.dir] and [ifort.openmp.workaround] in the SYS build.props. [ifort.libs.dir] is the path to the Intel compiler directory. [ifort.openmp.workaround] appends the necessary flags to the compiler however the library reference must be adjusted to reflect the respective Intel compiler version (if using Intel 12.x or later use -liomp5 otherwise use -lguide the current default). See the Users Guide or the example in the XBCTESTOPT2 option tree at $NMROOT/nxm/xbc/test/nmopts/nxm/xbctestopt2 .
VNC | - | It has been noted by users that NeXtMidas will not function in a VNC session if the -depth option is set to 32. 32 is an invalid color depth, valid -depth option settings are 8, 16, and 24. We recommend the default -depth setting of 16.
Windows | - | There is a known issue related to Windows Direct3D when combined with certain hardware profiles and JDKs. This results in severe performance issues with plots, causing sluggish performance, blank plots, and CPU spikes. This is especially true in JDK 7. The workaround is to disable the Direct3D support in java via the environment variable NM_USER_JVM_FLAGS=-Dsun.java2d.d3d=false).

#### Known Issues

StateVector | - | The CubicHermite (the default in NeXtMidas 3.2) and QuinticHermite (optional in NeXtMidas 3.3) interpolation options do not appear to be working properly, particularly at the first and second derivative. At this time it has not been confirmed if the issue is due to a bug in the interpolator or just the results from using bad test data (i.e. sv1.prm which came from X-Midas). This affects both the StateVector library and the SVINTERP function in CONVERT which uses it. The suggested work-around is to use the Linear interpolation option until this issue is resolved.
CALL | - | A SUBROUTINE does not have limited scope, scope is the same as procedure.
CONVERT | - | Tables created by the XML2TBL function may appear to "drop entries" when dereferenced. Since XML2TBL is deprecated, this will not be fixed, use the XML2TAB in place of XML2TBL.
GCONTROL | - | Some controls do not support headless mode.
LIST2 | - | The table for a /LEGACY select message may contain "extra" fields.
| - | Row/cell selection is undefined when listing a pipe.
| - | Type 2000 files with very large frame size may not load properly.
NeXtOpt | - | NeXtMidas commands run from inside an X-Midas macro (specifically when using PIPE or XPIPE) may exit prematurely. For example a NeXtMidas intrinsic run from the INITIALENTRY of a controls section can cause the pipe to stop prematurely.
| - | May get warnings about problems mapping to the messages section if the X-Midas message queue is not up.
| - | Timecode readout for large Type 2000 may give t=00:00:00.
Webstart | - | Oracle has been making frequent changes to the security restrictions for Web Start and Applets. Since Java 7u45, users may have to import a public certificate via the jconsole application in order to prevent Web Start application failures. See the Building Web Start Applications section of the User's Guide for details. In addition, as of JDK 7u51, you may see warnings related to jar file signing such as "No -tsa or -tsacert is provided and this jar is not timestamped." These warning do not impact NeXtMidas.
XBC | - | XBC does not support running two copies of the same command simultaneously.
| - | Do NOT use "-check all" with the Intel compliers because some of the legacy fortran libraries make assumptions that are incompatible with "-check all" causing unnecessary aborts (SEGFAULT).

#### Bugs Fixed

All NeXtMidas issues and enhancements are tracked using a bug tracker/database. GForge DR number is included for all customer-submitted bugs. GForge entries are listed "n/a" for bugs that are duplicates or internal use.

Bugs Fixed in Release 3.6.3 (dd Mmm 2018)
JIRA Issue | GForge DR | Description
NXM-#### | TBD | TBD
Bugs Fixed in Release 3.6.2 (11 Apr 2018)
Jira Issue | GForge DR | Description
NXM-2954 | 821362-3 | fcalc does not operate in piped mode
NXM-3007 | 862233-1 | Keywords: Putting keywords fails
NXM-3034 | 822618-3 | PLOT: GEODETIC view panning, dragging broken
NXM-3085 | 823964-3 | handlers.tbl needs https RESOURCE entry
NXM-3119 | 872677-1 | Table.toStringBuffer needs to properly handle Windows File Objects
NXM-3140 | 825201-3 | GeodeticUtils.computeDistance(Position,Position) is wrong
Bugs Fixed in Release 3.6.1 (29 Feb 2016)
Jira Issue | GForge DR | Description
NXM-2369 | 806477-3 | (BUG 2457) Plot: invoking closeFile(..)/openFile(..) causes frequent NullPointerExceptions
NXM-2758 | 841173-1 | (BUG 2850) File Write/Read Not Propagated (Small patch in TextFile close method.)
NXM-2777 | 839462-1 | (BUG 2869) HEADERMOD does not support T=<file type> (correction to error/warning messages for HEADREP=)
NXM-2898 | 820601-3 | (BUG 2992) PLOT: x-cut plot should plot with same mode as original raster; complex mode parameter added.
NXM-2807 | 850020-1 | (BUG 2899) DSP: Need support for Platinum keyword DATA_INVERSION_FLAG (e.g. UPRIGHTSPECTRUM command)
NXM-2809 | 850525-1 | (BUG 2901) PLOT / Layer2D: Autoscale stops working after an extreme value (partial fix capping large values to avoid them being stored as INFINITY in the float buffer)
NXM-2828 | 851099-1 | (BUG 2920) Pipe.java: add try-catch to write method (include pipe name in details when exception occurs)
NXM-2846 | 853503-1 | (BUG 2938) Table.toBytes() ClassCastException when has Hashtable entry that has non-String as a key
NXM-2866 | 852659-1 | (BUG 2958) DataFile: getData(offset,fieldNum) does not return/read all data in Type 6000 when num_elts > 1 (fixed convertRecordRep(..) and read(Data,elements))
NXM-2879 | 854356-1 | (BUG 2973) NmMake.java resource leak in copyFile method
NXM-2889 | 854527-1 | (BUG 2983) ARCHIVE: NPE during ON function when unable to open log file for output
NXM-2902 | 855052-1 | (BUG 2996) DEFAULTS: Ignored bad input (e.g. non-existent command)
NXM-2905 | 855277-1 | (BUG 2999) GENERATE: NPE when trying to SIGN jar file
NXM-2912 | 856456-1 | (BUG 3006) nm make clean should not re-run user's nmstartup.mm on Unix (since nxm354)
NXM-2915 | 856457-1 | (BUG 3009) Keywords: set method does not convert byte order after first element
NXM-2933 | 857485-1 | CONVERT / StateVector: sv2blue(..) stack trace when using PLATINUM input file
Bugs Fixed in Release 3.6.0 (10 Sep 2015)
Bug Number | GForge DR | Description
2863 | 847095-1 | JarResource.exists() memory leak (added DISABLEUSECACHES qualifier to workaround java open file leak for non-existent file)
2892 | 849196-1 | GCONTROL: Not able to refresh (update) disabled items in a CHOICE
2894 | 849529-1 | PLOT: regression due to adding Base Layer concept causes Layers to not display properly
2903 | 850719-1 | BLUE to XML Conversion (additional mods for type 1000 and 2000 (for 'A' format type) and 6000 files)
2911 | 851148-1 | LAYER: NullPointerException if NAME= and/or (TABLE) are omitted
2914 | 851149-1 | FEATURE: VBAR and BOX differ by 1 pixel
2921 | 851100-1 | SOURCEDG (commented out one line in setFille(boolean) per user request)
2922 | 852074-1 | Shell: Need option to run primitive to completion even if in pipe section
2928 | 851532-1 | Support using NeXtMidas from bash with "experimental support"
2948 | 852396-1 | MJText/SHELLGUI: ArrayIndexOutOfBoundsException due to array holding screen row to text line information not getting resized
2954 | 852656-1 | test6000.prm contains invalid NUL chars in SUBREC_DEF keyword
2955 | 852593-1 | MAKE: CLEAN doesn't work for user option trees
2957 | 852657-1 | DataFile: setRecMinimum and setRecMaximum incorrect in minval and maxval fields in subrecord def for Type 6000 files
2958 | 852659-1 | DataFile: getData(offset,fieldNum) does not return all data in Type 6000 when num_elts > 1
2960 | 853347-1 | DataFile: getRecordDef does not return all fields in Type 6000 subrecord definition
Bugs Fixed in Release 3.5.4 (06 Jul 2015)
Bug Number | GForge DR | Description
2863 | 847095-1 | JarResource.exists() memory leak
2870 | 845497-1 | NeXtMidas needs to interoperate with Java logging tools
2879 | 845435-1 | STATUS: /D option prints out-of-order in a pipe
2893 | 851477-1 | THEME: add Gear4 with slightly brighter blue for widget highlight color
2895 | 849606-1 | PANEL: facilitate closing of embedded graphical command in a Panel
2896 | 849607-1 | PANEL/MWindow: change icon of popout (from current X) to something more meaningful
2897 | 781534-17 | Web Start not working with icedtea-web/OpenJDK (Temporary workaround for this icedtea issue)
2899 | 850020-1 | DSP: Need support for Platinum keyword DATA_INVERSION_FLAG (e.g. UPRIGHTSPECTRUM or INVERT_SPECTRUM command) (initial patch included)
2902 | 852162-1 | GENERATE: stop making native jars when option tree does not have native files
2903 | 850719-1 | BLUE to XML Conversion (User provided code included) (Provisional / Beta)
2904 | 851484-1 | upgrade JUnit test library to 4.12
2907 | 851487-1 | update Table.Iterator to implement Iterable and to be resetable
2909 | 851481-1 | PANEL configuration mode: deleting a line results in PANEs having invalid line references
2910 | 851146-1 | PLOT: MIMIC capability should be available to users
2912 | 850797-1 | Time: Support "FULL" option for ISO8601 time format
2913 | 851145-1 | LayerDrawable: Allow selection by position
2915 | 851156-1 | FEATURE: VBAR and HBAR don't draw on their own
2918 | 850721-1 | PLATINUM to BLUE keyword conversion (User provided code included) (Provisional / Beta)
2919 | 850517-1 | XBC: M$GET_EPOCH logic error in utilities.for
2920 | 851099-1 | Pipe.java try-catch
2921 | 851100-1 | SOURCEDG / DatagramData, SINKDG / dgnetsend to support encryption, compression, and/or signing
2923 | 851488-1 | upgrade Apache Commons Net library to 3.3
2927 | 819394-3 | PLOT: Original Mouse Event Data Needs to be Saved
2929 | 851757-1 | Table: AddRoot and RESULTS/ADDROOT does not work as documented
2931 | 819382-3 | If CONTAINS does not handle java.util.Map (e.g. Hashtable) correctly and CONTAINS/V
2937 | 852216-1 | IF /CS switch should do getState(..) vs isPresent(..) in Args.logicalTest()
Bugs Fixed in Release 3.5.3 (30 Mar 2015)
Bug Number | GForge DR | Description
2783 | 836577-1 | MAKE / BUILD: JDK 8 Integration
2857 | 817445-3 | Layer1D / PLOT: y-axis scaling when values contains +/- infinity or values greater/less than float max (~3.4e38) / float min
2863 | 847095-1 | JarResource.exists() memory leak - initial fix
2872 | 842722-1 | MSGLOG/MJText: not displaying last line
2873 | 843930-1 | Transform: Missing functionality
2874 | 843929-1 | GeodeticUtil: Missing functionality
2875 | 843928-1 | MColor: Constants for Type 5000 color flags and commonly used Colors
2876 | 843173-1 | Table: Regression causes NPE when a Table has a key with a value T:...
2878 | 845813-1 | UNITTEST TimeTest bad test case causes test failure
2880 | 846472-1 | LayerWMS should support layers with a space in their name
2881 | 846639-1 | XGEOPLOT: NPE on debug message without a from object
2882 | 845590-1 | BUILD: Remove -source and -target from default build properties
2883 | 818116-3 | Table.loadOpalTable needs to handle a T: as times
2884 | 847235-1 | BUILD: change default Fortran compiler to ifort (from unsupported pgf77) for XBC / NeXtOpt
2887 | n/a | SHELLGUI: ArrayIndexOutOfBoundsException on text selection after paging
2888 | 781220-17 | Add ability to set selectColor in LayerT5
2891 | n/a | PANEL: window title does not use macro name with /TSETUP switch
Bugs Fixed in Release 3.5.2 (31 Dec 2014)
Bug Number | GForge DR | Description
2337 | 843620-1 | PLOT LayerGrid ArrayIndexOutOfBoundsException
2773 | 814031-3 | XBC: Handle negative values returned when data is represented in BITs instead of BYTEs in M$ADDT6SUBR, M$ADDSUBR, M$ADDCOMP, & M$HCBFUNC
2828 | 836164-1 | Missing Functions in NeXtMidas.java
2857 | 817445-3 | Layer1D / PLOT: y-axis scaling when values contains +/- infinity or values greater/less than float max (~3.4e38) / float min
2858 | 843188-1 | PlotCanvas: colors not correct for line, circle, or ellipse (regression)
2859 | 842857-1 | Need to exclude Git and Mercurial directories when making JAR files
2862 | 667296-19 | Time: Regression in parsing string using FILENAME format with no fractional seconds
2864 | 841956-1 | Time will not output standard format
2865 | 843388-1 | MPLOT: Increase double click timeout default
2866 | 844403-1 | StateVector computeMeasurements NEVER executes light-time correction code - partial fix
2867 | 816865-3 | PLOT: need to be able to suppress File not found popups
2868 | 816527-3 | PLOT: need option to get button presses from plot
2869 | 839462-1 | HEADERMOD does not support T=<file type>
2871 | 844404-1 | StateVector.java computeMeasurements does not allow disabling of light-time-correction code - partial fix
Bugs Fixed in Release 3.5.1 (26 Sep 2014)
Bug Number | GForge DR | Description
2782 | 838874-1 | IF FEQ always returns true for two different (valid) JNLP files
2816 | 836168-1 | Confusing use of "Midas reference" in file I/O
2823 | 815442-3 | XGEOPLOT: LayerT5 does not allow control of individual plot color without FLAG component
2833 | 667199-19 | Convert.o2x losing precision for numbers > 2^53
2835 | 839459-1 | Help / search (local) applet does not run b/c of same-origin policy in Firefox 24
2836 | 839460-1 | document COTS issue for Java 7u60 and 8 Plug-ins on RHEL 5 for Applets
2837 | 838873-1 | DataFile.getExtended() incorrectly scoped
2838 | 667208-19 | gcontrol tval max val should default to -1 and increment to 1
2839 | 667202-19 | gControl disableItem() affects default value
2840 | 838872-1 | Missing BaseFile.hashCode() and DataFile.hashCode() methods
2844 | 839461-1 | UPDATE: errors with ArrayIndexOutOfBoundsException when trying to add a new command to some user's option tree
2846 | 840806-1 | FILE: cannot open 7.0 or 6.0.10 JNLP files
2848 | 840800-1 | Native alloc/free functions
2849 | 839864-1 | Time: getSoD() & getSoY() rounding results in invalid time & getSoD needlessly losing precision
2851 | 840983-1 | TextFile and DataFile deprecated constructors broken in 3.5.0
2852 | 667211-19 | FCALC's "POW" function produces erroneous output
2853 | 667210-19 | FEATURE: NullPointerException if NAME= and/or <TABLE> are omitted
2854 | 667219-19 | FileName: getBaseName() incorrectly handles files within a TAR
Bugs Fixed in Release 3.5.0 (30 May 2014)
Bug Number | GForge DR | Description
85 | 500142-4 | TABLE class should catch malformed tables
1563 | 518888-3 | SHELLGUI: need to have option to continue on next line (no +)
2414 | n/a | HELP: update to Lucene 3.0.3
2566 | 808736-3 | BUILD: Intel 11.1 compiler warnings and document 32-bit cross-compiler options in build.props
2755 | 813616-3 | Pipe: NPE occasionally during restarts
2756 | 828316-1 | RMIF: serving properties (channels) can cause RMIF to close
2783 | 836577-1 | MAKE / BUILD: JDK 8 Integration
2789 | 831213-1 | DatagramData: Add ability to account for ICE timecode offset
2793 | 831624-1 | QUERY / KeyObject.findMembers(..): unable to query certain methods/fields (regression)
2794 | 831626-1 | KeyObject: setKeys, getKeys, etc. not thread-safe and can cause current thread to lockup
2795 | 826068-1 | PLOT: Component units displayed on Axis can be wrong for Type 5000/6000 files.
2799 | n/a | Changes in JDK 7u45 breaks Webstart properties
2800 | 813135-1 | DATALIST: SP data displayed incorrectly on SOLARIS
2802 | 832625-1 | NXM 3.2.x to 3.4.x integration issues for some users (FEATURE, PANEL, etc.)
2803 | 836993-1 | Allow users to provide personal keystore for signing jars
2804 | 834837-1 | Shell: saveState/loadState of M.dictionary issue / causes CONFIDENCE to run duplicate test macros
2805 | 815358-3 | ICEPacket: add getTCWSec and getTCFSec
2806 | 834070-1 | XBC should extend more sedit functions
2807 | 815413-3 | XGEOPLOT: btest method is off by one
2808 | n/a | PLOT: need ability to set outer complex mode (plot mode) that sticks
2811 | 837983-1 | If stringres.startsWith/endsWith exhibiting unexpected behavior for lower case strings
2812 | 836739-1 | XGEOPLOT: REREAD message incorrectly removes layer
2813 | 836886-1 | Add -g to javac build flags to enable debugging features
2815 | 836253-1 | BUILD: getCBuildFlags should put include path of option tree in front
2816 | 836168-1 | Confusing use of "Midas/Object reference" in file I/O APIs
2817 | 836252-1 | Panel and Plot hang if display server not found.
2820 | n/a | fft scaling factor
2821 | n/a | Native Malloc/Free missing (only if C compiler is available)
2822 | 836374-1 | convert svinterp options
2824 | 837196-1 | DemodNative.c hidden bug in Demod_processLUT(..) method
2826 | 815934-3 | Tuner primitive broken in 3.3.1 (and 3.4.x)
2827 | 836904-1 | Time.java: Bug in parsing time values with excessive precision
2830 | 667194-19 | Add COPYHEADER to UCL
2831 | 667186-19 | Add Time.toXMLGregorianCalendar()
2832 | 838118-1 | TIMEX/Time Broken - no longer accepts format "YYYY-MM-DD::HH:MM:SS"

#### Deprecated Functionality

The following functionality has been deprecated and will be removed from future versions:

Command | Deprecated Item | Replacement | Deprecated Since
PLOT | ZOOM and DRAGBOX messages accessed with msg.data(0), msg.data(1), etc. | Use msg.data.xmin, msg.data.xmax, etc. | 2.3.0
STATISTICS | IMEAN= | MEAN= (contains real and imaginary values, see explain file) | 2.3.0
CONVERT | The XML2TBL and TBL2XML functions. | Use XML2TAB and TAB2XML. | 2.5.0
UPDATE | Command dictionary entries without '*' denoting minimum allowable abbreviation. | Include a '*' at the end of the command name in the dictionary if no abbreviation is allowed, otherwise note abbreviation as desired. | 2.5.0
TextFile | Automatic enabling of NOABORT flag. | Use NOABORT or FORCEABORT flags as required. | 2.5.0
TextFile | Automatic conversion of INOUT flag to OUTPUT when file not found. | Use INOUT or OUTPUT flags as required. | 2.5.0
Results | Use of A: with results. | Use S:, behavior of A: will change in future releases. | 2.5.2
DataFile | Use of CREATOR= main header keyword. | Use IO= and VER= keywords. | 2.5.3
swing-layout-1.0.jar | Use of org.jdesktop.layout.GroupLayout and related Swing Layout classes. | Use standard Java 6 javax.swing.GroupLayout (they are the same, just in a different package). | 3.3.0
NMPOSTLEGACY | The user-contributed NMPOST (Legacy) option tree is out of date and is usually replaced with author's version. | Get latest from the authors of NMPOST. | 3.3.1
public fields in baseline classes | All public fields in classes in option trees (SYS, DSP, UCL, etc.) included in the baseline (e.g. nxm.sys.lib.BaseFile, nxm.sys.lib.DataFile, nxm.sys.lib.Shell, etc.) have always been meant for read-only and/or internal use only. Some fields may transition to protected or private in favor of the get/set methods as early as 3.9.0. | Use appropriate public get/set methods. | 3.5.1
PLOT | All public fields in nxm.sys.prim.plot, nxm.sys.libg.MPlot, nxm.sys.libg.Layer* (e.g. Layer1D, Layer2D, etc.) have always been meant for internal use only. Most will transition to protected access in 3.9.0 but will still be for internal use only. | Use appropriate public get/set methods. | 3.5.1
As of release 2.2.0 LIST is considered to be an "End of Life" primitive. The LIST primitive is scheduled for replacement by LIST2 in future releases.
See $NMROOT/htdocs/api/sys/deprecated-list.html for a list of deprecated library methods.

Deprecated functionality will continue to function for one year or two stable releases after first being marked as deprecated, but its use may result in a deprecation warning (either at compile time or run time). After one year, any deprecated functionality is subject to removal.
(Back to Release Notes Summary)