CDT/planning/4.0Plan

From Eclipsepedia

< CDT‎ | planning
Revision as of 10:00, 29 March 2007 by Dschaefer.qnx.com (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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:

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

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.