NeXtMidas 3.7.2 Release Notes

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


NeXtMidas SYS Option Tree Tested on:
(All tests with Java 7 and Java 8, unless otherwise noted (1))
OS Version Platform Native Compiler(2)
(SYS Option tree)
Web Browser(3)
(WebStart/Applet)
RHEL 5.11 Linux (x86_64) gcc 4.1.2 / Intel 11.1 / Intel 12.1 / Intel 13.1 Firefox 38.5.0
RHEL/CentOS 6.7 Linux (x86) gcc 4.4.7 / Intel 12.1 / Intel 13.1 Firefox 38.5.0
RHEL/CentOS 6.8 Linux (x86_64) gcc 4.4.7 / Intel 13.1 / Intel 14.0/ Intel 15.0 / Intel 16.0 Firefox 45.5.0
RHEL/CentOS 7.2 Linux (x86_64) gcc 4.8.3 / Intel 14.0.4 / Intel 15.0.3 Firefox 38.5
Windows 7 SP1 Windows (x86_64) pre-compiled DLLs (WinGW 5.3.0/gcc 4.9) Internet Explorer 11.0.40

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 7, and Java 8, unless otherwise noted (1))
OS Version Platform X-Midas Mode C/C++ Compiler(2) Fortran Compiler
RHEL 5.11 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 12.1 Intel 12.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.7 Linux
(x86)
NeXtOpt (X-Midas 4.12.3) Intel 13.1 Intel 13.1
NeXtOpt (X-Midas 4.14.0) Intel 13.1 Intel 13.1
XBC ("32Bit") gcc 4.4.7 / Intel 12.1 / Intel 13.1 Intel 12.1 / Intel 13.1
RHEL/CentOS 6.7 Linux
(x86_64)
NeXtOpt (X-Midas 4.12.3) Intel 13.1 / Intel 14.0 Intel 13.1 / Intel 14.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
XBC ("64Bit") gcc 4.4.7 / Intel 13.1 / Intel 14.0 / Intel 15.0 / Intel 16.0 Intel 13.1 / Intel 14.0 / Intel 15.0 / Intel 16.0
RHEL/CentOS 7.1 Linux
(x86_64)
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 7 (7.0_80) and with JDK 8 (8.0_121). 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, the 32-bit JDK/JRE may not run properly on 64-bit systems without requiring additional compatibility libraries. 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: As of Firefox 3.6.x, the new (Next-Generation) Java plugin 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.

Online Documentation

Java 7 Migration

What Might Break (Changes in Behavior)

