Developer Area Developer Area
www.be.com

Becoming A Be Developer

Becoming A Be Developer

Join Registered Developer Program

Registered Developer Area

Developer Library

Marketing Resources

Developer Events

Search Contact


The Times, They Are A Changin':
New Tools and Binary Format for Intel

Stephen Beaulieu
Developer Technical Support Manager
(hippo@be.com)

Release 4 of the BeOS will be the first step in a new direction for our company. We will be introducing several new features, increasing performance and improving stability of the core OS. That's right, Release 4 is more feature-rich, genuinely faster (not just more responsive) and more stable. This is a very good thing for developers and users, but it does not come without some cost. The cost in this case is breaking binary compatibility on BeOS for Intel. Please allow me to take some time and explain our decisions, and how they will affect you and your customers.

New Tools and Binary Format

The instruments of change in this new world are our developer tools. Up until now both the PowerPC and Intel releases of the BeOS have been powered by Metrowerks CodeWarrior. The success of these tools on the different platforms has been markedly different. The MW PowerPC compiler and linker are quite excellent, producing high quality code. Their Intel offerings are not as mature, both in comparison with PowerPC and their abundant competition in the Intel space. Accordingly, developers have been asking for other options.

Well, we have listened. For R4 for Intel we have switched to the EGCS GNU tool chain from Cygnus, a leader in that field. There are many benefits of this change: improved performance, free unlimited developer tools, and a broader tool chain. However, the switch has its greatest impact by introducing a new binary format for BeOS for Intel: ELF.

There are many people who could take time and dissect the differences between ELF and PE (our current Intel binary format), so I will leave that to them. There was a very simple reason for making the switch along with the tools: the Cygnus tool chain is based on ELF, including all of their test and validation suites. This means we can be much more certain about the performance and stability of our developer tools than if we went with EGCS and PE.

Breaking Binary Compatibility

So, what does this change really mean? Starting with the obvious, applications that run under BeOS R3 for Intel will not run under R4 without being recompiled. We will not have a compatibility layer or support for PE executables in R4. We looked long and hard at the issues, but in the end, decided that binary compatibility was simply too complicated and too time-consuming (now and in the future) to maintain.

The best course of action is to make a clean break now. Why? Simply that we can spend more time working on bug fixes and new features to make the BeOS better, rather than debugging and shipping additional R3 compatible shared libraries. That would be a Quality Assurance nightmare, for us and our developers. Breaking cleanly now, before the first consumer release of the BeOS and the corresponding increase in users, is just the right thing to do.

Performance Improvements

One reward of these changes is a marked improvement in run-time performance. Many primitive coding operations (like memcpy, strlen and strcpy) see impressive speed increases of 20% and greater when compared to Release 4 built with the Metrowerks tools. Other OS primitives like kernel ports and graphics primitives see a smaller 3 - 10 % increase on average. Of course, individual operations vary from these averages. The improvements compared with R3 are generally more significant, as they are derived from code improvements in addition to the compiler change.

More detailed information can be found at:
http://www.be.com/developers/switch/performance.html

Tools

The other major benefit to developers is our new developer tools strategy: free tools, better tools. As is required with the GNU Public License, our new tools will made freely available. A compete tool chain with an unlimited linker will ship with the BeOS, on both Intel and PowerPC (Cygnus EGCS on Intel and Metrowerks on PowerPC). The BeIDE will be updated to include support for the EGCS tools.

Full details can be found at:
http://www.be.com/developers/switch/tools.html

Code Changes

There are other side effects of the switch. The EGCS tools are much stricter about C and C++ code. We have identified several areas where code will need to be updated to compile in the new world. While these require relatively minor changes, they may be widely distributed throughout your code.

We have a list of the known changes that need to be made at: http://www.be.com/developers/switch/code.html

So, what about PowerPC?

We have not made any changes to the PowerPC tool chain. The Metrowerks tools have been effective on PowerPC, and we have seen no need to break binary compatibility where there would not be any benefit. We are very familiar with having different binary formats on our two platforms, so the switch from PE to ELF should have no impact on ppc.

Of course, this is a simple and incomplete run down of the change and its implications. The full story, including other Frequently Asked Questions can be found from: http://www.be.com/developers/switch/index.html

 

The BeOS News and Events Developers User Groups Support BeStore BeWare

Copyright ©1999 Be, Inc. Be, BeOS, and the Be and BeOS logos are registered trademarks, and BeBox, BeWare, GeekPort are trademarks of Be, Inc. All other trademarks mentioned are the property of their respective owners. Comments about this site? Please write us at webmaster@be.com. Icons used herein are the property of Be Inc. All rights reserved.