6 puan yazan GN⁺ 2024-04-02 | 1 yorum | WhatsApp'ta paylaş

Windows desteği

  • Bun artık Windows 10 ve üzeri sürümlerde çalışabiliyor
  • macOS ve Linux’taki Bun test paketinin %98’ini geçiyor
  • Yerleşik npm uyumlu paket yöneticisiyle birlikte, Vite React uygulaması kurulumunda yarn’dan 18 kat, npm’den 30 kat daha hızlı
  • Windows’ta daha hızlı script çalıştırma için .bunx dosya biçimi desteği
  • Windows’ta en hızlı sistem çağrılarını kullanarak Node.js API optimizasyonu
    • Örnek: fs.readdir(), Node.js’ten %58 daha hızlı

Bun bir JavaScript runtime’ıdır

  • JavaScript, TypeScript, JSX desteği
  • tsc gibi komut satırı araçları Bun 1.0’a göre 2 kata kadar daha hızlı
  • Bun Shell artık Windows’ta da kullanılabilen çapraz platform bir shell oldu
    • ls, rm, cat gibi temel yardımcı araçlar içeriyor
    • JavaScript ve TypeScript’te Bun.$ API’si kullanılarak shell çalıştırılabiliyor
  • Bun.Glob
    • Dosya ve string eşleştirme için yerleşik Glob API sunuyor
    • fast-glob ve micromatch’e benzer, ancak string eşleştirmede 3 kat daha hızlı
  • Bun.Semver
  • semver string’lerini ayrıştırmak ve sıralamak için yeni bir Semver API’si
    • node-semver paketiyle benzer, ancak 20 kat daha hızlı
  • Bun.stringWidth()
    • Terminalde string’in görünür genişliğini ölçmek için yeni API
    • ANSI escape kodları, tam genişlikli karakterler, grapheme ve emoji desteği
  • server.url: Bun.serve() ile oluşturulan HTTP sunucusunun URL’si server.url özelliğinden alınabiliyor
  • server.requestIP(): HTTP isteğinin IP adresi server.requestIP() metoduyla alınabiliyor
  • subprocess.resourceUsage(): Bun.spawn() ile oluşturulan alt sürecin CPU ve bellek kullanımı resourceUsage() metoduyla erişilebiliyor
  • Geliştirilmiş Node.js uyumluluğu
    • node:http2 istemci API’si, Date.parse() uyumluluğu, özyinelemeli fs.readdir() desteği gibi çeşitli API iyileştirmeleri
    • Bun ile Node.js arasında IPC mümkün
    • Belgelenmemiş bazı Node.js API’leri de destekleniyor
  • Web API’leri: WebSocket, performance.mark(), Brotli sıkıştırmalı fetch(), URL.canParse() gibi Web standart API’leri desteği

Bun npm uyumlu bir paket yöneticisidir

  • bun install ile npm paketleri 29 kata kadar daha hızlı kurulabiliyor
  • Lifecycle script’leri, trustedDependencies, bun pm trust gibi özelliklerde iyileştirmeler

Bun bir JavaScript bundler’ıdır

  • bun build --target=node ile Node.js’te çalışabilecek kodların bundle alınması destekleniyor
  • --compile bayrağıyla TypeScript ve JavaScript dosyaları tek dosyalık çalıştırılabilir dosyalara derlenebiliyor

Bun bir test runner’dır

  • Jest ile aynı API’yi destekleyen yerleşik test modülü sunuyor
  • Yeni expect() matcher’ları eklendi ve modül mocking desteği geliyor

Yerleşik SQLite desteği

  • better-sqlite3’ten ilham alan bir API ile SQLite desteği
  • Çoklu ifade sorguları, ayrıntılı hata mesajları, veritabanı içe aktarma ve yerleşik destek iyileştirildi

GN⁺ görüşü

  • Bun, Node.js ile uyumluluğu korurken performansı büyük ölçüde artıran bir JavaScript araç seti ve Windows desteği sayesinde daha geniş bir geliştirici topluluğuna ulaşabiliyor.
  • Yerleşik test runner ve SQLite desteği, geliştiricilerin ek araçlara ihtiyaç duymadan verimli çalışmasını sağlıyor.
  • Bun’un yüksek performansı ve iyileştirilmiş geliştirici deneyimi, özellikle büyük ölçekli projelerde veya performansa duyarlı uygulamalarda öne çıkabilir.
  • Bun’un sunduğu çeşitli özellik ve iyileştirmelere rağmen, Node.js ekosistemindeki geniş paket yelpazesiyle tam uyumluluğa ulaşmak için sürekli geliştirme ve topluluk geri bildirimi gerekiyor.
  • Bun’un yeni özelliklerinin mevcut Node.js tabanlı araçlarla nasıl rekabet edebileceği veya birlikte çalışabileceği konusunda ek analiz gerekiyor.

