NeXtMidas 4.2.3 Release Notes

Changes between release 4.2.0 and 4.2.1 are listed in blue.

Changes between release 4.2.1 and 4.2.2 are listed in green.

Changes between release 4.2.2 and 4.2.3 are listed in teal.

We will officially stop supporting JDK 8 when it reached end of Full Support on November 30, 2026.
We will not immediately remove support via our preprocessing step that swaps code based on the JDK compiler, but we will no longer test with JDK 8.
In 2027, we plan to remove support for any JDK less than 17.


NeXtMidas SYS Option Tree Tested on:
(tests with Java 8, 17, 21, 25, and some 26)
OS Version Platform Native Compiler(1)(2)(3)
(SYS Option tree)
Web Browser
(WebStart)
CentOS 7.9 Linux (x86_64) gcc 4.8.5 / Intel 2019, 2020, 2021, 2022 / Intel LLVM 2022 Firefox 115.10.0esr (64-bit) with IcedTea-Web 1.8.3
RHEL 8.10 Linux (x86_64) gcc 8.5.0 / Intel 2021, 2022, 2023 / Intel LLVM 2022, 2023, 2024, 2025
RHEL 9.7 Linux (x86_64) gcc 11.5.0 / Intel 2022, 2023 / Intel LLVM 2022, 2023, 2024, 2025
RHEL 10.1 Linux (x86_64) gcc 14.3.1 / Intel LLVM 2025
Ubuntu 24.04 Linux (x86_64) gcc 13.3.0
Windows 10 Windows (x86_64) pre-compiled DLLs (MinGW64 gcc 12.2.0)
Windows 11 Windows (x86_64) pre-compiled DLLs (MinGW64 gcc 12.2.0)
Fedora 40 Linux (x86_64) gcc 14.1.1
Fedora 42 Linux (x86_64) gcc 15.2.1
Debian 11.9 Linux (x86_64) gcc 10.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, 17, 21, 25, and some 26)
OS Version Platform X-Midas Mode C/C++ Compiler(1)(2)(3) Fortran Compiler(2)(3)
CentOS 7u9 Linux
(x86_64)
NeXtOpt (X-Midas 5.9.5) gcc 4.8.5 / Intel 2019, 2020, 2021, 2022 / Intel LLVM 2022 gfc with DEC FORTRAN ext. 4.8.5 / Intel 2019, 2020, 2021, 2022
NeXtOpt (X-Midas 5.8.1) gcc 4.8.5 / Intel 2019, 2020, 2021, 2022 / Intel LLVM 2022 gfc with DEC FORTRAN ext. 4.8.5 / Intel 2019, 2020, 2021, 2022
NeXtOpt (X-Midas 5.6.3) gcc 4.8.5 / Intel 2019, 2020, 2021 gfc with DEC FORTRAN ext. 4.8.5 / Intel 2019, 2020, 2021
XBC ("64Bit") gcc 4.8.5 / Intel 2019, 2020, 2021, 2022 / Intel LLVM 2022 gfc with DEC FORTRAN ext. 4.8.5 / Intel 2019, 2020, 2021, 2022
RHEL 8u10 Linux
(x86_64)
NeXtOpt (X-Midas 5.11.3) gcc 8.5.0 / Intel 2021, 2022, 2023 / Intel LLVM 2022, 2023, 2024, 2025 gfortran 8.5.0 / Intel 2021, 2022, 2023 / Intel LLVM 2024, 2025
NeXtOpt (X-Midas 5.10.1) gcc 8.5.0 / Intel 2021, 2022, 2023 / Intel LLVM 2022, 2023, 2024 gfortran 8.5.0 / Intel 2021, 2022, 2023 / Intel LLVM 2024
NeXtOpt (X-Midas 5.8.2) gcc 8.5.0 / Intel 2021 2022, 2023 / Intel LLVM 2022, 2023 gfortran 8.5.0 / Intel 2021 2022, 2023
XBC ("64Bit") gcc 8.5.0 / Intel 2021, 2022, 2023 / Intel LLVM 2022, 2023, 2024, 2025 gfortran 8.5.0 / Intel 2021, 2022, 2023 / Intel LLVM 2024, 2025
RHEL 9u7 Linux
(x86_64)
NeXtOpt (X-Midas 5.11.3) gcc 11.5.0 / Intel 2022, 2023 / Intel LLVM 2022, 2023, 2024, 2025 gfortran 11.5.0 / Intel 2022, 2023 / Intel LLVM 2024, 2025
NeXtOpt (X-Midas 5.10.1) gcc 11.5.0 / Intel 2022, 2023 / Intel LLVM 2022, 2023, 2024, 2025 gfortran 11.5.0 / Intel 2022, 2023 / Intel LLVM 2024, 2025
NeXtOpt (X-Midas 5.8.2) gcc 11.5.0 / Intel 2022, 2023 / Intel LLVM 2022, 2023 gfortran 11.5.0 / Intel 2022, 2023
XBC ("64Bit") gcc 11.5.0 / Intel 2022, 2023 / Intel LLVM 2022, 2023, 2024, 2025 gfortran 11.5.0 / Intel 2022, 2023 / Intel LLVM 2024, 2025
RHEL 10u1 Linux
(x86_64)
XBC ("64Bit") gcc 14.3.1 / Intel LLVM 2025 gfortran 14.3.1 / Intel LLVM 2025
Fedora 40 Linux
(x86_64)
XBC ("64Bit") gcc 14.1.1 gfortran 14.1.1
Fedora 42 Linux
(x86_64)
XBC ("64Bit") gcc 15.2.1 gfortran 15.2.1
(1) $NM_CC and $NM_CXX were set to point to the Intel C/C++ compiler (icc/icpc or icx/icpx), where applicable.
(2) Intel 2020 and earlier refers to Intel Parallel Studios, whereas Intel 2021 and later refers to Intel oneAPI.
(3) Intel refers to the default ifort/icc/icpc compilers, whereas Intel LLVM refers to the ifx/icx/icpx compilers.

