Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
CDT/Archive/planning/4.0Plan
This is currently a work in progress. Please let me know if you want any changes, Doug
Last revised: 13:18, 24 October 2006 (EDT)
CDT 4.0 is scheduled to be delivered in June 2007 as part of the Europa Simultaneous Release. Guidelines for this release are available here.
Contents
Release Deliverables
The release deliverables are the same as with previous releases.
- Source code in CVS tagged "CDT_4_0".
- CDT run-time, i.e. org.eclipse.cdt feature, downloadable as a tar/zip per supported platform.
- CDT SDK, i.e. org.eclipse.cdt.sdk and org.eclipse.cdt features, downloadable as a tar/zip per supported platform.
- Contents of SDK available from the CDT update site.
- Contents of CDT run-time available from the Europa update site.
- Release review slides, including project log.
Release Milestones
The CDT will follow the Europa schedule for milestones and final delivery. These generally follow the milestones of the Eclipse Platform by one week. The following are the dates for when the milestones will be generally available along with links to the plans listing the state of the CDT features for that milestone.
- Thursday, Dec. 21, 2006 - Milestone 4 (4.0 M4) - plan.
- Friday, Feb. 16, 2007 - Milestone 5 (4.0 M5) - First public milestone for Europa
- Friday, Mar. 30, 2007 - Milestone 6 (4.0 M6) - Chance to give early preview of new features
- Friday, Apr. 27, 2007 - Release Candidate 0 (4.0 RC0) - Feature Freeze
- Friday, May 11, 2007 - RC1 (4.0 M7) - Feeds into Europa Milestone 7
- Friday, May 25, 2007 - RC2 (4.0 RC2) - Bug fixes
- Friday, June 8, 2007 - RC3 (4.0 RC3) - Getting closer
- Friday, June 22, 2007 - RC4 (4.0 RC4) - Code Freeze
The feature freeze date is the RC0 date which marks the beginning of the ramp down. All features should be implemented and only bug fixes going forward.
The code freeze date is when our last build should be for 4.0. We do have the opportunity to do emergency builds up until probably the Wednesday of the next week. The official announcement of Europa will be made on Friday, June 29. However, the Eclipse mirrors will need to be populated by then and that takes a couple of days.
Target Operating Environments
Builds of the CDT are available for the following host operation system and architecture combinations (there are no windowing system specific plugins in the CDT):
- Windows - x86
- Linux - x86, x86_64, ppc, ia64
- Mac OS X - ppc, x86 (universal)
- Solaris - sparc
- AIX - ppc
- QNX Neutino - x86
The download status show that Windows x86 and Linux x86 are by far the most widely used, and, thus, tested and have the best support.
The current plan is to support Java 1.4.2 run-time environments with CDT 4.0. Some optional components will require Java 1.5.0. We are still looking for concrete examples of CDT users that can not move to Java 1.5.0. If you have such an example, please report it to cdt-dev@eclipse.org.
Plug-in Dependencies
The CDT currently only depends on the Eclipse Platform Runtime Binary. CDT 4.0 will require Eclipse 3.3.x. Since new APIs will be used, CDT 4.0 will not be compatible with Eclipse 3.2.x.
Internationalization
All effort is made to ensure that the CDT can be nationalized to all languages supported by the Eclipse Platform. Only English is provided with the CDT and is the only language known to be tested.
Compatibility with Previous Releases
The CDT has had a troubled history maintaining backwards compatibility. One of the main objectives of CDT 4.0 will be to finalize all APIs so that we can maintain backwards compatability in future releases. As such, it is anticipated that there will be more churn in the APIs for this release. All plugins that use any APIs and/or extension points provided by the CDT will need to at least recompile against CDT 4.0 and will likely need to make code changes.
Component Plans
The following are the plan items proposed for specific components of the CDT.
Core
Indexing
- Support headless creation of indexes (PDOM), and import of these prebuilt indexes into user workspaces. bug 74433.
- Enable pdom index files to be relocatable (contain relative or symbolic paths) bug 162172
- Refactor the parser to allow it to be deployed as a standalone JAR file if so desired. bug 151846
- Refactor the indexer to allow it to be deployed as a standalone JAR file if so desired. bug 158975
- Refactor the indexer to remove hard dependencies on having an Eclipse project. bug 151847
- Allow customizability of which parser to run on particular projects/files/resources. bug 151850
New Project Model
The main goal of the New Project Model is to increase the CDT usability, tool-integrator support and multi language support.
References:
- bug 115935
- New Project Model Core Design
- New Project Model UI Design
- "New Project Model Core" presentation
- "New Project Model UI" presentation
UI
C/C++ Editor
- Support indent width independent of tab width. Allow to specify indent width independent of tab width to support mixed-mode indentation as already requested by bug 53994 and bug 92036.
- Default formatter. Implement a (simple) default formatter/indenter. bug 95274
- Text Drag and Drop. Implement Text Drag and Drop for the editor. bug 78677
Note: This may become obsolete if Eclipse platform implements it in 3.3. See also bug 11624. - View non-printable characters. Provide a command and toolbar button to enable visualization of non-printable characters in the editor (CR, LF, TAB, SPACE). bug 140333
Note: This may become obsolete if Eclipse platform implements it in 3.3. See also bug 22712. - Auto-save. Implement an option to regularly save dirty editor buffers to the Eclipse local history as a backup mechanism. bug 140334
See also Eclipse platform bug 34076. - Semantic highlighting. Colorize definitions and declarations of various C/C++ elements: function, variable, type, enum, etc. bug 140335
- Inactive code highlighting. Highlight lines of code which are inactive (ie. which are excluded by conditional preprocessor directives) in the current scanner configuration. bug 81511
Content Assist
- Convert to use the index whenver possible, and convert the DOM contributor to skip all headers. This should speed up content assist immensely. bug 169860
- Code assist similar to java eclipse, in particular:
- Show available method/fields completion list with Ctrl-Space,
- Automatically add #include "file.h" when a function is added in code with Ctrl-Space
- When a class method (or function) is deleted (with right mouse click), the declaration in header file should be automatically deleted.
- When a method/function is added in c/cpp file, its declaration should be automatically added in its header file.
- When a method/function's signature changes, it should also be updated in header file.
- Show references of highlighted function/method
CView
- Common Navigator extensions. Adopt the new Common Navigator (CN) framework and create CDT specific extensions to plug the content and functionality of the C/C++ Projects view (aka CView) into any Common Navigator view. The extensions will be initially contributed to the new general purpose "Project Explorer", which serves as a playground for early adopters of the technology (like JDT). This should also help to stabilize and improve the CN framework by providing feedback and bug reports. bug 140337
New Views
- Include Browser: Visualize the include relations among files in a tree as proposed in bug 142149
- Call Hierarchy: Explore call-graphs by means of a tree as proposed in bug 48212.
- Reintroduce Type Hierarchy: Present inheritance relations and members of types. This is proposed in bug 142189.
The implementation will also consider bug 48213, bug 70246, bug 71943, bug 87815, bug 94197, bug 99833, bug 99835, bug 100655, bug 108879 and optionally also bug 73904.
Build
CDT Build System
- "New Project Model" Build System enhancements bug 115935
- Standard and Managed Build System incorporation - current "Standard" and "Managed" build systems will be incorporated into one CDT Build System. This will allow to leverage the Standard Build system with the build configuration and tool-chain concepts, provide one common mechanism of tool-chain integration, build system configuration, maintainence, etc. bug 162728
- Multi-language support - associating language ID with tools, per-InputType (language) include/macros settings calculation.
- Tool-Chain Modifications - the functionality will allow changing tool-chain settings for the project. This includes: Tool-chain substitution, adding/removing/substituting tools in the tool-chain, builder substitution. bug 162729
- Per-folder settings - allows specifying tool-chain settings (i.e. option values, tool-chain/tools to be used, includes/macros settings) on the folder level bug 109080, bug 83809
Managed Build
- Complete the internal builder and make it the default, hopefully eliminating the need to write makefile generators - plan item.
- Implement parallel builds with the internal builder - plan item.
Debugger
CDI
How to make the CDI model flexible and extensible Proposals. See also bug 162080.
Launching and Usability
Improve the launch experience with contextual launch commands and a launch configuration wizard. See also bug 154280.
Breakpoint Actions
Add support for extensible breakpoint actions that fire when breakpoints are hit. See also bug 118308.
Memory Space Support in Memory View
Expose the notion of memory spaces in the Memory view for CDI backends that want it. bug 114528.
Add-ons
MinGW SDK Support
Take advantage of the new project templates, internal builder, and prebuild indexes to build a MinGW bundle to simplify installs on Windows. This will be distributed via EasyEclipse.org and will include MinGW itself which is GPL. As well, support for the SDL (Simple DirectMedia Library, libsdl.org) as a plug-in SDK will also be provided (LGPL). These will serve as exemplary implementations for many 4.0 features. bug 171095
GDB JTAG Debugging Support
In order to try and unify the embedded community around the official CDT, we will create a new Launch configuration to support using GDB with JTAG devices for embedded development. The launch configuration will allow the user to specify the remote address of the JTAG device (for target remote), as well as gdb commands to run to initialize the board for debugging and another set to start execution of the target. As well any fixes to the MI integration necessary to support this environment will be done as well. bug 179991
Windows SDK C/C++ Support (Deferred)
Support the tool chain that comes with the Windows SDK for C/C++ development. This includes the Visual C++ compiler (cl), linker (link), library builder (lib) plan item as well as the debugger engine (dbgeng.dll) available with the Debugging Tools for Windows. plan item. This functionality will be provided in an optional feature.
Deferred - This feature has been deferred to post 4.0. Plans on using dbgeng.dll have been dropped due to potential licencing issues and lack of documentation. Alternatives are being considered.
The original version of the 4.0 plan is here.
Documentation
User's Guide
The CDT user's guide hasn't been touched since CDT 3.0. It is out of date given then content in CDT 3.1. As well, it is probably in much need of a rewrite.
Programmer's Guide
As part of solidifying the APIs and extension points for the CDT, they will need to be documented. The Programmer's Guide needs to be updated to contain the javadoc and schema docs. As well, actual guide content should be provided to show how to use the APIs.