# NeXtMidas 3.2.4 Release Notes

Changes between release 3.2.0 and 3.2.1 are listed in blue.

Changes between release 3.2.1 and 3.2.2 are listed in green.

Changes between release 3.2.2 and 3.2.3 are listed in teal.

Changes between release 3.2.3 and 3.2.4 are listed in purple.

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

Please see an important note regarding Oracle CVE-2010-4476 (Java floating point vulnerability)

NeXtMidas SYS Option Tree Tested on: (All tests with Java 6, 7, and 8, unless otherwise noted (1))
OS Version | Platform | Native Compiler(2) (SYS Option tree) | Web Browser(3) (WebStart/Applet)
--- | --- | --- | ---
RHEL 5u9 | Linux (x86) | gcc 4.1.2 / Intel 11.1 / Intel 12.1 / Intel 13.1.3 | Firefox 10.0.12
RHEL 5u11 | Linux (x86_64) | gcc 4.1.2 / Intel 11.1 / Intel 12.1 / Intel 13.1.3 | Firefox 31.3.0
RHEL/CentOS 6u6 | Linux (x86) | gcc 4.4.7 / Intel 11.1 / Intel 12.1 / Intel 13.1.3 | Firefox 31.6.0
Linux (x86_64) | gcc 4.4.7 / Intel 11.1 / Intel 12.1 / Intel 13.1.3 | Firefox 31.6.0
RHEL 7.1 | Linux (x86_64) | gcc 4.8.2 / Intel 14.0.4 |
Solaris 10 (SunOS 5.10) | Sun/SPARC | gcc 3.4.6 | Firefox 2.0.0.19
Windows 7 SP1 | Windows (x86) | pre-compiled DLLs (gcc 3.4.5) | Internet Explorer 11.0.7
Windows (x86_64) | pre-compiled DLLs (gcc 4.5.4) | Internet Explorer 11.0.9 / Firefox 36.0.4
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, 7, and 8 unless otherwise noted (1))
OS Version | Platform | X-Midas Mode | C/C++ Compiler(2) | Fortran Compiler(4)
RHEL 5u9 | Linux (x86) | NeXtOpt (X-Midas 4.10.5) | Intel 11.1 / Intel 12.1 | Intel 11.1 / Intel 12.1
NeXtOpt (X-Midas 4.12.3) | Intel 11.1 / Intel 12.1 / Intel 13.1.3 | Intel 11.1 / Intel 12.1 / Intel 13.1.3
XBC ("32Bit") | Intel 11.1 / Intel 12.1 / Intel 13.1.3 | Intel 11.1 / Intel 12.1 / Intel 13.1.3
RHEL 5u11 | Linux (x86_64) | NeXtOpt (X-Midas 4.10.5) | Intel 11.1 / Intel 12.1 | Intel 11.1 / Intel 12.1
NeXtOpt (X-Midas 4.12.3) | Intel 11.1 / Intel 12.1 / Intel 13.1.3 | Intel 11.1 / Intel 12.1 / Intel 13.1.3
XBC ("64Bit") | gcc 4.1.2 / Intel 11.1 / Intel 12.1 / Intel 13.1.3 | Intel 11.1 / Intel 12.1 / Intel 13.1.3
RHEL/CentOS 6u6 | Linux (x86) | NeXtOpt (X-Midas 4.10.5) | gcc 4.4.7 / Intel 11.1 / Intel 12.1 | Intel 11.1 / Intel 12.1
NeXtOpt (X-Midas 4.12.3) | gcc 4.4.7 / Intel 11.1 / Intel 12.1 / Intel 13.1.3 | Intel 11.1 / Intel 12.1 / Intel 13.1.3
XBC ("32Bit") | gcc 4.4.7 / Intel 11.1 /Intel 12.1 | Intel 11.1
Linux (x86_64) | NeXtOpt (X-Midas 4.10.5) | gcc 4.4.7 / Intel 11.1 /Intel 12.1 | Intel 11.1 / Intel 12.1
NeXtOpt (X-Midas 4.12.3) | gcc 4.4.7 / Intel 11.1 /Intel 12.1 / Intel 13.1.3 | Intel 11.1 / Intel 12.1 / Intel 13.1.3
XBC ("64Bit") | gcc 4.4.7 / Intel 11.1 / Intel 12.1 | Intel 11.1 / Intel 12.1
RHEL 7.1 | Linux (x86_64) | NeXtOpt (X-Midas 4.13.3) | Intel 14.0.4 | Intel 14.0.4
(1) Platforms were tested on the latest version of JDK6 (6.0_45), JDK 7 (7.0_80), and with JDK8 (8.0_45). 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 code was compiled with "-source 6" and "-target 6" specified (this is the default). All tests use the Java VM from Oracle (formerly Sun Microsystems) (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 (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.

#### 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 5 Migration

- NeXtMidas 2.7.0 was the first release following Sun Microsystems' decision to drop standard support for Java 1.4.2. As such, Java 1.4.2 is no longer supported in NeXtMidas 2.7.0 and later.
  Users who wish to run on Java 1.4.2, Windows 2000, RedHat 9, or Tru64 UNIX are advised to use the NeXtMidas 2.6.x version.
  Since Java 5 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 loosing the ability to run under older NeXtMidas/Java versions).

#### No longer supported platforms

- NeXtMidas 2.7.0 was the first release to drop support for Windows 2000 and RedHat versions prior to RHEL 3 (e.g. RedHat 9), as these O/S versions are no longer supported by their respective vendors. NeXtMidas 2.7.0 also dropped support for all versions of Tru64 UNIX since Java 1.4.2 was the last Java version available for Tru64 UNIX.
  NeXtMidas 3.1.0 dropped official support for Red Hat Enterprise Linux (RHEL) 3 and Solaris 8 (5.8) as they have reached End-Of-Life (EOL) from their respective vendors. It is recommended to upgrade to a later OS version (like RHEL 5 / RHEL 6 and Solaris 10) as they will have critical security fixes available.
  NeXtMidas 3.3.0 dropped official support for Red Hat Enterprise Linux (RHEL) 4 as it reached EOL as of 2012-02-29. It is recommended to upgrade to a later OS version (like RHEL 6).

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

Escape Character Sequences in Tables and Results | - | ***MAJOR CHANGE*** The NeXtMidas macro language now handles escape characters BY DEFAULT, both in quoted String results created at the command line and Tables created from quoted Strings. The escape character is the backslash ("\"), which means that any String parsed as an Arg or a Table will have the backslashes treated as escapes, unless the backslash itself is escaped. This includes everything in a macro, since every line in a macro is parsed as a String prior to macro execution. The most likely negative impacts are to Windows users who create Windows path Strings using the backslash character as a directory separator. The new behavior can be disabled using the ENV IOOPTION DisableEscapeSequences for args and the Table flag disableEscapeSequences, which can be set in ENV DEFAULTTABLEFLAGS. See DR 799057-1 for details.
Running one-shot command from the OS prompt | - | Prior to NeXtMidas 3.1.2, running an OS command (or a typo in a NeXtMidas command name) from the OS prompt once the NeXtMidas session has started in the form 'nm somecommand' would incorrectly return the user to the NeXtMidas 'nM>' prompt. Users who were used to entering the NeXtMidas shell that way should instead use 'nm' followed by no arguments.
Cache | - | In 3.2.3, the default Cache type was changed to SLRU (from LRU) so that when it is accessed from multiple threads concurrently, it does not lock up or throw a NullPointerException. Use the multi-parameter constructor to specify the higher performing Cache.LRU when using it in a single thread. See DR #831626-1 for details.
CONVERT | - | In 3.1.0, a fix was made to the color mapping in the utility method GraphicsUtil.createImageFromFile(..). This fix prevents users from overwriting the "reserved" background color. As such, the "CTHRU" argument, which previously allowed users to set the background to transparent, no longer does anything. Users must now create a custom colormap if they want to have transparent areas. See DR 809218-1 for details.
DataFile | - | In 3.2.2, the `DataFile.getIndex(..)` method was changed to default to abscissa indexing if the tilde ("~") is present. This is the correct behavior that was accidentally removed in 2.9.1. Some users may be mistakenly using the tilde for element indexing, and will need to correct their macros.
FFT | - | The /1D switch on FFT no longer sets the YUnits to TIME on the output file (i.e. it will default to NONE). See DR 807558-3 for details.
FILE / BaseFile | - | In 3.1.3, a fix to correct OPEN/T/A (open text file and append to it) function . Previously it always overwrites at the beginning of the text file. This fix was done in BaseFile.open() so that it effects other subclasses (e.g. TextFile) when the APPEND flag is given. See DR 816801-1 for details.
FILES | - | In 3.1.1, the /F switch outputs to a text file instead of a BLUE file when the filename extension ends with ".txt". See explain file or DR 524863-3 for details.
GCONTROL | - | In 3.1.1, the /WTHEME= switch overrides the /THEME= switch. Additionally, the ALERT widget type (GAlert) now fills the alert area with the widget's background color so that it displays properly along with the widget's foreground color. To revert back to previous behavior, set the `BUGFIX.GCONTROL_WTHEME_OVERRIDES_THEME` system property to false. See DR 528650-3 for details.
| - | In 3.1.2, the ALWAYSOPEN flag was removed from GMenu since it conflicted with the GWidget.TITLE flag setting. To achieve the ALWAYSOPEN behavior (on by default) make sure NOT to set the ROLLUP flag (which was meant to be an internal state toggle for popup menus when rolled up). To prevent a user from accidentally toggling the ROLLUP flag, make sure the INLINE flag is set (on by default).
KEYWORD | - | In 3.1.2, the KEYWORD command FPUT/FSET functions were changed to correctly put keywords in the MAIN header if they are in the .key file with a single '=', otherwise put them in the EXTENDED header. Previously, all the keywords defined in a .key file would be put in the EXT header. Users who are using FPUT/FSET and expecting to put keywords defined with a single '=' in the EXTENDED header will see a change in behavior. To revert back to previous behavior, set the `BUGFIX.KEYWORD_FSET_INTO_EXTENDED_ONLY` to true or use the /EXTONLY switch. See DR 809249-3 for details.
MACRO comments | - | The Macro language parser was fixed so that multi-line Strings could contain bangs '!' and star-slash combinations '/*' or '*/'. Users who were purposely putting comments inside of multi-line Strings will no longer be able to do so. Comments should be before or after the Strings.
MAKE/BUILD | - | In 3.1.2, the "nmmake.codeareas" property in build.props was renamed to "nmmake.clean.codeareas" to better identify the purpose of the property.
MENU | - | Support for the deprecated keyword only ACT= parameter has been removed; use FUNC= (second parameter) instead. In 3.1.1, the default output file format for /F switch was changed from 4A (32 chars) to XA (80 chars) to allow for longer command names and the possibility of including the non-SYS option tree names via /OPT switch. Use /FORMAT=4A switch to revert to prior format. In 3.1.1, when /F switch does not contain a filename, it will now default to "menu.tmp" vs "menu" which could be "menu.prm" or "menu.tmp".
INVOKE, PLOT | - | In 3.1.1, the KeyObject class (which handles lookups and sets of items from the command line, setup tables, etc) was changed to prevent double-setting of Objects that are Tables, such as when passing in a LayerWMS config table in a PLOT setup table. There should be no effect to users. See DR 808602-3 for details.
Plot default Features | - | In 3.1.1, the logic in Layer.getFeature() was made more precise. The result is that new (default) Features created via that method (which includes Query and mouse commands) on non-Type 1000 plots will no longer be of type DATA, since the DATA type of Feature is not supported except on type 1000 plots. See DR 808487-3 for details.
Plotting results that are tables | - | In 3.1.0, code was added to PLOT to evaluate a passed-in filename to see if it is a defined RESULT. If it is, AND if the RESULT is a Table (or table in String form), the RESULT will get converted to a String. No expected negative impact to users. See DR 532542-3 for details.
Plot Axis Buffer Zones | - | In 3.1.0, code was added to PLOT to create a small (user can configure via /axisBuffer=value [DEF=1e-12]) buffer to the edges of the plot axis (XMIN, XMAX, YMIN, YMAX), in order to show data that falls exactly on the previous axis level. Users who are checking for absolute equality of the axis based on set values may experience issues, and should use equality with tolerance (EQT) instead or disable (set to 0) the axis buffer with the switch /axisBuffer=0. See DR 807326-3 for details.
Plot Messages | - | In 3.1.1, a small change was made to the way PLOT processes messages. Most messages that are not being processed by the PLOT thread (i.e. the current Thread is the MACRO or SWING EDT) are now re-queued for the PLOT thread to process instead. This is done to help prevent concurrent modifications by two opposing threads. For performance reasons, the PAINT, POINTER, and DRAG messages are excluded from this change. There is no expected impact to users, though the re-queue of the message does impose a small delay (def= 1/80th of a second). See DR 808415-3 for details.
Aligning Time-based Type 1000 Plots | - | In 3.1.0, a change was made to automatically align (overlap) type 1000 plots that were time based but had a different abscissa start time. That change had the unexpected effect of breaking some user's plot, so in 3.1.2, the behavior was put on a switch (/TimeAlign) with a default state of false. Users who were already taking advantage of overlapping time-based type 1000 plots will now need to use the switch.
RUN | - | In 3.1.1, the RUN command was updated to using the current Midas context vs always cloning it (which was only meant for the /PARENT and /GLOBAL cases). Otherwise it does NOT see the same registry as the running macro.
SEDIT | - | In 3.1.2, the SEDIT command was overhauled to bring it more in line with the X-MIDAS SEDIT functionality (for cross-use purposes). The LENGTH and SELECT functions were made one-based (since they count elements), and the BETWEEN and RANGE functions changed so that negative numbers are always an index from the last character in the input string. This new behavior is off by default (using the new /LEGACY switch), but will be enabled by default in a future release. See the SEDIT explain file for more details.
SWITCH | - | In 3.1.3, the SWITCH command was modified so that the DEL function now stores the value of a switch (in the result given in VALUE=) prior to deleting it.
BaseFile / FileName | - | Since 3.1.0, nxm.sys.lib.BaseFile.getQualifiers() and FileName.getQualifierTable() returns an empty Table if no filename qualifier is specified (instead of null). See DR 807622-3 for details.
LIST2 | - | Since 3.1.0, as part of our ongoing effort to increase message support, some users may see SELECT messages when clicking their LIST2, when previously they did not (unless they used the /legacy switch).
Library changes | - | Some API method signatures has changed to take in more generic arguments, requiring a refresh compile of your source code (option trees, libraries). A NoSuchMethodError at runtime may be seen for classes compiled using previous version of NeXtMidas. FYI: Most classes compiled with NeXtMidas 3.1.1, will still run under most NeXtMidas versions 2.7.1 and later.
| - | FileName - In 3.1.2, the getExt(String) method was updated to return empty string ("") if input name does not have a file extension to be consistent with other APIs in FileName. Also, it now returns null if input name is null (instead of throwing a NullPointerException). See API docs for details. Use getExtLegacy(String) to revert to previous behavior.
| - | ListFile - In 3.1.1, the update() method was added to the ListFile interface which mirrors BaseFile and DataFile's update() method to update the headers in the file.
| - | StateVector - In 3.1.1, the setAccGeo(double[]]) method was corrected to call setAccGeo(double,double,double) vs setVelGeo(...). See DR 666331-19 for details.
Classes removed | - | Deprecated classes that have been removed: `nxm.sys.lib.HttpResource.Href -> mean to be private`
Methods removed | - | Deprecated methods/fields that have been removed/changed: `nxm.sys.intr.Generate.doJar(..) -> meant to be private nxm.sys.intr.Generate.doNativeJar(..) -> meant to be private nxm.sys.intr.Generate.genExplain(..) -> meant to be private nxm.sys.intr.Generate.genExplainStub(..) -> meant to be private nxm.sys.intr.Generate.getJarFileName(..) -> meant to be private nxm.sys.intr.Generate.getKeystorePath(..) -> meant to be private nxm.sys.intr.Generate.getNativeJarFileName(..) -> meant to be private nxm.sys.intr.Generate.hasNativeCode(..) -> meant to be private nxm.sys.intr.Generate.getOptionRoot(..) -> meant to be private nxm.sys.intr.Generate.makeExpStub(..) -> meant to be private nxm.sys.intr.Generate.runCommand(..) -> use Foreign.runInternal(..) nxm.sys.intr.Generate.signJar(..) -> meant to be private nxm.sys.intr.Generate.signJar11(..) -> meant to be private nxm.sys.lib.FileUtil.getFullname() (lower case n) -> use getFullName() (upper case N) nxm.sys.lib.HttpResource.closeConnection(..) -> use close() nxm.sys.lib.HttpResource.openConnection(..) -> use open() nxm.sys.lib.KeyObject.parseArgs(..) -> meant to be private nxm.sys.lib.KeyObject (fields: Table gets and Table sets) -> was never used nxm.sys.lib.StateVector (fields: vn,ve,vu, ax,ay,az, an,ae,au) -> meant to be protected. Use appropriate get/set methods. nxm.sys.lib.Privileges.nextNS() -> not used nxm.sys.libg.Layer1D (fields: fbuf and xIsTime) -> meant to be protected nxm.sys.libg.Line.getConfiguredGraphics(.) -> meant to be private / no longer used nxm.sys.libg.Line.drawPixels(..) -> use MPlot.drawPixels(..) nxm.sys.prim.list2.getUseCustomMmbMenu(..) -> use getButtonAction() nxm.sys.prim.list2.setUseCustomMmbMenu(..) -> use setButtonAction(..) nxm.sys.prim.list2.setMsgId(..) -> use setMessageHandler(..) nxm.sys.net.HPage.handleRequest(..) -> meant to be private nxm.sys.net.HPage.parseRequest(..) -> meant to be private nxm.sys.net.HPage.readline(..) -> meant to be private nxm.sys.net.HPage (fields: CR, LF) -> use nxm.sys.inc.AsciiMap.CR and AsciiMap.LF nxm.sys.net.HPage (fields: HTTP_*) -> use java.net.HttpURLConnection.HTTP_*`

#### New Features Added

OS Environment variables |  | NM_COMPLETION_AUX_EXCLUDE Seed for list of pipe ('|') separated AUXs to be excluded when using the FILES command or tab-completion. NM_STARTUP_MACRO Override the user-level startup macro. See RuntimeOptions.txt or run "`nm -h`" for details.
Java system properties |  | -DCOMPLETIONAUXEXCLUDE= Seed for list of pipe ('|') separated AUXs to be excluded when using the FILES command or tab-completion. -DNMSTARTUP.SYS= Override the system-level startup macro. -DNMSTARTUP.USER= Override the user-level startup macro. This is supported in all run modes (normal, -INDEPENDENT, Applet, Java Web Start, and via nxm.sys.lib.NeXtMidas) except for NeXtOpt. See RuntimeOptions.txt or run "`nm -h`" for details.
Commands | - | CYCLOFUNC;DSP - Java-based version of the cyclofunc. See explain file for details.
| - | FASTCORRELATE;DSP - Executes overlap-save FFT block cross-correlation. See explain file for details.
| - | FSVI;DSP - Frame Synchronous Video Integrator (FSVI). See explain file for details.
| - | NORMALIZE;DSP - Normalizes an input file by frames. See explain file for details.
| - | RMIINTERFACE;NETTEST - Java Remote Method Invocation (RMI) Interface for Midas to analyze, interface, and/or debug services using Java RMI. See explain file for details. See also sample RMICLIENT and RMISERVER commands in the NETTEST option tree for examples.
| - | SETSEED - Since 3.1.1, the SETSEED command sets the random number generator seed. See the SETSEED explain file for details.
| - | SHOW - Since 3.1.1, the SHOW command has been added to give users a fast, easy way to view and store some common environment and session parameters. See the SHOW explain file and nxm.sys.test.test_show.mm for details and example usage.
| - | SIGSTATISTICS;DSP / SIGSTATDEMO;DSP - Since 3.1.2, the inclusion of the SIGSTATISTICS and SIGSTATDEMO commands to the DSP option tree provide statistics about a signal including an estimation of noise floor, SNR, etc.. See explain file for details.
BUILD | - | In 3.1.2, the BUILD command uses "build.codeareas.libs" "build.codeareas.other" properties in build.props for the list of code areas to automatically include when compiling an option tree when the area is specified to be "ALL". See build.props and/or DR 808316-2 for details.
| - | In 3.1.2, BUILD now supports OS environment variables in primitives.cfg build configuration file (primary for host primitives). See explain file and/or DR 531950-3 for details.
| - | In 3.1.2, the CHECKXBC;XBC command is called for automatically for Fortran Host primitives during the make/build process (by buildopt;XBC). See DR 810689-1 for details.
CONVERT | - | In 3.1.1, the CONVERT command was updated with the conversion SV2KML, which allows users to create custom KML files from Type 500 StateVector data. See the CONVERT explain file for detailed usage.
CONVERT | - | In 3.1.2, the MSGCFG2INC conversion function was updated to also auto generate qmessdecl.h, qmessdef.h, and qmessdef.hh C/C++ header files for C++ host primitives using the XBC option tree.
ENVIRONMENT | - | In 3.1.1, the ENVIRONMENT command can be used to define a list of AUXes that will be excluded during FILES searches with wildcards and command line tab-completion. See ENVIRONMENT explain file for details.
FILE | - | In 3.1.2, the /TL switch was added for the COPY function to allow setting transfer length for binary copies. See explain file for details. In 3.1.2, when using the COPY function, the output file's size is pre-allocated to the input file's size on disk. This can be disabled via the {PREALLOCATELENGTH=false} file qualifier on the output file name.
FILES | - | Users can now specify AUXs within the READ AUX to NOT be searched when attempting to find files that match a given filter. This can be done via NM_COMPLETION_AUX_EXCLUDE OS environment variable or the /EXCLUDE=<auxlist> switch, each of which allows users to specify a pipe ('|') separated list of AUXs that will not be searched when attempting to find a file that matches a given filter. See the FILES explain file for details.
| - | In 3.1.1, the /F switch outputs to a text file when the filename extension ends with .txt. See the FILES explain file for details.
GCONTROL | - | PIPEMON - added a setValue method to allow programmatic changes. See DR 806699-3 for details.
| - | STEXT - Since 3.1.1., added STEXT widget type to allow display of styled text (e.g. HTML). See gcontrol explain file or DR 808332-1 for details.
GENERATE | - | Added support for a TEXT directive in Operators.cnf. See DR 808288-1 for details.
GRAPHICS | - | Added support for /DISPLAY= (in 3.1.1) and /ICON switches for graphical commands to control how it's window comes up. See User's Guide -> System Operations -> Switches -> Universal Switch page -or- the bottom of the switch explain for details.
HEADERMOD | - | In 3.1.3, added support for the /DETACH= switch to mirror X-Midas functionality. See explain file and/or DR 808100-3 for details.
HISTOGRAM | - | Added support for BINS= and CXMODE= keyword only parameters and the /BITS switch. See explain file and/or DR 808288-1 for details.
HTTPGET;UCL | - | In 3.1.1, response messages includes the request information in the Message quals field and the /WARN can be used to disable warning messages to the terminal. See explain file for details.
HWDRIVER;HWC | - | In 3.1.2, added support for the CRCR sequence as a terminator.
IMPORT | - | In 3.1.2, an optional DEF parameter was added to the import intrinsic so that if an environment variable is imported, but does not exist, the OUT key will be put into the results table with the DEF value provided. See explain file for further details and an example.
KEYWORD | - | In 3.1.1, added support for /FLAGS=NoAbort to try to continue when an invalid keyword block is found. See explain file and/or DR 811112-1 for details.
| - | In 3.1.3, the KEYWORD command ADD function was changed to allow multiple ADDs on a single command line. Also, the /WARN=false switch will now also apply to ADDs See KEYWORD explain file or DR 815456-3 for details.
LIST2 | - | Right mouse button (RMB) deselecting over the row numbers.
| - | Can list a specified Table (or Table file) for first input argument. See DR 531871-3 for details.
| - | Since 3.1.1, can handle very large files without use of the /MOD switch.
| - | Since 3.1.1, can set the max allowable size of the RAM file created by LIST2, using the /UseRamFileMaxSize=<int> switch.
| - | Since 3.1.2, can update the template of an open LIST2 with a .tbl file, using the message OPENTEMPLATE or the methods setTemplate() or updateTemplate().
Macro/Shell Enhancements | - | A proxy server can be specified for HTTP web resources using the PROXYHOST=<httpProxyHostname> and PROXYPORT=<theProxyPortNum> qualifiers on URLs. e.g. `nM> plot http://servername/test.kml{PROXYHOST=192.168.1.1,PROXYPOST=80}` See nxm.sys.lib.HttpResource and DR 666879-19 for details.
| - | CALC/FCALC - In 3.1.1, added RANDOM/P and RANDOM/S operators which uses Java's Random and SecureRandom pseudo-random number generator (PRNG). See CALCULATOR or FCALCULATOR for details.
| - | CHECKXBC - In 3.1.2, added the /WARN switch to allow warnings to be suppressed and /SUMMARIZE switch to provide a summary of warnings. See explain files for details.
| - | DeleteOnExit File Qualifier - In 3.1.1, the DELETEONEXIT qualifier can be added to local files to request that it be deleted when the JVM exits normally. e.g. `nM> waveform mytemptestfile.tmp{deleteOnExit=true}` See nxm.sys.lib.FileResource and/or DR 808165-3 for details.
| - | HOMEPATH - Added /CWD switch to track current working directory as HOMEPATH. See HOMEPATH explain file and/or DR 807330-3 for details.
| - | IF - In 3.1.2, Added support for "ENDS" test function to test if a string ends with another string.
| - | MENU - In 3.1.1, added /FORMAT switch allow specify larger ASCII format (e.g. TA) for /F switch.
| - | MENU - In 3.1.1, updated /F switch to also look at /OPT switch to allow including non-SYS option tree names appended to output file along with command name.
| - | PANEL - new ability to choose which screen to pop panel to. See PANEL explain file and/or DR 532474-3 for details.
| - | RESULTS - new ability to count the results that matches given filter. See explain for details.
| - | RESULTS - In 3.1.3: added ability to directly set boolean result (type "Z:") from INLINE TEST(..) vs requiring two statements (and one extra temporary results).
| - | STATUS - In 3.1.1, added the /ALL switch to list additional main header fields for debugging.
| - | SWITCH - In 3.1.2, added the /CS switch to get case-sensitive switch values for non-quoted strings.
| - | SWITCH - In 3.1.3, the DEL function was modified to store the current switch value in the VALUE= argument. Previously, it would delete that value, if given. See explain file for details.
| - | TABLE - In 3.1.2, added /FLAGS= switch for the LOAD function to allow passing the desired Table flags on the output Table (e.g. to prevent duplicates and to NOT force to using KeyVector mode table for LOAD/T when ADD flag is NOT set). See explain file for details.
| - | TABLE - In 3.1.3, to support Python integration, added LOADCFG and SAVECFG functions to allow users to read a .cfg file into a Table and write a Table into a .cfg file. See Table explain file for details.
| - | Terminal - The command line terminal's tab-complete autofill now checks the OS environment variable NM_COMPLETION_AUX_EXCLUDE for a list of pipe ('|') separated AUXs to not search when attempting to autofill a filename.
| - | Terminal - In 3.1.1, added the format(..) and printf(..) methods that takes C-style printf(..) format strings for displaying to output to terminal. See the nxm.sys.lib.Terminal API docs and/or DR 808128-3 for details.
PLOT | - | Layer1D now supports overlapping time-based type 1000 files. See DR 531915-3 for details.
| - | The Limits (OUTERLIMITS and/or VIEWLIMITS) table now supports XMIN for X1, XMAX for X2, same for for Y and Z. See DR 808273-1 for details.
| - | Y-Axis text now rotates to draw vertically to ensure the text fits. This can be adjusted via the Axis menu options ~RotateVals (to force rotation of Axis text), and ~AutoRotate (which will only rotate the text as needed).
| - | Since 3.1.1, LayerMulti now supports Plot mode settings (MAG,PHASE,10LOG,20LOG,REAL,IMAG)
| - | Since 3.1.1, there is a new Layer LayerScatter for plotting CSV, Type 3000, and Type 6000 files. See the PLOT explain for details.
| - | Since 3.1.1, Plot now supports the /XCNT and /MTAG=<table> switches. /XCNT is used to set which mouse actions send a message (same as CNT=), and /MTAG defines a set of results to be loaded with either the X,Y,Z, or X+Y values when the mouse action occurs. See the plot explain file for more details.
| - | Since 3.1.1, there is a new Layer LayerScatter for plotting CSV, Type 3000, and Type 6000 files. See the PLOT explain for details.
POPUP | - | In 3.1.3, Added ability to create FILE CHOOSER popup. See DR 810018-3 and popup explain file for details.
RMIF | - | Added a /HOST= switch to indicate server's IP address or hostname to bind on for the Java primitive (within NeXtMidas) to mirror functionality of the host primitive (within X-Midas via NeXtOpt). See explain file and/or DR 523226-3 for details.
| - | Added a /DEVICE= switch so that a Network Device name can be supplied (e.g. eth0). This allows a more generic way to select the desired network interface card (NIC) on machines with multiple NICs. See explain file and/or DR 523226-3 for details.
RMSG | - | In 3.1.3, added support to T2R for X-Midas tables utilizing the H: or h: syntax. See explain file and/or DR 814318-1 for details.
VNCVIEWER;VNC | - | Now supports <host>:<display_number> syntax for HOST= argument. See explain file for details.
WAVEFORM | - | Added ability to output shape=NOISE that matches the X-Midas WHITENOISE algorithm. See explain for details.
WINDOW | - | In 3.1.3, added symmetric (/SYM) switch to compute time symmetric window and /SCALE= switch to apply scaling factor to output. See explain for details.
XBC | - | Better support for X-Midas C++ host primitives within XBC and OS environment variables in primitives.cfg build configuration.
| - | Added support for following APIs: M$BETWEEN, M$EXT, M$FFTSIZE_BEST, M$FFTSIZE_VALID, M$HEAD, M$ROOT, M$TAIL, and M$TRIMS
| - | In 3.1.2, added xmtime.h, msgmask.h, and qmessages.h header files additional C++ host primitives support under XBC. During the build process for XBC and it's properly configured dependent option trees, the qmessdecl.h, qmessdef.h, and qmessdef.hh are now auto generated from existing messages.cfg files that exists in path when `CONVERT <opt> MSGCFG2INC` is called.
Libraries | - | Args - support for REQUIRED flag in getTable(String,Table,int flags). + In 3.1.3, three parameters versions of getCS, getQ, getS, getU, getFileName methods and a four parameter version of getString method allows API user to specify the default value for a state switch (e.g. /switch vs a blank string getting returned). + See API docs for details.
| - | BaseFile - Ability to specifying default file qualifiers. See API docs and/or DR 807624-3 for details.
| - | FileName - new toLocalFileName(int dir), toURL(), and setDefaultQualifier(..) methods. + In 3.1.2, new getBasename(String) and getRoot(String) methods. + See API docs for details.
| - | FileUtil - new recursiveDelete(..) methods to recursively delete the specified path that works with bad symbolic links. + New toLocalFileName(URL), isLocalFileName(URL), and splitEntries(..) methods. + See API docs for details.
| - | GraphicsUtils - createImageFromFile(..) now supports complex data types in the input file. See convert explain file and/or API docs for details.
| - | Import - new getEnv(String key, String defValue) method that returns defVal if the OS environment variable is not found or if the JVM Security Manager prevents reading environment variables (e.g. in an Applet). + In 3.1.2, new expandEnvVars(String) to substitute variables starting with a dollar ('$') with existing OS environment variables. + See API docs for details.
| - | Keywords - Keywords.Iterator now implements java.util.Iterator. + Unpacking of lkey (length of total keyword block) field in keyword header is now signed int_4 (vs unsigned int_3). + Unpacking of lext (length of non-value part of keyword block) field in keyword header is now signed int_2 (vs unsigned int_2). + In 3.1.2, new addAll(Map), putAll(Map), and setAll(Map,int flags) methods to insert/add key/values from a java.util.Map object into the Keyword object. + See API docs for details.
| - | Parser - new constructor that allows the delimiter and doClean to be specified on object creation.
| - | StringUtil - In 3.1.2, new cleanSplit(String) and expandVariables(..) methods. See API docs for details.
| - | Table - remove(String key) and remove(String key,int attr) now returns the removed value. + new addIfNotPresent(..) methods similar to java.util.Set.add(..) method. + In 3.1.1, added support to use Java's ConcurrentHashMap (CHM) as a table mode (e.g. the underlying structure used to hold the keys and values.) + In 3.1.2, added new Table(TextFile, int flags) constructor and fromTextFile(TextFile, int flags) method. + See Table API docs for details.
| - | TextFile - In 3.1.1, flush() to write cached data to disk has been implemented. + Support for the FLUSH flag (to automatically write cached data to disk) is now available (e.g. useful when logging to text files). For example: `RMIF/log=mylogfile.txt{flags=+FLUSH}` + See API docs for details.

#### Known Third-Party Bugs

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

Linux | - | A NeXtMidas installation built on a RHEL5 machine cannot run a RHEL4 machine. It will crash when trying to load native code (with a SIGFPE). Workaround is to disable native code via -DNONATIVE=true property, e.g. "`setenv NM_USER_JVM_FLAGS -DNONATIVE=true`". Another workaround is to build on the RHEL4, which can run on the RHEL5 machines. See BUG 2330 NeXtMidas built with RH53 will not run on RH44 for more details.
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.
JDK 8u20 to 8u31 | - | The Java Development Kit 8u20 to 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.
Applets | - | 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 JDK Bugs 8047710 and 8029314 for more information.
GCONTROL | - | Can not see cursor or highlighted text in text-entry widgets when using Java 5.0 on Linux (Java Bug 6287895). This is fixed in Java 6.0, please upgrade to Java 6.0 to avoid this issue.
Firefox 22+ | - | Mozilla Firefox 22+ blocks local file applets from running if the codebase refers to the parent directory. See Mozilla's Same-origin policy for file:// URIs at https://developer.mozilla.org/en-US/docs/Same-origin_policy_for_file:_URIs). See also Mozilla Bug 902375 Firefox 23: The Load of a local java applet (*jar) fails silently at https://bugzilla.mozilla.org/show_bug.cgi?id=902375 where the a Mozilla developer says that "the case where codebases outside of the current directory are blocked is intentional...". A workaround in Firefox is to set "security.fileuri.strict_origin_policy" preference (in the about:config page), it defaults to true, but can be set to false if the user doesn't want to strictly enforce the same origin policy on file: URIs. This strict_origin_policy preference is available since Gecko 1.9/Firefox 9.
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).
OS | - | There is a known Java Bug (4052517) that prevents OS commands from being executed in Unix when the permissions are 750 and the user's default group does not match the group of the command. The result is either a "not found" or a "cannot execute" error. This bug is fixed in Java 6. (This bug can cause the NeXtMidas build to fail under Java 5 or Java 1.4.2 when `gcc` does not have 755 permissions.)
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 | - | SOURCEDG running on RedHat Enterprise Linux 4 (RHEL4) 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 | - | There is a known Java bug related to garbage collection (Java Bug 6268279 and related bugs) that can cause a core dump when making extremely frequent M$... calls from a host primitive (typically seen if polling a results parameter with little or no pause between calls). Upgrade to Java 5.0 to avoid this.
| - | 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 .
| - | There is a known issue using the Intel C/C++ 13 compiler with the 3.2.x releases on RHEL/CentOS 6 64-bit platforms. See DR 830285-1 XBC: Issues with Intel Compiler 13. You can workaround this issue by disabling the Intel C compiler optimizations in $NMROOT/nxm/sys/cfg/build.props (by chaning from -O3 to -O0 on line ~167) -or- using GCC with the Intel Fortran 13.x compiler to build XBC. This issue also applies to the Intel C/C++ 14.x compiler for RHEL/CentOS 6 and 7 64-bit platforms. This does not seem to effect our RHEL 5 32-bit and 64-bit test machines. This issue is addressed in the NeXtMidas 3.4.0 or later releases.
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. The workaround is to disable the Direct3D support in java via the environment variable NM_USER_JVM_FLAGS=-Dsun.java2d.d3d=false).