Online Documentation

Java 17 Migration

What Might Break (Changes in Behavior)

BaseFile/DataFile - DataFile constructors have been fixed so that when KeepCase is passed in as a flag, the constructor honors it. The bigger change in progress is that a bug in Java usage, where a quoted all upper case filename is automatically lower cased is being addressed by distiguishing between Java (including OS command usage) and traditional Midas usage (from a macro or nM> prompt). Due to limits in how NeXtMidas RESULTS are handled and the macro language, the legacy/correct behavior for traditional Midas usage is for all upper case file names that make it to this BaseFile (and its child classes) to be assumed to be all lower case. The new default for Java API usage (and OS usage) will be for file name casing to be honored.
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.
DATABASE (NMDB) - Upgrading to an hsqldb jar that does not have a vulnerability now has the result sets coming back first row first (rather than last). It also causes a divide by zero exception on queries such as: select distinct round(id/0.1,2) as ...., where select distinct round(id/1e-1,2) as ... still works. The code has been adjusted to support getCSV() returning values in legacy order. A static setter can be used to get the new natural behavior.
IMPORTANT: Since the hsqldb jar is only used for automated testing, we are only including the JDK11+ version of the jar. We anticipate removing the jar all together when we start the 43x series, as having it bloats the baseline and increases the risk of releases having a CVE.
DATALIST/DataFile - listElements(double,int,String,int) has been updated to use different API which allows a scalar separator to be specified for listing type 1000 and default elements. The default scalar separator was ',', but as of NeXtMidas 4.1.2, it is '|'. To change this delineator, use the static setter DataFile.setScalarSeparator(String).
LayerWMS - wms_coor_sys.xml has been updated to prefer the newer EPSG:4326 Coordinate Reference System over the older CRS:84.
MApplet - Applet support is being dropped from the 41x series, since Java has marked Applets as deprecated for removal. Though the direct dependencies have been removed in 4.1.0, extra code clean up will be done in future releases.
PLOT/ALL - PLOT/ALL of a 1000 file will automatically prescale the data, as the purpose of the /ALL switch was that all the data would be rendered within the plot bounds. Without this fix, some of the 1000 data can end up beyond plot bounds, without the user realizing it. The only reason this is listed in the What Might Break is that prescaling does add a small amount of overhead.
SSSLCONFIGURE/SSLUtilities - PEM file requirements:
1) .pem follows good security practices and only has one certificate chain
2) .pem has each of its certificate chains start with the private key
(ex: private key, primary cert, intermediate certs, root cert)
If multiple private keys are found and the preferred order (private key first) is not followed, the load of the .pem is aborted, as there is not a reliable means of handling key and certs being in any order. Even if the preferred order is followed, the user will be warned about multiple private keys.
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.
Time - Times greater than one day and less than or equal to one year have been displayed in 1950 time formats. As of 4.1.2, times greater than one day and less than or equal to one year are displayed in relative time formats, such as 'DDD:HH:mm:ss.SSS' for STD and ACQ times, as well as 'sec_in_year' for EPOCH times.

