R1/beta2 – Release Notes

The second beta for Haiku R1 marks twenty months of hard work to improve Haiku’s hardware support and its overall stability. Since Beta 1, there have been 101 contributors with over 2800 code commits in total. More than 900 bugs and enhancement tickets have been resolved for this release.

Please keep in mind that this is beta-quality software, which means it is feature complete but still contains known and unknown bugs. While we are mostly confident in its stability, we cannot provide assurances against data loss.

To download Haiku or learn how to upgrade from R1/beta1, see “Get Haiku!”. For press inquiries, see “Press contact”.

System requirements

This release is available on the x86 32-bit platform, as well as the x86_64 platform. Note that BeOS R5 compatibility is only provided on the 32-bit images.

MINIMUM (32-bit)

  • Processor: Intel Pentium II; AMD Athlon
  • Memory: 256MB
  • Monitor: 800x600
  • Storage: 3GB

RECOMMENDED (64-bit)

  • Processor: Intel Core i3; AMD Phenom II
  • Memory: 2GB
  • Monitor: 1366x768
  • Storage: 16GB

SSE2 support is required to use the WebPositive web browser. On machines where this is not available, it is recommended to install the NetSurf browser instead.

Highlights

Improved HiDPI support

Begun but significantly incomplete at the time of Beta 1, this release sees a significant advancement in support for HiDPI monitors (and UI scaling in general.) Unlike other operating systems which largely enact a “device pixel ratio”, that converts a number of “internal pixels” to “screen pixels”, Haiku instead scales everything based on font size, and leaves pixels to mean “screen pixels” in isolation. This also means that one can effectively change the UI size and scale on any display by changing the system font size, and everything else should adjust to match it.

