Release Notes for JMRI 4.3.5 release
Date: April 25, 2016
From: Bob Jacobsen
Subject: Test version 4.3.5 of JMRI/DecoderPro is available for download.
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 test versions. We expect this series to end in the next JMRI production release around the middle of 2016. (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 version should be considered experimental.
Known problems with this releaseThe following new issue has been discovered since release time:
- Decoder definitions that have constants in Function Maps to fail to open in this version.
New warnings for this version:
- When sharing a configuration between this version and JMRI 4.3.4 or older, the older version of JMRI will not reflect changes in preferences, window position, table sorting, column order, or other user interface state. This is due to changes in how user preferences and interface state are stored.
Older warningsSee the JMRI 4.2 release note for warnings predating the 4.3 development series. These may be relevant to you if you're updating from an earlier version.
You can now set the order of your startup items: If you're opening panel files, running scripts, etc as the program starts up, there's a preferences pane that lets you easily set the order in which those happen. If you've set the order manually (e.g. by editing configuration files) in the past, please check this preference to make sure it's set the way you want.
The DispatcherPro, JMRI Demo, and SignalPro applications are no longer shipped in distributions. Use PanelPro in lieu of these applications.
The internals of the Layout Editor have been reworked a bit. Please keep an eye out for any changed behaviors.
The code for handling Panel Editor / Control Panel Editor icons has changed to better deal with rotating icons. This has changed how opaque vs transparent icon backgrounds are handled. Please check your panels to make sure we haven't inadvertently caused a problem, particularly if you've got rotated icons and/or use have custom icons with transparent backgrounds. If there are any problems, please send in a copy of your panel file so we can recreate the problem and fix it.
The configuration is now stored in multiple files within a directory named
inside a Configuration Profile instead of within the file
PanelPro and DecoderPro both should migrate from the old configuration to the new configuration seamlessly.
See JMRI Issue #69 for more details.
Please report any issues at our GitHub project.
The XML schema for decoder files has been made more precise. This shouldn't effect people who just use the JMRI decoder definitions as distributed, because they all work with this more precise version. But if you have decoder definitions of your own, you may have to update them. Ask for help on JMRI users if you have trouble. Specifically, the decoder file verification will now reject a few things that it didn't catch before, even though they didn't really work:
- There can be only one label element for a given language on a given variable.
- A variable element has to contain just one type element such as decVal, enumVal, etc.
Mac OS X 10.11 El Capitan requires signed drivers for USB adapters. If you've upgraded from an earlier version, your drivers may not work. That will cause JMRI to throw errors when it doesn't find communications links. To fix this, go to the web site for your adapter manufacturer, find the drivers that are listed to work with Mac OS X 10.9 or later, download, and install, then retry JMRI again.
Jython has been upgraded to version 2.7.0 with the following potentially breaking changes:
- The decodeJmriFilename() function is no longer available by default. Use the FileUtil.getExternalFilename() method instead.
- The simple propertyListener object is no longer available by default. Create your own, following the examples provided in the jython folder in the JMRI distribution.
- jmri_defaults.py included in the JMRI distribution is no longer executed by default, but will be executed before any other Jython scipts if included in your User Files location.
- The default behavior of python.cachedir.skip is now true. If using a custom python.properties file, include "python.cachedir.skip=false" in that file.
- Certain Python scripts are too large to be evaluated in Jython. If a script fails with the
java.io.IOException: Mark invaliderror, set "jython.exec=true" in a custom python.properties file or rewrite the script to be less than 100,000 characters per file. Note that when using "jython.exec=true" it may be desirable to run the included script jmri_bindings.py as a startup action to emulate the evaluation environment used when jython.exec=false.
Decoder definitions that use the "ivariable" form are now deprecated. Definitions included with this release have been converted to the new form. If you have decoder definitions with the older "ivariable" form, they will no longer validate, but can still be used for the first couple of test releases in this series. Please ask on the JMRI users Yahoo group for help converting them, or just drop them and use the current definitions.
The OpenLCB 0.6.4 library in this version has a bug in its alias calculations which prevents JMRI from communicating occasionally. A patch has been submitted to the OpenLCB group, but as they seem no longer interested in maintaining that code, it's not known when this will be fixed. In the meantime, the workaround is to restart JMRI and/or the hardware node(s) and try again; that might allocate different alias values.
Please use these links for downloading:
Mac OS X: https://sourceforge.net/projects/jmri/files/test%20files/JMRI.4.3.5-R305598e.dmg/download
Changes since test release 4.3.4:The list of included commits is available from our GitHub code repository.
Support for ARM processors running in 64-bit mode (aarch64) has been added
- DCC++ crash when starting with the Base Station not attached has been fixed.
- Steve Todd and Steve G. fixed an error in the Loconet Monitor that would cause exceptions to appear if Sensor/Turnout/Reporter usernames were empty
- Fix error preventing emergency stop in 14/28 speed step modes (Steve Rawlinson / 1185)
- Added low mast appearances to Basic signal system (mstevetodd / #1080)
New / Updated decoder definitions
- Added the ability to specify non-key states used by some decoders to control outputs, such as Stopped, Moving, Forward, Reverse and Sensors. For details see the Function Map page. (Dave Heap)
Dave Heap made the following changes:
- Refactored the LokSound V3.x definitions to remove three custom panes and moved those items to the Function Map pane.
- Additions to LokSound Select L, including the ESU Smoke Unit and SUSI.
- Standard+ V2 NEM652 10231-02 added (Alain Carasso / #1169)
- MRC 1961 - Sound Decoder for Model Power N-scale Pacific/Mikado added (Alain Le Marchand / #1105)
- MRC 1750 - Walthers GP15-1 HO added (Alain Le Marchand / #1140)
- MRC 1825 - Athearn SD45/60 HO improved (Alain Le Marchand / #1140)
Norsk Modelljernbane (NMJ)
- Norsk Modelljernbane (NMJ) Topline Skd 224 decoder added (Lolke H Bijlsma / #1085)
- tOm Lokommander Micro - added (Lolke H Bijlsma / #1109)
- tOm Lokommander Mini - added (Lolke H Bijlsma / #1109)
- Manifests and switch list now show locomotive set outs at the end of the work for switchers.
- Fixed a problem where locomotives wouldn't reset properly when running automations.
- Fixed a lockup problem with the Trains window when using the table sort and building trains. Problem was introduced in the last test release.
- Made some build report improvements with regards to train turns.
- Improved how the program when building a train, finds locations for cars out of staging. Should help reduce the number of build failures.
- There's now a "HIAF" (Halt If Action Fails) checkbox for each action in the automation table.
- A "Run" button has been added to the Timetable window. The button appears when CSV manifests are enabled.
- New automation action "Is train en-route?". See help for details.
- Saved train Manifests are now stored in separate directories based on train names.
- The location window now shows if there are track restrictions when only certain trains or routes can access a track.
- The program will attempt to place buffer cars between the locomotive and hazardous cars. If a hazardous car and a non-hazardous car are going to the same track, the program will place the non-hazardous car in front of the hazardous car.
- All table row heights are now adjusted based on font size selected.
- The "Move" button for a train is now labeled "Terminate" when the train has arrived at the last location in the train's route.
- Added ability to create a button to launch a specific script to the startup preferences (PR 1165).
- The 'RosterCsvExport' script was updated with examples of extracting information from specific bits of CV values, such as the DC-enabled bit of CV 29. (#1197)
- All power buttons now include text labels indicating current power state.
- Much work on internal cleanup of the code. Some small decoding and error handling improvements.
- The NamedBean class better adheres to the JavaBeans specificiation. Critically, these changes mean that only Strings can be used to name a property, and that the getPropertyChangeListeners(String) method has been renamed. (If you don't know what this means, don't worry about it; it's an internal structure thing.)
- The Table sorting and filtering mechanism has been changed to use mechanisms introduced for that purpose in Java 1.6 or newer. When sharing a configuration between this version and JMRI 4.3.4 or older, the older version of JMRI may start with a warning and forget table sort order.
- When sharing a configuration between this version and JMRI 4.3.4 or older, the older version of JMRI will not reflect changes in window position, table sorting, column order, or other user interface state. This is due to changes in how user interface state is stored.
- Application exit time has been reduced and applications exit more cleanly. (Randall Wood)