New Features 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.
RHEL 8+ - As of 4.2.0, NM_FORTRAN accepts 'gfc', 'gfc-gfortran', or 'gfortran' for the gfc FORTRAN compiler.
  - NeXtMidas will autodetect which compiler to use based on the OS.
  - The JDK 8 tools library is not and will not be FIPS compliant. NeXtMidas supports multiple options for working with JDK 8. In all cases our TLS is 1.2 and is FIPS compliant and the overall Linux setting remains FIPS compliant. One option is to compile NeXtMidas code with JDK 8 and to use a separate JDK 17+ for JAR signing and other actions that require using Java tools library. The default is to turn off FIPS for JAR signing and other direct Java tools usage. See the SecureRHEL8FIPS.html page in our User's Guide for more details.
  - Earlier versions of NeXtMidas require softlinks to use the gfortran. In support of this, the script gfc-softlinks-rhel8plus.sh has been added to the 414 and 405 release packages.
LIBNXM / Reduced Footprint Build Options - A number of reduced footprint build options are available as of 4.1.3. See our User's Guide for more information (links below work when docs are built).
JDK Compiler based code - Due to the need to continue to support JDK 8, while also supporting the most current JDK, we are beginning to support very limited pre-compile code swapping based on a .jdk, .jdk## convention. This is done automatically and keeps users from needing to manually uncomment or comment out code to get efficient or fully functional behavior. As of NeXtMidas 4.1.1, the only code affected is the CallStackUtil code and MulticastSocketOptions code. To get full and efficient JDK9+ behavior required following directions in CallStackUtil.java and uncommenting and commenting out code. Even so, this still left users with a log message with a stacktrace.
Advanced details: The minimal code that needs to be swapped is now in CallStackUtilSwap.jdk08 and CallStackUtilSwap.jdk (and MulticastSocketOptions respectively). The .jdk08 indicates that version will be placed in CallStackUtilSwap.java (or MulticastSocketOptionsSwap.java) when compiled with java versions up to 8. The .jdk indicates that version will be copied to the java file for all JDK versions beyond the latest ## (in .jdk##). This should largely be transparent to the user, both with traditional NextMidas builds and with Gradle builds.
New Commands - CHECKTIMEKEYWORDS;SYS - Visualization tool for diagnosing issues with uSec or TC high precision time codes
  - CONVERTARGB;SYS - Converts type 2000 data to ARGB (Alpha|Red|Green|Blue) direct color format. A new /ALPHA0COLOR switch has been added which will force one color (generally the background - no signal present color) to be transparent. This allows multiple rasters to be displayed on single plot.
  - POLYMAP;SYS - Supports creation and customization of Type 1999 files. These 1999 can be created from either ShapeFiles or GeoJSON files. Customization options include skipping or keeping specified polygons or replacing coordinates in specific geographic regions.
  - SHAPEMAP;SYS - Supports creation of customized ShapeFiles. Individual polygons can be reshaped by replacing coordinates in a certain geographical areas with other coordinates.
  - WEBVNCSERVER;WEBVNC - An HTTP/1.1 server that proxys a VNC session to a HTML Canvas using noVNC. Automatically starts a vncserver and websocket proxy for each client. Since NeXtMidas 4.1.1.
