Eclipse Project 4.5 M4 - New and Noteworthy

Here are some of the more noteworthy things available in the Mars milestone build M4 (2014-12-12) which is now available for download.
We also recommend to read the Tips and Tricks, either via Help > Tips and Tricks... or online for Platform, JDT, and PDE.

Platform
New 'inherit' value for CSS properties When CSS property gets 'inherit' value then the parent's value will be applied. See more in bug 419377

Apply Patch... wizard more resilient Patches that have been created via "git format-patch" sometimes couldn't be applied successfully using Eclipse's Team > Apply Patch... wizard.

Now, the wizard properly skips lines that are not part of an actual file diff section (e.g. the --↵2.1.1 that Git appends).

Job groups API A JobGroup API (org.eclipse.core.runtime.jobs.JobGroup) has been added that makes it easier to implement parallel algorithms in Eclipse.

Job groups provide a simple way to manage a set of Eclipse Jobs that are responsible for pieces of the same large task. The API supports throttling, joining, cancellation, combined progress and error reporting for all of the jobs in the group. The job grouping functionality can be used to implement performance critical algorithms using cooperating jobs. More information can be found in bug 432049.

Assigning stdin to a file Stdin can now be assigned to a file in the "Common" tab of launch configuration dialogs.

Automatic scroll lock in Console view Scrolling up in the Console view using keys, mouse wheel, or scroll bar now automatically enables the Scroll Lock mode.

When you scroll down to the end of the console, the scroll lock is automatically released again.

Console output limit Preferences > Run/Debug > Console > Console buffer size (characters) is now only limited by the amount of characters the Console view can render.

The arbitrary limit of 1 million characters has been removed.

JDT
Improved flow analysis for loops Flow analysis has been improved to more precisely capture the flow of null values in loops. This mainly achieves a reduction of false positive reports from null analysis.

Previously, example method "test1" would raise a potential null pointer warning at point (3). To correct this issue the merging of information leading towards point (3) has been improved to correctly see that the null value from point (1) can never reach point (3).

In example method "test2" JDT previously reported a redundant null check at (3), because analysis didn't see that the assignment directly above could indeed assign a non-null value.

In example method "test3" it was reported that "o can only be null" at (3), because the information from the two null-assignments wrongly overruled the one assignment from non-null. With improved analysis this is now softened to saying "o may be null".

The graph on the right hand side illustrates the new composition of flow information: for each relevant point (3) inside a loop, the analysis first merges the flows that lead into (1). This result is concatenated with the partial flow (b.c), which leads from the loop start to point (3). Improved precision has thus been achieved within the design limits of a single AST traversal in order to minimize impact on compiler performance.

Re-run parameterized JUnit tests The JUnit view now allows you to re-run groups of parameterized tests, or actually any kind of tests that are run by a specialized runner and add another level of grouping in the JUnit view.

'Rerun' in context menu of the parameter of a

See the full story in Moritz' Blog.

Unused exception parameters A new compiler option to report unused exception parameters in try-catch statements has been added. The option is set to Ignore by default.

(In earlier Mars milestones, detection for unused exception parameters was added as part of the old "Value of parameter is not used" option. But since it turned out that there are situations were not using an exception parameter actually makes sense, we've reverted the old option to only apply to method parameters.)
Extension point for third-party formatters JDT now provides an extension point (org.eclipse.jdt.core.javaFormatter) to allow third-party source code formatters as extensions.

The default code formatter is used if no third-party formatter is provided.
PDE
Target editor retains selection In the Target Editor, while editing an existing software site location, the Edit Software Site dialog now opens with the appropriate selection.
API use scan report specifies additional filters used API use scan report specifies the location of additional filters (.api_filter files) used during the scan. It also reports the number of illegal references filtered out due to additional filters used.

Additional Filter Information

Option to set maximum log size In the Error Log view, on the view menu > Filters... dialog, there now is an option to set the maximum log size that can be read by the Error Log view. If the size of the error log exceeds this limit, a warning is logged.

Maximum log size in filter log dialog

Equinox
GTK+ 3 used by default on Linux distributions (when installed and available) SWT and Eclipse will use the GTK+ 3 libraries by default on all Linux platforms, whenever GTK+ 3 is installed and available (including GTK+ 3.10 and above).

You can force Eclipse to use GTK+ 2 port by setting the environment variable SWT_GTK3 to 0 or using the launcher parameter --launcher.GTK_version flag in .ini file, if needed. (For example: export SWT_GTK3=0)

Dropped support for GTK+ 2 versions older than 2.18 in Eclipse launcher GTK+ 2.18.0 or later (and its dependencies) will be the pre-requisites necessary to run Eclipse successfully on all Linux/UNIX platforms as opposed to GTK+ 2.10.0 earlier. Support for all versions older than 2.18 has been dropped effective Mars M3 milestone release.

Note: As of now, Eclipse shows the following error dialog, which allows you to run even when a GTK+ version older than 2.18.0 is detected. But that behavior will soon be changed to not run Eclipse with unsupported GTK+ versions.

Prompt for native dependencies It is now possible with p2 to express dependencies on OS packages and prompt the user to install those when they are not installed.

This functionality can be enabled by a new touchpoint instruction. For example:

org.eclipse.equinox.p2.touchpoint.natives.checkAndPromptNativePackage(distro:debian,package:handbrake,comparator:ge,version:0.9);

At this point, the support is limited to Ubuntu. Contributions to add this support for other OS are welcomed.

Integration with Tycho is available from 0.23.0-SNAPSHOT and above.

The above features are just the ones that are new since the previous milestone build. Summaries for earlier Mars milestone builds: