- REPL tamamen Zig ile yeniden yazıldı ve anında çalıştırma ile zengin bir terminal arayüzü sunuyor; pano kopyalama, sekme tamamlama, geçmiş kaydetme gibi çeşitli özellikleri destekliyor
- Tarayıcı hedefli derleme komutuyla her şeyin satır içi olduğu tek bir HTML dosyası üretilebiliyor; böylece sunucu olmadan da çalıştırılabiliyor
- TC39 standart ES dekoratörleri tam olarak destekleniyor;
accessor, Symbol.metadata, addInitializer gibi güncel sözdizimleri kullanılabiliyor
- Windows ARM64 desteği, barrel import optimizasyonu, test yeniden deneme seçeneği, performansı artırılmış JavaScriptCore motoru gibi çok sayıda platform ve performans iyileştirmesi içeriyor
- Genel olarak Bun'un geliştirici deneyimi, performansı ve uyumluluğu belirgin biçimde iyileştiren bir sürüm
Yeni REPL
- REPL, Zig tabanlı yerel bir uygulama ile değiştirildi; harici npm paketi bağımlılığı olmadan anında çalışabiliyor
- Sözdizimi vurgulama, Emacs tuş kısayolları, sekme tamamlama, geçmiş kaydetme, çok satırlı giriş gibi özellikleri destekliyor
.copy, .help, .exit, .editor gibi yerleşik komutlar sunuyor
const/let bildirimlerini koruyor; top-level await ile import/require desteğinin ikisini de sağlıyor
--compile --target=browser
bun build --compile --target=browser ile JavaScript, CSS ve varlıkları satır içine alınmış HTML üretilebiliyor
<script src="..."> ve <link rel="stylesheet"> etiketleri sırasıyla satır içi koda dönüştürülüyor
file:// ortamında bile CORS kısıtlamaları olmadan çalışabiliyor
- TypeScript, JSX, React, CSS, ESM ve CJS'nin tümünü destekliyor
TC39 standart ES dekoratörleri
- Stage-3 standart dekoratörler tam olarak destekleniyor
accessor anahtar sözcüğü, Symbol.metadata, ClassMethodDecoratorContext gibi güncel spesifikasyonlar uygulanmış durumda
- Alan, metot ve sınıf dekoratörleri ile başlatıcılar (
addInitializer) destekleniyor
- Mevcut TypeScript deneysel dekoratörleri (
experimentalDecorators) de çalışmaya devam ediyor
Windows ARM64 desteği
- Snapdragon gibi ARM64 tabanlı Windows sistemlerinde Bun çalıştırılabiliyor ve derlenebiliyor
bun-windows-arm64 hedefiyle çapraz derleme destekleniyor
- Hem CLI hem de API tarafında aynı şekilde kullanılabiliyor
Barrel import optimizasyonu
import { Button } from 'antd' gibi barrel dosyası yeniden dışa aktarma yapıları otomatik olarak algılanıyor
"sideEffects": false ayarı olduğunda otomatik optimizasyon uygulanıyor
optimizeImports seçeneğiyle açıkça belirtmek de mümkün
- Yalnızca gerekli alt modüller ayrıştırılarak derleme hızı en fazla 2 kat artırılıyor
Bundle çıktısı optimizasyonu
- ESM/CJS bundle'larında closure sayısı ve heap bellek kullanımı azaltıldı
- Nesne sayısı %11 azaldı, heap boyutu 4 MB küçüldü, fonksiyon ve environment object sayıları büyük ölçüde azaltıldı
- Kod değişikliği olmadan otomatik olarak uygulanıyor
bun test --retry
- Testlerin tamamı için varsayılan yeniden deneme sayısı ayarlanabiliyor (
--retry N)
- Tekil testlerdeki
{ retry: N } seçeneği öncelikli oluyor
- JUnit XML raporlayıcısında her deneme ayrı bir
<testcase> olarak kaydediliyor
Bun.generateHeapSnapshot("v8") iyileştirmesi
"arraybuffer" seçeneğiyle heap snapshot, ArrayBuffer biçiminde döndürülebiliyor
- Büyük snapshot'lar işlenirken string dönüşümünün ek yükü ortadan kalkıyor
TLS ve sertifika güncellemeleri
- mTLS ve özel CA bağlantılarında keepalive desteği ile performans artırıldı
- Aynı TLS ayarları genel kayıt defterinde tekilleştiriliyor
- Kök sertifikalar, NSS 3.119 (Firefox 147.0.3) sürümüne güncellendi
- 4 adet CommScope kök sertifikası kaldırıldı
JavaScriptCore motoru yükseltmesi
- String slicing 168 kat,
endsWith 10.5 kat, RegExp flag erişimi 1.6 kat, path.parse() ise en fazla 7 kat olmak üzere çok sayıda performans iyileştirmesi yapıldı
structuredClone, diziler ve nesne dizilerinde 25 kata kadar daha hızlı
Buffer.slice() ve subarray() yaklaşık 1.8 kat iyileştirildi
BigInt, string iterator'ları ve tamsayı işlemleri gibi alanlarda dahili optimizasyonlar yapıldı
Başlıca hata düzeltmeleri
- Python asyncio MCP sunucusu ile boru uyumluluğu sorunu çözüldü (
Bun.spawn)
- Node.js uyumluluğu:
AsyncLocalStorage, fs.watch, http başlık işleme, GC ile ilgili çakışmalar dahil çok sayıda düzeltme yapıldı
- Bun API:
spawn, plugin, sql, build ile ilgili çökme ve bellek sızıntıları giderildi
- WebSocket, bun install, CSS ayrıştırıcısı, bun shell, Windows ortamı gibi alanlarda genel kararlılık iyileştirildi
- Güvenlik açıkları: HTTP başlık enjeksiyonu, tarball yol dolaşma, S3 akış sızıntısı gibi sorunlar giderildi
1 yorum
Gerçekten epey uzun bir süredir gelişimini izleyip, en başından beri ara ara kullanmış biri olarak hissettiğim şey şu: Bun geliştiricileri gerçekten JS/TS dünyasının daha hızlı dönmesini içtenlikle istiyor. Şaşırtıcı. Gerçekten...