2月24日、Bun v1.0.29がリリースされた。Bunは高速なJavaScriptランタイム、バンドラー、トランスパイラ、パッケージマネージャーである。このリリースでは、8つのバグが修正され、その中には高速なBun.stringWidth(a)
など、多くの新機能と改善が盛り込まれている。
Bun v1.0.29の主なポイント
- 高速なString Width計算:
Bun.stringWidth(a)
は、端末上で文字列の可視幅を返す。string-width
パッケージの約6,756倍も高速なのが特徴。
import { stringWidth } from "bun";
// text
console.log(stringWidth("hello")); // => 5
// emoji
console.log(stringWidth("👋")); // => 2
// ansi colors
console.log(stringWidth("\u001b[31mhello\u001b[39m")); // => 5
// fullwidth characters
console.log(stringWidth("你好")); // => 4
// graphemes
console.log(stringWidth("👩👩👧👦")); // => 2
bunxのアップデートチェック頻度向上:
bunx
はnpx
に似たツールだが、npxよりも100倍以上高速に起動するのが特徴だ。bunxのキャッシュ無効化ロジックのバグにより、パッケージアップデートをチェックする頻度が想定よりも低くなっていたのを修正した。新しいマッチャー「toBeOneOf」:
bun:test
には新しいマッチャーtoBeOneOf
が追加された。これは、特定の値がリスト内のいずれかであるかを確認するのに便利だ。この新機能により、テストコードがより効果的に記述できる。
const { test } = require('bun');
test('Example Test', () => {
const value = 'apple';
expect(value).toBeOneOf(['apple', 'orange', 'banana']);
});
シェルがリダイレクトをサポート: Bun Shellが
2>&1
や&>
などの高度なリダイレクトをサポートするようになり、より柔軟なシェルスクリプトの記述が可能になった。バグの修正: このリリースでは8つのバグが修正され、Prismaに影響を与えるメモリリークからWebSocketクライアントの短いメッセージのバグまで様々な問題が解決された。
また、Bunは頻繁にアップデートされており、直近のアップデートでは以下のような改善が行われた。
- v1.0.28では6つのバグが修正され、PrismaやAstro、
node:events
、node:readline
、node:http2
に影響を及ぼすバグが修正された。 - v1.0.27では72のバグが修正され、Bun Shellが非ゼロの終了コードでスローされるようになり、fetch()やhttp2クライアントの信頼性が向上した。
- v1.0.26では30のバグが修正され、bun:sqliteでのマルチステートメントクエリのサポートや、Bunの互換性向上が行われた。
詳細はBun v1.0.29を参照していただきたい。