- Mako, Rust tabanlı "çok hızlı" ve "production-grade" bir frontend build aracı
- 2023.3'te yayımlandı ve 1 yıl sonra açık kaynak oldu
- Proje, "çok hızlı" build hızına ihtiyaç duyulduğu için başlatıldı
- "production-grade" ifadesi, Mako'nun 2023.11.24'ten itibaren Ant Group'un (eski adıyla Alipay) içinde resmî olarak kullanıma sunulmuş olmasından geliyor
- Binlerce proje ile bunlarda kullanılan çeşitli npm paketleri ve sürümleri üzerinden doğrulandı
Mako neden geliştirildi
- Geçen yıl (2023.3) ekip Rust, SSR ve AIG olmak üzere 3 projeye başladı; build performansı sorununu çözmek için Rust seçildi
- Mevcut Rust araçlarını kullanmak yerine doğrudan kendilerinin geliştirmeyi seçmesinin nedeni karmaşıklıktı
- Topluluk kütüphanelerinin olgunluk seviyesi ve Ant'in gereksinimleriyle uyumluluğu
- Kontrol sahibi olma ihtiyacı (iş gerekçeleri nedeniyle yoğun özelleştirme zorunluydu)
- Modern meta framework'ler, build'in ötesinde derleme zamanı framework'lerine de ihtiyaç duyuyor. Özellikle SSR ve RSC senaryolarında çok fazla derleme gerekiyor
- Rust öğrenme ve ekibin büyüme ihtiyacı
- Mako'nun zaman çizelgesi: 2023.3'te kickoff, 2023.7'de ilk kullanılabilir sürüm, 2023.11'de Ant içinde dahili yayın, 2024.6'da açık kaynak
Hız
- Mako hız için büyük çaba harcadı. Benchmark verileri şöyle
- Benchmark, Mac Book Pro M2 Max üzerinde Turbopack'in de test edildiği projede çalıştırıldı
- dev cold start süresi, root node ve leaf node HMR süresi, production build süresi, JS bundle boyutu gibi boyutları içeriyor
- Önceki sürümle karşılaştırıldığında sonuçlar şöyle
- Ant Design Pro tam proje build'inde Webpack 16 saniye, Mako 3,9 saniye; 4 kat hızlanma
- Ant Design Pro tam proje build'inde Mako neredeyse gerçek zamanlı hot update sunuyor
- RSC tabanlı intranet hybrid framework Smallfish projesinde, scaffold projesinin build süresi 36,7 saniyeden 1,2 saniyeye düştü
- Ayrıca Mako'nun deneysel bir SSU özelliği de var; önceki MFSU implementasyonuna benzer şekilde bağımlılık paketleme ve caching yapıyor
- Kaynak koda kıyasla bağımlılık oranına bağlı olarak Dev hot start-up sırasında 10 ila 50 kat hızlanma sağlayabiliyor
1 yorum
Hacker News görüşleri
esbuild veya swc ile karşılaştırıldığında performansı daha düşük olabilir
Bu araç standart dışı özellikleri destekleyerek belirli bir bundler'a bağımlılık yaratabilir
Vite'ın ana özelliği, rollup'ın mevcut eklenti sisteminden yararlanması
Başlıkta "Rust" yazdığı için bunun web için bir Rust derleyicisi olduğunu sandım
Web geliştiricisi olmadığım için bundler'ın gerçekte ne yaptığını anlamakta zorlanıyorum
Web geliştiricisi değilim ama düzenli olarak web uygulamaları geliştiriyorum
Rspack (ByteDance) 1.0 sürümünü yayınladı
Bir diğer ilginç Rust tabanlı JavaScript bundler'ı Oxid / OXC
Bundling sınırına ulaşıldığında ne olacağını merak ediyorum
Bunun MakoTemplates ile ilgili olup olmadığını merak ediyorum