BUILD - The default build.props, has merged all areas from build.codeareas.other back into build.codeareas.lib (they were separated in NeXtMidas 3.1.2 because SYS has lots of files to compile). SYS still continues to keep them separated. This is not expected to impact any users.
Data - In 3.7.1, Data(String) was fixed to only allocate the space actually needed for type 'A' data. The previous over-allocation of space may have masked Inadvertent buffer overruns. See DR# 859131-1 for additional details.
DatagramData - In 3.7.2, DatagramData was added to the new NET Option Tree. The version in SYS is deprecated. All updates will be placed in the NET version. See DR# 822477-3 for additional details.
DataReader - In 3.7.2, nxm.audio.lib.DataReader was updated to depend on the new NET Option Tree copy of DatagramData. The AUDIO Option Tree now has a dependency on the NET Option Tree See DR# 822477-3 for additional details.
dgnetsend - In 3.7.2, dgnetsend was added to the new NET Option Tree. The version in SYS is deprecated. All updates will be placed in the NET version. See DR# 822477-3 for additional details.
GCONTROL - Since 3.7.1 during the time they are selected, items in a CHOICE will change to the foreground highlight color (even if the user has specified a specific color for that item). Prior to the fix for DR #853082-1 selected items in a CHOICE would not show as selected if any items in the CHOICE where previously set to color (whether by disabling an item or setting its color directly).
IF/ASSERT - File equivalent checks via FEQ defaults to including size/length of data in comparison for IF and ASSERT commands. To revert to legacy behavior, use the "/L" modifier to limit length of binary or data comparison to size of shorter of the two input files to be explicit that a "truncated" data comparison is desired. See IF explain file and/or DR 840802-1 for details.
KeyObject - In 3.7.1, a new @KeyObjectNames annotation was introduced which defines an array of names by which a field or method may be referenced from the macro language. Some methods have had this annotation applied to clear up which method is called for a given abbreviation. See DR 852053-1 for more details.
NM MAKE CLEAN - Running 'nm make clean <opt>' from OS command prompt, no longer removes *.jar and *.zip files under the normal areas of an option tree (e.g. nmmake.clean.codeareas in build.props). It will continue to remove *.jar and *.zip from directories specified in nmmake.clean.locations (e.g. ${nmroot}/tools ${nmroot}/jars). This is not expected to impact any users.
PLOT/MPlot/Layer - NOAVERAGE was fixed to use the actual min/max over [AUTOL] frames. There was still a small exponential component to the previous calculation.
- Plot resizing maps was fixed so that the entire map (or zoomed in area of the map) continues to be displayed when the plot is resized. Previously resizing was based strictly on the x-axis, so resizing could cause the upper and lower portions of the map to be beyond the display area with no scroll bar for accessing those areas of the plot.
- Since 3.7.2, the default GRAPHICS mode has been switched to "SwingDB" from "SwingDB|RealTime". SwingDB is the graphics mode used by the majority of NeXtMidas users and is consistent with the Swing thread-safety conventions. The change to "SwingDB" also fixes a number of bugs related to refresh issues in the PLOT (see 851534-1, et. al). The "RealTime" GRAPHICS option indicates that PLOT should bypass the normal Swing thread-safety mechanisms and attempt to update the underlying graphics elements without waiting for the next graphics refresh; this option was implemented more than a decade ago when the graphics infrastructure had trouble keeping up with some of the real-time data streams in NeXtMidas. The modern graphics infrastructure does a much better job of keeping up with the real-time data streams in NeXtMidas rendering the old "RealTime" option obsolete. Since the "RealTime" option is fundamentally prone to refresh issues (due to the way it bypasses the Swing thread-safety mechanisms) its use is now deprecated.
XGEOPLOT/LayerT5 - Setting Positions (pos or posp) using a table with only one or two of the LAT=, LON=, ALT= entries (i.e. {LON=2.0}) now only updates the value associated with the entry(ies) specified. Previously the unspecified entries were defaulted to 0, rather than defaulted to their current value. See DR 853357-1 for details.
- Points within a LayerT5 must be homogeneous (i.e. have the same components). Prior to 3.7.0, the LayerT5.setPoint method did not validate points set against the existing points for consistency. Since the displaying of points in LayerT5 is dependent on all points having the same components, the old behavior could cause both certain components to not be displayed while other components that were not intended were displayed with default values. Merging of points is allowed, but as of 3.7.0 adding or setting a point that inconsistent with existing points will cause an Exception. Note: If no points exists in the LayerT5, then the first point added will determine which components are active.
SINKDG - In 3.7.2, sinkdg was added to the new NET Option Tree. The version in SYS is deprecated. All updates will be placed in the NET version. See DR# 822477-3 for additional details.
SOURCEDG - In 3.7.2, sourcedg was added to the new NET Option Tree. The version in SYS is deprecated. All updates will be placed in the NET version. See DR# 822477-3 for additional details.
Option Tree removed - Deprecated option tree that has been removed:
nxm.sys.mmpostlegacy -> removed in NeXtMidas 3.7.2
Classes removed - Deprecated classes that have been removed:
nxm.sys.inc.ExportsImage -> not used
nxm.sys.lib.DataPipe -> not used
nxm.sys.libg.ExportImage.DelayedMessageHandler -> not used
nxm.sys.libg.MTextArea -> use MJTextArea instead
nxm.sys.libg.MTextField -> use MJTextField instead
Methods/Fields removed - Deprecated methods/fields that have been removed/changed:
nxm.sys.intr.Build.AREA_LIST -> not used
nxm.sys.lib.CoreIO.recursiveDelete(File) -> use nxm.sys.lib.FileUtil.recursiveDelete(File) instead
nxm.sys.lib.Keywords.convertRep(byte, byte) -> use nxm.sys.lib.DataFile.convertHeaderRep(String) instead
nxm.sys.lib.NeXtMidas.setWinID(String) and clearPanel() -> use runCommand(String, MidasDisplay) instead
nxm.sys.lib.StringUtil.StringUtil() -> not used, meant to be private as all methods are static
nxm.sys.libg.ExportImage.exportFile(..) -> use exportToFile(Component,String,String) instead
nxm.sys.libg.ExportImage.exportToFile(ExportsImage,String,String) -> use exportToFile(Component,String,String) instead
nxm.sys.libg.ExportImage.export(..) -> use exportToFile(Component,String,String) instead
nxm.sys.libg.ExportImage.showOptionSet(...) -> not used
nxm.sys.libg.ExportImage.showTextEntry(...) -> not used
nxm.sys.libg.Layer2D.Layer2D(int, int) -> not used
nxm.sys.libg.Layer2D.isUseLocalZMin() -> use getUseLocalZMin() instead
nxm.sys.libg.Layer2D.isUseLocalZMax() -> use getUseLocalZMax() instead
nxm.sys.libg.Layer2D.useLocalZMin(boolean) -> use setUseLocalZMin(boolean) instead
nxm.sys.libg.Layer2D.useLocalZMax(boolean) -> use setUseLocalZMax(boolean) instead
nxm.sys.libg.Layer2D.useLocalZMin() -> use setUseLocalZMin(true) instead
nxm.sys.libg.Layer2D.useLocalZMax() -> use setUseLocalZMin(false) instead
nxm.sys.prim.plot.setCompression(String) -> use setRMIFCompression (String rmifCmp) instead
OptionTree.java - nxm.sys.lib.OptionTree - File[] getJarFiles(String opt) and hence String[] getJars(String opt) now includes jar files recursively in the jars area (e.g. it will follow symbolic links) of an option tree.
Table.java / Results.java - InternalUseOnly sub-class Results.Function moved to parent class as Table.Function. (Note this relates to the nxm.sys.lib.Results library that is used internally and does not affect the RESULTS command.)
Table.java / Results.java - Numerous methods in Table class now marked "final" to prevent incomplete overrides such as those that caused Bug 2929 (Bug 2929 was fixed in NeXtMidas 3.5.4).
Jar Files removed - The swing-layout-1.0.jar file was deprecated in NeXtMidas 3.3.0. It is no longer used by SYS and have been removed. Use standard Java 6 javax.swing.GroupLayout instead of org.jdesktop.layout.GroupLayout (they are the same, just in a different package).
Anyone with option trees that uses this JAR file can copy it from the NeXtMidas 3.6.x or prior and include them with their own option tree.
FILE/FileResource - IOExceptions that occur during file write or read operations will now be propagated, instead of the old behavior of these methods just returning -1 for an unsuccessful write or read. The new environment variable FileIONoAbort can be set to revert to the old behavior. See the ENVIRONMENT explain file and/or 841173-1 for more details.
SHELLGUI - As of 3.7.1, attempting to attach multiple SHELLGUIs to a shell is not longer allowed and will give a popup error. This was never really supported and resulted the original SHELLGUI being in a bad state.