New Option Tree - minio -
  • New MinIO Support for S3 Bucket Access
    • Compile time dependency: minio jar (included)
    • Run time dependencies: see minio_dependencies.txt
    • S3 commands: S3GET, S3LS, S3PUT, S3RENAME, S3RM
    • NXM command support (NOOP, FFT and STATUS)
Macro/Shell Enhancements - Startup Macros can now accept arguments
  • Example:
    • $ java -DNMSTARTUP.USER="nxm.sys.test.args_startup.mm HELLO THERE" -jar $NMROOT/jars/nxm-sys.jar
  - Improved Macro ERROR checking and messages.
Libraries - DataFile - Better support for PLATINUM files. When PLATINUM files are used as input to a function (ex: FFT, not just STATUS/KEY) the default is now to use the NeXtMidas underlying libraries for PLAT2BLUE conversion to automatically convert PLATINUM Keywords to BLUE. A warning is issued when the PLATINUM file is missing keywords (as defined by the JICD 4.2 ICD). This default autoconversion of PLATINUM can be disabled globally or on a file by file bases. The previous behavior was to error out under these conditions.
- DataTypes
  • New 'J' 12-bit packed Data Type was contributed by Jeff Schoen for 4.1.2
    • >12-bit is primarily designed for data transfer and storage
    • DataFile.write requires writes to be at even byte boundaries (ex: transfer lengths that are multiples of 2 for SJ data)
    • Most commands, including PLOT, FFT, and WAVEFORM, are supported, but some require extra care when working with SJ. (ex: DATALIST number of columns should be a multiple of 2)
    • When an 'I' value is placed in a 'J', the top 12 bits are saved
Gradle Support - Support has been added to convert NeXtMidas to a gradle directory structure (full restructure or softlinks options) and to publish artifacts to Nexus. Please find instructions located at $NMROOT/gradle/README.txt
  - Support has also been added to convert user option trees to a gradle directory structure (full restructure or softlinks options). Please find instructions located at $NMROOT/gradle/README.txt
  - Support for pulling some dependencies and relying on local jar files for others, as well as pulling only the dependencies needed when opting for LIBNXM mode or another reduced footprint option.
