Application Level API Incompatibilities with BeOS

Article contributed by bonefish on Sat, 2007-01-06 22:11

Haiku R1 (x86) was designed and is being implemented to be binary and source compatible with applications written for BeOS R5 (x86) to a large extent, but not the other way around. In some cases we deliberately broke source compatibility while at the same time maintaining binary compatibility. Here are some specific examples:

  • The "be" header path is gone - it's called "os" in Haiku; since it is always part of the default header search path anyway, you can always just remove it to let your software compile on both platforms, ie. replace:
    #include <be/interface/View.h>
    with:
    #include <interface/View.h>
    or rather use the preferred method of omitting the first part and use:
    #include <View.h>
  • BeOS contains a deprecated add-ons/TrackerAddons.h header, and a header called add-ons/TrackerAddOns.h - Haiku only contains the latter.
  • Likewise, you'll find support/byteorder.h and support/ByteOrder.h in BeOS; Haiku only has ByteOrder.h.
  • If you have subclassed BString and if you are using its _privateData member, you might notice that it has been renamed to fPrivateData. However, it's use is deprecated, and it might even be made private in the future.
  • The undocumented functions defined in <storage/Alias.h> are not implemented.
  • The private Device Map API (used by OpenTracker) has been replaced by a different API (Disk Device API).
  • The application debugging interface (<kernel/debugger.h>) is conceptually similar, but nevertheless source and binary incompatible.
  • The file system API has changed; file systems that worked on BeOS will no longer work on Haiku.

In several places we also dropped compatibility support for older BeOS versions (PR2, R3, R4), which BeOS R5 still featured.

Comments

please escape text.

please epcape < to &lt; and so on.
no one view header path.

Already escaped

Hi Sena-san, :-)

sena wrote:

please epcape < to &lt; and so on.

The text is already escaped, and it displays properly here (Firefox and IE).
What problem are you exactly having? :-)

View HTML source

for example,

HTML source

Quote:

The undocumented functions defined in <storage/Alias.h> are not implemented.

in firefox

Quote:

The undocumented functions defined in are not implemented.

Nice catch!

Nice catch Sena-san. It is fixed now. Thank you!

Thank you

thank you for fixing, koki-san.

byteorder.h

Quote:

Likewise, you'll find support/byteorder.h and support/ByteOrder.h in BeOS; Haiku only has ByteOrder.h

Actually I think some POSIX apps want to include byteorder.h. I remember at least one of them that failed. I'm not sure it's anywhere standard though.
--------
kdebug>