New Features Added

Bash Support - Support using NeXtMidas from bash shell (i.e.: source $NMROOT/os/unix/nmstart.sh)
New Commands - 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 - PATH: Jar files from "jar" area (i.e. directory) of an option tree are now included recursively (which allows symbolic links) when the option tree is added to the PATH.
  - OPTION,PATH - In 3.7.1, defined an auto-loading mechanism for finding option trees simply by their inclusion in the Java classpath. This makes use of the industry standard Java Service Provider Interface (SPI), but is not compatible with the current NeXtMidas (custom) build procedures; the changes proposed for DR 667842-19 will remove this limitation. This feature is also currently limited to option trees explicitly on the command-line classpath (-cp), due to issues with the OPTION command and underlying libraries. See DRs 855053-1, 855057-1, and 855059-1 for more details.
Libraries - Args - Since 3.7.1, added List type to replace the user casting an object to List.
  - BaseFile - nxm.sys.lib.BaseFile implements java.io.Closeable interface, allowing the NeXtMidas file types to be used within the try-with-resources statement introduced in Java 7.
  - DataFile - Since 3.7.1, full support was added for Type 6000 files. Previously Type 6000 subrecords where num_elts > 1 were written incorrectly. See DR 854385-1 for further details.
In 3.7.2, support was added for reading and writing high precision BLUE Time Code (TC) Keywords. The reading and writing of BLUE TC keywords will normally be based on their existence, but also can be forced with file qualifier "USEBLUETCTIMELINE", by using the CONVERT PLAT2BLUE, or setting IOOptions.PreferBlueTCTimeLine . See DR # 862236-1 for more details.
  - Feature - nxm.sys.lib.Feature.drawText(..) Implements DTAG that is dynamically centered in the visible part of the feature
  - FileUtil - nxm.sys.lib.FileUtil has a new makeSymLink() method that allows the creation of symbolic links using Java 7 API for supported platforms (such as Linux, Solaris, and Windows). This utility method has a fallback to creating a directory junction point in Windows 7+ since standard users normally don't have required privileges.
  - JarFile - nxm.sys.lib.JarFile.getDataTable(offset) now includes code signers of the jar file's in the "CODE_SIGNERS" entry.
  - KeyObject - In 3.7.1, a new @KeyObjectNames annotation was introduced which defines an array of names by which a field or method may be referenced from the macro language. This annotation overrides all of the automatic name generation code in KeyObject. A field or method annotated with an empty array CANNOT be accessed from the macro language.
  - NeXtMidas - Since 3.7.1, nxm.sys.lib.NeXtMidas has a new addOptionTreeFromClasspath() method that allows the user to register an option tree and add it to the classpath. This method currently limited to option trees explicitly on the command-line classpath (-cp) due to issues with the OPTION command and underlying libraries. See DRs 855053-1, 855057-1, and 855059-1 for more details.
  - SSLUtilities - nxm.sys.lib.SSLUtilities has static methods for initializing the Java SSLContext to allow either 1-Way or 2-Way SSL. It also has static methods to facilitate attribute based login based on the JSON response from a REST service containing user attributes. (added in 3.7.2)
  - Table - nxm.sys.lib.Table has new fromOpalFile(..) methods to load Midas2K OPAL file into a Table.