Midas versus Java usage detection - Support for detecting Midas versus Java usage is being phased in. The immediate need was for the casing for file names passed in in quotes via Java API to be honored, rather than having all upper case names automatically converted to all lower case names. There are other scenarios users have been experiencing where traditional Midas behavior conflicts with Java behavior. With many users running primarily as a Java Application, it is important for Java usage to be compatible with other Java code. For the 41x/42x series legacy behavior will continue to be the default. Starting with the 43x series auto-detection of Java versus Midas usage will be the default. NeXtMidas usage coming from a macro, nM>, or single-shot mode (nm ....) will be auto-detected as traditional Midas usage, where running a Java application from a main will be considered Java usage. As of 4.1.4 users can opt in to Java usage via the environmental variable NM_JAVA_MODE being set to "ON" or by setting needJavaBehavior() on their Midas instance.
Existing Commands - The list below contains NeXtMidas commands. Each command is listed with the new feature that has been added at the request of the user.
  - CONVERT
  • BLUE2JSON - Basic BLUE2JSON (similiar to BLUE2XML) support was added in NeXtMidas 4.1.1. Additionally, BLUE2JSON can have an OPTIONS={keyword_conversion_table} specified that allows mapping of the keywords to a nested JSON output. A limited number of conversion options (other than direct mappings) are also available. The options are similiar to those supported by KWCONV. Both of these are in a functional Beta stage. See the CONVERT explain file and FileUtil.java for more details.
  • XML2TAB now has some support for handling dots in keys. The Table created is a provisional Table, with the +AllowDotsInKeys flag set. A warning is issued when the XML contained '.'s in keys and this type of Table is created. It is strongly recommended that the '.'s in the Table keys be replaced before serialization, otherwise the current default substitute in this case is ''. The nested key get via the key1.key2.key3 syntax does not work on these +AllowDotsInKeys Tables, but they are restricted to the access methods used by Java Maps.
  - GCONTROL
  • New TVAL .... /fmt="HH:MM:SS.SSSS" The HMS format now supports fractional seconds, where the number of fractional seconds is specified by the number of 'S' characters beyond the decimal place. See gcontrol.exp
  - IF
  • AEXISTS - Any type (file or directory) exists
  - FEATURE
  • New Both plot/MPlot Features and LayerDrawable Features can be placed in groups. The Features menu now uses a tree type display, placing Features under their Feature Group name.
  - FFT
  • New The /CMAG switch can be used to apply /MAG, /PSD, and /LOG to cross spectrum output.
  - MACRO
  • New Macro error reporting is greatly improved: lists all conditional block closing errors, gives line number and command, handles includes better.
  - PANEL
  • Auto Grid - Support of uneven layouts
  - PLOT
  • New IQ plot readouts now include radius (4.2.1)
  • LayerGeo - Horizon at Altitude support
  • New LayerWMS GWC=true This WMS option enables GeoWebCache friendly settings, to allow cached results to be returned. (4.1.0)
  • 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.1.0)
  • New LayerWMS ByNameCRSs= is a shorter means of giving preference to a Coordinate Reference System (4.1.0)
  • 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 Layer2D /CUTS switch allows a cross-section "cut" on piped data. (4.1.2)
  • New LayerT5 ellipsoids can now be plotted as a wire cage. (4.1.3)
  • New LayerT5 highlight and visibility filter support based on a Java Map containing key (field name) / value (Java Predicate) map. (4.1.3)
  • New READOUTS include radius on IQ plots(4.1.4)
  • New Time axis READOUTS will default to DateString, rather than Scientific E9 times. This is intended to make the readout human readable. To get old behavior add -DateString to remove this READOUT option (4.1.4)
  • New LayerGeoJSON This new Layer adds support for plotting GeoJSON files with file extension .geojson (4.1.4)
  • New PLOT/ALL of 1000 files now have automatic prescaling of data. Those with 256000 or less will consider all the data in the prescale, and thus ensure all data points are visible. Those with more elements will have a random sampling of there elements to help ensure that the data points show within plot bounds. (4.1.4)
  • LayerShape - Country/Shape Name Labels - See PLOT EXPLAIN file.
  • New Point3D.getLinePointsInAOI API allows LayerT5/Point3D line segments to be selected via a dragbox. This does not require the actual points being included in the dragbox area, but just that the line connecting them cross the AOI.
  - QUERY
  • Capability Restored To: Display full signatures and show inherited and interface methods in separate section.
  - RMIF
  • /STATEM enables state machine based message handling for NXM to NXM or NXM to M2K communication. rmif.for was not updated, so this switch should not be used for NXM to XM communication.
  - STATISTICS
  • Support for REALMIN, REALMAX, IMAGMIN, and IMAGMAX with complex input.

Known Third-Party Bugs and Limitations

The following are known third-party bugs and limitations that may cause problems for NeXtMidas users.
RHEL 10 Monospaced text height change - The underlying Font used for Monospaced now has a text height of 17, rather than the previous 15. NeXtMidas defaults to Monospaced for text. This especially affects panel graphics and the laying out of the graphical controls in Pane0.
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.
OpenJDK 8 versions earlier than 1.8.0_312 are not supported - To avoid deprecation warnings about too weak of a signing certificate, the NeXtMidas self-sign certificates were updated to a standard that is not supported in earlier JDK 8 versions
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
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.
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.

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.
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.2.3 (26 Mar 2026)
JIRA Issue GForge DR Description
NXM-3702 840358-22 Need features to be selectable so they can be moved or stretched
NXM-3948 838899-22 LIST2/MJList not handling column width correctly where format is not recognized
NXM-4061 839924-22 PLOT throws Exception rather than giving File Not Found information
NXM-4064 839934-22 GCONTROL regression causes panel graphical controls table to not get formed
NXM-4093 840132-22 Message needs to support sending messages to submacro or parent
NXM-4116 840343-22 Gradle build needs to support soft links of user option trees
NXM-4139 840548-22 LayerKML selection logic flawed
NXM-4143 898214-21 Gradle build failure
NXM-4152 898682-21 MACRO failures give little indication of line or even procedure
NXM-4260 841414-22 Map Type 5000 lines need to be selectable
NXM-4186 840915-22 RHEL 8+ FIPS JDK 8 and 11 Failures
NXM-4191 840962-22 QUERY regressions cause user request to be ignored and can cause lockup
NXM-4214 899654-21 Country Names should be displayable on ShapeFile plots
NXM-4222 841116-22 Conversion of IEEE file to EEEI file broken in 394
NXM-4326 841928-22 minio 8.15.17 jar has CVE
NXM-4368 902981-21 MPlot NPE bug related to elasticFeature

