Kevin Phillips
phillips@cygnus.com
Cygnus Solutions
1325 Chesapeake Terrace
Sunnyvale, CA 94089
Abstract:
This session will cover both proprietary and Sourceware tools from Cygnus Solutions. Cygnus provides the majority of all gcc, and gdb development work for the Linux community as Sourceware. In addition to it's Sourceware projects, Cygnus has delivered proprietary tools to enhance the commercial software developers productivity.
Cygnus has long been the quiet enabler of familiar Sourceware technologies on Linux. Starting with the first Sourceware C++ compiler, g++, to the new Java compiler, gcj, Cygnus has a long history of making significant contributions to Sourceware development tools. We have partnered with Intel to provide Pentium II optimizations to the GNU compilers. We expect a continued strong partnership to ensure optimization work for future Intel chips.
Although the GNU tools provide a complete development environment themselves, many developers seek the productivity gains of an IDE. Cygnus has stepped in to fill this void in the Linux market. We have done so with an IDE that provides superior source browsing, debugging, and project building technology.
Cygnus Solutions is an innovating force behind the development of the Linux Platform. With the open source, standard GNU software development tools, Cygnus delivers key infrastructure that helps the Linux kernel run, open source developers contribute, and ISVs deliver applications to the Linux platform. With the introduction of Code Fusion, the highest performance IDE for Linux development, Code Fusion combines Cygnus' latest C, C++ and Java compiler release, optimized for Intelâ Pentium IIã processor family, with the most powerful and complete IDE. Code Fusion delivers on the promise of making powerful Linux development technology available to ISVs, VARs, and IS departments around the world.
In August 1991, when Linus Torvalds first wrote the Linux operating system, he used the GNU compiler and debugger because they were good quality and freely available. Since then, Cygnus has continued to invest in GNU compiler technology. Now, the GNU compiler, gcc, shipped with Code FusionÔ matches the Byte benchmark numbers of Intel's Proton compiler (although Proton only runs on Windows, and the assembly produced by Proton must be processed by a GNU assembler and linker on Linux). Cygnus is now expanding its product line with the Code Fusion IDE (graphical Integrated Development Environment) for Linux. GNU development tools are basically the only game in town on Linux, yet Cygnus offers customers a wide range of choice:
Application developers building software applications for Linux, such as Oracle or Corel, rely on Cygnus' development tools. Semiconductor vendors like Intel, and Alpha Processor, Inc retain Cygnus to optimize GNUPro or the Linux kernel for their platforms. Platform companies like Hewlett-Packard select Cygnus to provide their developers with cross platform tools that allow code to be reused across Linux, Unix and Windows environments. Cygnus is focussed on Linux development. However, with the cross-platform capabilities of Cygnus' GNUPro toolchain, Cygnus provides customers a solution for cross platform support. By choosing GNUPro, commercial companies with expertise in proprietary UNIX solutions can embrace Linux without giving up their own favorite proprietary UNIX servers on which to deploy. Typically this means delivery of a Linux-based x86 entry-level platform and a growth path to sophisticated, high performance, multi-processor platforms. With sophisticated software development tools and professional support provided by Cygnus, Linux is gaining software developers daily. In fact, for a growing number of programmers, Linux is becoming the software development platform of choice.
Cygnus has recently garnered much praise in the Linux press. Stories are breaking on a weekly basis about the rapid rise in Linux development. Recent Cygnus announcements include a partnership with Intel to optimize GNUPro and Code Fusion for the Pentium, Pentium II, Celeron, Xeon, Pentium III, and the IA 64 architecture. As part of this contract development, Cygnus delivered a Pentium II optimized version of gcc that out-performs Microsoft's Visual C++ and Intel's Proton compiler in Byte benchmarks. These performance benchmarks were difficult to run because the MS and Proton compiler does not run on Linux. The Byte benchmark had to be compiled to assembly language with the Proton and MS compilers on Windows. Next, the output was transferred to a Linux machine where it was processed by a GNU assembler and linker.
Application vendors are just beginning to enter the Linux market. But with the rapid adoption of Linux as a serious computing platform, momentum for Linux applications is building. Oracle has adopted Cygnus' GNUPro to port the Oracle 8i database to Linux. The Oracle 8i database on Linux was Oracle's most successful beta program ever. Cygnus GNUPro is recognized as the official toolkit for Oracle developers wishing to deploy applications on top of 8I for Linux.
Corel Corporation has contracted Cygnus to develop tools for porting Word Perfect Office from Windows to Linux. Corel is blazing a path that many application vendors will follow. They are using the WINE porting layer that provides Microsoft Windows APIs on Linux. Cygnus was selected to build a version of the GNU Compiler that could understand the vendor specific "features" of the Microsoft's Visual C++ compiler.
The objective of the IDE (Integrated Development Environment) is to provide an environment for program development that the programmer never has to leave. All the programming tools will be immediately accessible within this environment. The Code Fusion IDE includes an editor, C/C++/Java compilers, linker, build utility, debugger, source browsing, interface to version control systems, and other programming utilities that work seamlessly together. A single application provides all of the components required for the developer to edit, compile and debug an application. The IDE has been proven to enhance programmer productivity, and is expected by developers working on Windows, Macintosh, and other graphical platforms. But developers also can benefit from the scripting and powerful direct-input model of traditional command line tools. Cygnus Code Fusion addresses both of these market requirements by delivering a comprehensive, intuitive GUI with full access to the GNU command line tools. The Code Fusion IDE can even be modified via open APIs to allow other tools to be plugged in, or to select emacs, vi, or other popular code editors.
Code Fusion improves programmer productivity in three dimensions. First, Code Fusion provides the industry's most advanced source browsing functionality. Code Fusion's source browsing tool simplifies source code analysis and comprehension. Cross-references, class hierarchy views, symbol browsing and an include file browser combine to give the user a global picture of the project's source. Code Fusion puts the user in control of his source browsing session. Code Fusion has the ability to spawn and connect new source browsers, a feature that enables programmers to maintain global context while working at the implementation level. For example, when stepping through source in the editor, the cross-reference browser can monitor the global usage of symbols on each line of source. The linking of browsing windows with the editor gives the developer a quicker learning curve with unfamiliar source code. It's also a great aid to code reviews, and finding bugs in your own code.
Second, Code Fusion shortens the edit/compile/debug development cycles. All the major components in the Code Fusion IDE are connected to provide a seamless environment. The syntax highlighting editor can combine a source code view with the graphical code browsers described previously. Code Fusion has a Project and Build Manager that allows Code Fusion to generate target build information for its project database or a Makefile. Code Fusion can also build targets within its Project Database or build a project using an external Makefile. Using the project database improves the time it takes to do a build. Generating an external Makefile enables open-source projects, as we will discuss in a later section.
The graphical debugger allows native executables linked with C, C++, and compiled Java to be debugged at the source level with mixed language call stacks. When the cause of a bug is found, the matching line in the editor is just a button click away. Another time saving feature of the debugger is the ability to point at any variable in the debugger window and have its value displayed. Local Variable and Watch windows allow variables, pointers, and Data structures can be viewed and modified in this window. Pointers and Data structures can be expanded allowing linked lists to be followed. The Stack Window allows you to view the current call stack and select the desired stack frame to display in the main debugging window.
Finally, Code Fusion has open APIs to automate most tasks. There is a TCL interface to most components so they can be easily scripted. For the really brave hearted, even new source language parsers can be implemented to allow code browsing of other language projects. The IDE is developed on top of the command line GNU tools, so the command line tools can be used outside of the IDE if desired.
Code Fusion has been optimized for the Pentium family of processors, including Pentium, Pentium II, Celeron, and Xeon. The C/C++ and Java compilers all take advantage of the same machine specific optimizations of the compiler's backend. Cygnus has compared the code generation of the GNU compiler in Code Fusion to the current Egcs release, Intel's Proton compiler. Although these tools do not run on the Linux platform, a baseline comparison was established by taking the assembly output from those compilers and running it through the GNU assembler for a target board running CygMon. The performance was measured against the Byte benchmark suite . The results are listed below.
Note that a higher Index in the Byte benchmark corresponds to higher performance. From this example, the Code Fusion compiler produces an Integer Index that is .012% better than the Intel Proton 3.0 compiler. Code Fusion's Byte benchmark integer index is significantly faster than both MSVC++ and Egcs: 28% and 83% respectively. These benchmarks are provided to demonstrate the code generation capabilities of Code Fusion. As mentioned, only Egcs and Code Fusion compilers can run on Linux. Code Fusion's C compiler is compliant with the ANSI standard. The C++ compiler is tracking the ANSI/ISO standards and is complete except for the export template feature of ISO C++. The C++ libraries are also tracking the ISO C++ standard.
Code Fusion is the only Linux IDE that supports development in C/C++ and Java. Code Fusion compiles Java source code to optimized machine code or Java bytecode. Code Fusion can also compile Java bytecode to machine code. Typically, Java developers would compile Java source to bytecode. This bytecode would then be interpreted by a Java Virtual Machine (JVM) at Run-time. Using Code Fusion to compile Java sources to machine code eliminates the run-time requirement for a JVM bytecode interpreter, providing a more than 30x performance improvement, over interpreted Java. (In certain tests, Cygnus has attained greater than 70x performance improvement over interpreted Java.) The compiled Java solution is good for non-GUI applications today. It works great with the java.servlet modules of an Apache Web Server. The Java Libraries shipped with Code Fusion are include java.lang, java.util, java.io, java.text, and java.net. However, any third party 100% pure java bytecode library can be compiled to machine code using the Code Fusion Java compiler. This support of Java as a programming language, combined with the GNU compiler back-end, provides developers maximum choice in selecting a development language as well as determining how the application is to run-either as machine code or interpreted.
One of the advantages of IDEs has traditionally been the automatic generation of dependencies and easy creation of build rules. Editing Makefiles by hand is becoming obsolete as IDEs deliver easier to use build utilities in IDEs. However, some legacy projects have sophisticated scripts in their Makefiles. Code Fusion is able to run make on any Makefile and still process the compiler errors to match the source in the IDE. In addition, Code Fusion can generate a Makefile that includes all the proper rules created in the IDE for any project in its database. This feature provides a way for open-source developers to build projects outside the IDE, so Code Fusion projects are compatible with any open-source license. This means developers can take full advantage of Code Fusion's productivity benefits and the powerful open-source community model. One of the terms in open-source licenses requires that all the utilities required to build the source must be made freely available along with the source code. This is not a problem with Makefiles. If proprietary project files in an IDE are the only way to build a project, the IDE would have to be freely redistributable to be compatible with the open-source licensing terms. With Code Fusion, developers of commercial applications get an environment that meets their development needs and gives them the option to deliver proprietary or Open Source applications.
Cygnus is committed to the Open Source standardization of the GNU software development technology. Cygnus also is committed to delivering the industry's leading, most powerful commercial applications built on top of the GNU open source infrastructure. Although much of Cygnus' innovation is delivered back to the Open Source community, Cygnus performs the most rigorous test and release processes on the products we deliver as commercial solutions. Each version of a Cygnus GNU release that has passed our test and release process is stamped with a Certified Cygnus GNU mark. The Certified Cygnus GNU brand mark assures customers that they are running a version of the GNU tools that has the latest optimizations and has gone through a thorough commercialization process. Cygnus maintains a separate source code base, apart from the open source Egcs and GDB distributions, to ensure that the commercialized versions are available for regular release and test. Cygnus engineers continue to cross-deliver innovations and regress functionality. But the way to ensure a quality experience, multi-platform support, and the latest Cygnus developed innovation, is to look for the Certified Cygnus mark on any GNU tools distribution. Cygnus delivers all the latest optimizations and a commercialized version the GNU tools with Code Fusion. These Certified Cygnus GNU tools are the foundation of any Linux developers arsenal.
For more information, visit www.cygnus.com/codefusion
For the latest in Cygnus' open source technology for Linux, Unix, and embedded systems development, visit sourceware.cygnus.com
Cygnus Innovating Linux
Code Fusion IDE Completes Linux Development Story
Code Fusion builds the fastest executables
Support for Open Source Projects
Certified Cygnus GNU: standard for Linux Development