+ Since 3.7.1, added List type to replace the user casting an object to List. (e.g. (List)tbl.getO("KEY") becomes tbl.getLIst("KEY"); ).
  - TarFile - nxm.sys.lib.TarFile has new methods to create Tar Files and utility methods to get/set Tar File data (ex: getPadding(), setTime1970(long val) and setModeString(String str))
Existing Commands - The list below contains NeXtMidas commands. Each command is listed with the new feature that has been added at the request of the user.
  - CONVERT - New <Beta> Conversions: KWCONV Converts the incoming file's keywords to new keywords using the specified conversion table. PLAT2BLUE Converts the incoming file's Platinum keywords to the corresponding BLUE keywords (as defined by the JICD 4.2 ICD). See convert.exp or DR 850721-1 for details.
  - INCLUDE - Since 3.7.1, Using the INCLUDE <file>;<opt> will import a block of code from a test file into the current file from the specified option tree. The <area> of the option tree containing the file gets defaulted. [DEFAULT=MCR] See DR 815906-1 for more details/limitations.
  - LOG - New <Beta> NeXtMidas has the option to LOG NeXtMidas interactive commands (e.g. RESULTS, SAY, CALC/verbose, etc.) when the Midas to Java Logger is enabled.
  - PLOT / GCONTROL - GMenus (including Plot's Features menu) now display a scrollbar and allow scrolling through menu items when there are too many items for them all to be displayed at once. See DR 815434-3 for details.
  - PLOT / GCONTROL - GValue now has the ability to right justify DVAL controls via a RIGHTJUSTIFY flag. See DR 839910-1 for details.
  - XGEOPLOT -T5LAYER Messages are now supported (ACTION=CREATE,DELETE, or COPY). This allows a LayerT5 to be created without a data file, as well as the copying and deletion of points. See XGEOPLOT explain file for details and/or DR 848243-1.
  - XGEOPLOT - Improved support for T5REC and T5TEXT Messages. These messages can now be used to add points to an empty LayerT5. Support for the modification of individual components, without the modification of related components was also improved (ex: can modify LAT without LON or ALT being affected). Also added the ability to set the modmask using a String by adding the option of a MODMASK= entry in the data table. See XGEOPLOT explain file for details and/or DR 853357-1.

Known Third-Party Bugs

The following are known third-party bugs and limitations that may cause problems for NeXtMidas users.
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).
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.7.2 (27 Mar 2017)
JIRA Issue GForge DR Description
NXM-2841 851534-1 Refresh issue with zoom box
NXM-2890 860673-1 PLOT: MarkLocation and Zoom in FLAGS for GOTOLOCATION message should not be case-sensitive
NXM-2971 511352-15 Platinum header with large keyword section never completes
NXM-3007 862233-1 Keywords: Putting keywords fails
NXM-3010 862236-1 Timeline/DataFile: TimeLine does not support time code (TC) keywords, missing setTimeLineObject(..) in DataFile
NXM-3034 822618-3 PLOT: GEODETIC view panning, dragging broken
NXM-3040 865095-1 TimeLine Issue #1 Bad TimeLine Issues (partial fix)
NXM-3044 822867-3 NeXtMidas interfering with Java Web Start caching (temporary patch with partial fix)
NXM-3048 822477-3 DGNETSEND adds ICE HEADER (partial fix)

