NeXtMidas 4.0.1 Release Notes

Changes between release 4.0.0 and 4.0.1 are listed in blue.

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


NeXtMidas SYS Option Tree Tested on:
(tests with Java 8, 11, 17)
OS Version Platform Native Compiler(2)
(SYS Option tree)
Web Browser
(WebStart/Applet)
Fedora 34 Linux (x86_64) gcc 4.8.5
openSUSE Leap 42.2 Linux (x86_64) gcc 11.1.1
RHEL/CentOS 7.7 Linux (x86_64) gcc 4.8.5 / Intel 19
RHEL/CentOS 8.0 Linux (x86_64) Intel 19
Windows 10 Pro Windows (x86_64) pre-compiled DLLs (WinGW 5.3.0/gcc 4.9)

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, and 17)
OS Version Platform X-Midas Mode C/C++ Compiler(2) Fortran Compiler
RHEL/CentOS 7u7 Linux
(x86_64)
NeXtOpt (X-Midas 5.6.1) gcc 4.8.5 / Intel 19 / Intel oneAPI 2021 gfc with DEC FORTRAN ext. 4.8.5 / Intel 19 / Intel oneAPI 2021
NeXtOpt (X-Midas 5.6.0) gcc 4.8.5 / Intel 19 / Intel oneAPI 2021 gfc with DEC FORTRAN ext. 4.8.5 / Intel 19 / Intel oneAPI 2021
NeXtOpt (X-Midas 5.5.0) Intel 19 Intel 19
NeXtOpt (X-Midas 5.4.3) gcc 4.8.5 / Intel 19 gfc with DEC FORTRAN ext. 4.8.5 / Intel 19
NeXtOpt (X-Midas 5.4.2) gcc 4.8.5 / Intel 19 gfc with DEC FORTRAN ext. 4.8.5 / Intel 19
NeXtOpt (X-Midas 4.16.1) gcc 4.8.5 gfc with DEC FORTRAN ext. 4.8.5
XBC ("64Bit") gcc 4.8.5 / Intel 19 / Intel oneAPI 2021 gfc with DEC FORTRAN ext. 4.8.5 / Intel 19 / Intel oneAPI 2021
Fedora 34 Linux
(x86_64)
XBC gcc 4.8.5 gfc with DEC FORTRAN ext. 4.8.5
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.

Online Documentation

Java 8 Migration

What Might Break (Changes in Behavior)

BUILD - The default build.props, has merged all areas from build.codeareas.other back into build.codeareas.lib (they were separated in NeXtMidas 3.1.2 because SYS has lots of files to compile). SYS still continues to keep them separated. This is not expected to impact any users.
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)
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
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
  - 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: This feature is in beta and may have issues. Please provide feedback.
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.
  - FEATURE
  • New GROUP= Features can now be associated with a Feature Group. See feature.exp
  - 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)

Known Third-Party Bugs

The following are known third-party bugs and limitations that may cause problems for NeXtMidas users.
Reflective Access JDK 9+ - Warnings are thrown for illegal access using reflection in Java 9 and up. When running from the NeXtMidas start script, the warnings thrown by NeXtMidas are removed. If running from another way, this warning will show up. To bypass the warning, 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.
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.
  - Java has removed support for Webstart in JDK 11
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.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)