|
|
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
|