What’s new in Eclipse Linux Tools 6.0
The new Eclipse Oxygen meant the simultaneous release for a number of cool new features and capabilities. In this article, Alexander Kurtakov explains the new features and APIs for the Linux Tools 6.0.0 release. This helps make Linux Tools slimmer, easier to maintain, and more consistent with rest of the ecosystem.
The Eclipse IDE has a long history in providing various tools targeting Linux development. The Eclipse Linux Tools project was created back in 2006. The project was first named as “Linux Distro” and aimed at improving build and installation under Linux. It gained plugins for RPM packaging, Linux specific profiling (oprofile, valgrind….), Autotools integration in Eclipse CDT (C/C++ Development Tooling), and the latest two big additions have been Docker and Vagrant integration plugins. Some of the components have fully matured and graduated into components or improvements in projects lower down the stack. For example, Autotools build support is now part of CDT itself, a lot of the build improvements found their place into the Eclipse Platform releng and Eclipse Common Build Infrastructure (CBI) projects. Now, the project’s main goal is to further improve integration with Linux systems as a first-hand experience for Eclipse IDE users. That is why making some parts of the project natural parts of the technology specific plugins is a win for us.
The Linux Tools 6.0 release, part of the Eclipse Oxygen release, doesn’t focus that much on new features but focuses on realigning with new features and APIs in the Eclipse Platform so we can make next Linux Tools releases slimmer, easier to maintain and more consistent with rest of the ecosystem. This work helped to identify some new and easy to add functionalities too. Here are the major areas that are currently being worked on.
The checkAndPromptNativePackage touchpoint is not a new feature in p2, the but Linux Tools project was not making use of it until now. As many of the different plugins in the project are useless without the underlying tool it was high time to start using it. It will help users to detect and install missing tools for a smoother overall experience. In the process, we found that there is a missing integration for Fedora Linux so this was fixed in P2 itself for Oxygen. All plugins have P2 instructions to ensure that the proper tools are installed on Fedora Linux. We are looking forward to adding support for more Linux distributions, but this needs active involvement from users on these distributions to come up with the specific package names and versions, and to ensure they work properly.
One of the big new features added by the Eclipse Platform in Oxygen is Generic extension based editor. As we have a number of different editors (RPM .spec file, Dockerfile, ChangeLog and others) in the project, this is an area of special interest.
Current editors will be kept, but there is alternative to “Open with/Generic Text Editor” that would use the new extensions to the generic text editor instead of the dedicated one. This is a preview of the future of editors in Eclipse IDE – not only in Linux Tools project but overall. Help us shape it together by trying and reporting issues or even try with editors in plugins you develop. The refactorings are:
- Register content-type (org.eclipse.core.contenttype.contentTypes extension point) for the file names and extensions
- Extract PresentationReconciler child class and register it to org.eclipse.ui.genericeditor.presentationReconcilers extension point
- Register existing completion processors to org.eclipse.ui.genericeditor.contentAssistProcessors extension point
- Register existing hover providers to org.eclipse.ui.genericeditor.hoverProviders extension point
- Decouple setup done in code to rely on extension points and/or proper API
In addition to making our code structure way better (at the price of some API breakage to hide the editor to no longer be exported) there were some nice effects that end users can see like:
- Adding hover help to Dockerfile editor
- Many corner cases identified so completion and hover providers should be way more reliable now
A number of areas in the Generic editor infrastructure were identified and marked to be “not on par” with existing editors. This will be worked on for the upcoming Eclipse Photon release in 2018 for both in Platform and Linux Tools. Once these are fixed, the current editors will be phased out in favor of the generic editor.
Editor Highlighting Definitions
Another long existing, but not used in Linux Tools editors feature is org.eclipse.ui.themes. All highlighting colors were hard-coded in the editors and this wasn’t an issue in the past, but with the increasing popularity of Dark Theme it became a little unappealing. The first steps to improve this have already been taken. In this release, all colors are defined using the themes extension points so the door is open for CSS overrides. And we are looking for contributions from people using the Dark Theme too, so don’t be shy!
The most actively developed subcomponent in Linux Tools has seen a number of changes like:
- Updated version of docker-client for proper working with latest docker daemon versions
- New security options – Support has been added when launching commands in a Container to specify a security option profile. This can be done in lieu of specifying privileged mode. For example, to run gdbserver, one can specify “seccomp:unprofiled” to allow ptrace commands to be run by the gdb server. Details can be seen here.
- Fixes to enable features like “Launch C/C++ executable in container” in CDT as described in this previous article. There is work in progress for similar feature for Java applications that should land in one of the next releases.
The Oprofile tool itself stopped shipping opcontrol command line executable years ago and none of the current Linux distributions ship it, so we had to finally remove it since it was virtually untested for quite some time by any of the committers.
The Error view included in this plugin has been removed in favor of hyperlinks in the Console view.
There are also a number of other small enhancements like:
- editor enhanced to treat try/catch/continue as keywords,
- fixed launch settings to be properly applied,
- improved auto-indentation,
- other smaller improvements.
There are a number of other small fixes and improvements, but due to project’s diversity, it’s best if you try it out yourself. Just download and start Eclipse Oxygen/Install New Software.. then look at the various plugins in the Linux Tools group from the Oxygen update site.
We want to hear from you! You can reach us via our developers’ mailing list.
Please report any bugs in the project’s Bugzilla.
This post was originally published in the June 2017 issue of the Eclipse Newsletter: Eclipse Oxygen — A Breath of Fresh Air
For more information and articles check out the Eclipse Newsletter.