6 poin oleh GN⁺ 2024-04-02 | 1 komentar | Bagikan ke WhatsApp

Dukungan Windows

  • Bun kini dapat dijalankan di Windows 10 dan yang lebih baru
  • Lulus 98% dari test suite Bun di macOS dan Linux
  • Menyertakan package manager bawaan yang kompatibel dengan npm, dengan instalasi aplikasi Vite React 18x lebih cepat daripada yarn dan 30x lebih cepat daripada npm
  • Mendukung eksekusi skrip yang lebih cepat di Windows melalui format file .bunx
  • Mengoptimalkan API Node.js dengan menggunakan system call tercepat di Windows
    • Contoh: fs.readdir() 58% lebih cepat daripada Node.js

Bun adalah runtime JavaScript

  • Mendukung JavaScript, TypeScript, dan JSX
  • Alat command line seperti tsc hingga 2x lebih cepat dibanding Bun 1.0
  • Bun Shell kini menjadi shell lintas platform yang juga tersedia di Windows
    • Termasuk utilitas inti seperti ls, rm, dan cat
    • Shell dapat dijalankan dari JavaScript dan TypeScript menggunakan API Bun.$
  • Bun.Glob
    • Menyediakan Glob API bawaan untuk pencocokan file dan string
    • Mirip dengan fast-glob dan micromatch, tetapi pencocokan string 3x lebih cepat
  • Bun.Semver
  • API Semver baru untuk parsing dan pengurutan string semver
  • Mirip dengan paket node-semver, tetapi 20x lebih cepat
  • Bun.stringWidth()
    • API baru untuk mengukur lebar visual string di terminal
    • Mendukung ANSI escape code, karakter full-width, grapheme, dan emoji
  • server.url : URL server HTTP yang dibuat dengan Bun.serve() kini bisa didapatkan melalui properti server.url
  • server.requestIP() : Alamat IP dari permintaan HTTP bisa didapatkan melalui metode server.requestIP()
  • subprocess.resourceUsage() : Penggunaan CPU dan memori dari subprocess yang dibuat dengan Bun.spawn() dapat diakses melalui metode resourceUsage()
  • Peningkatan kompatibilitas Node.js
    • Berbagai API ditingkatkan, termasuk API klien node:http2, kompatibilitas Date.parse(), dan dukungan fs.readdir() rekursif
    • IPC antara Bun dan Node.js dimungkinkan
    • Juga mendukung beberapa API Node.js yang tidak terdokumentasi
  • Web API : Mendukung Web standard API seperti WebSocket, performance.mark(), fetch() dengan kompresi Brotli, dan URL.canParse()

Bun adalah package manager yang kompatibel dengan npm

  • Dengan bun install, paket npm bisa diinstal hingga 29x lebih cepat
  • Peningkatan fitur seperti lifecycle script, trustedDependencies, dan bun pm trust

Bun adalah bundler JavaScript

  • Mendukung bundling kode yang dapat dijalankan di Node.js dengan bun build --target=node
  • File TypeScript dan JavaScript dapat dikompilasi menjadi executable satu file dengan flag --compile

Bun adalah test runner

  • Menyediakan modul pengujian bawaan dengan API yang sama seperti Jest
  • Menambahkan matcher expect() baru dan dukungan module mocking

Dukungan SQLite bawaan

  • Mendukung SQLite dengan API yang terinspirasi dari better-sqlite3
  • Peningkatan pada multi-statement query, pesan error yang lebih detail, import database, dan dukungan bawaan

Opini GN⁺

  • Bun adalah toolkit JavaScript yang sangat meningkatkan performa sambil mempertahankan kompatibilitas dengan Node.js, dan dukungan Windows memungkinkannya menjangkau komunitas developer yang lebih luas.
  • Test runner bawaan dan dukungan SQLite memungkinkan developer bekerja lebih efisien tanpa alat tambahan.
  • Performa cepat Bun dan developer experience yang ditingkatkan bisa sangat menonjol terutama pada proyek berskala besar atau aplikasi yang sensitif terhadap performa.
  • Terlepas dari berbagai fitur dan peningkatan yang ditawarkan Bun, pengembangan berkelanjutan dan masukan komunitas tetap diperlukan untuk mencapai kompatibilitas penuh dengan ekosistem paket Node.js yang sangat luas.
  • Diperlukan analisis tambahan tentang bagaimana fitur-fitur baru Bun dapat bersaing atau berkolaborasi dengan alat berbasis Node.js yang sudah ada.

