Yönetici Özeti ve Mimari Önem
Bun v1.3.1, çalışma zamanının yaşam döngüsünde güçlü bir yineleme olarak karşımıza çıkıyor; dünya çapındaki geliştiricilerden gelen 103 bildirilen sorunu çözüyor ve 172 topluluk oylamasını içeriyor. Bu sürüm, paketleyici (bundler), dönüştürücü (transpiler), test çalıştırıcısı (test runner) ve paket yöneticisi alt sistemlerindeki temel sürtünme noktalarını hedefleyerek yapısal cilalamaya odaklanıyor. Özellikle Unix tabanlı dosya sistemleri ve karmaşık bağımlılık ağaçlarındaki hedeflenen performans darboğazlarına öncelik vererek, mühendislik ekibi Bun'un eski JavaScript araçlarının yerini alabilen yüksek performanslı bir alternatif olma konumunu geliştirmeye devam ediyor. Bu yama sürümünün ölçeği, macOS, Linux ve Windows üzerinde çalışan kurumsal düzeydeki iş yüklerinin determinizm veya doğrunluktan ödün vermeden Bun'dan yararlanabilmesini sağlayan agresif bir kararlaştırma aşamasını yansıtıyor.
Mimari açıdan v1.3.1, yerel performans ile Node.js ekosistemi beklentileri arasındaki kritik boşlukları kapatıyor. Sembolik bağlantı (symlink) ağırlıklı projeler için optimize edilmiş dosya sistemi önbellekleme stratejilerinin sunulması ve CJS paketlemenin daha derinlemesine entegrasyonu, modern monorepo'ların derlenme şeklini dönüştürüyor. Dahası, paket yöneticisi geliştirmeleri, bağımlılık çözünürlüğü ve birleştirme (hoisting) stratejilerindeki uzun süredir devam eden uç durumları ele alıyor. Sıfır eş bağımlılık kurulumları sırasındaki ek yükü azaltarak ve .npmrc için hassas yapılandırma çözümlemesi sunarak Bun, altyapı katmanını sağlamlaştırıyor; bu sayede ekiplerin karmaşık eski uygulamaları minimum sürtünme ve maksimum iş hacmiyle taşımasına olanak tanıyor.
Temel Geliştirmeler ve Geliştirici Ergonomisi
Bun v1.3.1'deki en çarpıcı performans atılımı, macOS'te, özellikle sembolik bağlantı ağırlıklı projeler için uyarlanmış bun build işlemlerindeki yerelleştirilmiş 2 kat hız artışıdır. Derinlemesine iç içe geçmiş sembolik bağlantılara büyük ölçüde güvenen monorepo'lar, daha önce aşırı dosya sistemi geçiş yükünden muzdaripti; yeni çözümleme sezgiselleri, dosya tanımlayıcı (file descriptor) yönetimini ve sembolik bağlantı takibini optimize ederek derleme sürelerini büyük ölçüde azaltır. Ek olarak, paketleyici artık oluşturulan kaynak haritalarında (source maps) yasal yorumları koruyarak lisanslama çerçeveleriyle uyumluluğu sağlarken, --format=cjs yerel olarak import.meta'yı satır içine ekleyerek CommonJS çıktı hedefleri için kritik bir şartname boşluğunu kapatır.
bun test ve paket yöneticisinde geliştirici ergonomisi büyük bir ivme kazanıyor. Test çalıştırıcısı, Vitest geçiş yollarını kolaylaştırmak için küresel bir vi yardımcısının yanı sıra daha esnek CI/CD ardışık düzen entegrasyonu için --pass-with-no-tests ve --only-failures bayraklarını (flags) içerir. Paket yönetimi de benzer şekilde geliştirilmiştir: .npmrc dosyaları artık :email kimlik doğrulama alanlarını doğru bir şekilde ayrıştırıyor, sıfır eş bağımlılık algılandığında kurulum dizileri gereksiz doğrulama adımlarını atlıyor ve seçici birleştirme (publicHoistPattern ve hoistPattern), izole kurulum yapılarına ayrıntılı kontrol getiriyor. Son olarak, Node.js API uyumluluğu, fs/promises FileHandle.readLines() eklenmesinin yanı sıra bunx ve Windows react-jsxdev derlemesi için hayati önem taşıyan kararlılık yamalarıyla genişletilmiştir.
Mimari Karşılaştırma Matrisi
| Özellik / Alt Sistem | Önceki Taban Çizgisi (v1.3.0) | Bun v1.3.1 | Mimari Etki |
|---|---|---|---|
| Sembolik Bağlantı Ağırlıklı Paketleme (macOS) | Standart geçiş yükü | 2 kat daha hızlı derleme yürütme | Optimize edilmiş önbellekleme ve dosya tanımlayıcı yeniden kullanımı |
| CJS Çıktı Derlemesi | Korunan import.meta referansları |
Yerel olarak satır içi import.meta ekleme |
Eski CommonJS çalışma zamanları ile daha iyi uyum |
| Paket Yöneticisi Çözümlemesi | Evrensel eş bağımlılık kontrolleri | Sıfır eş grafikler için hızlandırılmış yollar | Soğuk kurulumlar sırasında azaltılmış I/O yükü |
| Test Çalıştırıcısı Yetenekleri | Standart doğrulamalar ve eşleştiriciler | Eklenen küresel vi, --pass-with-no-tests |
Vitest'ten basitleştirilmiş geçiş yolu |
| Dosya Sistemi API Kapsamı | Kısmi FileHandle ilkelleri |
Uygulanan FileHandle.readLines() |
Geliştirilmiş Node.js akış ve satır okuma eşdeğerliği |
Değişiklikler ve Geçiş Uyarıları
Bun v1.3.1, v1.x serisindeki önceki sürümlerle tamamen geriye dönük olarak uyumludur; yani mevcut uygulama kod tabanlarını bozacak hiçbir sözdizimi değişikliği veya kullanım dışı bırakma (deprecation) getirilmemiştir. Bununla birlikte, yeni seçici birleştirme yapılandırmalarını (publicHoistPattern ve hoistPattern) benimseyen ekipler, düz node_modules birleştirmesine örtük olarak güvenen paketlerin doğru şekilde çözülmeye devam etmesini sağlamak için çalışma alanı düzenlerini kapsamlı bir şekilde denetlemelidir. Benzer şekilde, --format=cjs altında import.meta'nın satır içine eklenmesi, CommonJS paketlerinde modül meta verilerinin ertelenmiş değerlendirmesini önceden bekleyen paketleyici ardışık düzenleri için çalışma zamanı davranışını değiştirebilir.
Adım Adım Yükseltme Kılavuzu
Yerel ve CI ortamlarınızı Bun v1.3.1'e yükseltmek, tek bir komut ve ardından yeni özellikler için yapılandırma doğrulaması gerektirir.
Adım 1: Bun'u Global Olarak Yükseltin
En son ikili (binary) sürümü getirmek için resmi yükseltme komut dosyasını yürütün:
bun upgrade
Aktif sürümü kontrol ederek kurulumun başarılı olduğunu doğrulayın:
bun --version
# Beklenen çıktı: 1.3.1
Adım 2: CI'da Yeni Test Bayraklarını Kullanın
Sürekli entegrasyon ardışık düzenlerini kolaylaştırmak için yeni test yürütme bayraklarını package.json betiklerinize dahil edin:
{
"scripts": {
"test:ci": "bun test --pass-with-no-tests --only-failures"
}
}
Adım 3: Seçici Birleştirmeyi Yapılandırın (İsteğe Bağlı)
İzole kurulumlar kullanan karmaşık bir monorepo'yu yönetiyorsanız, bağımlılık görünürlüğünü kontrol etmek için proje kök yapılandırmanıza birleştirme kalıpları ekleyin:
# .npmrc
publicHoistPattern[]=*eslint*
publicHoistPattern[]=*typescript*
hoistPattern[]=my-custom-package
