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.
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 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.
JMRI is now only available under the
GNU General Public License. For more information, please
see our
copyright and licensing page.
Known problems with this release
The following new issue has been discovered since release time:
- Decoder definitions that have constants in Function Maps to fail to open in this version.
If this issue affects you, please either wait for
JMRI 4.3.6, due out in early May,
or pick up a
development build installer
from
Jenkins.
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 warnings
See 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 profile
inside a Configuration Profile instead of within the file ProfileConfig.xml
.
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.
As a side effect of checking this, the qualifier elements inside a variable now have to
be at the front of the contents, and the label, comment and tooltip elements have to be
at the back. You can't just sprinkle them around and hope the code finds them
(because sometimes in the past the program would miss one; now we require an order we're
sure the code will understand).
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 website 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 invalid
error, 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 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.
Download links:
Please use these links for downloading:
The
list of included commits is available from our
GitHub code repository.
Hardware Support
Support for ARM processors running in 64-bit mode (aarch64) has been added
DCC++
- DCC++ crash when starting with the Base Station not attached has been fixed.
LocoNet
- 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)
Signals
Signal Systems
- 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)
ESU
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.
Lenz
- Standard+ V2 NEM652 10231-02 added (Alain Carasso / #1169)
MRC
- 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)
Train-O-Matic (tOm)
- tOm Lokommander Micro - added (Lolke H Bijlsma / #1109)
- tOm Lokommander Mini - added (Lolke H Bijlsma / #1109)
Operations
- 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.
Preferences
- Added ability to create a button to launch a specific script to the startup preferences (PR 1165).
Scripting
- 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)
Miscellaneous
- 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)