|![ 450px | right | The ImageJ Console window](/media/No-more-dev-null.png “ 450px||right||The ImageJ Console window”)|
The main new feature of this release is a Console window that tracks all output to the standard output and error streams. Previously, all messages to these streams were silently discarded unless the Debug option in Edit › Options › Misc was enabled prior to any issues.
Now, all that has changed: the SciJava Common library gained a new feature to track the standard streams (scijava-common/28f717b9), and the relevant ImageJ user interfaces added a dedicated Console window which pops up whenever output is sent to the error stream (scijava-ui-swing/361bc585, imagej-legacy/0956b341).
This change has important consequences for users. Previously, if a script or plugin issued an error message, it would often be silently discarded with the user never seeing it. For example, see script right: that buggy Python script tries to open a non-existent file. Prior to the Console window, the script would appear to “hang” with no feedback to indicate it crashed. Now, an error appears in red to make it clear to that something went wrong.
Note that messages on the standard output stream do not cause the Console to appear, because there are many ImageJ plugins in the wild (e.g., Bio-Formats) that emit information on that stream. The Console will only appear automatically when messages to the standard error stream occur. However, you can bring it up any time by choosing Console from the bottom of the Window menu.
The Console feature still has some rough edges (scijava-common#155, scijava-ui-swing#5, scijava-ui-swing#6)—as always, bug reports are welcome. But we believe this change is an important step forward to avoid confusion and improve the quality of bug reports overall.
Better ImageJ2 data structure syncing
The “Enable ImageJ2 data structures” option in Edit › Options › ImageJ2
has been removed, and is now off by default (imagej-legacy/231b7651). We have not had time to complete this feature, and it currently causes substantial performance issues when enabled, so we want to be absolutely certain that no one enables it naively or by accident. It is still possible for interested developers to toggle the feature on by setting the
imagej.legacy.sync environment variable.
Regardless, that feature is also less important now that we do on-demand syncing when encountering an ImageJ2 command or script parameter, such as a
net.imagej.Dataset. This release also fixes a bug surrounding that on-demand syncing, which caused it to be triggered unnecessarily (imagej-common/92e59826).
Thanks to Greg for the bug report on the ImageJ mailing list!
Lastly, as usual, this release includes various small enhancements and fixes (e.g., imagej-legacy/4ab51325).