# NeXtMidas 4.0.4 Release Notes

Changes between release 4.0.0 and 4.0.1 are listed in blue.

Changes between release 4.0.1 and 4.0.2 are listed in green.

Changes between release 4.0.2 and 4.0.3 are listed in teal.

Changes between release 4.0.3 and 4.0.4 are listed in purple.

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

NeXtMidas SYS Option Tree Tested on: (tests with Java 8, 11, 17, and 20)
OS Version | Platform | Native Compiler(2) (SYS Option tree) | Web Browser (WebStart)
--- | --- | --- | ---
CentOS 7.9 | Linux (x86_64) | gcc 4.8.5 / Intel 19 / Intel 2020 / Intel oneAPI 2021, 2022, and 2023 |
RHEL 8.8 | Linux (x86_64) | gcc 8.5.0 / Intel oneAPI 2022 and 2023 |
RHEL 9.2 | Linux (x86_64) | gcc 11.3.1 / Intel oneAPI 2022 and 2023 |
Windows 10 | Windows (x86_64) | pre-compiled DLLs (MinGW-W64/gcc 12.2.0) |
Fedora 38(3) | Linux (x86_64) | gcc 13.2.1 |
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) (tests with Java 8, 11, 17, and 20)
OS Version | Platform | X-Midas Mode | C/C++ Compiler(2) | Fortran Compiler
CentOS 7u9 | Linux (x86_64) | NeXtOpt (X-Midas 5.9.1) | gcc 4.8.5 / Intel 19 / Intel 2020 / Intel oneAPI 2021, 2022, and 2023 | gfc with DEC FORTRAN ext. 4.8.5 / Intel 19 / Intel 2020 / Intel oneAPI 2021, 2022, and 2023
NeXtOpt (X-Midas 5.8.0) | gcc 4.8.5 / Intel 19 / Intel 2020 / Intel oneAPI 2021, 2022, and 2023 | gfc with DEC FORTRAN ext. 4.8.5 / Intel 19 / Intel 2020 / Intel oneAPI 2021, 2022, and 2023
NeXtOpt (X-Midas 5.6.3) | gcc 4.8.5 / Intel 19 / Intel 2020 / Intel oneAPI 2021, 2022, and 2023 | gfc with DEC FORTRAN ext. 4.8.5 / Intel 19 / Intel 2020 / Intel oneAPI 2021, 2022, and 2023
XBC ("64Bit") | gcc 4.8.5 / Intel 19 / Intel 2020 / Intel oneAPI 2021, 2022, and 2023 | gfc with DEC FORTRAN ext. 4.8.5 / Intel 19 / Intel 2020 / Intel oneAPI 2021, 2022, and 2023
RHEL 8u8 | Linux (x86_64) | NeXtOpt (X-Midas 5.9.1) | gcc 8.5.0 / Intel oneAPI 2022 and 2023 | gfortran 8.5.0 / Intel oneAPI 2022 and 2023
NeXtOpt (X-Midas 5.8.0) | gcc 8.5.0 / Intel oneAPI 2022 and 2023 | gfortran 8.5.0 / Intel oneAPI 2022 and 2023
NeXtOpt (X-Midas 5.6.3) | gcc 8.5.0 / Intel oneAPI 2022 and 2023 | gfortran 8.5.0 / Intel oneAPI 2022 and 2023
XBC ("64Bit") | gcc 8.5.0 / Intel oneAPI 2022 and 2023 | gfortran 8.5.0 / Intel oneAPI 2022 and 2023
RHEL 9u2 | Linux (x86_64) | NeXtOpt (X-Midas 5.9.1) | gcc 11.3.1 / Intel oneAPI 2022 and 2023 | gfortran 11.3.1 / Intel oneAPI 2022 and 2023
NeXtOpt (X-Midas 5.8.0) | gcc 11.3.1 / Intel oneAPI 2022 and 2023 | gfortran 11.3.1 / Intel oneAPI 2022 and 2023
XBC ("64Bit") | gcc 11.3.1 / Intel oneAPI 2022 and 2023 | gfortran 11.3.1 / Intel oneAPI 2022 and 2023
Fedora 38(3) | Linux (x86_64) | NeXtOpt (X-Midas 5.9.1) | gcc 13.2.1 | gfortran 13.2.1
NeXtOpt (X-Midas 5.8.0) | gcc 13.2.1 | gfortran 13.2.1
XBC ("64Bit") | gcc 13.2.1 | gfortran 13.2.1
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. 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) Minimal testing was done with OpenJDK 21.

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

- Java 7 was EOL on April 2015. Oracle's Premier support for Java 7 ends in July 2019 (i.e. no more security patches). As such, Java 7 is no longer supported in NeXtMidas 3.9.0 and later.
  Users who wish to run on Java 7 are advised to use the NeXtMidas 3.8.x version.