#### Known Issues

Java 5 and Intel 12+ | - | The combination of using the Java 5 / JDK 5 and Intel 12.x or Intel 13.x C/C++ compilers on RHEL 5 32-bit machines do not work. This combo apears to work fine on a RHEL 5 64-bit machine. Workaround is to use Java 6 / JDK 6 or later.
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 large frame size may not load properly.
| - | CLICKACTION={COL=...} does not work properly (BUG 1352).
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.
PLOT | - | A PLOT of a pipe on a hidden tab may discard data from the pipe while the tab is hidden (similar to use of the /NICE= switch).
| - | Timecode readout for large Type 2000 may give t=00:00:00.
Webstart | - | Oracle has been making frequent changes to the security restrictions for Java 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 bugs and enhancements are tracked using Bugzilla. If you are connected to the Internet clicking on the Bug number below will provide details related to the bug and a complete list of all changes made to resolve it. GForge DR number is included for all customer-submitted bugs. GForge entries are listed "n/a" for bugs that appear in pre-release snapshots of NeXtMidas (not publicly available) -or- not available on GForge.

Bugs Fixed in Release 3.2.4 (29 Apr 2015)
Bug Number | GForge DR | Description
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
2880 | 846472-1 | LayerWMS should support layers with a space in their name (partial fix)
2881 | 846639-1 | XGEOPLOT: NPE on debug message without a from object
2887 | n/a | SHELLGUI: ArrayIndexOutOfBoundsException on text selection after paging
Bugs Fixed in Release 3.2.3 (29 Apr 2014)
Bug Number | GForge DR | Description
2759 | 830471-1 | Time.fromJ1950 got broken for case where the total fractional seconds is just barely < 1
2767 | n/a | Applet / Web Start: Missing Permissions and Codebase manifest attribute warning from JDK 7u25+
2783 | 836577-1 | MAKE / BUILD: JDK 8 Integration
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
2799 | 830490-1 | Changes in JDK 7u45 breaks Webstart properties
2804 | 834837-1 | Shell: saveState/loadState of M.dictionary issue / causes CONFIDENCE to run duplicate test macros
2812 | 836739-1 | XGEOPLOT: REREAD message incorrectly removes layer
2824 | 837196-1 | DemodNative.c hidden bug in Demod_processLUT(..) method
Bugs Fixed in Release 3.2.2 (27 Sep 2013)
Bug Number | GForge DR | Description
2592 | 824955-1 | StringUtil.textToRegex(..) improperly handles "["
2656 | 821493-1 | GWidget: NullPointerException when SwingWidgets is set
2685 | 821391-1 | DataFile/TimeLine: after a pipe restart the TimeLine's delta field is not updated when XDELTA/YDELTA changes
2690 | 821797-1 | PANEL: running a macro with a panel and /ICON shows a blank frame when user de-iconifys
2691 | 821943-1 | LIST2: NPE when doing ctrl-p to pop out / push back into panel
2696 | 822145-1 | NMPOST: javadocs "errors" for enum when using JDK7
2697 | 824701-1 | NEWRATE: Docs for NEWRATE are inadequate
2704 | 823107-1 | FEATURE: type=symbol symbol=Circle does not filled when told to (regression)
2706 | 822359-1 | SHELLGUI: OpenJDK fonts not monospaced, which causes wrong cursor placement
2711 | 825077-1 | PLOT: displays incorrect units in readout for x= and y= when /xmult= and /ymult are set
2715 | 812025-3 | PANEL: NPE when polling widgets
2716 | 824832-1 | GPipeMon: Stack trace when trying to display non-piped data
2728 | 825400-1 | GDialog: NullPointerException when using MMB
2729 | 825401-1 | PLOT: Image export dialogue exports file to wrong place. (Fixed default filter list only.)
2741 | 826824-1 | ENVIRONMENT: setting USENATIVE with + (plus) or - (minus) option sets wrong value in ENV.USENATIVE
2763 | 829106-1 | running HELP command from Applet causes program to exit
2764 | 829110-1 | HELP/BUILD throws NPE ERROR when $NMROOT/htdocs/api has not been created
2766 | 829428-1 | Web Start: NPE error when trying to run from local file using Java 7u25 or later
2771 | 829427-1 | DataFile: file trimmers with tilde incorrectly using index mode
2776 | 830490-1 | Change in JDK 7u25 breaks Help Applet search
2791 | n/a | MApplet: JDK 7u40 security restriction breaks Applet
Bugs Fixed in Release 3.2.1 (12 Dec 2012)
Bug Number | GForge DR | Description
2453 | 806505-3 | MidasBean: needs a cleanup method (minor adjustment to remove MidasDisplay reference at REG.WIN.cmdID)
2570 | 812956-1 | support Java7 (JDK7) (adjustment to original fix)
2616 | 809772-3 | Gcontrol: Need more docs for /FMT= switch, use of MFormat
2632 | 810294-3 | LayerT5 Stack Overflow (regression)
2662 | 810766-3 | PLOT / MPlot: Race condition in formatReadout()
2664 | 820426-1 | HPrimitive.checkout() throws NullPointerException when it cannot delete tempFile
2668 | 820513-1 | PLOT: NPE in MPlot.refresh() when closing then opening files
2679 | 820876-1 | NEXTOPT: backgrounded nm commands use 100% cpu after nm/off kills JVM
2682 | 821305-1 | GENERATE: Jar Signer certificate expiring
Bugs Fixed in Release 3.2.0 (31 Jul 2012)
Bug Number | GForge DR | Description
2488 | 807475-3 | PLOT: LayerT5 cuts off parts of polygons (regression from earlier release)
Bugs Fixed in Release 3.1.3 (13 Jul 2012)
Bug Number | GForge DR | Description
1447 | 768754-1 | Need for context when running -INDEPENDENT
2568 | n/a | Args.getString(name,defval,flags) is NOT consistent for regular params vs switch params need way to specify state switch default value
2572 | n/a | WINDOW primitive does not support symmetric and scale switches (/SYM and /SCALE)
2595 | 814925-1 | Plot / LayerT5: FillCones option doesn't completely fill cones on the dateline
2604 | n/a | GMenu with /input needs to accept inputs from web for control
2608 | 815722-1 | X-Midas 4.11.1 breaks NeXtOpt (NXM option tree)
2610 | 815776-1 | Cannot headermod on pipes NOT updating headers since 2.9.2
2611 | n/a | Need mods for performance tuning for pipes to use ENV.pause as default and allow /POLL on startmacro line to override
2612 | 808100-3 | HEADERMOD: Creating files in detached mode
2614 | 815456-1 | KEYWORD: should be able to add multiple keywords with ADD function
2615 | 809815-3 | GControl: Incorrect initialization of BEAN widget
2619 | 814318-1 | NeXtOpt: rmsg needs to support X-Midas H:/h: syntax for tables
2621 | 810018-3 | POPUP: Add FILE option
2624 | 816801-1 | FILE: does not append to text files
2622 | 809942-3 | TABLE: Add option to read Python configuration files
2623 | 816410-1 | PANEL: /LOGGER does not display correctly if defined in setup file
Bugs Fixed in Release 3.1.2 (31 May 2012)
Bug Number | GForge DR | Description
1104 | 501176-5 | LIST2: out of memory error on large file (~1.3GB)
1356 | 517204-3 | CONVERTARGB: loops through more points than needed
1374 | 517398-3 | XBC: throws an error when LRCT primitive exits
1378 | 665005-19 | XBC: m$put_keydata doesn't work with constant string literals
1921 | 523226-3 | RMIF: Missing /HOST= switch in Java version
2004 | 524863-3 | FILES command should support text files output to handle > 80 character file names
2168 | 527239-3 | Duplicate of Bug 1104: LIST2: Out of memory errors
2369 | 802331-1 | XBC: Incompatibility between M$FFTSIZE and M$RFFT
2419 | 531915-3 | PLOT / Layer1D: Support overlapping time-based plots
2429 | 531950-3 | BUILD: XBC: does not use primitives.cfg correctly for OS Environment variables
2551 | 812040-1 | Need to start window maximized
2553 | 808750-3 | LIST2 is unable to list a detached BLUE file
2562 | 812665-1 | DEBUG: potential lost settings when running from $HOME/nmstartup.mm
2570 | 812956-1 | support Java7 (JDK7)
2571 | 808731-3 | Consider SIGSTATISTICS and SIGSTATDEMO for inclusion in DSP option tree
2572 | n/a | WINDOW primitive does not support symmetric switch
2577 | 813078-1 | FOREACH: Nested FOREACH loops break out early when using Objects
2580 | 808976-3 | Plot / LayerWMS: Config menu pops up on wrong screen when dual-headed
2582 | 808994-3 | IMPORT: would be useful to have a default when env does not exist
2583 | 808989-3 | SWITCH: it would be nice if switches could be case-sensitive
2585 | 808751-3 | LIST2: negativeArraySize exception with files larger than RamResource.RamFile's 2 GiB
2586 | 810790-1 | MACRO: background submacro with pipes delete pipe entry on exit
2587 | 810689-1 | BUILD / XBC: As part of building MIDAS HOST primitives, run checkXBC
2588 | 808316-3 | MAKE / BUILD: cannot control which option tree areas to build
2589 | 813792-1 | Support native libraries on some 64-bit machines with generic os.arch system property of "x86_64" like MacOS X 64-bit
2590 | n/a | Build for inner classes with native code
2591 | 814047-1 | LIST2 custom scroll bar cannot handle very large number of rows
2593 | 813250-1 | Update Docs for Nibble and Offset Byte Data Types
2594 | n/a | FTP glitch
2596 | 814551-1 | REG.HANDLERS.PACKET in -INDEPENDENT mode allows dupes
2597 | 531227-3 | Duplicate of Bug 2278: XBC: want type 1200 support
2598 | 809224-3 | THEME: headless mode check causes NPE in Netbeans GUI Builder
2599 | 809249-3 | KEYWORD: incorrectly puts keywords in extended header with FSET
2600 | 808016-3 | NM: One-shot command with type "O" issue or OS command not truly on-shot
2601 | 813645-1 | Update PLOT explain file to include EXPORTIMAGE
2602 | 815128-1 | LIST2: doesn't support using .tbl files when swapping templates
2603 | n/a | IF: Need string ends with test function
2605 | n/a | HWDRIVER: Need additional valid terminator sequence
2606 | 815348-1 | XBC: calling m_d2a in C++ primitive causes SEGV since Mc & Mu has not be init
2607 | 809558-3 | NeXtMidas needs file handler entries for all PLATINUM files
2609 | n/a | RESULTS: Display Keyable Commands as Commands not Keyables / Don't override current Z-scale mode when calling MPlot.setRange
Bugs Fixed in Release 3.1.1 (28 Mar 2012)
Bug Number | GForge DR | Description
1908 | n/a | background macro terminals (adjustments to original fix)
1992 | 665884-19 | LIST2: Adding rows to listed type 6000 file corrupts temp (RAM) version
2004 | 524863-3 | FILES command should support text files output to handle > 80 character file names
2159 | n/a | Duplicate of Bug 2457: PLOT / FileResource: occasional NPE when invoke ,, plot.openfile(..)
2179 | n/a | MESSAGE: ClassCastException ERROR when sending a message to a RMIF.REMOTE using func=SENDW
2219 | 666331-19 | POSITION: Errors in getSpeed() calculation in Position class
2453 | 806505-3 | MidasBean: needs a cleanup method
2479 | 807327-3 | PLOT: nothing displays if Y2 <= Y1
2481 | 807330-3 | HOMEPATH: Set to track CWD
2500 | 807567-3 | Occasional exceptions when running sd360 a multitude of times / Table iterator and remove / ConcurrentHashMap table mode
2503 | 8076880-3 | Plot / LayerGeo: FDOA lines do not intersect both solutions as expected
2511 | 808019-3 | PANEL: graphics glitches when placing panes
2512 | 807625-3 | DATAFILE / PIPE: Can't pipe type 6000 files the same way as type 3000 files
2522 | 810451-1 | need Frame Synchronous Video Integrator (FSVI) command
2534 | 808332-1 | GCONTROL/GWIDGET: HTML gcontrol text capability
2535 | 812041-1 | HELP/BUILD: support <command>=<other_command>;<another_opt> syntax
2536 | 808344-3 | MidasBean thread should be named
2538 | 808165-3 | Implement a delete on EXIT qualifier for FileResource
2539 | 808150-3 | Not a Bug: PLOT: suspect PLOT locks up user GUI
2540 | 808131-3 | ELSEIF: questionable syntax permitted, but doesn't function properly
2541 | 808149-3 | GCONTROL: Missing documentation and tests for /CS switch with BUTTON widget
2542 | 808220-3 | PLOT / LayerMulti: LayerMulti ignores mode=
2543 | 808140-3 | GCONTROL: Ignores /WTHEME= if /THEME= is set
2544 | 808239-3 | PLOT / LAYERSCATTER: Add LayerScatter to augment / replace LayerXY
2545 | 808128-3 | Terminal: Add MT.format(...) function that takes printf(..) style format strings
2546 | 811117-1 | RMIF hung with no errors when logging is on / TextFile is not thread safe
2547 | 810688-1 | XBC incorrectly implements M$GRAB support
2548 | 811112-1 | Keyword / Status: Hangs with error in extended header
2549 | 808487-3 | LAYER: call to getFeature() causes warning
2552 | 812046-1 | INVOKE / KeyObject: unable to invoke "public abstract" method from private inner class that implements nested interface(s)
2554 | 810454-1 | NM/NMSTART/NMPROFILE: Disallow from running inside shell
2555 | 810453-1 | SHOW: Add SHOW command and add default HW Config (prm) file
2556 | 808414-3 | PLOT / LayerWMS: NullPointerException in getCursor()
2557 | 810923-1 | HTTPGET: Should pass qualifiers through to macro
2561 | 812894-1 | CONVERT: StateVector (Type 5000) to KML conversion
2562 | 812665-1 | DEBUG: potential lost settings when running from $HOME/nmstartup.mm
2563 | 808602-3 | PLOT / KEYOBJECT: Annoying warning when using setup Table
2565 | 808198-3 | XBC: build (deprecation) warnings with 64-bit RH 6.1 and Intel (ifort) 12
2567 | 530739-3 | MENU - give option for /F= to include semi-colon option tree name in output
2568 | 530739-3 | Args.getString(name,defval,flags) is NOT consistent for regular params vs switch params
2569 | 812814-1 | fexists returns true for NULL and "" under NeXtMidas 3.0.1
2573 | n/a | RUN command broken
2575 | n/a | PANEL null pointer using GCONTROL/GRP=xxx
2576 | 530739-3 | PLOT: Write mouse location (POINTER / DRAG / BUTTON messages) to a result
2579 | 804137-1 | CALC's random is not truly random and SETSEED
Bugs Fixed in Release 3.1.0 (30 Dec 2011)
Bug Number | GForge DR | Description
1133 | 807385 | LIST2: Deselect not working over row numbers
1744 | 808790-1 | CONFIDENCE leaves temporary files
1757 | 808990-1 | TUNER: IndexOutOfBoundsException from certain input file sizes
2091 | 525956-3 | PLOT / FEATURE : SWINGDB causes Y index of HLine Feature to lose precision
2126 | 806662-1 | TIMEX errors when displaying very large values (e.g. 1e15)
2381 | n/a | DSPLib / MPULib structure (adjustment to pad ASCII parameters to 8 character boundary for Data class)
2392 | 531871-3 | LIST2: Should handle table and table files
2401 | 807296-1 | LIST2: cannot exit via RETURN if a row is selected
2404 | 808615-1 | NeXtOpt: RMIF: error compiling under RHEL6 using ICC 12 / GCC 4.4.x for undefined u_char
2419 | 531915-3 | PLOT / Layer1D: Support overlapping time-based plots
2426 | 531916-3 | PLOT: DateString readout ignores ExtPrec
2428 | 807328-1 | list2 interval selection problems
2430 | 532364-3 | Class runnable from Java file not runnable from NXM
2440 | 808288-1 | Generate: add support for TEXT directive in Operators.cnf
2443 | 807196-1 | RESULTS/SET: Should NOT be able to overwrite restricted results (AUX, ENV, OPT, RAM, REG)
2446 | n/a | Examples of web based server/client macros
2454 | 806513-3 | RESULT: Context different when result set in loop in shell vs macro
2455 | 806564-3 | Table: remove(String) should return previous value
2456 | 806558-3 | PLOT: Error parsing colormap
2457 | 806477-3 | Plot: invoking openFile(..) causes frequent NullPointerExceptions
2458 | 532474-3 | Panel: Need ability to choose which screen to pop panel to
2459 | 532538-3 | Plot / LayerT5: ArrayIndexOutOfBounds exception when setting colormap
2460 | 532542-3 | Plot / LayerWMS: Inconsistent results table look-up
2461 | 806384-1 | Add fastcorrelate command
2462 | 806874-1 | Add NORMALIZE command
2464 | 806883-1 | PLOT: Initial Z values not saved when zoomed at open
2465 | 806699-3 | GControl PIPEMON: needs a setValue method
2466 | 666879-19 | HttpResource: support proxy
2467 | 807207-3 | LIST2: Row selection by value is WRONG if the table is sorted
2468 | 810450-1 | HTTPSERV: HPage should use buffered output stream for output socket
2469 | 808287-1 | enable escape sequences support in quoted strings in Macros and Tables
2471 | 807299-3 | GeodeticUtil: ComputeEllipseLL(..) returns wrong tilt angle
2472 | 807307-3 | DataFile: calling setSubRecords(..) with empty String
2473 | 807308-3 | GControl: text draws outside of widget if size is reduced
2474 | 807315-3 | FileName/FileUtil: needs new utility functions and docs updates
2475 | 807316-3 | PLOT: ExportImage message does not work with an AUX specified
2476 | 807319-3 | FileName: error accessing FullName from macro/shell
2477 | 807322-2 | PLOT: OpenFile message needs better docs and minor code updates
2478 | 807326-3 | PLOT: cuts off values equal to lower limit of the range
2479 | 807327-3 | PLOT: nothing displays if Y2 <= Y1
2480 | 807329-3 | Theme: button state reversed in some themes
2481 | 807330-3 | HOMEPATH: Set to track CWD
2482 | 807333-3 | FILES / TERMINAL: Have option to not search all of READ AUX
2483 | 807350-3 | Update ELPS docs in NXM User's Guide
2487 | 808154-1 | Data.promoteType does not properly support 'X' type
2488 | 807475-3 | PLOT: LayerT5 cuts off parts of polygons
2489 | 666936-19 | MJFrame / MWindow: macro icon status not set when iconified with mouse click
2490 | 808158-1 | GCONTROL: GDialog missing button "callback" in message
2491 | 808390-1 | Args / Macro: "!" incorrectly treated as comment when within String
2492 | 808439-1 | LayerT5: setCone(double[]) incorrectly calls setElipse(..) instead of setCone(..)
2493 | 807494-3 | HISTOGRAM: histogram is broken
2494 | 807602-3 | PLOT: Axis titles wrong when changing type
2495 | 807558-3 | FFT: Wrong units on output when /1D specified
2496 | 808647-1 | MWindow: /WTITLE= does not set window title for SHELLGUI / LIST by itself
2497 | 807622-3 | BaseFile.getQualifiers() should not return null
2498 | 807741-3 | XBC: calling m_promote_format gives undefined symbol
2501 | 809300-1 | XBC: xmlibc.c f2jstr and fsw2jstr can fail when input string is larger than 160 chars
2504 | 808273-1 | Plot / MPlot: expand ViewLimits and OuterLimits to accept "_MIN,_MAX" names
2505 | 807740-3 | Plot: occasional errors in axis labels
2506 | 807581-3 | RESULT: Store the count of results that match a filter
2507 | 807490-3 | WAVEFORM issues with WHITENOISE output
2508 | 807942-3 | Not a Bug: LIST2: clicks on list no longer can populate widgets
2509 | 809317-1 | Infinite loop takes 100 percent of the CPU when DISPLAY is not set
2514 | 808018-3 | OPT: Missing ")" in print out
2515 | 808052-3 | VNCVIEWER: Missing documentation in explain file
2516 | 807898-3 | FFT: needs more details regarding <WIN> in explain file
2517 | 807292-3 | DataFile: Does not build cleanly in NXM 3.0.0
2518 | 807624-3 | BaseFile: Need a way of specifying default qualifiers
2519 | 807626-3 | Move mature DSP comands from UCL to DSP option tree
2520 | n/a | ICE project mods - add ice:// handler for IceResource
2521 | 810179-1 | ABSCISSA: command dictionary entry
2523 | 81880-1 | XBC: m_spa does not return proper value
2524 | 810156-1 | PLOT: MPlot.refresh(..) add null check for dbimage inside if (useDB) block
2525 | 809218-1 | CONVERT / GraphicsUtil: createImageFile(..) does not handle CF/MAG data
2526 | 807954-3 | Duplicate of Bug 2496: PLOT: ignores /WTITLE= when READOUT=-OnTitle
2527 | 808053-3 | VNCVIEWER: support <host>:<disp> syntax
2528 | 808213-3 | Incorrect units cited in Constants.java for METERS2DEG and DEG2METERS
2529 | 808017-3 | POPUP / THEME: Graphics initialization missing from POPUP command
2530 | 808206-3 | KEYWORD: Missing explain file entry (and test case) for FPUT
2531 | n/a | CONFIDENCE: should propagate /baseline, /interactive, and /debug to all executed test sub-macros
2533 | 808318-3 | CALCULATOR: explain entry for CLIP performs opposite operations

#### Deprecated Functionality

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

Command | Deprecated Item | Replacement | Deprecated Since
FEATURE | Use of LABEL= inside the table of options | Use TEXT= | 2.3.0
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
IF | Numeric comparison assumes scalars without warning. | Use EQ/? (see IF explain file for details). | 2.7.0
ERMIF / ECONTROL | These commands are user contributed and have been unsupported, untested, and unused since it was added to the baseline. It has been moved to the UCL option tree, but is slated for removal in the future. | Use RMIF | 2.9.2
AMFSYNC / KAISWIND / TRACKSUB | These commands are now considered "mature" and have been moved from the UCL option tree to the DSP option tree. As such, the UCL versions are deprecated and no longer supported. | Use DSP versions | 3.1.0
NMPOST | The user-contributed NMPOST option tree is out of date and is usually replaced with author's version. | Get latest from authors of NMPOST. | 3.3.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)