Is your C++ development team missing out? Developer Toolset: newer tools on and for multiple RHEL releases
Wouldn’t it be nice if your software development team could use one common set of development tools based on the latest, stable upstream versions for your Red Hat Enterprise Linux development? Think of all the extra years of open source innovation – the features, optimizations and new standards support it would allow your team to build into your products. That would be great, wouldn’t it?
Fortunately, this is already available to you today, and in this blog post I’ll explain how it works and how you can get it. Red Hat Developer Toolset provides a set of additional tools installed in parallel with those delivered as part of Red Hat Enterprise Linux itself. Currently featuring the GCC C/C++ compiler and GDB debugger and backed up by Red Hat’s solid customer support, Red Hat Developer Toolset 1.0 is a great way to unlock performance in your team and your software very easily.
And if you’re already a Red Hat Developer Program subscriber, you can install the tools right now. The Red Hat Developer Toolset version 1.1 Beta, released in October 2012,
showcased a good number of additional performance analysis tools. We’re just getting started with this new offering and have plans to include other tools in the future.
GCC and RHEL
But let’s pause a moment and zip back in time to June 2012. Last year, the GCC toolchain celebrated its 25th anniversary. A number of us from Red Hat, myself included, were there at the GNU Tools Cauldron celebration in Prague, Czech Republic where Red Hat co-sponsored a VT-100 cake, which was cut to mark the occasion. Red Hat’s tools team employs a large number of the developers who work on GCC full-time and, both as Red Hat and Cygnus before that, we’ve had a leading role in the story of GCC. So we were delighted to be there with the whole community celebrating the success of free and open source software in general, and GCC in particular.
25 years is an eon in software terms, so it’s impressive that GCC continues to be so well respected in terms of stability, performance and target support. Of course, it’s also an illustration of the power of the open source model. It’s the compiler we rely on to build Red Hat Enterprise Linux and is the tool we pass on to our customers, partners and independent software vendors to build their own software on top of Red Hat Enterprise Linux.
When we release a new major version of Red Hat Enterprise Linux, we typically include the latest stable compiler, assembler, linker, debugger and a number of supporting tools. While those tools are new and shiny for a while, the main commitment we make to our customers is to back that up with our world-class support. So for a full ten years, if you see a showstopper bug in that compiler, we’ll be there to help get you back up and running. We’ll pass along regular minor updates and in the rare event of a security vulnerability, we have an asynchronous update channel we can use to pass along updates before the next minor release.
But, I hear you ask, ten years is a long time to go without updating the major version of the compiler, isn’t it? We agree. And, while new major versions of Red Hat Enterprise Linux may come along during that time, your development on, say, Red Hat Enterprise Linux 6, will remain at the earlier compiler version when Red Hat Enterprise Linux 7 is released. Only Red Hat Enterprise Linux 7 will offer you all the benefits of the newer tools.
Red Hat Developer Toolset
The solution we landed on was to provide an additional set of development tools that can run on, and build applications for, multiple versions of Red Hat Enterprise Linux. Released at Red Hat Summit in June 2012, Red Hat Developer Toolset v1.0 was the first Red Hat software based around the idea of Software Collections. These install into /opt and are only activated by simple, but deliberate invocation, so there’s no danger of you accidentally using the Red Hat Developer Toolset tools. The components in Red Hat Developer Toolset are the same sources as available upstream in the community GCC and GDB projects, with just slightly different packaging to support execution on multiple versions of Red Hat Enterprise Linux.
And because there’s one set of tools on both Red Hat Enterprise Linux 5 and 6, and applications built with Red Hat Developer Toolset can be run on supported minor versions of both Red Hat Enterprise Linux 5 and 6, your development workflow and the number of different branches of your application you need to maintain can be reduced significantly. You’ll still need to test and qualify your application on each Red Hat Enterprise Linux version you want to support, but the task is greatly simplified.
The Future of Developer Toolset
We plan to release major updates to Red Hat Developer Toolset once per year. The upstream GCC community project generally releases a major new version annually in the spring. We expect to prove that compiler by putting it into the next Fedora release as the compiler for all packages and, once we’re satisfied it’s a stable, production-quality tool, we anticipate releasing it in a future major version of Red Hat Developer Toolset.
In terms of updates, we expect there to be a minor release of Red Hat Developer Toolset around 6 months after each major release, where bugfixes and new components may be added, and we can push out bugfixes whenever they’re required. As with Red Hat Enterprise Linux, we’ll support the most recent minor release of Red Hat Developer Toolset with all errata applied and when a new major version of Red Hat Developer Toolset is released, we’ll continue to provide support, including critical security and bugfixes on the previous major version of Red Hat Developer Toolset until two years after that previous major version’s release. So effectively each major version of Red Hat Developer Toolset is supported for two years.
Under the Hood
Providing an extra toolchain may at first consideration seem like a relatively simple task. You build the toolchain, make an installer that places it in a different directory to the main compiler and pass that along to customers, right? True, but not the whole story.
Security is of paramount importance to Red Hat, as we know it is to our customers and developers. We needed to find a way to provide great new features in the newer tools without resorting to statically building in lots of code that could then not be updated automatically via Red Hat Enterprise Linux updates. In a nutshell, we wanted to continue to dynamically link applications with the entirety of the C library (glibc) and as much of the C++ standard library as we could re-use. This was a significant engineering challenge, and we considered a number of potential answers before concluding that we would statically link just those newer features we needed, and everything else would continue to be linked dynamically from Red Hat Enterprise Linux itself. This avoids the need for special libraries to be carried around with the built applications.
As a result, you can build with Red Hat Developer Toolset on, say, Red Hat Enterprise Linux 5.6 using the current GCC version (gcc-4.7) and deploy that application to any later, supported minor release, plus any supported minor release of the next major version. So in our example, that means (at the time of writing) Red Hat Enterprise Linux versions 5.6, 5.9, 6.1, 6.2, 6.3 and, when it’s released, 6.4. That cuts your development and QA costs straight away. Spot a bug in the tools that causes this not to work, and we’ll investigate it as a bug in the same way as any other Red Hat Enterprise Linux bug, so you can have confidence in this mechanism.
Command line tools are great, but increasingly we’re seeing C++ developers use the powerful Eclipse Integrated Development Environment – not just as an editor and builder, but also as a single interface to a large number of other
s tools in a workflow. Version control system integration with subversion and git, bugtracking database integration, project management and team code reviews build on top of great features like automated class refactoring and excellent code completion to make the overall development process more efficient. The good news is that you can use Red Hat Developer Toolset for C/C++ development on Red Hat Enterprise Linux 6 x86 and x86_64 out of the box. I’ll explain the nuts and bolts of how to do this in a forthcoming blog post.
Obtaining Red Hat Developer Toolset
So, how do you get Red Hat Developer Toolset? C and C++ Red Hat Enterprise Linux developers can access Red Hat Developer Toolset v1.0 today to get the latest compiler (gcc-4.7) and corresponding debugger (gdb-7.4) for both Red Hat Enterprise Linux 5 and 6. Existing Red Hat Enterprise Linux subscribers can procure Red Hat Developer Workstation as an alternative to Red Hat Enterprise Linux Workstation. Contact your sales rep to purchase or convert an existing subscription. If you’re not yet a Red Hat Enterprise Linux subscriber, you can procure Red Hat Developer Workstation, Red Hat Developer Subscriptions, Red Hat Developer Suite or Red Hat Enterprise Linux NFR, which will then allow you to subscribe to Red Hat Developer Toolset channels, from which Red Hat Developer Toolset can be installed. See the Red Hat Developer Toolset documentation for further information.
In future posts to this blog, I’ll talk more about how Software Collections work, what you’ll see in Red Hat Developer Toolset v1.1 and v2.0, practical hands-on tutorials on installing and using Developer Toolset as well as some more in-depth coverage of features of the tools themselves. I’d be interested to hear from you if you have any feedback for the team on Developer Toolset.