NeXtMidas 3.6.1 Release Notes

Changes between release 3.6.0 and 3.6.1 are listed in blue.

(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)
RHEL 5u9 Linux (x86) gcc 4.1.2 / Intel 11.1 / Intel 12.1 / Intel 13.1 Firefox 10.0.12
RHEL 5u11 Linux (x86_64) gcc 4.1.2 / Intel 11.1 / Intel 12.1 / Intel 13.1 Firefox 38.1.1
RHEL/CentOS 6u7 Linux (x86) gcc 4.4.7 / Intel 11.1 / Intel 12.1 / Intel 13.1 Firefox 38.1.1
RHEL/CentOS 6u7 Linux (x86_64) gcc 4.4.7 / Intel 11.1 / Intel 12.1 / Intel 13.1 / Intel 14.0/ Intel 15.0 Firefox 40.0.3
RHEL/CentOS 7u1 Linux (x86_64) gcc 4.8.3 / Intel 14.0.4 / Intel 15.0.3 Firefox 38.1.1
Solaris 10
(SunOS 5.10)(5)
Sun/SPARC (32-bit) gcc 3.4.6 Firefox
Windows 7 SP1 Windows (x86) pre-compiled DLLs (gcc 4.8.3) Firefox 40.0.3 / Internet Explorer 11.0.96
Windows (x86_64) pre-compiled DLLs (gcc 4.8.3) Internet Explorer 11.0.17

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 5u9 Linux
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 12.1 / Intel 13.1 Intel 12.1 / Intel 13.1
XBC ("32Bit") gcc 4.1.2 / Intel 11.1 / Intel 12.1 / Intel 13.1 Intel 11.1 / Intel 12.1 / Intel 13.1
RHEL 5u11 Linux
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 6u7 Linux
NeXtOpt (X-Midas 4.12.3) 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 ("32Bit") gcc 4.4.7 / Intel 11.1 / Intel 12.1 / Intel 13.1 Intel 11.1 / Intel 12.1 / Intel 13.1
RHEL/CentOS 6u7 Linux
NeXtOpt (X-Midas 4.12.3) Intel 12.1 / Intel 13.1 / Intel 14.0 / Intel 15.0 Intel 12.1 / Intel 13.1 / Intel 14.0 / Intel 15.0
NeXtOpt (X-Midas 4.14.0) Intel 12.1 / Intel 13.1 / Intel 14.0 / Intel 15.0 Intel 12.1 / Intel 13.1 / Intel 14.0 / Intel 15.0
XBC ("64Bit") gcc 4.4.7 / Intel 11.1 / Intel 12.1 / Intel 13.1 / Intel 14.0 / Intel 15.0 Intel 11.1 / Intel 12.1 / Intel 13.1 / Intel 14.0 / Intel 15.0
RHEL/CentOS 7u1 Linux
NeXtOpt (X-Midas 4.14.0) Intel 14.0.4 / Intel 15.0.3 Intel 14.0.4 / Intel 15.0.3
XBC ("64Bit") gcc 4.8.3 / Intel 14.0.5 / Intel 15.0.3 Intel 14.0.5 / Intel 15.0.3
(1) Platforms were tested on the latest version of JDK 6 (6.0_45) and JDK 7 (7.0_80) and with JDK 8 (8.0_60). 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
(2) $NM_CC and $NM_CXX was set to point to the Intel C/C++ compiler (icc and icpc), where applicable.
(3) Note: As of Firefox 3.6.x, the new (Next-Generation) Java plugin (included with Java 6 update 10 and later) must be used (i.e. $JAVAHOME/jre/lib/i386/ for Java applets to work. Please see 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 is not available for Solaris on SUN/SPARC 32-bit platform.

Online Documentation

Java 6 Migration

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 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 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 and See API docs or DRs 843929-1 and 843930-1 for details.
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 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 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 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 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 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" 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 "" 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/ (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 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.

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.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) 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) 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 on Unix (since nxm354)
NXM-2915 856457-1 (BUG 3009) Keywords: set method does not convert byte order after first element

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 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
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 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 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,, etc. Use,, 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)