Release Notes for JMRI 5.7.5 release
Date: March 9, 2024
From: Bob Jacobsen
Subject: Test Release 5.7.5 of JMRI/DecoderPro is available for download.
Notes:
This is a test release. Please
post a note
if you encounter any new or old bugs!
And please back up your JMRI files before installing this, in case you want to go
back to an earlier version.
This is the next in a series of 5.7.* test releases.
It requires Java 11 to work.
(See our page on downloading Java 11)
We expect this series to end in the next JMRI 5.8 production release in June 2024.
(See the tentative release schedule)
Some of the changes involved are quite extensive.
They may require a certain amount of experience before they are working well.
Therefore, this test release should be considered experimental.
We would appreciate your feedback on it.
JMRI is now only available under the
GNU General Public License. For more information, please
see our
copyright and licensing page.
Update From Older JMRI Versions
If you are currently using a version older than JMRI 5.0, please follow these instructions carefully:
- Is your current version older than JMRI 4.12?
If so, then update to JMRI 4.12 first, and ensure everything works correctly: check
start-up, check things you need to be working, and check the JMRI log as well) before doing anything else.
Store your configuration and panel files under a new name and use those from now on.
Then continue with step 2.
If you are currently using JMRI 4.7.3 or earlier on Linux or macOS (Windows doesn't need this),
then it's very important
that you update to JMRI 4.12 and
carrying out the migration process described in the JMRI 4.12 release note
before updating to any later release.
- Is your current version older than JMRI 4.20?
Then update to JMRI 4.20 first, and ensure that works correctly (check
start-up, check things you need to be working, and check the JMRI log as well) before doing anything else.
Save your preferences again.
Store your configuration and panel files under a new name, use those from now on, and go on to step 3.
- Is your current version older than JMRI 4.24?
Then update to JMRI 4.24 first, and ensure that works correctly (check
start-up, check things you need to be working, and check the JMRI log as well) before doing anything else.
Save your preferences again.
Store your configuration and panel files under a new name and use those from now on.
- Is your current version older than JMRI 5.0?
Then update to JMRI 5.0 first, and ensure that works correctly (check
start-up, check things you need to be working, and check the JMRI log as well) before doing anything else.
Save your preferences again.
Store your configuration and panel files under a new name and use those from now on.
- You can then install this release.
Following this multi-step order of updating via stable major releases safeguards you against possible migration issues
that can arise from skipping these versions.
New problems with this release
New warnings for this release:
Older warnings
See the
JMRI 5.6 release note for more warnings predating the 5.7 development series,
including pointers to various migration issues.
These may be relevant to you if you're updating from an earlier version;
we strongly recommend you update to at least
JMRI 5.0
before installing this test release.
See
instructions above.
- Since JMRI 4.99.1
This test release, and all subsequent ones, require the use of
Java 11 or later. Java 8 is explicitly not supported.
There's more information on this migration on the
JMRI Tech Road Map and
JVM Capabilities pages.
- Since JMRI 5.5.3
Scripts that output Logging statements with log4jv1.x ( org.apache.log4j ) imports will stop working
from JMRI 5.5.4 and should be updated to use SLF4J logging.
See here for some examples on how to do this.
- Since JMRI 5.5.4
Custom default.lcf Logging Control Files will cease to take effect from JMRI 5.5.4
To create a custom default_lcf.xml in the new Logging Configuration format, see
JMRI Debugging and Logging
- Since JMRI 5.5.5
XML files with table contents and panels have been changed in JMRI 5.5.5. It's therefore not
possible to load an xml file with tables and panels that has been created with JMRI 5.5.5 or
later with a JMRI version pre 5.5.5.
- Since JMRI 5.5.5
MQTT Connection - Throttle loco address and function placeholders in MQTT topics have changed from
$address and $function to {0} and {1} for consistency with other objects.
- Since JMRI 5.7.1
Several systems have had extensive updates to their serial
support. If you have trouble connecting to your layout hardware
after installing this version, please contact us
on the JMRIusers list
for assistance.
Download links:
These files are located in the
JMRI 5.7.5 GitHub release.
The
list of included changes is available from our
GitHub code repository.
Hardware Support
- Updated the OpenLCB_Java library ot version 0.7.35 with improvements:
- Better display of frames with leading zeros on their aliases
- Better handling of unexpected alias collisions. These shouldn't
actually happen if all goes well, but just in case it doesn't...
- Adds support for the Verify Node Addressed message
- Additions for better conformance with OpenLCB standards
- Add the STL Editor tool to the OpenLCB/LCC menu. The
tool is used to generate the STL logic for the RR-CirKits Tower LCC+Q. The
Tower LCC+Q uses a subset of the Siemens Structured List PLC language.
New / Updated decoder definitions
ZIMO
- LIPLDNW1 (N, TT) light bar
- LIPLDNY1 (N, TT) light bar
- LIPLDHW1 (H0, TT) light bar
- LIPLDHY1 (H0, TT) light bar
- LIPLDGY1 (G, 1, 2) light bar
- LIPLDGW1 (G, 1, 2) light bar
Dispatcher
- Add an option to Ramp up and down using the speed profile such that the speed change takes place over the length of the section.
LogixNG
- Conversion to boolean has changed. Before JMRI 5.7.5,
conversion from a string to boolean returned
True if the string was not empty, and
False if the string was empty. With JMRI 5.7.5,
this has changed so that a string that's true
(case insensitive) returns a boolean True
and a string that's false (case insensitive)
returns a boolean False. All other string
values throw an exception. The earlier behaviour was not
documented so it's unlikely that this affects users.
The old behaviour was based on how Jython converts a string
to boolean. If you want the old behaviour, you can use the
LogixNG formula function boolJython().
- Local variables and Global variables can now be initialized
to boolean values as well. True or false. Case insensitive.
- The action Log local variables now has the
option Show class name.If it is selected,
the name of the class will be shown after the value. This
is useful for debugging, when you want to know the type of
the value.
- The LogixNG function int() previously returned a Java
Integer instead of a Java Long.
This bug is now corrected. It shouldn't affect any existing
LogixNGs. The difference between Integer and
Long is that Long can handle
much bigger integer values than Integer.
- The LogixNG action Enable/Disable LogixNG
has been added.
- LogixNG formulas now supports Java arrays as well, for example
if you use the Java method split() to split
a string. Example:
LogixNG: IQ:AUTO:0001
ConditionalNG: IQC:AUTO:0001
! A
Many
::: Local variable "a_b", init to String "Hello_World"
::: Local variable "a", init to None ""
::: Local variable "b", init to None ""
::: Local variable "a_b_array", init to None ""
! A1
Digital Formula: a_b_array = a_b.split("\_")
! A2
Digital Formula: a = a_b_array[0]
! A3
Digital Formula: b = a_b_array[1]
! A4
Log local variables
- The LogixNG action For each now supports
Java arrays as well, for example the result of the expression
a_b.split("\_").
- The LogixNG action Set reporter has been
added.
- The actions Listen on Beans ... have been
updated to fix a problem when several beans changes
state at the same time.
- Fixes a bug so that the methods toString(),
getKey() and getValue()
can be used for an item when using the action For each
on a Map.
- Adds the LogixNG functions strlen() in module
String and length() in module
Common.
- Bug fix: The LogixNG function boolJython()
now return false if the value is an empty array. It returns
true if the value is a non empty array.
- Bug fix: The LogixNG function evaluateMemory()
didn't behaved as documented. It's now fixed.
- The LogixNG functions cos(), tan(),
atan(), sqr() and
sqrt() has been added to the Math
module.
Operations
- New feature allows users to quickly create a custom load for all car types.
Scripting
- Added three sample scripts
- AddPowerButton.py - shows how to add a button to the main
PanelPro window. In this case, the button turns power on and off.
- MainWindowToBack.py - moves the main PanelPro window to the back.
Useful when you want PanelPro to start up with a panel
at the front of the screen.
- MenuItemDisable.py - shows how to disable menu items so they
can't be used. Sample disables LocoNet ability to reset slots,
and ability to start the WiThrottle server. Meant for e.g.
club use.
Miscellaneous
- Improve handling of block values that contain IdTags
across shutdown and startup.