(This release series will transition to only supporting Java 11 (or later) to build and run by default.)
(We do anticipate providing a means to swap to Java 8 compatible code.)
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. |
Via Web Browser:
$NMROOT/htdocs/help/index.html
(Now includes the
NeXtMidas Training Class and an updated version of the NeXtMidas User's Guide.)
COMMAND or Library | - | description |
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 | - | COMMAND;SYS - description |
Macro/Shell Enhancements | - | COMMAND: description |
Libraries | - | Library - nxm.sys.lib.Library description |
Gradle Support | - | 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. |
- | COMMAND
|
|
- | PLOT
|
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 |
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. |
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. | |
- | 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 in Release 4.1.0 (dd MMM 2022) |
||
---|---|---|
JIRA Issue | GForge DR | Description |
NXM-#### | ######-## | summary |
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. |