Bugs Fixed in Release 4.2.2 (25 Sep 2025)
JIRA Issue GForge DR Description
NXM-2248 666587-19 Cannot Select multiple countries in PLOT
NXM-3128 825090-3 Add complex input support to SIGSTATISTICS
NXM-3333 883336-1 Allow multiple rasters on a single plot
NXM-3421 884304-1 Higher Resolution Maps
NXM-3586 832206-22 Setting DISPLAY after NMSTART does not work
NXM-3682 834133-22 Circular code in call to MPlot.setTime
NXM-3848 837033-22 NeXtMidas Startup Macro needs to accept arguments
NXM-3899 837911-22 FFT needs magnitude, 20log, and dB log on cross spectrum output
NXM-4022 839421-2 Rmif dropping packets when sending many messages within a single second
NXM-4029 839477-22 PANEL AUTOGRID needs to support uneven layouts
NXM-4033 839606-22 DSP reformat & demux ignoring Data Type portion of FORMAT
NXM-4037 839621-22 DATALIST listing wrong number of elements per line for HEX and binary
NXM-4051 839797-22 Histogram fails with complex input data
NXM-4056 896829-21 STATISTICS needs real and imaginary min and max
NXM-4105 840292-22 LayerGeo: Need to be able to have horizon at altitiude and not just horizon
NXM-4117 840342-22 Feature menu should use tree when features are part of a group
NXM-4283 841663-22 CVE in NeXtMidas commons-lang3.jar 3.14.0 dependency

Bugs Fixed in Release 4.2.1 (25 Mar 2025)
JIRA Issue GForge DR Description
NXM-1277 767451-1 RMIF Table toString of Number Objects
NXM-3522 879778-21 LayerT5 default point selection mode selects wrong point when view=GEO and the point is not on surface of earth
NXM-3742 835165-22 Need control over buffer size in DatagamData
NXM-3774 835955-22 Nextmidas should add support for minio storage
NXM-3828 836757-22 Inefficient Table Filter on Keys
NXM-3923 893424-21 NXM should allow points selected to not change color
NXM-3933 838984-22 Text area comes up scrolled to wrong position
NXM-3952 894082-21 Process Message Data Containing Periods in Keys
NXM-3988 894929-21 StateVector performance issue
NXM-3994 839040-22 3.9.1 ellipse rendering regression
NXM-4017 839423-22 LayerT5: Operators need to know the number of points matching their selection
NXM-4018 839422-2 LayerT5: points highlighted as points of interest need to get preference
NXM-4048 839723-22 PLOT/ALL of 1000 file only showing portion of data
NXM-4055 839884-22 DSP TUNER regression breaks Output IF band center
NXM-4063 839912-22 Macro keyword argument error
NXM-4065 839998-22 PLOT readout should include radius on IQ plots
NXM-4104 840313-22 SSLUtilities not handling PEM file chain

Bugs Fixed in Release 4.2.0 (24 Sep 2024)
JIRA Issue GForge DR Description
NXM-3832 836757-22 Inefficient Table Filter on Keys
NXM-3886 892166-21 Support for CTF RHEL 9 Upgrade - additional fix to automatically pick up gfortran
NXM-3904 893423-21 NXM should be able to provide current (LayerT5) points or subsets to users
NXM-3907 893418-21 Popup information is confusing when plotting non-geodetic data
NXM-3925 893419-21 Table formatting is poor when viewed within popup window
NXM-3946 838494-22 LayerT5 needs better means of setting size of points buffer
NXM-3961 838568-22 plot world.shp opaqness changes on dragbox
NXM-3979 838932-22 MPlot.drawCone previous behavior broken
NXM-4003 895142-21 Keywords throws ArrayIndexOutOfBoundsException - putMain vs put and putALL
NXM-4010 839270-22 Conversion bugs in Native.c and Convert.java for PACKED data
NXM-4014 839420-22 Point count inaccurate in LATLONCONTINUOUS
NXM-4045 896577-21 Gradle should only pull dependencies needed
NXM-4048 839723-22 PLOT/ALL of 1000 file only showing portion of data
NXM-4049 896576-21 Gradle build should not fail when included jars specified as local dependency