1 yorum

 
GN⁺ 2024-04-02
Hacker News görüşleri
  • Bun’daki etkileyici değişiklik listesi

    • Bun, Node.js için ideal bir alternatif gibi görünüyor ve Windows desteğine zaman ayırmış olmaları, web geliştirme dünyasında sık sık göz ardı edilen bir alan.
    • "Bun on Windows passes 98% of our own test suite for Bun on macOS and Linux." ifadesinin, Windows sürümünün başarısız testlere rağmen yayımlandığı anlamına mı geldiği yoksa bunun bir yanlış anlaşılma mı olduğu soruluyor.
  • Bun’un makro özelliği

    • Bun’un bundle alma sırasında kod çalıştıran temel bir makro özelliğine sahip olduğu fark edilmiş. Bu oldukça ilginç bir özellik.
  • Bun ve Deno kullanma nedenine dair soru işaretleri

    • Bun ve Deno’nun, Node.js ile uyumluluğun zorunlu olduğunu fark etmiş olsalar da, VC finansmanı varken ürünün sürdürülebilirliği konusunda soru işaretleri var.
    • Bun ve Deno, Node.js ile aynı (biraz kusurlu) ekosistemin içinde yer almasına rağmen, neden kullanılmaları gerektiğine dair net bir gerekçe görmekte zorlanılıyor.
  • Bun’un sıkı bir hayranı

    • TypeScript uyumluluğu nedeniyle ilk kez Bun kullanılmış, performansı nedeniyle de kullanılmaya devam edilmiş.
    • Deno denenmiş ama kullanımı zor bulunmuş; buna karşılık Bun, entegre etmesi kolay ve çok keyifli bir deneyim sunmuş.
  • Bun’un yeni sürümüne dair değerlendirme

    • Bun’un videosu izlenmiş ancak grafikler yeterince net olmadığı için bunun önceki Bun sürümüyle mi yoksa Node.js ile mi karşılaştırıldığı anlaşılamamış.
    • Bun’u yan projelerde kullanma deneyimi olumlu olmuş ve yerleşik API’ler iyi çalışıyor. Deno ve Node.js’in de bu API’lerin bir kısmını benimsemesi isteniyor.
    • Bun varsayılan olarak bir miktar telemetri topluyor. Kurulum betiği bunu belirtmiyor; yalnızca Bunfile belgelerinde bundan söz ediliyor.
    • Kullanıcıların kurulum sırasında telemetriyi nasıl devre dışı bırakacaklarına dair yönergeler alması ve bunun isteğe bağlı olması isteniyor.
    • Bun, projenin .js giriş noktasını ve runtime’ı birlikte bundle ederek bağımlılığı olmayan çalıştırılabilir dosyalar üretme seçeneği sunuyor. Bu, kullanıcılara tek bir binary dağıtmak istendiğinde yararlı, ancak şu anda dosya boyutu hâlâ oldukça büyük (GNU/Linux’ta küçük bir proje için 90MB’tan fazla).
    • Daha küçük binary’ler elde etmek için Bun’un belirli özellikleri devre dışı bırakma seçeneği sunup sunmayacağı merak ediliyor.
    • Bun, bir Haxe target’ı olarak da deneniyor; TypeScript yerine Haxe tercih edildiğinde veya mevcut bir Haxe projesine web sunucusu eklemek istendiğinde değerlendirilebilecek bir seçenek.
  • Bun ekibine bir talep

    • Net bir destek politikası / yaşam döngüsü takvimi sunmaları isteniyor. Sürümler ve modüller arası kararlılık garantileri konusunda açıklık da önemli görülüyor.
  • Bun geliştiricisinin katılımı

    • Bir Bun geliştiricisi, soruları yanıtlamaya hazır olduğunu belirtiyor. Ayrıca Bun v1.1’in hâlâ derlenmekte olduğunu ve tamamlanmasının yaklaşık 20 dakika daha süreceğini söylüyor.
  • Bun’un kararlılığına dair soru

    • Bun, çeşitli projelerde üç kez denenmiş ancak runtime sırasında veya paket kurulumu esnasında segmentation fault yaşandığı belirtiliyor.
  • Bun’un gelir modeli ve VC finansmanı

    • Bun’un gelir modelinin ne olduğu ve VC finansmanı tükendiğinde ne olacağı soruluyor.