6月26日、BunはBun v1.1.17をリリースした。
このリリースでは、以下の4つの改善が行われた。
Bun REPLのクラッシュ修正
Bun v1.1.16でZigのバージョンを0.12.0から0.13.0にアップグレードした。この変更により、実行ファイルのデータセグメントに不変文字列が配置されるバグが修正された。このバグはBunが意図せず依存していたものであり、bun repl
のエイリアスがbunx bun-repl
である際に不変文字列を変更しようとしてクラッシュが発生していた。このリリースではこのクラッシュを修正し、再発を防ぐための回帰テストも追加された。macOSで小さなディレクトリにおけるfs.readdirSyncの5%高速化
fs.readdirSync
メソッドがmacOSの小さなディレクトリで5%高速化された。macOSのgetdirentries64
APIを呼び出す際に、XNUカーネルがバッファの末尾にフラグを追加してディレクトリエントリのリストの終端を示す。このフラグをチェックし、不要なシステムコールを避けることで高速化が実現された。getdirentries64_flags_t *gdeflags = (getdirentries64_flags_t *)(dirp->dd_buf + dirp->dd_len - sizeof(getdirentries64_flags_t)); *gdeflags = 0; dirp->dd_size = (long)__getdirentries64(dirp->dd_fd, dirp->dd_buf, dirp->dd_len, &dirp->dd_td->seekoff); if (dirp->dd_size >= 0 && dirp->dd_size <= dirp->dd_len - sizeof(getdirentries64_flags_t)) { if (*gdeflags & GETDIRENTRIES64_EOF) { dirp->dd_flags |= __DTF_ATEND; } }
"ws"モジュールのsendメソッドでコールバックが呼ばれないバグの修正
WebSocket
の"ws"
モジュールを使用する際、メッセージが正常に送信された場合にsend
メソッドのコールバックが呼ばれないバグが修正された。import { WebSocket } from "ws"; const ws = new WebSocket("ws://www.host.com/path"); ws.send("Hello", (err) => { if (err) { console.error("Failed to send message:", err); } else { console.log("Message sent successfully"); } });
ロックファイルを読み込む際のクラッシュ修正
bun install
で腐敗したbun.lockb
ファイルを読み込む際にクラッシュが発生するバグが修正された。バウンドチェックと整数アンダーフロー/オーバーフローチェックを追加し、これを防止するようにした。また、キャッシュされたnpmレジストリマニフェストを読み込む際にも同様のチェックを追加した。
この他にも、macOSでのイベントループの高速化が実現されている。バックグラウンドスレッドがメインスレッドを起こす際のメモリ割り当てを不要にすることで、イベントループが高速化された。
詳細はこちらのリンクを参照していただきたい。
You have clear goals in all of our papa's games. You might be putting money aside for a new car or a park ticket. You can only reach your goal by making money and helping other people.