Bugs Fixed in Release 4.1.4 (24 Jun 2024)
JIRA Issue GForge DR Description
NXM-3415 829578-22 Feature locations are not correct in geodetic view
NXM-3664 833158-22 Need more time format control on gcontrol TVAL
NXM-3679 833887-22 Support for GEO Json
NXM-3774 835955-22 Nextmidas should add support for minio storage (starter option tree)
NXM-3790 890666-21 JSONUtilities.toJSON() needs to handle the most common cases more efficiently
NXM-3892 837769-22 keyword TGET does not work on platinum 2 file
NXM-3912 838110-22 GCONTROL FILE bug causing file names to be subject to 10 character limit
NXM-3940 838900-22 GWidget NullPointerException at rundown
NXM-3981 838931-22 Map margin and bounds wrong after DRAGBOX zoom
NXM-4044 839834-22 DATABASE hsqldb.jar has CVE and is not needed by baseline code
NXM-4048 839723-22 PLOT/ALL of 1000 file only showing portion of data (basic fix is in)
NXM-4053 896645-21 NeXtMidas release packages should have release version that does not include dependency jars
NXM-4065 839998-22 PLOT readout should include radius on IQ plots
NXM-4095 840134-22 PLOT: time axes readouts should default to date string
NXM-4097 840203-22 BaseFile creates filename with wrong casing (partial)
NXM-4099 840227-22 DataFile constructors ignoring file naming flag

Bugs Fixed in Release 4.1.3 (12 Dec 2023)
JIRA Issue GForge DR Description
NXM-3622 882570-21 GeodeticUtil.getCountryInfo results are not even close
NXM-3630 832824-22 Layer KML popup doesn't display HTML descriptions correctly or set the right size
NXM-3652 833550-22 Don't reset zoom when layers come and go
NXM-3671 833792-22 Thin DataFile needed
NXM-3785 836266-22 Midas File Transfer (MFTP) broken by JDK 17
NXM-3821 836903-22 PLOT: comes up zoomed in when outer limits are set, but not view limits
NXM-3835 836824-22 HTTPSERV behavior does not match intended or documented behavior
NXM-3838 836851-22 CallStackUtil JDK9+ version NullPointerException
NXM-3857 837174-22 IF is missing the ability to check if a File (file or directory) exists
NXM-3858 837254-22 Y Cut does not work on pipe data
NXM-3860 837255-22 nmbat is missing Bash support
NXM-3870 837678-22 NotSerializableException thrown when try to serialize classes that implement Serializable
NXM-3871 891836-21 Basic BLUE2JSON Support (completed)
NXM-3872 891850-21 BLUE2JSON should support a conversion table allowing simple mappings and conversions (completed)
NXM-3886 892166-21 Support for CTF RHEL 9 Upgrade
NXM-3893 837770-22 IOResource error in handling Resource Group case
NXM-3900 837912-22 panel: NullPointerException when deleting Pane with null panel
NXM-3910 893421-21 LayerT5 should support points that are symbols/icons
NXM-3914 893422-21 Filters and highlights should have separate APIs
NXM-3926 893420-21 Point accessor functions return incorrect position values for non-geodetic data
NXM-3934 838323-22 Support for 3D ellipsoids
NXM-3972 837770-22 TIMECODE is not correctly propagated when a file has timecode, time hack keywords and xstart
NXM-3980 838858-22 Need updated packages due to IAVA alerts
NXM-3984 894700-21 SSLUtilities/CHECKAUTHORIZATION need updating
NXM-3990 839039-22 LayerKML popup has Lat and Lon reversed

