- Mako là công cụ build frontend dựa trên Rust, "rất nhanh" và ở mức "production-grade"
- Ra mắt vào 2023.3 và được mã nguồn mở sau 1 năm
- Dự án được bắt đầu vì cần tốc độ build "rất nhanh"
- Cách diễn đạt "production-grade" là vì từ 2023.11.24, Mako đã được phát hành chính thức trong nội bộ Ant Group (trước đây là Alipay)
- Đã được kiểm chứng qua hàng nghìn dự án cùng nhiều gói npm và phiên bản khác nhau được sử dụng trong đó
Lý do phát triển Mako
- Năm ngoái (2023.3), đội ngũ đã khởi động 3 dự án là Rust, SSR và AIG, và chọn Rust để giải quyết vấn đề hiệu năng build
- Lý do không dùng các công cụ Rust hiện có mà quyết định tự xây là vì tính phức tạp
- Mức độ trưởng thành của thư viện cộng đồng và khả năng tương thích với yêu cầu của Ant
- Cần có quyền kiểm soát (do lý do kinh doanh nên việc tùy biến sâu là bắt buộc)
- Meta framework hiện đại không chỉ cần build mà còn cần framework ở thời gian biên dịch. Đặc biệt trong các kịch bản SSR và RSC, cần rất nhiều bước biên dịch
- Nhu cầu học Rust và phát triển năng lực của đội ngũ
- Dòng thời gian của Mako: kickoff vào 2023.3, phiên bản khả dụng đầu tiên vào 2023.7, phát hành nội bộ tại Ant vào 2023.11, và mã nguồn mở vào 2024.6
Tốc độ
- Mako đã đầu tư rất nhiều vào tốc độ. Dữ liệu benchmark như sau
- Chạy benchmark trên dự án cũng dùng để thử nghiệm Turbopack, trên Mac Book Pro M2 Max
- Bao gồm các khía cạnh như thời gian dev cold start, thời gian HMR cho root node và leaf node, thời gian production build, kích thước JS bundle, v.v.
- So với phiên bản trước, kết quả như sau
- Khi build toàn bộ dự án Ant Design Pro, Webpack mất 16 giây còn Mako mất 3.9 giây, nhanh hơn 4 lần
- Khi build toàn bộ dự án Ant Design Pro, Mako có hot update gần như theo thời gian thực
- Khi build dự án Smallfish, một framework hybrid intranet dựa trên RSC, thời gian build của dự án scaffold đã giảm từ 36.7 giây xuống 1.2 giây
- Ngoài ra, Mako cũng có tính năng SSU mang tính thử nghiệm, tương tự cách triển khai MFSU trước đây, thực hiện đóng gói và cache các dependency
- Tùy theo tỷ lệ dependency so với mã nguồn, có thể tăng tốc 10~50 lần khi hot start-up trong môi trường dev
1 bình luận
Ý kiến trên Hacker News
Có thể hiệu năng kém hơn khi so với esbuild hoặc swc
Công cụ này hỗ trợ các tính năng không tiêu chuẩn nên có thể khiến người dùng bị phụ thuộc vào một bundler cụ thể
Tính năng chính của Vite là tận dụng hệ thống plugin sẵn có của rollup
Vì tiêu đề có chữ "Rust" nên tưởng đây là trình biên dịch Rust cho web
Không phải nhà phát triển web nên vẫn chưa rõ bundler thực sự làm gì
Không phải nhà phát triển web nhưng vẫn thường xuyên làm web app
Rspack (ByteDance) đã phát hành phiên bản 1.0
Một bundler JavaScript dựa trên Rust thú vị khác là Oxid / OXC
Tò mò không biết điều gì sẽ xảy ra khi bundling chạm đến giới hạn của nó
Tò mò không biết nó có liên quan đến MakoTemplates hay không