Eclipse CDT Deprecated and Breaking API changes and removals

Deprecated API can be marked for deletion without requiring a major version increment. See the policy for the details. This section describes API removals that occurred in past releases, and upcoming removals in future releases.

API Changes prior to CDT 10.0 / 2020-09.

Prior to CDT 10 release API changes were published as part of the New and Noteworthy entries for that release. From CDT 10 forward breaking API changes are included in this document.

API Changes in CDT 10.0.

  1. Eclipse CDT requires Java 11 as a minimum to build and run.
  2. Some deprecated methods and classes have been removed.
  3. Previously exported packages that were not API are now correctly marked as such.
  4. Activators removed for all bundles where possible.
  5. NewClassCreationWizardPage breaking changes.
  6. Arduino plug-ins and features removed.
  7. Remove LRParser, XLC and UPC.
  8. Remove org.eclipse.cdt.utils.Platform.
  9. DSF and DSF-GDB API Changes.
  10. Partial removal of CDT 3.X project support.
  11. Removal of CDT Core Options API.
  12. TM Terminal has major changes to support new color and preference functionality.
  13. Environment Variables are always case sensitive in CDT.
  14. Environment variables no longer support \${ to avoid expanding.
  15. The binary parsers are now implement Autocloseable
  16. ICPPASTDeductionGuide and ICPPASTParameterListOwner removed in CDT 10.0.1

Planned Removals after June 2022

  1. 32-bit Binary parsers with 64-bit replacements
  2. BaudRate enum in org.eclipse.cdt.serial

API Changes in CDT 10.0.

1. Eclipse CDT requires Java 11 as a minimum to build and run.

Java 11 or greater is required for CDT. This means that the BREE for all CDT bundles is now Java 11. See Bug 562494.

The previous workaround for single-sourcing Java 8 and Java 11 has been removed. This means the org.eclipse.tools.templates.freemarker.java11 bundle fragment has been removed. See Bug 563494.

2. Some deprecated methods and classes have been removed.

Across the CDT code base some previously deprecated code has been removed.

3. Previously exported packages that were not API are now correctly marked as such.

A review of the previously exported API of CDT was performed. A lot of what was previously marked as public API has now been marked as internal. This means the API has either had x-internal or x-friends added to the Export-Package declarations.

The following bundles have had all their packages exported as internal See Bug 561389:

The following bundles had additional changes made to be able to mark packages as internal:

4. Activators removed for all bundles where possible.

Where possible bundles have had their Activators removed. Some of these activators were API and are no longer available. See Bug 561635 for workarounds where items that used to be in Activators are still needed, such as logging and plug-ids.

The following Activators that were API have been removed.

5. NewClassCreationWizardPage breaking changes.

The NewClassCreationWizardPage has some API breaking changes due to how some protected fields, especially ALL_FIELDS was used. While this breaks binary compatibility, no code changes should be needed in extenders, just compiling against the new version. See Bug 510789 and Bug 561770.

6. Arduino plug-ins and features removed.

The CDT Arduino plug-ins and features have been removed. Arduino can still be used with CDT with manual maintenance of packages, etc. Or a third-party add-on such as Sloeber can be used as a replacement.

The bundles and features that have been removed are:

See Bug 562498.

7. Remove LRParser, XLC and UPC.

The LR, UPC and XLC support have been removed from CDT. The bundles have not been maintained for a while and were not functional anymore.

The bundles and features that have been removed are:

See Bug 562498.

8. Remove org.eclipse.cdt.utils.Platform.

Class org.eclipse.cdt.utils.Platform has been removed. Use org.eclipse.core.runtime.Platform instead.

See Bug 564123.

9. DSF and DSF-GDB API Changes

DSF and DSF-GDB have had some small API changes, but they are still breaking changes and are listed here:

10. Partial removal of CDT 3.X project support

CDT 3.X projects have been deprecated since CDT 4.0. Some classes supporting this old version have been removed:

See Bug 564949.

11. Removal of CDT Core Options API

The CDT Core Options API and implementation has been removed as now it is a part of Eclipse Equinox 4.16 Preferences API, the removed packages are:

See Bug 565154.

12. TM Terminal has major changes to support new color and preference functionality.

The TM Terminal's control (org.eclipse.tm.terminal.control) bundle has a major new version to support numerous API changes to support features such as new colors, preference sharing and some other code clean-up.

13. Environment Variables are always case sensitive in CDT.

The handling of environment and build variables in CDT has changed to being case sensitive. This means some API changes to remove methods such as isVariableCaseSensitive (see full list below). The PATH and dome other special environment variables in CDT are always uppercased, such as Path. See Bug 564123.

14. Environment variables no longer support \${ to avoid expanding.

This change is not literally an api change but will impact your code if you used \${ to not expand environment variables. It may impact your code if you import environment variables and had to workaround path\${childPath} resolving to path${childPath}. See Bug 560330.

15. The binary parsers are now implement AutoCloseable

The binary parsers part of CDT core now implement the AutoCloseable interface and can be used in try-with-resources blocks. See list below for all the classes that are now AutoCloseable. See Bug 553674.

16. ICPPASTDeductionGuide and ICPPASTParameterListOwner removed in CDT 10.0.1

Classes org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeductionGuide and org.eclipse.cdt.core.dom.ast.cpp.ICPPASTParameterListOwner which were added for CDT 10.0.0 have been removed in CDT 10.0.1. See Bug 567261.


Future Deletions

The items below can be removed after the given date or on the next major release, whichever is sooner. The details and discussion on the removal happens in the Bugzilla associated with the entry below. See the policy for the details.

API Removals after June 2022

1. 32-bit Binary parsers with 64-bit replacements

The following binary parser classes have replacements, mostly due to these versions not supporting 64-bit variants of the binary files. The new 64-bit parsers support both 32 and 64 bit files.

See Bug 562495.

2. BaudRate enum in org.eclipse.cdt.serial

The BaudRate enum in org.eclipse.cdt.serial package will be removed. The following APIs will be removed, listed with their replacement.

See Bug 563108.