#### 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.
CallStackUtil | - | CallStackUtil, which is used for detail logging information by LogUtilities, now relies on a small file (CallStackUtilSwap) that is JDK dependent. The .jdk08 version is the default and is present before compiling, but the .jdk version will be swapped in if compiling with a later JDK. This is supported both with regular NXM builds and with Gradle builds and makes it so that users do not have to manually swap code to get the higher performance and more accurate logging. It also prevents the confusing StackTrace warning users that performance would be compromised due to missing API, that was present even after the user manually switched to the approriate code.
CHECKAUTHORIZATION | - | PLEASE INFORM the NeXtMidas team if you are using this command. Usage to perform the actual queries is now limited due to REST attribute services going to a more complex query mechanism. Use this with caution! This command, especially the REST query based portion, may be deprecated in the near future, unless we hear it is still useful.
Convert | - | In 3.9.0, the default behavior of Convert.o2n and Convert.s2n was improved to, at least in the case of numeric Strings and Objects with numeric value, use the appropriate Number type to preserve value and precision. There was also API added to always preserve precision by specifying that BigDecimal sohould be used. To revert to the old behavior of these conversions always returning a Double, set CoreIO.Option.DefaultToDoubleOnConvertO2nS2nEvenWhenPrecisionIsLost. See DR# 825490-3 for additional details.
DataFile | - | BLUE files with the new 'Z' 256 ASCII Data Type will be given the BLUE VER 1.2. These DataFiles with 'Z' data only readable by NeXtMidas 3.9.4+.
FFT | - | A fix was made in 3.9.0 to keep the FFT NAVG from getting corrupted during restarts. Previously NAVG was incorrectly being adjusted to the number of frames in the last partial average before the restart.
GeodeticUtil/Transform | - | GeodeticUtil.computeConeLLA uses Transform.clipAtEarth underneath. The legacy code gives inaccurate results in cases where the cone extended out from the earth. Though there is an option to still use legacy code, the default is the new more accurate code. Additional refinement of this fix are in process and more documentation is anticipated in the next release. Note: Other GeodeticUtil computeCone methods that use computeConeLLA are also affected. (4.0.1)
PLOT/LayerT5 | - | LayerT5 was designed to read in Alt/Lat/Lon points (and ellipses/cones). Though this is clear in the documentation, there has been nothing preventing it from reading in XYZ data. As of 3.9.3, the default for LayerT5 is to have its values wrapped to fit within Lat/Lon ranges (see DR #8311172-2). This wrapping of points to Lat/Lon bounds can be turned off with the Layer argument DataType=XYZ. With the view=3DGRAPH, that is a variant of VIEW=XYZ, loading XYZ data via LayerT5 needs to also be supported.
PLOT/LayerMap/LayerWMS | - | LayerMap's tiled cache size default and LayerWMS number of download threads default have been increased to modern standards. The tiled cache size default is adjusted if a smaller JVM memory is detected. These defaults can also be updated by the user. The increase in these defaults was needed to avoid long delays when using USETILES=true on WMS servers where there is a long connect time. (4.0.1)
SSLUtilities.verifyGroupProject and SSLUtilities.verifyUserAttribute | - | These methods were intended for use by CHECKAUTHORIZATION, rather than direct usage. As mentioned with the CHECKAUTHORIZATION command, these are beyond useful life as REST attribute services are going to a more complex query mechanism. Please let the NeXtMidas team know if you have an application where they are useful, as the plan is to deprecate these methods.
TABLE | - | Values in a Table that start with a caret '^' will now be resolved as results, if there is a result by that name. To turn off this functionality, use CoreIO.Option.DisableResultUsageWithCaretInTable.
TimeLine | - | Piped High Precision time hacks were mistakenly being converted to BLUE microsecond time hacks. As of 4.0.0, the format of time hacks is being preserved. The default timeline size for all formats was 128, which was too small for high precision time hacks and caused them to wrap. High precision timelines now default to a starting size of 1024 and will grow, if needed, to 4096.
ZPIPE | - | A user contributed updated ZIPE (UCL option tree) was adopted in NeXtMidas 3.9.0. Due to the nature of the changes, we do not anticipate any significant backwards compatibility issues. This was adopted with minimal testing due to the limited user base and the code by nature being a user contributed library.
NMROOT and Classpath | - | When running NeXtMidas from a jar, all dependencies should be in specified directly in the Java classpath. Example: java -DNONATIVE=false -cp "/path/to/jars/nxm-sys-native-linux-x86_64.jar:/path/to/jars/nxm-sys.jar" nxm.sys.lib.NeXtMidas
OptionTree/Shell | - | When getting the Table for all option trees, OptionTree.getAllOptions by default now checks whether or not SYS is already listed in the Table. There is, however, also now an option to revert back to original behavior and disable this check by calling Shell.setCheckSysInOptTable. (4.0.4)
Option Tree removed | - | Deprecated option tree that has been removed: `NONE`
Classes removed | - | Deprecated classes that have been removed: `NONE`
Methods/Fields removed | - | Deprecated methods/fields that have been removed/changed: `NONE`
JDK Module System (allow eventual separation of graphical and non-graphical code into separate modules) | - | Starting in 3.9.2, to better support dockerization and eventual transition to having non-graphical code in a separate JDK module than the graphical code, we have started a path towards breaking the dependencies of the sys non-graphical packages (inc,lib,libm) on the graphical packages (libg,intr,prim,net). Many projects depend solely on our non-graphical code. These projects could benefit from the JDK module system introduced in JDK 9. Breaking the dependencies of our core libraries on our graphical code would allow these users to have smaller release packages, as well as better performance through a faster startup time and reduced memory footprint. A chart showing the changes and the requested user action is in this docs folder: JDK_Modularity_User_Action_Required.xlsx Great effort has been made to ensure backwards compatibility during the transition, but if you make use of global imports of NeXtMidas packages in your code and reference MidasFrame, GPrimitive, of WidgetPanel you may get compile warnings of Ambiguous Reference. If you experience that issue, please organize your imports to only import the classes needed. The legacy version of these classes are inc.MidasFrame, lib.GPrimitive, or lib.WidgetPanel. Other than this, there should be no immediate impact to any users. Time will be given for users to make this transition. A basic summary of the changes requested of the users is: 1) Classes implementing the PlotFile Interface with their own getLayer are requested instead register the appropriate Layer's getLayer method in a registry (see spreadsheet for details) 2) Users referencing inc.MidasFrame, lib.GPrimitive, or lib.WidgetPanel are requested to change references to the new libg version of these classes. For WidgetPanel you will additionally need to either cast any references to GWidget.wp or the return value from GWidget.getWidgetPanel to (libg.WidgetPanel) OR use the new GWidget.getGWidgetPanel() If your option tree will be working with additional option trees that may not have made the transition, the additional recommended steps are shown in the spreadsheet. 3) If you are using the InternalUseOnly methods getLayer(), setMPlot(..) or getMPlot in the inc.Drawable Interface, see the spreadsheet for directions. Please let us know if you have any questions or experience any issues. Our contact information is listed both in the User's Guide and the Training.

