2024/09/15更新
R1/beta5 – Release Notesの私訳です。訳のおかしいところは原文を参照ください。
Haiku R1 5番めのベータ版は、Haikuのハードウェアサポートと全体的な安定性の改良、およびより多くの移植ソフトウェアを使えるようにするための1年半以上のハードワークでした。350を超えるバグおよび機能強化のチケットがこのリリースで解決されました。
Haikuは、ベータ品質のソフトウェアであることを心に留めておいてください。つまり、機能は完成しているが既知や未知のバグがまだ含まれていることを意味します。安定性にはますます自信がありますが、データ損失に対して保証はできません。
今回のリリースサイクルのすべてに、waddlesplashがHaikuで活動する契約者として雇用されました。皆様のような読者のHaiku, Inc., a 501(c)3 non-profitへの惜しみない寄付によるサポートで彼の契約は現在も続いています。
Haikuのダウンロード、またはR1/beta4からのアップグレードについて学ぶなら“Get Haiku!”を参照ください。プレスの問い合わせは、“プレス窓口”を参照ください。
このリリースは、x86 32-bitおよび64-bitプラットフォームで利用できます。
BeOS R5との互換性
BeOS R5との互換性は、32-bitイメージでのみ提供されることに注意ください。
最小構成(32-bit)
|
推奨構成(64-bit)
|
外観プレファレンスで30以上のカラーオプションをすべて表示して、ユーザーにそれら全部を編集させる代わりに、デフォルトで3つだけ表示し、残りは3つのうち1つが変更された際に自動で計算されます(カラーのフルセットは、編集したいユーザーのためにまだマニュアルで編集できます)。この新しい自動カラー選定モードは、完全に“ダークモード”を認識しています。ユーザーが暗いパネルの背景色を選択した場合、それは明るいテキストカラーに切り替えます。逆の場合も同様です。
加えて、システム全体および付属のアプリケーションで多くの修正がされ、ユーザーが選択したカラーや“ダークモード”をより正確に扱えます (特に、コントロールの階調について上図で見るように。いくつかは、“Haiku Extras”パッケージから“Flat”デコレーターとコントロールの外観を使用していればすでに問題ないものですが)。まだ修正するところが残っており、開発ブランチで作業が続いていますが、全般的な状況は以前よりずっと良くなっています。
Haikuのネイティブアイコンフォーマット(HVIF)エディター、Icon-O-Maticは多くの機能強化が受け入れられました(大部分はGSoC ‘23 の学生のおかげです)。特に“reference images”(Icon-O-Maticの背景としてインポートできるビットマップイメージ、その上でベクターパスをトレースします)、perspective transformations(HVIF自体にもサポートされます)、コピー&ペーストへの大幅な改良が挙げられます。
バッテリーの状態(PowerStatus)は、バッテリーの状態と情報を表示する付属のデスクトップアプレットです。それは、システム上でバッテリー(または複数のバッテリー)を検出した場合、初回起動時に自動的にDeskbarにインストールされるようになりました。また、バッテリーの状態をより正確に扱うための改良や、バッテリー容量が低下したときにサウンドとポップアップ通知で知らせるための改良を多く受け入れました。
Haikuのファイルマネージャー、Trackerは、多くの細かな改良を受け入れました。特に注目することは、読み取り専用のフォルダーやボリュームの扱いがより洗練されたことです。それらは薄い背景とともに表示され(クエリや仮想ディレクトリ、いくつかの特別なビューも同様です)、書き込みを要求するすべてのメニューアクションは、有効のまま使用しようとするとエラーを表示するのではなく完全に無効化されています。
USBオーディオデバイスの基本的な入出力がサポートされました。すべてのデバイスはサポートされていません(特に、さらに高度なUSB 2.0オーディオデバイス)が、多くのデバイスが動作テスト済です。
(しかし、システムメディアサービスは以前からデバイスのホットプラグや出力の切り替えに使われていないので、USBデバイスへのオーディオ出力を得るためHaiku動作中に出力を切り替えるには1-2回サービスを再起動する必要があります。これは既知のバグであり、将来のリリースに向けてそれを解決する作業がすでにいくつか存在します)。
TUN/TAPネットワークドライバーが追加されました。主にVPN(またはほかのトンネリングツール)に役立ちます。VPNのセットアップと、デフォルトでトラフィックがVPNを通過するようにシステムを構成するにはいくつかのマニュアルセットアップが必要となります。しかし、一度構成されると、トラフィックは通常のゲートウェイでなく正常にVPNを通じて流れるはずです(TAPモードはTUNモードよりテストされておらず、より実験的とみなされていることに注意ください)。
かなりの時間と注意がTCPスタックに払われ、非常に多くの修正と機能強化が行われました。全体的に、TCPのループバック(localhost)パフォーマンスは最近のハードウェア上で確実に二桁Gbits/secです(以前はもっと低く、しばしば悲しいほど:最大数十Mbits/secでした)。TCP ループバック接続以外も、より良いACK結合、正確なSACKデーター送信、最後に本物のwindow-scalingアルゴリズム(今は接続の受信側だけですが)により大きく改善しました。
TCP自体以外では、大幅な変更がネットワークスタックに行われ、特に以下のものが改良されました。statistics counting (ifconfig
などで見られます)、バッファーコピーの削減、およびスタックの最低レベルから高位のものへのバッファーフラグの受け渡しの許可。最後の変更は、IP、TCP、およびUDPに対してチェックサムオフロード受信をサポートするドライバー(ほとんどの移植されたFreeBSDイーサネットドライバーおよびネイティブのvirtio
ドライバーを含む)がこのように指示することで、これらのプロトコルに対してチェックサム計算を省けることを意味します。
最終結果は、ほとんどの実際の接続において巨大な(それ以上!)オーダーのより高いTCPパフォーマンス(8-10xの改善は異常な結果ではありません)であり、Haikuは全体的なネットワークパフォーマンスでほかのオペレーティングシステムに近づきました。
ネイティブのターミナルアプリケーションは多くの改良があります。それには、ブラケット貼り付け(bracketed paste)のサポート(改行やほかの特殊文字をエディターやシェルプロンプトへの貼り付け処理に使用)、カスタムカラースキームを構成するための設定パネルなどを含みます。
TTY/PTYレイヤー(ターミナル、SSH、その他のツールを動かすもの)もまた多くの改良が見られます、それには、以前に分離していたTTYとPTYコードを統一するための大幅なリファクタリング、大量データーの読み書きをより正確に処理するための修正、およびほかのオペレーティングシステムで一般に見られるいくつかのTTY拡張(TIOCOUTQ
のような)のサポートを含みます。
非常に多くのパフォーマンス最適化がカーネルとドライバーに行われました。それは、さらに多くのI/Oオペレーションの一括処理、アプリケーション起動時の不要なロックの回避、メモリマップドファイルのプリマッピングの向上、ページマッピング内のロック競合の減少、グローバルメモリエリアテーブル(およびその下層のデータ構造の異なる実装)の一括修正、アロケーションを容易にするために、ページリストを管理するための変更、ホットI/Oパス内の一時的なバッファー割当パフォーマンスの向上、ELFローダー内のDT_GNU_HASH
のサポートなどを含みます。
Haikuのpthread_mutex
、pthread_rwlock
などを動かすuser_mutex
システム(Linuxのfutex
システムに似た機能ですが、設計がやや一般的ではありません)にも、バグ修正とパフォーマンス向上のための設計と実装の大幅なオーバーホールが見られました。新しい設計は、古い設計の複数の正確性の問題(避けられない競合状態など)を修正し、特に重く競合したロック(heavily-contended locks)に対して全体的に速くなりました(大部分は、異なる内部のロック戦略および非共有のロックに対して“ロックされた”物理メモリを避けたおかげです)。
全体的な結果、以前よりコンパイルのパフォーマンスが約25%(多くの場合それ以上)速くなりました。現在、少なくともいくつかのコンパイルワークロードで、Linuxより2倍遅くなります(メニーコアマシンで-j16
としても)。
古いFATファイルシステムドライバー(それはBe, Inc.の廃業前にオープンソースとしてリリースされたサンプルコードにさかのぼります)は、 FreeBSDのFATドライバーの移植版にほとんど全体的に置き換えられました。これは、古いドライバーが持っていた長年に渡る互換性とデーター処理の問題を解決し、Haikuをほかのシステムとより相互運用可能としました。
GSoCの学生によって書かれ、他の貢献者によって改良された内製ドライバーのおかげで、HaikuはFreeBSDで使われているデフォルトのファイルシステム、UFS2 (“Unix File System 2”)の読み取り専用のサポートがされるようになりました。
kqueue(2)
Haikuは、BSD kqueue
APIのサブセットを実装しました。それはLinuxのepoll
と目的が似たイベントキューイング機能です。それは多数の待機オブジェクト(FD、ソケットなど)の処理において、POSIX select
またはpoll
より効率的であり、多くのイベントドリブンI/Oがあるlibuv (node.js)、libevent、WINEなどを含むアプリケーションやライブラリーではそれらより好まれています。
strace
およびprofile
Haikuのネイティブstrace
(system call trace)およびprofile
(CPU timeプロファイラー)は、前回のリリースから多くの機能強化が見られます。strace
は、出力フラグ、列挙型、以前の16進値でなく名前によるエラーコード、そしてさらに多くのパラメータをサポートし、戻り値が正しく返るようになりました。たとえば、以前は
open(0x5, "plaintext", 0x2042, 0x0) = 0x8000000f () (49 us)
map_file("libicuuc.so.66 mmap area", 0x7f04c2675228, 0x6, 0x1ababd0, 0x1, 0x0, true, 0x3, 0x0) = 0x329a0 () (108 us)
だったものが、以下のようになります
open(0x5, "plaintext", O_RDWR|O_NOTRAVERSE|O_CLOEXEC, 0x0) = 0x8000000f Operation not allowed (57 us)
map_file("libicuuc.so.66 mmap area", [0x0], B_RANDOMIZED_ANY_ADDRESS, 0x1ababd0, B_READ_AREA, 0x0, true, 0x3, 0x0) = 0x73e8 ([0x6392223000]) (135 us)
また、readv
/writev
呼び出しからのiovec
も表示できるようになり、kqueue
を動作させる新しいイベントキュー関連のシステムコールのトレースをサポートし、シグナルなどのより多くの情報を表示します。
ネイティブprofile
ツールも、多くの改良を受け入れています。それは、プロファイラーticks対経過したCPU時間の報告 (プロファイラーが正しく動作しているか確認のため、および割り込みなどがいつCPU時間を“盗んで”いるのかの指摘のため)、ユーザースペース対カーネルスペーススタックフレームのより良い扱い(そしてユーザーフレームのみのプロファイリングをサポートしました)を含みます。同様に、Callgrindフォーマットでの出力(KCachegrindやほかのビジュアライザで使用するため)を含むたくさんの修正を受け入れています。profile
ツールは、このリリースで修正されたか、少なくとも大きく改善した多くのパフォーマンス問題のトレースダウンに大いに使用されているのが見られました。
HaikuPortsプロジェクトは様々なソフトウェアのHaikuへの移植のメンテナンスを続けています。ここに記載するには単純に新規の移植は多すぎます(たくさんの新しいKDEアプリケーションやいくつかのGTKアプリケーションを含む)が、ほんの一部のより注目すべきものを以下に挙げます。
GSoC 2024の学生の一人のおかげで、Haikuは、GDB 15の本格的な移植を持つようになりました。それにはコマンドラインインターフェース、マシンインターフェース(IDE統合用)、Pythonスクリプティング、gdbserver
(リモートデバッグ用)などを含みます。これは、GDB 6の古い (そして大部分が動作しない)移植を置き換え、より慣れ親しんだツールを求める開発者に対してHaikuのネイティブデバッガーを補完します(すでに今夏のGSoCのほかの学生、および開発中のFirefox移植版のビルドのデバックをしようとする貢献者により使用されています…)。
今では、Haiku用の.NET Core 8 および 9 の移植があります。まだ“いくつかのアセンブリが必要”で、完全にそのままの形で動かないかもしれません。しかしそれらは存在します(しかもいくつかの作業は.NET Core自体にアップストリームされています)。また、HaikuのネイティブAPI(GUI APIを含む)から.NETへのいくつかの実験的なバインディングもあります…
HaikuのX11/Xlib互換ライブラリのおかげで、動作可能なFLTKが移植されました(現在、GLXのサポートはありません、そのためOpenGLを必要としないFLTKアプリケーションだけが動作します)。
前のリリースから数百ものバグや小さな問題が修正されています。すべてをここに記載するには単純に多すぎます(月刊の活動報告はより完璧な変更の説明を含んでいます)。システムの実質上すべての領域でいくつかの注意を受け入れており、その結果はHaikuのこれまでで最も洗練されて安定したリリースです(R1/beta4!よりもさらに!)。ただし、あちこちに荒削りな部分が残っています。
Haikuは、POSIXへの順守を向上させ、開発者にソフトウェアの移植を容易にさせる方法に常に目を向けています。個別のリストでは変更が多すぎるので、ここにいくつかのハイライトを:
getentropy
(POSIX.1-2024、以前のBSD拡張)arc4random
(BSD拡張)AF_UNIX
SOCK_DGRAM
(UNIXデータグラムソケット)pthread_sigqueue
(GNU/BSD拡張)preadv
& pwritev
(拡張)かなりの時間がシステム全体の安定性に関する取り組みに注がれました。このリリース開発サイクル中に多くのカーネルやドライバーのクラッシュ、ハングアップ、データ破壊、起動失敗は、テストされ、追跡され、修正されました。全体として、システムはこれまでよりさらに安定しているようです。
前回のリリースから、新たにコミット権を持つ開発者が1名増えました: nepheleはHaikuのユーザーインターフェース、特にカラーの設定及びダークモードサポートで作業しています。ようこそ!!
Haiku自体のソースコードへは、GitHubミラーから、またはHaikuのGitインスタンスを通じてアクセスできます。パッチはGerritを通じて貢献できます。
Haikuのバグトラッカーには、3,900個近くのオープンチケット、15,000個を超えるクローズドチケットがあります。これ問題と思うものを見つけたなら、バグトラッカーを検索して、すでに報告されているか確かめてください。もし報告されてなければ、バグトラッカーへ新しいチケットを登録してください。
リリース後に修正された主要な問題の情報は、Release Addendum ページを見てください。
さらに詳しいヘルプについては、'Quick Tour'を手にとって、‘Userguide’を読んでください。どちらもHaikuデスクトップ上にリンクされています。WebPositiveはデフォルトで'Welcome'ページを開きます。そこにはHaikuプロジェクトのウェブサイトと同じく、有益な情報やたくさんの役に立つリンクがあります。
Haikuに関するサポート/ヘルプは、フォーラムに投稿するか、IRC/Matrix/XMPPルームに参加するか、またはメーリングリストへメッセージを送ってください。私達の親切なコミュニティが手助けしてくれるでしょう。
プレス窓口
プレスの問い合わせは、直接以下へ:
上記3名には、<nickname>
@gmailから連絡できます。