1 komentar

 
GN⁺ 2024-04-02
Komentar Hacker News
  • Daftar perubahan Bun yang mengesankan

    • Bun terlihat sebagai alternatif ideal untuk Node.js, dan meluangkan waktu untuk dukungan Windows adalah hal yang sering terabaikan di dunia pengembangan web.
    • Ada pertanyaan apakah pernyataan "Bun on Windows passes 98% of our own test suite for Bun on macOS and Linux." berarti versi Windows dirilis dengan menyertakan tes yang gagal, atau hanya menimbulkan salah paham.
  • Fitur makro Bun

    • Mengetahui bahwa Bun memiliki fitur makro dasar yang menjalankan kode saat waktu bundling. Ini adalah fitur yang sangat menarik.
  • Pertanyaan tentang alasan menggunakan Bun dan Deno

    • Menyadari bahwa kompatibilitas dengan Node.js itu penting bagi Bun dan Deno, tetapi ada pertanyaan tentang keberlanjutan produk ketika pendanaannya berasal dari VC.
    • Meski Bun dan Deno berada dalam ekosistem seperti Node.js yang juga agak tidak sempurna, tetap tidak yakin apa alasan yang benar-benar jelas untuk menggunakannya.
  • Penggemar berat Bun

    • Awalnya mulai menggunakan Bun karena kompatibilitasnya dengan TypeScript, lalu terus memakainya karena performanya.
    • Sudah mencoba Deno tetapi terasa sulit digunakan, sementara Bun mudah diintegrasikan dan memberikan pengalaman yang sangat menyenangkan.
  • Penilaian terhadap rilis baru Bun

    • Sudah menonton video Bun, tetapi grafiknya tidak jelas sehingga tidak tahu apakah perbandingannya dengan versi Bun sebelumnya atau dengan Node.js.
    • Pengalaman menggunakan Bun untuk proyek sampingan cukup baik, dan API bawaannya bekerja dengan baik. Berharap Deno dan Node.js juga mengadopsi sebagian API tersebut.
    • Bun secara default mengumpulkan sebagian telemetri. Hal ini tidak diberitahukan di skrip instalasi dan hanya disebutkan dalam dokumentasi Bunfile.
    • Berharap pengguna diberi petunjuk tentang cara menonaktifkan telemetri saat instalasi, dan menjadikannya sesuatu yang bersifat opsional.
    • Bun menyediakan opsi untuk membundel entry point .js proyek dan runtime menjadi executable tanpa dependensi. Ini berguna saat ingin mendistribusikan satu biner kepada pengguna, tetapi saat ini ukuran filenya masih cukup besar (lebih dari 90MB untuk proyek kecil di GNU/Linux).
    • Ada pertanyaan apakah Bun akan menyediakan opsi untuk menonaktifkan fitur tertentu agar bisa menghasilkan biner yang lebih kecil.
    • Sedang mencoba menggunakan Bun sebagai target Haxe, dan ini patut dipertimbangkan jika lebih menyukai Haxe daripada TypeScript atau ingin menambahkan web server ke proyek Haxe yang sudah ada.
  • Permintaan kepada tim Bun

    • Ada permintaan agar disediakan kebijakan dukungan/timeline siklus hidup yang jelas. Kejelasan tentang jaminan stabilitas antar versi dan modul juga penting.
  • Partisipasi pengembang Bun

    • Seorang pengembang Bun menyatakan siap menjawab pertanyaan. Disebutkan juga bahwa Bun v1.1 masih sedang dikompilasi dan akan butuh sekitar 20 menit lagi hingga selesai.
  • Pertanyaan tentang stabilitas Bun

    • Sudah tiga kali mencoba Bun di beberapa proyek, tetapi mengalami segmentation fault saat runtime atau ketika menginstal paket.
  • Model pendapatan Bun dan pendanaan VC

    • Ada pertanyaan tentang apa model pendapatan Bun dan apa yang akan terjadi jika pendanaan VC habis.