#### New Features Added

Bash Support | - | Support using NeXtMidas from bash shell (i.e.: source $NMROOT/os/unix/nmstart.sh)
GFC Support | - | As of 3.9.1, support for GFC compilers has been added
Intel oneAPI 2021 | - | As of 4.0.1, XBC and NeXtOpt have been tested with Intel oneAPI 2021. Intel oneAPI provides a free version of Intel that does not require a license to use it.
New Commands | - | CHECKAUTHORIZATION;SYS - Facilitates Attribute based Access Control
| - | CHECKTIMEKEYWORDS;SYS - Visualization tool for diagnosing issues with uSec or TC high precision time codes
| - | SSLCONFIGURE;SYS - Sets up Java SSL Context for either 2-way (Mutual Authentication) or 1-way authentication. Generally a SSLUtilities properties file is required. The /INSECURE switch (added in 3.9.0) is not recommended, as it sets up an all trusting truststore. With the INSECURE option, a properties file is not needed and the user's key is either auto-discovered or directly provided.
| - | PRESCALER;SYS - This command is intended to be used in conjunction with PLOT to provide more accurate scaling of 1000 and 2000 files. It generates a scale table that can be either a RESULT value or EXTERNAL KEYWORD. This command should be used directly or indirectly via the new PLOT /PRESCALE=... with zero-padded PreD data or in other cases where the plot needs to base its scaling on a wider selection of data from the whole file. See prescaler.exp and plot.exp. (use 3.9.2+)
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.
Libraries | - | Convert - nxm.sys.lib.Convert can now match Java behavior of wrapping oversized integer and long values when CoreIO.Option.FavorJavaBehaviorOverTraditionalMidasBehavior is set. This deviates from traditional Midas behavior or saturating the value. - since 3.9.0
| - | Data - Added support for creating Data objects from java.util.Lists and converting them to Lists (3.9.4).
| - | DataFile - Additional Support for creating files without an extension and maintaining case during file creation was added in 3.9.1. These can be globally enabled as the default via the CoreIO.IOOptions CreateFileWithoutTmpExtenstion and CreateFileMaintainCase respectively. This behavior can also be dictated by the new BaseFile flags MAINTAINCASE and DONOTADDEXTENSION.
| - | DataTypes Minimal support was added for reading PLATINUM unsigned types 'U' and 'V'. The CoreIO IOOption MinimalSupportForUnsupportedDataTypes can be set to allow reading, displaying, and retrieval of values of these types in record data and keywords. Writing out of these types is not supported. Minimal support was added for reading PLATINUM unsigned types 'U' and 'V'. The CoreIO IOOption MinimalSupportForUnsupportedDataTypes can be set to allow reading, displaying, and retrieval of values of these types in record data and keywords. Writing out of these types is not supported. New 'Z' 256 ASCII character Data type was added 3.9.4 to support longer ASCII strings. 'Z' as a Data Type means a 256 character ASCII String. 'Z' as a macro result type (displayed as 'z') still means Boolean. 'Z' as a Table value type (displayed as 'z') also still means Boolean. DataFile Keywords are not allowed to be typed 'A' or 'Z'. ASCII types are saved as 'S' String. ASCII/String Macro RESULTS are stored as 'S' String type. Trying to directly type a result as 'A' type gives a warning, and the type is converted to 'S'. DataFiles with 'Z' Format Type Data, including in a subrecord, will be given the BLUE VER 1.2.
| - | Keywords - The default substitute for dots in keywords (dotted keywords are common in PLATINUM) files has been "->". In 3.9.1, new API Keywords.setDotSubstitute(String) was added to allow the user to specify a custom dot substitute, as the current substitute can be confused with a lambda expression.
| - | PipeResource - Since 3.9.1, nxm.sys.lib.PipeResource has not been handling timelines correctly during Pipe Restarts. A fix has been added that can be enabled by setting the CoreIO.IOOptions.FixPipeRestartTimeLines. This fix is NOT currently enabled by default, to allow time for users to evaluate this fix.
| - | Time - In 3.9.3, added support for BLUE ICD time format codes ACQDATE and ACQTIME, including adding implementation to the methods toAcqDate(..) and fromAcqDate(..).
| - | TimeLine - In 4.0.0, there is a more appropriate default timeline size for high precision timeline formats (starts at 1024 and can grow to 4096). Timeline sizes less than -128 are interpreted as start an a size of the larger of 128 and one fourth of the absolute value specified and grow to the absolute value of the value specified (ex: -1024 means start at 256 and potentially grow to 1025). Additional API has also been added to give users greater control of defaults. See TimeLine API for details.
Gradle Support (BETA) | - | Support has been added to convert NeXtMidas to a gradle directory structure. Please find instructions located at $NMROOT/gradle/readme.txt NOTE: The 41x series has CI/CD and additional Gradle support.
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.
| - | BUILD Full support for building XBC with GCC with DEC Fortran extensions was added 3.9.4.
| - | CONVERT XML2TBL now has limited support for converting XML with dots int the key names. This will result in a table with the ALLOW_DOTS_IN_KEYS flag set. The user can chose the replacement character before serializing the table. If the user does not chose the replacement character(s), the default serialization replacement is New XML2MAPKBT Converts XML to a MapKBT Object. This command just exposes underlying API.
| - | FEATURE New GROUP= Features can now be associated with a Feature Group. See feature.exp New multi-line text Features can now have mulitple lines of text. '\n' in the middle of the feature text triggers a new line. New TextZoomRatio Feature text can be set to only show up at higher zoom ratios, by setting the table argument TEXTZOOMRATIO. See the FEATURE explain file for more details.
| - | KEYWORD New TCDEL now deletes all timeline keywords in the DataFile (3.9.0) TGET defaults to /FLAT=true, causing issues when working with PLATINUM file keywords. CoreIO.IOOPtions.SetKeywordDefaultFlatValueToFalse will switch the global default to /FLAT=true for Tables. (3.9.0)
| - | HTTPSERV - The new /HTTPS switch creates encrypted HTTPS connection. The /ONEWAY switch can be added to the /HTTPS switch to enable only 1-way SSL (client key is not required). - since 3.9.0
| - | PANEL - /MENUBAR now allows GLabels (and their associated GWidgets) to be placed in a drop down menu bar (when the GControl Pane is collapsed). - since 3.9.0
| - | PLOT New VIEW LatLonContinuous was added in 3.9.0. This enables continuous longitude in a Lat/Lon view (i.e. any up to 360 degree range between -180 and +540 can be displayed). This currently does not support any Map Layers, as those Layers were not needed by the requester and the strict longitude constraint for WMS specifies the request range be between -180 and 180. The implementation was designed to match the "LOOSE" WMS standard, which some map servers support, of -180 to 540 (with a maximum range of 360), to facilitate a possible addition of continuous longitude for those Map Servers. Update: since 3.9.1 Added support for continuous longitude for LayerWMS. Note: Currently there can be significant lag while panning. One work-around is to turn off the LayerWMS while panning. New VIEW 3DGRAPH (or VIEW=3D), which is a variation of VIEW XYZ, was added in 3.9.3. This 'new' view uses the underlying XYZ view code, but it enables the proper settings and graph/grid lines for displaying of points on a 3D graph. The plain VIEW XYZ has rotation, scaling, and zooming that work poorly with regular 3D data points Note: When reading in BLUE Type 5000 data (or CSV data - limited Beta support) via LayerT5, the Layer argument DataType=XYZ should be set. LayerT5 has traditionally been used for Alt, Lat, Lon data and by default will have its values wrapped to fit within Lat/Lon ranges (see DR #8311172-2). VIEW XYZ panning now has limits to avoid losing the plot. (3.9.3) New /PRESCALE (use 3.9.2+ version)- Pre-existing PLOT prescaling options were inadequate for certain types of data (ex: zero-padded PreD data), resulting in washed out raster plots and improperly displayed line plots. This new scaling option allows scaling based on a random data sampling throughout the file. See the plot.exp and prescaler.exp documentation for more details. New READOUT option ALWAYSDELTAS keeps delta readouts active, rather than toggling them on and off. This can be enabled by READOUT=+ALWAYSDELTAS (3.9.3). New LayerT5 LAYER option TIMEORDER This option keeps track of the points by time order. This can be important if it is critical that the newest points be the ones kept and the user is working with piped points and is occasionally deleting points. It can also be important if points that are arriving out of order but have their time directly specified. This option is off by default, as there is some extra overhead associated with this ordering. Example usage: {LAYER={TIMEORDER=TRUE}} (3.9.3) New LayerT5/LayerDrawable setTimeWindow API It is important for this option for TIMEORDER to be enabled {LAYER={TIMEORDER=TRUE}}. This APPI allows for only points within a time window to be displayed. The time window can be fix, relative to the latest point in the individual layer, or relative to current clock time. Time windowing can also be controlled at the layerDrawable level, when multiple LayerT5s are associated with a LayerDrawable. See LayerT5 and LayerDrawable for additional details. (3.9.4) New LayerT5 now has ability to sort points by region of the map. Turning on "clustering" will automatically turn this on, but it can also be enabled by FORMREGIONS=TRUE. New API has been added in 4.0.0 to allow users get the current number of points in a region (lat, lon, lat, lon) or (lat, lon, dx, dy) of the map. New LayerT5 has the ability to "cluster points until zooming in. For clustering, sorting points by region needs to be enabled. Setting ShowClusters to true {Layer={ShowClusters=true}} will automatically turn on sorting points by region. See LayerT5, RegionGroups, and Region API. New LayerT5 has the ability to have a track data fade to a specific fade color This allows operators to easily see the both the current location and direction of the object being tracked. The default fade color, if just ColorFade=TRUE is specified, is a light gray. An example of setting fade speed and fade to color as well is {Layer={ColorFade=TRUE,ColorFadeFactor=1,FadeColor=0x200000}}. See LayerT5 API for more details. New LEGEND option that allows auto adjustment of LEGEND line color based on the user specified COLORMAP, even when the COLORMAP is single color. This fix can be enabled for LayerT5 and LayerPoly (ex:world) plots by calling their static methods setAutoAdjustLineColor(boolean). The default behavior, for single color COLORMAPs, is for the LEGEND line color to be based on the DEFAULT COLORMAP. (3.9.4) New LayerWMS RequestVersion This WMS option must be set before the URL is specified. LayerWMS defaults to preferring the latest WMS version supported (i.e. 1.3.0). This option allows an easy override to force a preference for version 1.1.1. (4.0.0) New LayerWMS GWC=true This WMS option enables GeoWebCache friendly settings, to allow cached results to be returned. (4.0.2) New WMS layer transitions can now be customized, allowing base layers to be automatically set based on the visible area of the map (zoom level). (4.0.2) New LayerWMS ByNameCRSs= is a shorter means of giving preference to a Coordinate Reference System (4.0.2)

#### Known Third-Party Bugs and Limitations

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

JDK 17.0.1 libsvml.so name conflict (JDK-8276025) | - | JDK 17.0.2 has fixed a 17.0.1 issue caused by Java adding a library with a name conflict with a common native library. 17.0.1 causes the XBC option tree build to fail with an UnsatisfiedLinkError.
Reflective Access JDK 9+ (warning) JDK17+ (error) | - | Warnings are thrown for illegal access using reflection in Java 9 and up and errors in JDK17 and up. When running from When the running via the NeXtMidas start script, the jvm options shown below are included and there are no warnings or errors. To bypass the warning/error, add this to the jvm runtime options: --add-opens java.logging/java.util.logging=ALL-UNNAMED --add-opens java.base/java.security=ALL-UNNAMED For more information please visit Oracle JDK 14 Documentation
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.
RHEL 8 GCC 8.5.0 | - | We have put in a workaround in rmif.for for a bug in the GCC FORTRAN compiler that comes with RHEL 8. This allows our NeXtOpt code to build and run, but please let us know if you experience any further issues building and running with this compiler. Fritz Reese has narrowed down this bug and states: The compiler crash (ICE) is triggered by STRUCTURE /PACKETSTRUCT/ having 8 fields followed by a UNION. When –fdec is combined with –finit-derived and –finit-local-zero, some code in the compiler creates a bad initializer for instances of PACKETSTRUCT which leads to invalid memory access. It turns out this happens because the routine that adds an element to the field initializer vector for unions uses an insidious macro which apparently modifies the vector pointer on resize; the default size of this vector is 8 elements, so upon adding the 9th field initializer the vector is resized by allocating a new vector, copying the elements over, freeing the old vector, and reassigning the pointer variable. Since the union routine took the vector pointer as an argument (by value), the caller’s vector pointer wasn’t updated after the resize, and therefore the caller’s idea of the vector was a pointer to freed memory. Chaos ensues later at random points in the compiler which deal with this initializer vector during optimization, finalization, etc... Unfortunately, because of the nature of this bug, subtle changes in how the compiler visits the initializer trees and how other memory is allocated can mask the bug, so there’s no guaranteed workaround other than to ensure there’s no union which is after the 2*8^n-th field (9th, 17th, etc…) in a structure.
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).
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.
| - | Oracle has removed support for WebStart in JDK 11, but IcedTea-Web has versions of WebStart designed to work with JDK 8 and JDK 11. NeXtMidas hopes to add support for IcedTea-Web in the near future. See the Users' Guide WebStart page for limitations and details.
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 4.0.4 (20 Sep 2023)
JIRA Issue | GForge DR | Description
NXM-3567 | 832027-22 | X Cut Does not work on pipe data
NXM-3622 | 882570-21 | GeodeticUtil.getCountryInfo results are not even close
NXM-3820 | 836902-22 | PLOT: Readout on axis tries to draw even when turned off
NXM-3821 | 836903-22 | PLOT: comes up zoomed in when outer limits are set, but not view limits
NXM-3838 | 836851-22 | CallStackUtil JDK9+ version NullPointerException
NXM-3846 | 837029-22 | PLOT: zooming in after scrolling on large files broken
NXM-3858 | 837254-22 | PLOT: Y Cut does not work on pipe data
NXM-3859 | 837253-22 | PLOT: XCUT and YCUT from Plot Option menu not working
NXM-3860 | 837255-22 | nmbat is missing Bash support
NXM-3868 | 837680-22 | JDK 18+ Javadoc warnings
NXM-3870 | 837678-22 | NotSerializableException thrown when try to serialize classes that implement Serializable
NXM-3878 | 837563-22 | Convert NM Map Transition to Zoom Level
NXM-3886 | 892166-21 | Support for CTF RHEL 9 Upgrade
NXM-3900 | 837912-22 | panel: NullPointerException when deleting Pane with null panel
NXM-3916 | 893172-21 | Bundle-RequiredExecutionEnvironment should add Java 11/17 in SYS's manifest.mf
NXM-3927 | 893417-21 | Range adjustments work incorrectly for non-geodetic data
NXM-3980 | 838858-22 | Need updated packages due to IAVA alerts
Bugs Fixed in Release 4.0.3 (23 Mar 2023)
JIRA Issue | GForge DR | Description
NXM-3273 | 827438-3 | GeodeticUtil.insidePolygon(..) has issue detecting North Pole
NXM-3629 | 832822-22 | Clear max points causes drawing problems
NXM-3661 | 833723-22 | Errors should be marked as ERROR when building
NXM-3675 | 884739-21 | MapKBT/KeyValuePairSupport throwing NullPointerException
NXM-3689 | 889478-21 | LayerDrawable/LayerT5 needs to consider points deselected when layers are hidden or closed
NXM-3715 | 834630-22 | Table not parsing correctly
NXM-3778 | 888145-21 | MPlot.drawCone / GeodeticUtil.computeConeLLA(..) issue - optimize fix and make usable by both
NXM-3782 | 889473-21 | GeodeticUtil.insidePolygon() not detecting points on edge of polygon
NXM-3783 | 889475-21 | GeodeticUtil.insidePolygon 3.8.1 speed regression
NXM-3787 | 836090-22 | Need better support for Blue 2.0 (platinum)
NXM-3807 | 836480-22 | Optimize WMS tile query boundaries using layer information - GeoWebCache support
NXM-3814 | 836763-22 | NFileResource.open bad file descriptor check
NXM-3830 | 836765-22 | Theme regression causes Exceptions on platforms not supporting GTK+
NXM-3832 | 890621-21 | CallStackUtil log is confusing
NXM-3844 | 837016-22 | HPAGE needs to make request header information available to applications
NXM-3878 | 837563-22 | Convert NM Map Transition to Zoom Level
Bugs Fixed in Release 4.0.2 (22 Aug 2022)
JIRA Issue | GForge DR | Description
NXM-3575 | 881437-21 | Support RHEL 8 Compilers
NXM-3636 | 833117-22 | Need the ability to detect/analyze timeline/time hack validity
NXM-3648 | 833548-22 | Feature Text Overlap
NXM-3651 | 833574-22 | PLOT regression breaks the rendering of large 2000 files
NXM-3669 | 834685-22 | File that NXM plot will not plot but XPLOT will
NXM-3681 | 834149-22 | Multiline text on feature
NXM-3701 | 834383-22 | true and false are valid fill values LayerKML
NXM-3723 | 834383-22 | GeodeticUtil.insidePolygon(..) has issue detecting North Pole
NXM-3743 | 835448-22 | LayerWMS needs better means of limiting CRSs
NXM-3747 | 835449-22 | LayerWMS/MPlot brightness adjustment makes map panning very slow and jerky
NXM-3772 | 835926-22 | Convert from XML to table does not handle periods
NXM-3786 | 889366-21 | JUnit 4.12 needs upgrading to 4.13.1 at minimum
NXM-3794 | 836287-22 | Invalid keyword block not detected by keywords command
Bugs Fixed in Release 4.0.1 (22 Feb 2022)
JIRA Issue | GForge DR | Description
NXM-3615 | 832531-22 | Panning past international date in LatLonContinuous missing scroll bar
NXM-3616 | 832532-22 | Scrollbar/Scale Resize with -90,90 limits
NXM-3628 | 832820-22 | Point readout should update
NXM-3647 | 833547-22 | Icon Features do not draw text correctly when zoomed
NXM-3665 | 884406-21 | JDK 15 gives thousands of JavaDoc Warnings
NXM-3699 | 834366-22 | plot /all qualifier is sticky
NXM-3720 | 834949-22 | LayerWMS invalid request bounding box causes ServiceException Report
NXM-3721 | 886616-21 | LayerWMS needs option to ignore GetCapabilities HREF and avoid long connection timeout
NXM-3722 | 886614-21 | LayerWMS / LayerMap 2007 defaults contributing to slow loading times on NeXtMidas map
NXM-3725 | 834950-22 | LayerWMS displaying and caching failed map tiles
NXM-3726 | 834922-22 | Handle WMS layer transitions
NXM-3744 | 835447-22 | LayerWMS tiled map drawn in wrong location
NXM-3753 | 888144-21 | GeodeticUtil.computeConeLLA(..) issue - initial unoptimized fix
Bugs Fixed in Release 4.0.0 (21 Sep 2021)
JIRA Issue | GForge DR | Description
NXM-2968 | 821678-3 | Support for mapping points as "clusters" until zooming in
NXM-3542 | 883921-21 | Count points in a specified geographic region
NXM-3577 | 832197-22 | Opening a pipe should not cause a repan
NXM-3578 | 832198-22 | Unable to zoom out after setting View Limits
NXM-3580 | 832200-22 | Plot onAxis readout sometimes disappears with piped data
NXM-3581 | 832203-22 | DRAGBOX zoom leaves excess margin and then pan causes map to jump
NXM-3584 | 832201-21 | LayerT5 plot of piped data flickering and disappearing when panning
NXM-3624 | 832623-21 | View/View3D/ViewGeo precision error when converting to pixels
NXM-3633 | 833035-22 | Extended Header keyword propagation from IEEE to EEEI is broken
NXM-3639 | 833115-22 | Nextmidas does not propagate time hacks properly
NXM-3642 | 883914-21 | Pipes lose TimeLine.Format and incorrectly switch high precision time hacks to low precision
NXM-3643 | 883915-21 | Timeline logic error causes incorrect values to be written out on wrapped timelines
NXM-3645 | 833399-22 | NXM (NextMidas Interface for X-Midas 5.5.1) won't build
NXM-3646 | 833546-22 | Plots are not getting closed from LayerT5
NXM-3650 | 833549-22 | Location and direction of track data
NXM-3654 | 833615-22 | CONVERT: Oracle JDK11 changes break BLUE to JPG conversion
NXM-3684 | 885209-21 | NeXtMidas WMS issues - improper handling of certain 1.3.0 Coordinate Reference Systems
NXM-3692 | 885404-21 | WMS needs capability for applications to easily state to use 1.1.1 version per a call
NXM-3700 | 885405-21 | WMS 1.1.1 protocol parsing issue
Bugs Fixed in Release 3.9.4 (29 Mar 2021)
JIRA Issue | GForge DR | Description
NXM-3420 | 828915-22 | Data classes should support lists of wrapper classes
NXM-3471 | 830902-22 | Need ability to manipulate groups of features
NXM-3515 | 831241-22 | Map Fade Time
NXM-3531 | 879992-21 | NeXtMidas XBC Option tree needs to be able to build with free GFC compilers
NXM-3544 | 880160-21 | LayerT5: fixed points buffer size can result in wrong points being kept/discarded (see New Features information on PLOT TIMEORDER)
NXM-3568 | 831385-21 | LayerT5: Indexing issues break point selection
NXM-3570 | 832054-22 | Z 256 ASCII Data Type - support for longer ASCII Strings
NXM-3574 | 832088-22 | One color layer has incorrect LEGEND color
NXM-3576 | 832109-22 | Map does not paint with piped LayerT5s
NXM-3579 | 832199-22 | LatLonContinuous points flicker when plot is in extended range
NXM-3583 | 832202-22 | LatLonContinuous axis tic labels need to display standard longitude values
NXM-3613 | 832200-22 | DSP NEWRATE crashes with large decimation factor
NXM-3619 | 882539-21 | FIND intrinsic returning incorrect values when used multiple times in a control block
Bugs Fixed in Release 3.9.3 (31 Aug 2020)
JIRA Issue | GForge DR | Description
NXM-3006 | 862232-1 | Commands run with /BG ignore setState(STOP) - see User's Guide setState(FINISH)
NXM-3009 | 862235-1 | Unable to set keywords on pipe - added file qualifiers EXTKW and MAINKW
NXM-3067 | 822398-3 | Allow attaching metadata to Features
NXM-3159 | 825551-3 | DataFile: Extraneous warnings when creating temp files
NXM-3021 | 668127-19 | LIST / LIST2: Inconsistent values between LIST and LIST2 - added limited support for unsigned types 'U' and 'V'
NXM-3139 | 825192-3 | Time: Support ACQDATE and ACQTIME formats to match BLUE ICD
NXM-3224 | 668964-19 | GCONTROL xVAL to unlimited
NXM-3418 | 829581-22 | Don't allow zooming outside visible region in Lat Lon views
NXM-3499 | 830901-22 | Pretty Print addition to JsonUtils
NXM-3453 | 829996-22 | PLOT: delta readouts should not require a second click when starting new delta - added READOUT option +AlwaysDeltas
NXM-3537 | 880068-21 | Plot doesn't zoom correctly
NXM-3495 | 830749-22 | Need support for labels when plotting CSV files on map
NXM-3500 | 878840-21 | PLOT XYZ View does not zoom/rotate/pan/scale to show 3D data points
NXM-3532 | 880009-21 | Indexing error with TimeLine/TC Keyword set file copy
NXM-3537 | 880068-21 | Plot doesn't zoom correctly
NXM-3543 | 880119-21 | Count points that are visible on a map
NXM-3544 | 880160-21 | LayerT5: fixed points buffer size can result in wrong points being kept/discarded
NXM-3545 | 880156-21 | Exception thrown in itemCount
NXM-3550 | 880549-21 | GCONTROL: TEXT and STEXT timing error causes width to be incorrect
NXM-3552 | 880450-21 | LayerT5 setSize does not set number of points kept, when reading directly from a file
NXM-3557 | 880585-21 | GDialog resize regression in NeXtMidas 3.8.1
NXM-3560 | 831754-22 | KeyValuePair does not work under Java 14
NXM-3561 | 831864-22 | Loading native code from a a jar does not work from JDK 11+
NXM-3566 | 832005-22 | Point selection is broken - removed points are still selected
NXM-3568 | 831385-21 | LayerT5: Indexing issues break point selection
NXM-3571 | 832083-22 | LayerDrawable sometimes stops refreshing
Bugs Fixed in Release 3.9.2 (20 Jan 2020)
JIRA Issue | GForge DR | Description
NXM-3078 | 823803-3 | PLOT: Does not display zero-padded Pre-D data - fixed various aspects of the RANDOM sampling option
NXM-3100 | 824487-3 | Keywords: NullPointerException when calling deleteScope
NXM-3343 | 828354-22 | LayerKML does not load on change
NXM-3391 | 828791-22 | sslconfigure/insecure/oneway does not work
NXM-3413 | 829576-22 | Map maintains margins and moves Y axis on Lat/Lon and Lat/Lon Continuous views
NXM-3414 | 829577-22 | Switching views causes lat/lon lines to disappear
NXM-3416 | 829579-22 | LatLonContinuous Mouse Pan
NXM-3417 | 829580-22 | LatLonContinuous Zoom Panning
NXM-3428 | N/A | MULAWDECODE - fix calculation port
NXM-3434 | 830128-2 | PLOT: PRESCALE via OPENFILE
NXM-3442 | 876306-21 | CONVOLVE: broken when impulse data type is SD (double) or SX (long)
NXM-3436 | 829752-2 | sslconfigure issue with NXM 3.8.3
NXM-3458 | 830053-22 | Need httpgetdata support turning off host name verification
NXM-3459 | 830054-22 | httpgetdata doRequest method should have option to take in a request
NXM-3459 | 830054-22 | httpgetdata doRequest method should have option to take in a request
NXM-3461 | 830052-22 | sslconfigure needs ALLOWALLHOSTS switch
NXM-3474 | 830295-22 | WebSwing integration - WebSwing turns a Java Swing Application into a Web Application. This DR is to provide some initial support, as converting a NeXtMidas application to a Web Application via WebSwing is still experimental, but it looks very promising. As part of this DR, a rough quick startup guide is provided in the Users Guide
NXM-3477 | 830394-22 | SSLUtilities Secmod already configured java.security.ProviderException - SSL configuration exception
Bugs Fixed in Release 3.9.1 (12 Aug 2019)
JIRA Issue | GForge DR | Description
NXM-2934 | 667842-19 | MAKE: no capability to retrieve external dependencies (Gradle)
NXM-3030 | 822542-3 | PKIAUTH integration should include Web Start Issues - addressed loading PKI certs from NSS and CAPI, but not currently addressing Web Start portion of issue (as Web Start has been removed in JDK11)
NXM-3042 | 865097-1 | TimeLine Extension / overriding - added Timelines section to User's Guide
NXM-3078 | 823803-3 | PLOT: Does not display zero-padded Pre-D data
NXM-3094 | 824012-3 | Need X-Midas style /MTAG support for XGEOPLOT
NXM-3096 | 823947-3 | Hundreds of JavaDoc warnings in 372 release
NXM-3120 | 872678-1 | Table: support for Java Number - storing primitive types, deserialization (extra section added to User's Guide)
NXM-3131 | 873162-1 | PLOT: TLOPs sometimes not showing up - fixed issues with TDOA/FDOA, State Vector, LayerT5 objects, and certain other lines not rendering at higher zoom levels
NXM-3132 | 873204-1 | CONVERT: IndexOutOfBoundsException converting data type of Type 2000
NXM-3144 | 825099-3 | Unable to create BLUE file without extension
NXM-3157 | 825490-3 | CONVERT: Incorrect numeric conversions with 64-bit integer values
NXM-3185 | 826095-3 | Need way to remove timeline keywords - added DataFile API for editing timeline keywords
NXM-3214 | 873590-21 | LIST2 control Null pointer exception
NXM-3251 | N/A | Panel: Line borders disappear when dragged off screen
NXM-3284 | 826930-22 | PLOT: Lat/Lon Map addition of view LATLONCONTINUOUS (added support for LayerWMS)
NXM-3299 | 827237-22 | Need OpenJDK11 support quickly - addressed more JDK 11 issues, but still need a replacement for Web Start and soon for certain SSL API
NXM-3304 | 827500-22 | NeXtMidas Logging Inadequate
NXM-3311 | 827428-22 | KEYWORD TGET can not handle dotted keywords
NXM-3313 | 827585-22 | Need Insecure SSL Connections (i.e. need 1-way SSL/HTTPS)
NXM-3332 | 883335-1 | PLOT: Scroll bar disappears after scrolling off page
NXM-3337 | 883474-1 | MJText breakage causes text to not display on small text areas (msglog)
NXM-3339 | 873462-21 | Mouse Wheel (percentage) zoom on large 1000/2000 file breaks after panning plot
NXM-3391 | 828791-22 | sslconfigure/insecure/oneway does not work
NXM-3394 | 828926-22 | OutOfMemory: when zooming in on a small area of an ellipse
NXM-3400 | N/A | Plot popupmenu overlapping when not inside parent panel
Bugs Fixed in Release 3.9.0 (29 Jan 2019)
JIRA Issue | GForge DR | Description
NXM-2945 | 821334-3 | List Type for Tables/Results
NXM-3075 | 668363-19 | Merge in zpipe.java into UCL option tree
NXM-3084 | 824488-3 | NeXtMidas 3.7.2 PKI/SSL Phase 1 unusable at site without fixes (JDK 8 based improvements)
NXM-3152 | 825391-3 | Numerous Bugs in ShapeFile and DbfFile
NXM-3157 | 825490-3 | Convert: Incorrect numeric conversions with 64-bit integer values
NXM-3185 | 826095-3 | Need way to remove timeline keywords (partial fix)
NXM-3210 | 668940-19 | FFT Restart Changes NAVG
NXM-3213 | 826567-22 | Graphics severely degraded on CentOS7 (override proper method paintComponent rather than paint)
NXM-3217 | 881570-1 | LayerT5 deletePoints does not delete all the piped points
NXM-3229 | 877610-1 | Layer.java clear method should remove plot data in all cases
NXM-3253 | 669085-19 | GeodeticUtils.computeCircleLL has issues when crossing date line (fix complete)
NXM-3284 | 826930-22 | PLOT: Lat/Lon Map addition of view LATLONCONTINUOUS
NXM-3294 | 827714-3 | XmPipe.java references pipe fields removed in X-Midas 5.x
NXM-3299 | 827237-22 | Need OpenJDK11 support quickly (minimal support has been added)
NXM-3313 | 827585-22 | Need Insecure SSL Connections
NXM-3316 | 882617-1 | 3.7.2 breakage - DRAGBOX not rendering while being drawn on SUSE Linux
NXM-3317 | 882618-1 | 3.8.1 breakage causing zoomed plots to render out of bounds
NXM-3321 | 882903-1 | Panel needs menu bar capability to preserve screen space for plots
NXM-3322 | 827881-22 | httpserv command needs to support HTTPS

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