Below are two screenshots, showing ActivityMonitor and AboutSystem with a 12pt font size on the left (Haiku’s default), and with an 18pt font size on the right (in other words, 150% of “normal.")

There are still some bugs to be ironed out (such as scrollbars not drawing with proper scaling applied, as seen in this screenshot), but things are now generally usable under HiDPI. Other applications, such as Deskbar and Tracker, saw significant improvements to their behavior on HiDPI, as well.

Deskbar improvements

The Deskbar has had various improvements. It now has a mini-mode, where the icons on the shelf expand leftwards. You can activate it by dragging the shelf space by the right handle onto the blue leaf.


New mini-mode to put the Deskbar at the top of the screen.

Additionally, the “auto-raise” mode has been improved to automatically lower the Deskbar when the mouse leaves it.

New Input preferences

The Mouse, Keyboard, Touchpad and Joystick preferences have been consolidated into one Input preferences panel.


The consolidated Input preferences, including support for mice with 5 buttons.

Additionally, there is now support for mice with more than three buttons, including support for button remapping.

WebPositive improvements

Haiku’s built-in web browser, WebPositive, now uses a newer version of WebKit. Additionally, it contains a number of fixes to the Haiku backend, most notably to reserve significantly less memory, and to fix WebSockets, as well as a variety of crashes.


WebPositive displaying a post on the Haiku forums.

More ported software

Thanks to Haiku’s relatively robust POSIX compliance, as well as ports of open source GUI toolkits, even more pieces of popular open source software have been ported to Haiku since Beta 1 and are available in the package repositories.


Various applications, such as LibreOffice, Telegram, Okular, Krita, AQEMU, and more, running on Haiku.


Various games, such as FreeCiv, DreamChess, Minetest, and more, running on Haiku.

Installation improvements

Installer now supports excluding optional packages that are included on the installation medium.

DriveSetup will now display more information about the drives in your system. It will show the used space of existing partitions, and it is now also able to identify encrypted volumes.

Finally, there is an upgrade path available from Haiku R1 Beta 1 to Beta 2.


Optional package selection in the Installer.

NVMe support

Completely new in this release is support for NVMe drives, including support for using them as boot devices (though this varies by BIOS support.) Multiple Haiku developers and users are now using an NVMe drive as their primary storage medium, so we are relatively confident in this new driver’s stability at this point.

Enhanced and stabilized XHCI (USB3) support

While present at the time of R1/beta1, support for USB 3 hardware was notably unstable; it was usually impossible to boot from, and devices would disconnect randomly or not function at all. THe XHCI driver saw a considerable overhaul since then, with nearly all USB3 devices now functioning as boot mediums correctly, and input devices operating properly.

Kernel stabilization and performance improvements

A lot of general stabilization work was undertaken during this development cycle, with quite a lot of reproducible (and less reproducible) kernel crashes resolved, and some low-hanging fruit related to system performance resolved. The system is now noticeably more stable than it was at the time of R1/beta1.

Emulated Meta-key in Terminal

Certain early workstation keyboards included a key labeled “Meta” that functioned as an extra modifier key alongside Shift and Control. Although the Meta key is absent from modern keyboards, two major pieces of UNIX software still rely on it being present: GNU Emacs and the GNU readline library, which is used by bash and a wide variety of other software to read input from the terminal.

In beta 2, the Terminal has functionality like macOS': It adds a configuration option to the “Settings…” dialog that, when enabled, causes the left Option key (only) to function as a Meta key. The right Option key retains its normal function, and can be used to enter special characters at the keyboard.


Enabling the Meta key functionality in the settings.

More changes of note

Over 900 tickets were closed during this release cycle (and every one by a human, not by a robot or as a batch operation!), which is too many to list here. But here are a selected few, at least.

Applications

Deskbar

  • #4971 Resize Deskbar by using CTRL-ALT-right click drag
  • #8537 In menus, the size of the icon will now always be the same size as your chosen font size
  • #8691 The icons of replicants running in Deskbar’s tray now scale according to the font size
  • #13304 Auto-raised Deskbar will now also ‘auto-unraise’

DriveSetup

  • #10098 Encrypted disks will actually display that they are encrypted instead of empty

HaikuDepot

  • #10358 When a package is queued for download and installation, it will now have the status ‘queued’ in the interface.
  • #11652 When showing all packages, the installed packages are part of the list by default. Before they were hidden by default.
  • #12198 HaikuDepot can now display multiple screenshots of a package.
  • #12428 Switching between ‘All packages’ and ‘Featured packages’ is now done with tabs, not by ticking a checkbox.
  • #13806 The application will now clearly show when it is downloading screenshots for a package.
  • #13808 Overall, it is more clear when HaikuDepot is contacting the web to retrieve information or updates.

Installer

  • #14310 The installer now supports showing and selecting optional packages, when available.

LaunchBox

  • #11237 LaunchBox now has a setting to automatically launch at boot.
  • #13835 Support for 96x96 and 128x128 pixel icons.

MediaPlayer

  • #6628 Optionally, MediaPlayer will resume playback where it left off last time a file was played.

People

  • #9397 It is possible to quickly create a new Person file from Tracker, with the ‘Create new…’ feature

SoftwareUpdater

  • #14002 When updating the system packages itself, SoftwareUpdater will now display a ‘Restart’ button to inform the user that a restart is necessary.

Terminal

  • #15294 Support for an emulated Meta key

Tracker

  • #1264 Multi-range selection in Tracker and list views
  • #3011 Directories with a large number of files are now loaded quicker
  • #5126 Improvements to the Tracker API
  • #10529 The Info window now shows the originating package of a file (if applicable).

WebPositive

  • #14845 Allow selecting any font size (was previously limited to 18pt).

Drivers

  • The hda driver has had some improvements to work properly on more devices. If you had problem in Beta 1, it is worth a shot to try again.
  • #5056 Intel Extreme: support X4500HD
  • #12723 Intel Extreme: support hardware panel scaling for chipsets that support it
  • #13987 FreeBSD Network Drivers: upgrade network drivers to FreeBSD 12

System

  • #10139 Add UEFI Loader (the Beta 1 DVD image shipped with an EFI loader, but it was added manually to the release image)
  • #15548 Remove flickering when drawing background

Translator Improvements

  • #10354 WebP images now support images with an alpha channel.

Changes for Developers and Porters

For developers, the Haiku Book is a good starting guide for exploring the Haiku API. Recently, the documentation for the layout API has been revised.

Below is a list of detailed API changes since Beta 1.

POSIX

  • fcntl.h A non-functioning version of posix_fadvise() has been added, to make it easier to port software.
  • net/if_tun.h A public API for the tun/tap device compatible with the Linux API has been added.
  • net/if_types.h Add some constants for IFT_LOCALTALK, IFT_TUN, IFT_L2VLAN and IFT_BRIDGE
  • pthread.h Implement pthread_attr_[get|set]stack()
  • spawn.h Add POSIX_SPAWN_SETSID
  • stdlib.h Make putenv() conform to POSIX standard (no source/binary change)
  • sys/resource.h Add [gs]etpriority() from the POSIX-1.2013 standard.
  • unistd.h Add the _SC_HOST_NAME_MAX, _SC_REGEXP, _SC_SYMLOOP_MAX, and _SC_SHELL for sysconf()
  • unistd.h Add nice() from the POSIX.1-2008 standard.

Game Kit

  • FileGameSound.h Allow initialisation of the BFileGameSound from a DataIO object, to allow for opening game sound files from sources other than files.

Interface Kit

  • Deskbar.h Add MaxItemWidth() and MaxItemHeight() as part of the work to support variable size icons for Deskbar replicants.
  • View.h New B_MOUSE_BUTTON macro that helps you identify which mouse button was clicked on a mouse with more than three buttons.
  • View.h Add a the new B_TRANSPARENT_BACKGROUND, to identify views that have a transparent background (i.e. the background will not be drawn for those views).
  • View.h Add Tiled Background methods to BView objects to asynchronously draw bitmaps as background tiles for the view, using the overloaded DrawTiledBitmapAsync() method.

Locale Kit

  • Country.h Add a SetTo() and an InitCheck() method to the BCountry class.

Package Kit

  • PackageRoster.h Add a IsRebootNeeded() method to the BPackageRoster class.
  • PackageRoster.h Add a IsPackageActive() method to the BPackageRoster class.

New contributor

Since the last release, Kyle Ambroff-Kao received commit access. Welcome!

Source code

The source code of Haiku itself, the source code of the required build tools and the optional packages (except for closed source ones) is contained within the release images as the _source packages (except on the “CD” image, where it was left out due to space constraints.)

Reporting issues

There are almost 3200 open tickets on Haiku’s bug tracker and over 12700 closed items. If you find what you believe to be an issue, please search our Trac to see if it has already been reported, and if not, file a new ticket at https://dev.haiku-os.org/.

For information about major issues that have been fixed since the release, visit https://dev.haiku-os.org/wiki/R1/Beta2/ReleaseAddendum.

For more help, take the ‘Quick Tour’ and read the ‘User Guide’, both linked on the Haiku desktop. WebPositive opens by default with our ‘Welcome’ page which provides useful information and many helpful links, as does the Haiku Project’s website at https://www.haiku-os.org.

Press contact

Press inquiries may be directed to:

  • waddlesplash (English)
  • pulkomandy (French)
  • humdingerb (German)

All three contacts may be reached via <nickname>@gmail.com>.