Bugs Fixed in Release 4.1.2 (06 Jun 2023)
JIRA Issue GForge DR Description
NXM-3547 831582-22 Remove all applet support from NXM 3.9.x series
NXM-3567 832027-22 X Cut Does not work on pipe data
NXM-3629 832822-22 Clear max points causes drawing problem
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-3778 888145-21 MPlot.drawCone / GeodeticUtil.computeConeLLA(..) issue - optimize fix and make usable by both
NXM-3780 836095-22 NXM builds need to set a status code
NXM-3781 889232-21 RMIF window resynch logic - needs state machine logic - additional fix
NXM-3783 889475-21 GeodeticUtil.insidePolygon 3.8.1 speed regression
NXM-3787 836090-22 Need better support for Blue 2.0 (platinum) - handle additional Platinum keywords
NXM-3814 836763-22 NFileResource.open bad file descriptor check
NXM-3820 836902-22 PLOT: Readout on axis tries to draw even when turned off
NXM-3831 836776-22 NeXtMidas needs to support applications being accessible via a client’s web browser
NXM-3844 837016-22 HPAGE needs to make request header information available to applications
NXM-3846 837029-22 PLOT: zooming in after scrolling on large files broken
NXM-3847 837031-22 PLOT: needs to be able to pan beyond bounds without scrollbar slider disappearing
NXM-3849 837056-22 Time: the relative time limit of 24 hours needs expanding to 1 year
NXM-3862 892743-21 LayerT5: needs ability to filter tracks based on point metadata
NXM-3878 837563-22 Convert NM Map Transition to Zoom Level
NXM-3894 837772-22 12-bit integer Midas Data Type needed
NXM-3910 893421-21 LayerT5 should support points that are symbols/icons
NXM-3916 893172-21 Bundle-RequiredExecutionEnvironment should add Java 11/17 in SYS's manifest.mf
NXM-3919 893387-21 unable to run sourcesdds to remove/strip SDDS packet headers
NXM-3927 893417-21 Range adjustments work incorrectly for non-geodetic data
NXM-3934 838323-22 Support for 3D ellipsoids (beta version)

Bugs Fixed in Release 4.1.1 (12 Dec 2022)
JIRA Issue GForge DR Description
NXM-3661 833723-22 Errors should be marked as ERROR when building
NXM-3701 834383-22 true and false are valid fill values LayerKML
NXM-3715 834630-22 Table not parsing correctly
NXM-3777 888144-21 GeodeticUtil.computeConeLLA(..) issue
NXM-3758 835796-22 JsonUtilities.fromJSON (Class type, CharSequence json) not returning Table
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-3787 836090-22 Need better support for Blue 2.0 (platinum)
NXM-3831 836776-22 NeXtMidas needs to support applications being accessible via a client’s web browser (beta version)
NXM-3832 890621-21 CallStackUtil log is confusing
NXM-3871 891836-21 Basic BLUE2JSON Support (beta version)
NXM-3872 891850-21 BLUE2JSON should support a conversion table allowing simple mappings and conversions (beta version)

Bugs Fixed in Release 4.1.0 (06 Jun 2022)
JIRA Issue GForge DR Description
NXM-3547 831582-22 Remove all applet support (partial - direct Applet dependencies have been removed)
NXM-3575 881437-21 Support for CTF RHEL8/Centos8 Platform (limited support of building NeXtOpt & XBC with RHEL 8 compilers, due to ICE)
NXM-3615 832531-22 Panning past international date in LatLonContinuous missing scroll bar
NXM-3628 832820-22 Point readout should update
NXM-3636 833117-22 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-3726 834922-22 Handle WMS layer transitions
NXM-3743 835448-22 LayerWMS needs better means of limiting CRSs
NXM-3744 835447-22 LayerWMS tiled map drawn in wrong location
NXM-3747 835449-22 LayerWMS/MPlot brightness adjustment makes map panning very slow and jerky
NXM-3781 889232-21 RMIF window resynch logic - needs state machine logic
NXM-3794 836287-22 Invalid keyword block not detected by keywords command
NXM-3807 836480-22 Optimize WMS tile query boundaries using layer information - GeoWebCache support

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