Release Notes

These notes describe changes that have been made to the Be Operating System (BeOS) for Developer Release 8. Major additions and improvements are listed first, followed by a kit- by-kit list of changes to the API (application programming interface).

The API and the software kits are also documented in a new edition of The Be Book. The new Be User's Guide contains information about using the BeBox(TM) and developing applications for it.

For more information about Developer Release 8, check the Be Web site, http://www.be.com. We'll put updated information in the developer area on the site.


Principal Changes

This release of the Be Operating System sees two new kits and a handful of architectural changes.


The 3D Kit

The eagerly awaited 3D Kit is here. You get headers files, source code examples, a demo application, white papers on our Web site. What you don't get, for now, is entertaining technical documentation. But keep listening; we'll publish the documentation on the Web site (by updating the site's version of The Be Book) as soon as we can, possibly before you receive these Release Notes.

For pointers to the source code examples and the existing Web site white paper, see "The 3D Kit" chapter of The Be Book.


The Game Kit

This release introduces the Game Kit, a collection of software designed especially for game applications. The collection is on the small side right now, in that it consists of just one class, BWindowScreen, but it will grow in future releases. A BWindowScreen object bypasses the Application Server to provide direct access to the screen--that is, direct access to the graphics card driver for the screen. It lets an application take over the entire screen within a workspace, set up a game-specific graphics environment, call driver- implemented drawing functions, configure the frame buffer and color palette, and scroll the display area that's shown on-screen within the larger area defined by the frame buffer.

A BWindowScreen object is now the only way you can get direct access to the screen. The Interface Kit's lock_screen() and unlock_screen() functions have been removed and get_screen_info() no longer provides a pointer to the frame buffer. You can get the pointer through the more protected and workspace-friendly BWindowScreen class.


Libraries

The libpos.so library has been incorporated into libbe.so . An important corollary to this change is that every application (or program) should now create a BApplication object as (practically) its first act.


Printing

Printing arrives with this release in the form of the Print Server and the new BPrintJob class in the Interface Kit. See "The Interface Kit" chapter in The Be Book for details. (An API for printer drivers will be added in the next release.)


Run-Time Information

The run-time class information system, which relied on the BClassInfo class, has been replaced by a real run-time type information system that's integrated into the C++ language. The old macros still work as does the inherited keyword.


Messaging

A handful of changes have been made to the messaging mechanism defined in the Application and Interface Kits:


Keyboard Navigation

This release introduces a new system of keyboard navigation. Users can press the Tab key to move the focus of keyboard actions from view to view, and can operate the view currently in focus by pressing other keys (typically the space bar and arrow keys).

The Interface Kit takes care of the mechanics of between-view navigation. The classes you derive from BView must implement the hook functions that respond to keyboard actions (KeyDown() ) and changes to the focus view (MakeFocus()). See "Keyboard Navigation" in The Be Book overview to the BView class for details.

Keyboard navigation introduces a new BView flag, B_NAVIGABLE . When set, it's possible for the user to navigate to the view; when not set (for example, when the view is disabled), navigation will bypass the view.

The Interface Kit makes the BListView class, the new BMenuField class, and all classes derived from BControl navigable. The BTextControl class relinquishes its private navigation system so that it can participate in the more general mechanism.


Graphics Parameters

You can now set a BView's graphics parameters at any time--for example, when constructing the object. Previously, you had to wait until the object was attached to a window. It's still the case that the parameters become alive only when the BView is placed in a window. That's when the Application Server becomes aware of the view and establishes its graphics environment. Now, however, a BView caches the value that's set before it belongs to a window and delivers it to the Server when it becomes attached.


API Changes to the Software Kits

This section lists the API changes, small and large, that have been made to previously released software kits.


The Application Kit

Most of the changes to the Application Kit affect the system of sending and receiving messages, which was discussed above. In addition:


The Storage Kit

Not much new in the Storage Kit--as we all should know by now, the file system part of the Kit (at least) is headed for fairly extensive surgery come DR9. So it's resting until then.

The one API addition to the Kit is in the BFile class. The class now boasts a copy_status_hook() function protocol. This protocol is intended to typify a "copy status" function that you can (optionally) pass as an argument to the CopyTo() function. Thus primed, the CopyTo() function calls back to your "copy status" function as it is copying your file. Through these call backs you can implement (for example) a GUI copy status "fuel gauge." See the BFile class for details.

The 2 Gigabyte volume limit bug has been fixed. There is no (practical) limit on the disk capacity as supported by the file system.


Interface Kit

The Interface Kit has three new classes: BPrintJob, BColorControl, and BMenuField. A BPrintJob object manages an application's interaction with the Print Server. The application creates the object when the user asks to print something and deletes it when the print job is finished. A BColorControl object lets the user pick a color, and a BMenuField controls a labeled pop-up menu. All three classes are documented in the "The Interface Kit" chapter of The Be Book.

Here are the other changes to the Kit API:


The Media Kit and the Midi Kit

The Media and Midi Kits didn't change much in DR8; look for changes in DR9, when the BStream and BStreamController API will be overhauled and (finally) presented in a usable form. However, both Kits (and the servers and drivers that support them) have had some internal tinkering to enhance stability. In particular, the Audio Server is much less fragile in DR8.

The one change that deserves mention is a change in attitude as opposed to API or implementation: The clique mechanism in the Media Kit's BSubscriber class should be, in essence, ignored. Always use the B_SHARED_SUBSCRIBER_ID constant as the clique value when you subscribe to a media stream. The clique was intended to let a subscriber control access to the stream; it's not a bad idea, it's just in the wrong place. Look for the clique mechanism (or similar machinery) to resurface in (possibly) the BStream class in DR9.


The Kernel Kit

In addition to the API changes, listed below, you should be aware that the libpos.so library has been subsumed by libbe.so, as mentioned above. A consequence of this incorporation is that every application must now create a BApplication object.


The Device Kit

The Device Kit now has a BJoystick class corresponding to the joystick ports and three classes--BA2D (analog to digital), BD2A (digital to analog), and BDigitalPort--corresponding to the GeekPort(TM) . The Be Book has full documentation. In addition, these changes have been made to the BSerialPort class:

Only a couple of changes have been made to the API for kernel-loadable drivers:

The API for graphics card drivers has undergone more extensive changes:


The Network Kit

Due to popular demand, we broke down and actually documented the Network Kit. This is, in itself, a notable change. But, in addition and at no extra cost, you'll find a whole new topic in the Kit: Mail. The <net/E-mail.h> header file contains mail daemon functions, and a mail message class called BMailMessage.

In the socket world, the Be implementations of the socket.h and the netdb.h functions continue on the road to BSD completeness.


The Support Kit

Get rid of your B_DECLARE_CLASS_INFO() and B_DEFINE_CLASS_INFO() macro calls. The old class information system has been replaced by an actual real-time info mechanism. Note that the function-like macros (is_kind_of(), is_instance_of(), class_name(), and cast_as()) are still valid.

BLocker's CheckLock() function has been renamed to IsLocked().






The Be Book, HTML Edition, for Developer Release 8 of the Be OS.

Copyright © 1996 Be, Inc. All rights reserved.

Be, the Be logo, BeBox, BeOS, BeWare, and GeekPort are trademarks of Be, Inc.

Last modified September 12, 1996.