10 poin oleh xguru 2024-07-04 | 1 komentar | Bagikan ke WhatsApp
  • Mako adalah alat build frontend berbasis Rust yang "sangat cepat" dan "production-grade"
  • Dirilis pada 2023.3, lalu menjadi open source setahun kemudian
  • Proyek ini dimulai karena dibutuhkan kecepatan build yang "sangat cepat"
  • Istilah "production-grade" digunakan karena sejak 2023.11.24, Mako telah dirilis resmi secara internal di Ant Group (sebelumnya Alipay)
    • Sudah tervalidasi lewat ribuan proyek serta beragam paket npm dan versinya yang digunakan di dalamnya

Alasan pengembangan Mako

  • Tahun lalu (2023.3), tim memulai tiga proyek: Rust, SSR, dan AIG, lalu memilih Rust untuk mengatasi masalah performa build
  • Alasan tidak memakai tool Rust yang sudah ada dan memilih membuat sendiri adalah kompleksitas
    1. Tingkat kematangan library komunitas serta kecocokannya dengan kebutuhan Ant
    2. Perlunya memiliki kontrol penuh (karena banyak kustomisasi yang wajib dilakukan untuk alasan bisnis)
    3. Meta-framework modern membutuhkan framework pada waktu kompilasi selain build. Terutama pada skenario SSR dan RSC, dibutuhkan banyak kompilasi
    4. Kebutuhan untuk mempelajari Rust dan mengembangkan kapabilitas tim
  • Timeline Mako: kickoff pada 2023.3, versi pertama yang bisa digunakan pada 2023.7, dirilis internal di Ant pada 2023.11, dan menjadi open source pada 2024.6

Kecepatan

  • Mako menaruh banyak upaya pada kecepatan. Data benchmark-nya sebagai berikut
    • Benchmark dijalankan pada proyek yang juga digunakan untuk menguji Turbopack di Mac Book Pro M2 Max
    • Mencakup dimensi seperti waktu dev cold start, waktu HMR untuk root node dan leaf node, waktu production build, ukuran JS bundle, dan lainnya
  • Jika dibandingkan dengan versi sebelumnya
    • Saat membangun seluruh proyek Ant Design Pro, Webpack membutuhkan 16 detik, sedangkan Mako 3,9 detik, atau 4x lebih cepat
    • Saat membangun seluruh proyek Ant Design Pro, Mako menghadirkan hot update yang nyaris real-time
    • Saat membangun proyek Smallfish, framework hybrid intranet berbasis RSC, waktu build proyek scaffold dipangkas dari 36,7 detik menjadi 1,2 detik
  • Selain itu, Mako juga memiliki fitur SSU eksperimental, yang mirip dengan implementasi MFSU sebelumnya, untuk melakukan packaging dan caching dependensi
    • Tergantung pada rasio dependensi terhadap source code, kecepatan dev hot start-up bisa meningkat 10~50x

1 komentar

 
xguru 2024-07-04
Opini Hacker News
  • Performanya bisa kalah dibandingkan esbuild atau swc

    • Di ekosistem JavaScript, banyak alat yang lambat dan penuh bug sehingga dibutuhkan alternatif
    • Dibandingkan alat native, nilai tambahnya makin berkurang
  • Alat ini mendukung fitur nonstandar sehingga bisa membuat pengguna terikat pada bundler tertentu

    • Proyek yang bisa berjalan tanpa bundler lebih baik
    • Bundler sebaiknya digunakan sebagai tahap optimasi
  • Fitur utama Vite adalah memanfaatkan sistem plugin rollup yang sudah ada

    • Penasaran apakah ada rencana membangun lapisan kompatibilitas untuk ekosistem yang sudah ada
    • Alat build lain juga melakukan ini (misalnya: rspack memakai plugin webpack, farm memakai plugin vite)
  • Karena ada kata "Rust" di judul, saya kira ini adalah compiler Rust untuk web

    • Ternyata ini bundler JavaScript lainnya
    • Dibangun dengan Rust
  • Saya bukan pengembang web, jadi bingung apa sebenarnya yang dilakukan bundler

    • Butuh informasi tentang apa tepatnya fungsi bundler
    • Penasaran kenapa fokusnya pada kecepatan (misalnya: penyelesaian versi paket?)
  • Saya bukan pengembang web, tetapi rutin mengembangkan aplikasi web

    • Penasaran apa tujuan bundler dalam siklus pengembangan cepat
    • Agar aplikasi web dimuat cepat, lebih baik hanya mengunduh ulang bagian yang berubah
    • Tidak melakukan bundling tampaknya lebih baik
  • Rspack (ByteDance) telah merilis versi 1.0

    • Ada juga Farm
    • Dibuat oleh Ant Group
    • Ada banyak alat build berbasis Rust
    • Turbopack menargetkan pembangunan ulang total terhadap bundling
    • Rolldown tampaknya merupakan implementasi ulang roll-up berbasis Rust
  • Bundler JavaScript berbasis Rust lain yang menarik adalah Oxid / OXC

  • Penasaran apa yang terjadi ketika bundling mencapai batasnya

    • Jika mencapai performa tingkat milidetik seperti esbuild, kita bisa melakukan hal-hal kreatif
    • Akan sangat menarik jika setiap browser memiliki WASM mako kecil atau bundler serupa
    • Terlihat seperti sudah ada banyak upaya yang dicurahkan
  • Penasaran apakah ini ada hubungannya dengan MakoTemplates