R3 Developers Release Notes
R3 Developers Release Notes
About this Document
This document lists major (or at least interesting) changes in the following areas:
- Warnings and Bugs
- Installing and the MBR
- Building an Application
- Documentation
- Tracker and Deskbar
- File Panels
- MIME and FileTypes
- Graphics and the App Server
- Scripting
- Printing
- The App Kit and Messaging
- The Storage Kit
- The Interface Kit (Except for BWindows)
- BWindow
- The Game Kit
- The Midi Kit (and MIDI apps)
- The Device Kit
- The Translation Kit
- The Support Kit
- Tools and Apps
- Kernel and Drivers
- Miscellaneous
Warnings and Bugs
![]() |
HFS+ (Mac OS Extended format) disks aren't supported by BeOS R3 (you can't mount them).
No harm will come to any HFS+ disks connected to your computer.
| |
![]() |
When a Maxtor IDE drive, model 85250D6, is connected as a slave with either an IBM Model DCAA 34330 or an IBM Model DAQA 33240 as the master, the Maxtor drive may not be recognized. If you run into this bug, launch DriveSetup and rescan the IDE bus; this usually works. | |
![]() |
The third button on a serial mouse doesn't work. This has been true for a long time. |
Building an Application
- STL is now available (in the library libmslcpp_2_2.a).
- For more information on building an app, see "Moving from PR2 to R3: Development Layout".
Documentation
The BeBook on this CD is the most recent on-line version; it's identical to the version on the Be Web site (as of the April 1, 1998 Web site BeBook update). Note that the BeBook on this CD is newer and more complete than the BeBook on the Intel R3 CD.
Tracker and Deskbar
Open With. Tracker windows now let you choose which application you want to use when opening a selected file. The "File" menu includes an "Open With" item, as does the context sensitive menu that you get when you mouse-and-hold on a file. The list of candidate applications is based on the file's type: All applications that recognize the type are listed in the "Open With" choices.
The Open With... panel sorts the candidate apps according to their "relation" to the file you're trying to open. There are four relationships:
- The app is the declared "Preferred App" for that file.
- The app can handle the file's full type (e.g. "text/plain")
- The app can handle the file's supertype ("text/...")
- The app can handle any file type (".../...")
You can see this phenomenon by opening an Open With... panel, or by popping open the context menu for a file.
Workspace-specific windows. The Tracker now remembers the correspondence between windows and workspaces such that when you reboot your machine, your restored windows are placed in the correct workspaces.
Opening an open folder. When you open a folder (window) that's already open in some other workspace, the folder window is brought to the workspace that you're in (and removed from its present workspace). Previously, opening an open folder would switch you to the workspace of the open window.
More "Find..." options. The "More Options" checkbox in the Find panel lets you name your query (the name appears as the title of the query result window), and lets you optionally search through the Trash. Also, you can start a query "by Name", or "by Attribute" and then switch to "by Formula" without losing information.
Busy Tracker window feedback. Busy Tracker windows now display an animated "sideways barber pole" in the lower left corner. If the barber pole is spinning, the Tracker window is thinking.
Smarter current selection. The Tracker's notion of the current selection has improved. For example, if you send the current selection to the Trash, the next entry in the window is selected. This is particularly convenient when you're reading (and trashing) your mail.
Option key parent dismissal. In PR2, you could dismiss a parent folder window by option-clicking a subfolder. Now, the option dismissal trick has been extended to keyboard navigation (option+command+down-arrow, for example), and can be used to dismiss a child (option+command+up-arrow). You can even launch an app and dismiss a Tracker window at the same time (option+double-click the app).
Clipped text on the desktop. You can now drag a text selection from a document and drop it on the desktop; a file is automatically created to contain the "clipped" text. If you then drag the clipped text file and drop it on an open document, the text is automatically pasted at the insertion point.
Smart app launching. Dragging a file icon over an app icon (as if to drop) asks the app if it can handle the file's type. If it can't, the app isn't highlighted and so won't be launched if the icon is dropped.
Tracker Scripting. Tracker now supports a scripting suite that lets applications have tighter integration with Tracker windows. See the documentation in the "Playing with Tracker" chapter of the BeBook.
More files. We increased the size of the node monitor database, and increased the maximum number of file descriptors available to the Tracker by four times; this allows copying of deeply-nested folders and more copy tasks at a time.
Deskbar. Cosmetic improvements:
- The clock is now right-justified.
- Replicants in the Deskbar are now centered vertically.
File Panels
Double-clicking on a file in a save file panel now adds the directory and name to the message (this applies to all FilePanels).
Alt-Esc now sets the keyboard navigation focus to the menu bar in file panels, and Esc closes the file panel.
Tabbing through file panels now proceeds forward instead of backward.
Scripting
In addition to the Tracker scripting, described elsewhere, R3 includes new scripting for...
- BControl. The "Enabled" property is now a standard for BControl objects. You can use the property to get or set the control's enabled state.
- BWindow. New "MenuBar" property for BWindows passes the command to the window's key menu bar.
- BMenus and BMenuItems. The "Menu" and "MenuItem" properties allow submenu and menu item creation/deletion, and the "Enabled", "Label", and "Mark" properties allow the named states to be set and retrieved.
The BPropertyInfo class has also been added. This class makes it easier to create and maintain lists of the commands supported by a property, and can be used by an application to describe its scripting interface to people that call GetSupportedSuites() as well as to aid in responding to a ResolveSpecifier() request.
MIME and FileTypes
MIME strings are now case-insensitive.
The FileTypes preferences app allows icon editing. Double click in the icon well in the upper right corner of the FileTypes window to get to the icon editor.
The FileTypes app alphabetically sorts the contents at each level of the file type list (the outline list view at the top of the window).
FileTypes now only shows the "desirable" types in its top list view. In particular, it filters out file types that were generated to simulate Mac types, and ignores application signatures. If you want to see all file types in the database, toggle the Settings/Show internal types menu item.
Folders can have preferred apps (Tracker, by default).
Several MIME types used in previous versions of BeOS were invalid; these have been corrected.
Graphics and the App Server
The app server saw a number of bug fixes and added conveniences; for example, if you double-click the app icon of a running app, the app's existing windows are brought to the front.
Endianism part I. In the graphics science world, there is an endian situation you should be aware of when handling offscreen bitmaps. With this release, the official offscreen 32-bit bitmap byte sex is little endian. To wit:
- Byte 0 : Blue
- Byte 1 : Green
- Byte 2 : Red
- Byte 3 : Alpha
Little endian bitmaps have always been the norm, so this isn't news. However, the way you might be accessing your bitmap data may be nonportable Do you use a uint32 pointer to look at your buffer? If your code looks something like the following, then it's going to break in the little-endian world:
int32 i;
uint32 color;
uint32 *buffer;
color = 'BGRA';
buffer = (uint32*)my_bitmap->Bits();
for (i=0; i<10000; i++)
*buffer++ = color;
Rewrite your code as shown below; it will work on any platform:
union {
uint8 bytes[4];
uint32 word;
} color;
color.bytes[0] = 'B';
color.bytes[1] = 'G';
color.bytes[2] = 'R';
color.bytes[3] = 'A';
buffer = (uint32*)my_bitmap->Bits();
for (i=0; i<10000; i++)
*buffer++ = color.word;
More color spaces. New color_space enum values (interface/GraphicsDefs.h). Color space names are in a more concise format, and the list of color spaces has been expanded. An excerpt:
B_RGB32 /* was B_RGB_32_BIT */ B_RGB32_BIG /* was B_BIG_RGB_32_BIT */ B_GRAY8 /* was B_GRAYSCALE_8_BIT */ B_YUV422 /* new */
The old constants are still supported, but their use is discouraged.
Miscellaneous. A handful of improvements and refinements:
- The app server now supports 15- and 16-bit color.
- 1152x900 is now a supported screen resolution.
- Support for more than 4 MB of VRAM is now provided.
- The color map has been revised so that inverting colors is much more reasonable now. Also, alpha is now 255 by default.
- The cursor tracking for changing from one cursor to another when passing from one view to another has been improved.
- Calls to draw round rectangles, ellipses, and arcs are ignored when the're too big. This prevents a crash or an unacceptably long block.
The App Kit and Messaging
Endianism part II. Flattened BMessages are now endian-savvy for all data types defined in support/TypeConstants.h except for the following:
- B_RAW_TYPE
- B_OBJECT_TYPE
- B_ANY_TYPE
BMessage doesn't know how to swap these three types, nor any custom types that you define. But for everything else, simply flatten a BMessage, send it to a byte-reversed machine, unflatten, and you're back in business.
New old BMessage function. There's a new version of BMessage::GetInfo() that provides "fixed size" info:
status_t GetInfo(const char *name,
type_code *type,
bool *is_fixed_size) const;
The is_fixed_size value is that which was recorded by the AddData() call that added the data to the message.
The Storage Kit
New and improved BMimeType functions:
bool BMimeType::Contains(const BMimeType *other) const
- New Contains() compares itself to an argument MIME string and returns true if A) the MIME type of 'this' exactly matches 'other' or B) 'this' is a supertype, and it's the supertype of 'other'. Otherwise, it returns false.
static status_t BMimeType::GetWildcardApps(BMessage *signatures)
- New static GetWildcardApps() function finds the applications that support all file types, and returns their signatures in the argument's "applications" field:
- Improved GetSupportingApps() now returns more information, allowing the caller to determine which apps support a specific MIME type, and which apps claim to support all subtypes of a given supertype.
New and improved BAppFileInfo functions:
bool BAppFileInfo::Supports(BMimeType *mt) const
- New Supports() function returns true if the app knows how to handle the given type, as set through SetSupportedTypes().
void BAppFileInfo::SetInfoLocation(info_location loc);
enum info_location {
B_USE_ATTRIBUTES = 0x1,
B_USE_RESOURCES = 0x2,
B_USE_BOTH_LOCATIONS = 0x3
};
- You can now control whether a BAppFileInfo object will read and write its info as attributes or resources. You set the "info location" by passing an info_location constant to the new SetInfoLocation() function:
The Node Monitor now sends a message ('opcode' == B_ATTR_CHANGED) when an attribute is removed from a monitored file.
BNode has a new Sync() function that immediately performs any pending disk transactions for the file.
The Support Kit
Archiving. All implementations of BArchivable's Archive() protocol function must now return a (BArchivable *) instead of a pointer to an instance of the class that's being archived.
Endianism part III. The new ByteOrder.h header file contains native sex-cognizant byte-swapping functions. The central function is:
status_t swap_data(type_code type,
void *data,
size_t length,
swap_action action);
Pass in a type (B_INT32_TYPE, B_STRING_TYPE, etc), a buffer and length, and a "swap action," and the function swaps data in-place. The swap actions are
typedef enum {
B_SWAP_HOST_TO_LENDIAN,
B_SWAP_HOST_TO_BENDIAN,
B_SWAP_LENDIAN_TO_HOST,
B_SWAP_BENDIAN_TO_HOST,
B_SWAP_ALWAYS
} swap_action;
For single-element swapping, use the type-specific macros such as...
B_HOST_TO_LENDIAN_INT32(arg)
There's also a new is_type_swapped() function:
static status_t is_type_swapped(type_code type);
This function returns true if the specified type can be swapped by swap_data(); otherwise it returns false.
The ByteOrder.h functions and macros replace the old read_16_swap()-style functions defined in SupportDefs.h.. The old functions are still supported on the PowerPC BeOS, but you shouldn't use them in new code.
New BMemoryIO function. The BMemoryIO class has a new SetSize() function that lets you set the allocated memory to a size that's no greater than the original allocation.
The Midi Kit (and MIDI apps)
The BMidiPort class recognizes F5 ("Output Cable Protocol") messages; the message is represented by the new B_CABLE_MESSAGE constant (MidiDefs.h). This message lets you talk to a MIDI cable multiplexer.
simple-midi has been renamed SimpleMidi.
Midi is now marked as single-launch, since it's not multiply-launchable. Also, it no longer crashes if you do a Close All from the Deskbar.
The MIDI drivers /dev/midi1 and /dev/midi2 have been moved to /dev/midi/midi1 and /dev/midi/midi2.
The Device Kit
The new GetDeviceName() and CountDevices() API lets you query the system for device names, freeing you from the evils of hard-coded strings. The functions are implemented by BJoystick, BSerialPort, and BMidiPort.
The Translation Kit
The Translation Kit (nee the Datatypes Library) has been added to the OS. See the Translation Kit chapter of the BeBook.
The Game Kit
New BDirectWindow class provides enhanced direct access to the frame buffer in both full-screen and "window" modes.
Some switching-out-of-full-screen-mode bugs were fixed (the color map is now properly restored; Deskbar is no longer perverted by full screen mode).
Printing
PostScript printing is working better now, and a number of bugs have been fixed. Look for drastic improvements in R4.
Note that the PPD directory has moved to /beos/etc (B_BEOS_ETC_DIRECTORY).
The Interface Kit (Except for BWindows)
New BSlider class. BSlider draws a couple of styles of horizontal slider; the styles are exemplified by the Mouse and Keyboard preferences. The class also lets you mix and match thumbs, hash marks, watermark colors, and gives you hooks so you can draw your own elements.
New BTabView and BTab classes. BTabView and BTab work together to create a "tabbed" selection device. Look at the Fonts preference for an example. The BTabView class provides the framework by coordinating a group of BTab objects, each of which represents (and draws) a particular tab.
BAlert::Go(). The synchronous version of the Go() function now returns -1 if the BAlert is sent a B_QUIT_REQUESTED while it's on-screen (it used to return 0). The asynchronous version hasn't changed.
New BListView and BOutlineListView functions. BListView has some new functions that let you manipulate items in the list:
bool SwapItems(int32 a, int32 b);
bool MoveItem(int32 from, int32 to);
bool ReplaceItem(int32 index, BListItem * item);
BOutlineListView adds some sorting and invocation functions of its own:
void FullListSortItems(int (*compareFunc)(const BListItem *,
const BListItem *));
void SortItemsUnder(BListItem *start, bool oneLevelOnly,
int (*compareFunc)(const BListItem *, const BListItem *));
int32 CountItemsUnder(BListItem *start, bool oneLevelOnly) const;
BListItem *EachItemUnder(BListItem *start, bool oneLevelOnly,
BListItem *(*eachFunc)(BListItem *, void *), void *);
BListItem * ItemUnderAt(BListItem *underItem, bool oneLevelOnly,
int32 index) const;
BMenuField. The down and right arrow keys will now pop open a menufield item.
BPicture. The picture format has changed but is currently private. In the meantime, don't use these functions:
BPicture(const void *data, int32 size);
const void *Data() const;
int32 DataSize() const;
Also, the new Play() function (which is publically declared) shouldn't be used yet.
BTextView. Triple-clicking now selects paragraphs instead of lines. Also, the BTextView class defines an "undo" mechanism. See the BTextView class documentation.
BView. The new AppendToPicture() function, an alternative to BeginPicture(), lets you extend the picture given by the argument. It must be balanced by an EndPicture() call.
void AppendToPicture(BPicture *a_picture);
BView's new StrokeBezier() and FillBezier() functions let you draw bezier curves.
BView's new PushState() and PopState() functions let you preserve and restore a view's graphics state.
A new BView flag, B_SUBPIXEL_PRECISE, tells the view to retain the fractional part of all coordinate measurements.
BWindow
New window types. BWindow defines some new window types constants:
- B_UNTYPED_WINDOW B_FLOATING_WINDOW
The interesting one is the floating window type. The "untyped" constant is provided to support the new look and feel constants (described next).
Look and feel. New "look" and "feel" characteristics have been defined for windows. The window_look constants describe the graphic part of a window:
enum window_look {
B_BORDERED_WINDOW_LOOK,
B_TITLED_WINDOW_LOOK,
B_DOCUMENT_WINDOW_LOOK,
B_MODAL_WINDOW_LOOK,
B_FLOATING_WINDOW_LOOK
};
Note that, for example, the B_MODAL_WINDOW_LOOK doesn't make the window modal, it simply makes the window "look" modal (it will lack a title tab). The way a window behaves is controlled by its feel, as set through a window_feel constant:
enum window_feel {
B_NORMAL_WINDOW_FEEL,
B_MODAL_SUBSET_WINDOW_FEEL,
B_MODAL_APP_WINDOW_FEEL,
B_MODAL_ALL_WINDOW_FEEL,
B_FLOATING_SUBSET_WINDOW_FEEL,
B_FLOATING_APP_WINDOW_FEEL,
B_FLOATING_ALL_WINDOW_FEEL
};
- Normal feel means the window will behave like a normal window (non-floating, non-modal) regardless of how it looks.
- Subset feel means that the window will be modal with regard to or will float above all other windows in that window's subset (see below).
- App feel means the window will be modal/float above all other windows in the app.
- All feel means the window will be modal/float above all other windows on the screen.
Window subsets. The new "subset" functions...
status_t AddToSubset(BWindow *subwindow);
status_t RemoveFromSubset(BWindow *subwindow);
.. let you add the 'subwindow' to this window's subset. The subset is only meaningful if 'this' window has a "subset window feel", as described above.
![]() |
The old window flag B_WILL_FLOAT has been removed. You now create floating windows through the look and feel constants. |
New window flags:
- B_AVOID_FRONT B_AVOID_FOCUS B_NO_WORKSPACE_ACTIVATION
The first two are reasonably obvious: When made active, the window doesn't come to front, or doesn't take focus. B_NO_WORKSPACE_ACTIVATION means that when the window is activated, the desktop won't switch to the window's workspace. This is useful in the (rare) case where an app wants to create windows that are spread out across many workspaces, but doesn't want the desktop to switch as each is created.
There's new SendBehind() function that tells a window to hide behind some other window:
status_t SendBehind(const BWindow *window);
A new Sync() function that blocks until pending window operations are complete. This function should very rarely be needed--it can really bog down responsiveness, so use it sparingly.
void Sync() const;
New LastMouseMovedView() function returns the BView that most recently received a MouseMoved() in that window.
New Get/SetWindowAlignment() functions let you declare how you want your window's content area to be aligned with regard to the screen or the frame buffer. See the BWindow documentation.
The ScreenChanged() function has been fixed to return the correct colorspace mode.
Tools and Apps
Installer changes:
PoorMan has a much more appealing UI, including a menu bar that contains all configuration and control options, and a resizable window. Also, you can now log errors into a file and/or a scrollable view.
E-mail signature. Due to the MIME case-insensitivity change, the signature of the E-mail preference app was changed to "x-vnd.Be-mprf"
BSlider in preferences. Preference apps that had custom slider controls now use BSlider instead, and the Fonts app now uses BTabView and BTabs to improve the user interface significantly.
BeMail improvements:
- Attachments with attributes are handled properly with regard to endianness issues (sending mail from a big-endian machine to a little-endian machine keeps the attributes valid).
- After queueing a message when the mail daemon isn't running, the message window actually closes like it's supposed to.
Time discrepancy fixed. In Preview Release 2, there was a possibility there being a one-hour discrepancy between the Mac OS and BeOS notions of the current time. This was due to a bug in how BeOS handled the Mac OS Daylight Savings Time setting. This has been fixed in R3.
System clock tinkering fixed. In Preview Release 2, BeOS would unjudiciously change the Mac's clock, thereby messing up the time on the Mac OS side of things. Now the clock is only changed if you actually change the time in the Time preferences application.
CDPlayer now saves audio files with standard MIME types:
- "application/x-vnd.Be-RAWM" is now "audio/x-raw"
- "audio/aiff" is now "audio/x-aiff"
- "audio/wav" is now "audio/x-wav"
New DiskProbe application lets you view and edit blocks on disk devices and files.
New ShowImage application uses the Translation Kit for displaying pictures.
FontDemo has been enhanced with new features.
Case-sensitive searches in StyledEdit now work.
The MIME types for several compression types in Expander have been corrected.
Some NetPositive improvements:
- NetPositive knows frames (sort of).
- NetPositive no longer tries to open folders.
- NetPositive remembers the scrolling location when you move back or forward.
- NetPositive bookmark files (stored in home/config/settings/NetPositive/Bookmarks) can be double-clicked to open.
- NetPositive notices certain invalid MIME types and fixes them for you when it saves downloads.
sysinfo now takes a -platform switch that displays the type of system you're on:
$ sysinfo -platform
BeBox
The debug server accepts a -nogui option that prevents the debugger window from being displayed. The offending application is simply killed. (To tickle this feature, you have to kill the debug server and launch it again.)
unzip now can extract attributes correctly regardless of whether the archive was created little-endian or big-endian.
alert shell tool pops up a GUI alert. Type alert for details.
copyattr shell tool copies a file's attributes. Type copyattr for details.
query shell tool performs file system attribute queries. For example:
$ query 'name=foo && size > 170000'
Type query for details.
VirtualMemory
The VirtualMemory preference app has been redesigned to use a new heuristic for selecting an appropriate size for the swap file. The following table demonstrates how this works:
| Amount of Memory | Swap File Size |
|---|---|
| 16 MB - 31 MB | 3x memory size |
| 32 MB - 63 MB | 2.5x memory size |
| 64 MB - 127 MB | 2x memory size |
| 128 MB - 511 MB | 1.5x memory size |
| 512 MB - 4095 MB | 1.25x memory size |
| 4096+ MB | memory size |
The swap file's size is also limited by how much free disk space is available on your boot volume--for example, if you have 64 MB of memory, the swap file size is computed to be 128 MB. If you only have 100 MB of free space on your boot volume, the swap file will be set to 84 MB instead. BeOS won't use your last 16 MB of free space for the swap file.
In other words, the maximum size of the swap file is the minimum size computed using the table above plus the amount of free disk space, minus 16 MB.
There are two modes for selecting the size of the swap file. Clicking the "Defaults" button in the VirtualMemory preferences app puts the system into automatic mode, where the computation is done using the table and formula above. If you adjust the slider to manually set the size of the swap file, the manual swap file sizing mode is enabled, and you have control over the size of the swap file.
If the VirtualMemory app is in auto mode and you install more memory in your computer, the swap file will automatically be resized using the heuristic described here.
It's possible for the system to decide not to create a swap file at all. This can happen if you have more memory than free disk space. For instance, if you have 64 MB of memory but only 50 MB of free space, no swap file will be created, and opening the VirtualMemory app will present the message:
"The swap file could not be created. For the system to create a minimum swap file size of 128 MB you will need 144 MB of free disk space."
Kernel and Drivers
- New disable_debugger() function (kernel/OS.h) tells the kernel to send a signal for all exceptions, even those that normally tickle the debugger. If a "debugger disabled" app doesn't have a handler installed for a received signal, the team simply goes away, it doesn't pop into the debugger (hence the name of the function).
- New snooze_until() function (kernel/OS.h) lets a thread sleep until an absolute time measured in a given timebase. Currently, there's only one timebase:
B_SYSTEM_TIMEBASE.
- New set_signal_stack() function lets a thread set the location and size of the stack used by its signal handlers.
- New B_LOMEM area locking constant for areas that need to be locked, contiguous, and that fit within the first 16MB of physical memory ("lomem" is pronounced "brain dead"). You pass the constant as the fifth argument to create_area().
- A new set of functions (KernelExport.h) provides a cleaner API for reading and writing i/o space--and they work on all platforms:
uint8 read_io_8(int mapped_io_addr);
void write_io_8(int mapped_io_addr, uint8 value);
uint16 read_io_16(int mapped_io_addr);
void write_io_16(int mapped_io_addr, uint16 value);
uint32 read_io_32(int mapped_io_addr);
void write_io_32(int mapped_io_addr, uint32 value);
- Interrupt sharing is now supported. When you install a handler, you add it to a chain of handlers. When an interrupt occurs, the interrupt is passed down the chain until a handler returns true; if your handler doesn't want to handle the interrupt, it must return false. To add or remove a handler from the chain, you use these new functions:
long install_io_interrupt_handler(long interrupt_number,
interrupt_handler handler,
void *data,
ulong flags);
long remove_io_interrupt_handler(long interrupt_number,
interrupt_handler handler);
- The new interrupt sharing functions usurp the old set/enable/disable functions:
set_isa_interrupt_handler()
enable_isa_interrupt_handler()
disable_isa_interrupt_handler()
set_io_interrupt_handler()
enable_io_interrupt_handler()
disable_io_interrupt_handler()
- You no longer need to explicitly enable and disable the handling of a given interrupt. The first handler installation automatically enables the interrupt that it handles, and the last one removed disables it.
- The get_nth_isa_info() and get_nth_pci_info() functions now correctly return B_ERROR for negative indices.
- Added to image.h the new symbol type B_SYMBOL_TYPE_ANY, and removed the obsolete types B_SYMBOL_TYPE_CODE, B_SYMBOL_TYPE_TOC, and B_SYMBOL_TYPE_GLUE.
- The Adaptec SCSI driver now supports more than one Adaptec PCI device.
- The floppy driver now supports arbitrary byte positions and counts; this makes it possible to tar to floppies and copy floppies with dd or cat.
- On systems with a PowerPC 603ev processor (such as PowerComputing PowerBase systems),
interrupts are now disabled while invalidating the entire instruction cache. This eliminates
certain unpredictable system hangs.
- Virtual memory now works right on PowerPC systems with 512 MB of RAM.
- The kernel debugger now can be activated more than once (more than one thread can call
debugger()), and you can continue past an assertion.
- The PPC release supports up to version 3 of the MESH SCSI controller. This makes UMAX C500 PowerPC systems work.
Miscellaneous
- Focus-follows-mouse is offered through the Mouse preferences.
- "Pending" mail that's been moved to the Trash is no longer picked up and sent by the mail daemon.
- The parsedate() function has had several bugs repaired.
- The virtual memory swap file is now located in the /boot/var directory (B_COMMON_VAR_DIRECTORY).
- The font folder beos/system/fonts has been moved to beos/etc/fonts.
- The HFS file system no longer lets you create files with colons in their names from Terminal.
- The OS Chooser and BeOS Launcher (under Mac OS) checks to see if they're running under SheepShaver; if they are, they don't let you boot into BeOS.
BeOS Release 3
Copyright © 1998 Be, Inc. All rights reserved.
Last modified April 6, 1998.
