Today, web- and cloud-based tools and IDEs to support C/C++ and embedded development are increasingly popular. To address this strong trend, the Eclipse Foundation continuously augments its rapidly growing ecosystem for cloud-based developer tools with technologies that are focused on C/C++.
The Eclipse C/C++ Development Tooling (CDT) community has a particularly strong track record of supporting C/C++ tools. In recent years, numerous technologies and initiatives for developing C/C++ applications for web and cloud environments have emerged. However, these initiatives have been spread among several projects, including Eclipse CDT and Eclipse Theia, so they are sometimes difficult for newcomers to discover.
To address this fragmentation, two new initiatives have been created at the Eclipse Foundation:
- Eclipse CDT.cloud: A new project that provides a home for several C/C++ tool technologies for web- and cloud-based tools.
- CDT.cloud Blueprint: A template tool that provides a starting point to build custom tools for C/C++ development.
Before we get into the details of these two initiatives, it’s worth noting they are primarily driven by the embedded special interest group (SIG) within the Eclipse Cloud DevTools Working Group. The SIG is an open collaboration of embedded solution vendors that aims to strengthen the ecosystem for building web- and cloud-based tools. Current SIG members include Arm, EclipseSource, Ericsson, Renesas, and STMicroelectronics.
Eclipse CDT.cloud Is Now an Official Project
The Eclipse CDT.cloud project will be the home of components and technologies that support the development of web- and cloud-based C/C++ tools at the Eclipse Foundation. The initial project elements include:
- CDT.cloud Blueprint, which we will describe later in the article
- The new web-enabled version of Eclipse Trace Compass, which is called TraceCompass.cloud
- Eclipse CDT GDB Debug Adapter
Looking at the list of interested parties and initial committers in the project proposal, it’s easy to see that CDT.cloud combines and aligns the efforts of multiple key Eclipse Foundation contributors. Based on the initiatives underway, we expect more components to be added to CDT.cloud in the near future. For example, we expect a concept for context switching in clangd, a memory debugging view, and an approach for multi-context debugging to be added.
Embedded Tools Lead the Way to Web and Cloud Applications
Even before the idea for CDT.cloud arose, many companies were successfully adopting Eclipse Theia and other Eclipse Foundation technologies to build modern C/C++ tools.
Many tool vendors, especially those from the embedded domain, are migrating their tool chains to the web and cloud. In fact, looking at the tool and IDE projects currently supported at EclipseSource, the embedded domain is leading the way in tool evolution. Here are just a few examples of web-based C/C++ tools that are built with Eclipse Foundation technologies (Figure 1):
- Arduino IDE 2.0 is the latest version of the popular IDE for Arduino boards.
- Arm has published two web-based tools: Mbed Studio, a desktop application that runs on web technologies, and Keil Studio Cloud, an online IDE.
- Logi.cals has developed a cloud-based tool for automation engineering, as announced at EclipseCon Europe 2019.
Figure 1: Web-Based C/C++ Development Tools Built With Eclipse Foundation Technologies
In addition to these publicly available tools, there are many others that are used within companies. For example, Ericsson is an active member of the Theia and CDT.cloud ecosystems, even though the company does not offer development tools to the public. We expect quite a few more tools in this area to be released in the coming months and years.
Looking ahead, we predict there will be some consolidation in technology choices for the important building blocks these tools typically use. The building blocks come from the Eclipse Foundation ecosystem as well as other sources.
For example, Eclipse Theia has proven to be a flexible and powerful platform that addresses the needs of customized tools in the embedded domain. In addition:
- clangd has become the de facto standard language server for C/C++
- Eclipse CDT provides a debug adapter for GDB debugging
- Eclipse GLSP is a common solution for providing diagram editors inside such tools
This set of commonly used technologies is a very good combination for building C/C++ tools. However, the way the technologies fit together had not been documented anywhere. Every new project had to start from scratch when evaluating and integrating similar technology choices. To eliminate this challenge, we launched another initiative — CDT.cloud Blueprint.
CDT.cloud Blueprint Is a Starting Point for C/C++ Tool Development
CDT.cloud Blueprint provides a template for building C/C++ development tools. It’s based on Eclipse Theia Blueprint, and integrates a full set of typical features for C/C++ tools including:
- Language support based on clangd
- Compilation based on CMake
- Debugging based on the Debug Adapter Protocol (DAP) and the Eclipse CDT GDB Debug Adapter
- Memory debugging based on the Memory Inspector debugger
- Tracing based on TraceCompass.cloud
Of course, some custom tool projects will require technologies that are not included in the Blueprint. Even more commonly, developers might want to extend and adapt the template for their tool-specific requirements. CDT.cloud Blueprint provides a good starting point to do exactly that.
CDT.cloud Blueprint is entirely open source, so you can see exactly how it is built. You can also download an installable version to evaluate its features. Note that CDT.cloud Blueprint — like Theia Blueprint — isn’t a fully polished product for end users. It’s a great way to try all of the included technologies, but it hasn’t yet been hardened by the huge user base that Eclipse CDT has benefitted from.
To learn more about CDT.cloud Blueprint, check out our recent EclipseCon talk on the topic.
Get Involved in CDT.cloud Initiatives
If you’re interested in building C/C++ development tools using the web, CDT.cloud, or CDT.cloud Blueprint, please contact us. There are numerous exciting opportunities within our vibrant ecosystem, and we welcome new insight into the best ways to use innovative technologies to migrate full toolchains to the cloud.