Bugs Fixed in Release 3.7.1 (20 Jun 2016)
JIRA Issue GForge DR Description
NXM-2626 824939-1 Unable to CTRL+C from loop
NXM-2704 826014-1 XBC: Keywords not propagated
NXM-2758 841173-1 File Write/Read Exception Not Propagated
NXM-2813 850933-1 NeXtMidas needs option to LOG NeXtMidas interactive commands when the Midas to Java Logger is enabled
NXM-2816 851147-1 HEADERMOD: Fails if duplicate key set
NXM-2834 854387-1 Cleanup SYS's (baseline's) cfg/nmstartup.mm
NXM-2840 850796-1 PLOT: Problem with axis labels
NXM-2843 851754-1 INCLUDE: Fails if name of include file is quoted
NXM-2849 852051-1 KEYWORD: Keywords.makeTable() can't handle PLATINUM keywords (with dots in key name)
NXM-2850 852053-1 HEADERMOD: Can't set SubSize on a file
NXM-2867 854385-1 DataFile: setData(offset,fieldNum,obj) does write Type 6000 subrecord correctly when num_elts > 1
NXM-2871 853082-1 GCONTROL: Selected item in a CHOICE not shown when there are disabled items
NXM-2872 853356-1 SHELLGUI: NullPointerException when multiple SHELLGUIs are attached to Shell
NXM-2875 839910-1 GCONTROL: Unable to right-justify numeric values
NXM-2888 854513-1 require Java 7 or higher (drop support for Java 6) (JavaSE-1.6 removed from manifest.mf)
NXM-2891 856370-1 ENVIRONMENT: SET KEYMAP should support loading from .tbl file
NXM-2892 855066-1 PLOT: incorrect AutoMin/AutoMax autoscaling when all of the first frame data is the same very large number
NXM-2898 820601-3 PLOT: x-cut plot should plot with same mode as original raster (complex mode, readout and view parameters added)
NXM-2900 855053-19 NeXtMidas: Issues defining path/options
NXM-2901 855059-1 File: Need to specify file in class path
NXM-2907 667782-19 XGEOPLOT: Handling OVERLAY message
NXM-2916 860739-1 Keyword: Reading file with incorrect HEADERREP or KeyLength causes errors
NXM-2918 820874-3 FileUtil.copyBaseFile does not work for input tar entry
NXM-2919 856234-1 Plot does not scale to the smallest dimension
NXM-2920 667799-19 DataFile.getDataBuffer() method name is confusing - added createDataBuffer(xfer)
NXM-2921 857198-1 PLOT: x-cut NPE on files without extension specified
NXM-2927 667810-19 CONVERT xml2tab gives cryptic error on bad xml
NXM-2931 511240-15 CsvFile now parses multi-line fields/cells.
NXM-2933 857485-1 CONVERT / StateVector: sv2blue(..) stack trace when using PLATINUM input file.
NXM-2934 667842-19 Convert auto-generated math libraries (nxm/sys/libm/*) to standard Java files.
NXM-2937 858331-1 PLOT: LayerScatter constant flicker in LatLon view with no x margin.
NXM-2938 858330-1 PLOT: LayerKML resizing issues due to incorrect full range calculation.
NXM-2941 857234-1 XGEOPLOT: Allow users to draw boxes on the nm xgeoplot.
NXM-2942 815906-1 INCLUDE statement should find files from other option trees.
NXM-2943 821342-3 LayerKML.drawPolygon(double[] coords) throws NPE even though issue caught earlier.
NXM-2944 821341-3 LayerMap.checkReachable does not handle default port for https.
NXM-2945 821334-3 List type for tables/results.
NXM-2946 859131-3 sys.lib.Data(String) constructs Data objects which overstate the amount of data they actually hold.
NXM-2947 821356-3 LayerWMS should default maxWidth and maxHeight.
NXM-2948 859518-1 ERROR running from NeXtMidas Jar
NXM-2954 821362-3 fcalc does not operate in piped mode.
NXM-2956 859894-1 FileName.relativeTo not work for Windows.
NXM-2959 814304-1 Add ULAW encode and decode library/primitives to AUDIO option tree.
NXM-2984 861281-1 PLOT: Layers' findRange() not setting values used for autoscaling.

Bugs Fixed in Release 3.7.0 (30 Dec 2015)
Bug Number GForge DR Description
2825 815434-3 PLOT / GCONTROL: Plot's Features menu needs a scrollbar
2861 840802-1 IF FEQ returns true for zero-length file vs any other file
2869 839462-1 HEADERMOD does not support T=<file type> (correction to error/warning messages for HEADREP=)
2889 850020-1 DSP: Need support for Platinum keyword DATA_INVERSION_FLAG (e.g. UPRIGHTSPECTRUM or INVERT_SPECTRUM command)
2901 850525-1 PLOT / Layer2D: Autoscale stops working after an extreme value
2917 848243-1 XGEOPLOT not processing T5LAYER message
2918 850721-1 PLATINUM to BLUE keyword conversion
2920 851099-1 Pipe.java: add try-catch to write method (always print details when exception occurs)
2928 851532-1 Support using NeXtMidas from bash
2934 851755-1 Args: Incorrect parsing of percent macro defaults
2938 853503-1 Table.toBytes() ClassCastException when has Hashtable entry that has non-String as a key
2949 667640-19 TABLE: Add library call for loading an OPAL table to "supported" API
2950 819632-3 PATH: include jar files recursively under jars area (Support for Jar directory links)
2955 852593-1 MAKE: CLEAN doesn't work for user option trees (does so recursively)
2956 852594-1 MAKE: Unable to re-build with earlier Java version
2958 852659-1 DataFile: getData(offset,fieldNum) does not return/read all data in Type 6000 when num_elts > 1 (fixed convertRecordRep(..) and read(Data,elements))
2965 853357-1 XGEOPLOT/LayerT5: New point component types are not displayed
2969 839910-1 GCONTROL: Unable to right-justify numeric val...
2970 817431-3 PLOT: Features text placement sticky (implemented DTag)
2973 854356-1 NmMake.java resource leak in copyFile method (and in Help, OptionTree, and Update classes)
2979 854391-1 TarFile: Add ability to create TAR files
2980 854392-1 BaseFile should implement Closable
2981 854393-1 StateVector: Add ability to request Ephemeral keywords based on list of time ticks
2982 854513-1 require Java 7 or higher (drop support for Java 6)
2983 854527-1 ARCHIVE: NPE during ON function when unable to open log file for output
2985 856370-1 ENVIRONMENT: SET KEYMAP should support loading from .tbl file
2988 855063-1 Table.removeListener() does NOT remove the table listener
2989 855064-1 nm make clean should not delete *.zip and *.jar under option tree
2991 855009-1 PLOT: Raster plot crashes (added additional thread safety measures)
2996 855052-1 DEFAULTS: Ignored bad input (e.g. non-existent command)
2999 855277-1 GENERATE: NPE when trying to SIGN jar file
3006 856456-1 nm make clean should not re-run user's nmstartup.mm on Unix (since nxm354)
3009 856457-1 Keywords: set method does not convert byte order after first element

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
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)