- Mako é uma ferramenta de build frontend baseada em Rust, "muito rápida" e "production-grade"
- Foi lançada em 2023.3 e se tornou open source um ano depois
- O projeto começou por causa da necessidade de uma velocidade de build "muito rápida"
- A expressão "production-grade" é usada porque, desde 24/11/2023, o Mako foi lançado oficialmente para uso interno no Ant Group (antigo Alipay)
- Foi validado com milhares de projetos e com diversos pacotes npm e versões usados neles
Motivos para desenvolver o Mako
- No ano passado (2023.3), a equipe iniciou três projetos: Rust, SSR e AIG, e escolheu Rust para resolver problemas de desempenho de build
- Os motivos para não usar ferramentas Rust existentes e decidir criar a própria foram a complexidade
- a maturidade das bibliotecas da comunidade e a compatibilidade com os requisitos da Ant
- a necessidade de ter controle (por razões de negócio, muita customização é indispensável)
- frameworks meta modernos exigem, além do build, um framework em tempo de compilação. Especialmente em cenários de SSR e RSC, é necessária muita compilação
- a necessidade de aprender Rust e de fazer a equipe evoluir
- Linha do tempo do Mako: kickoff em 2023.3, primeira versão utilizável em 2023.7, lançamento interno na Ant em 2023.11 e open source em 2024.6
Velocidade
- O Mako dedicou muito esforço à velocidade. Os dados de benchmark são os seguintes
- O benchmark foi executado em um projeto que também testa o Turbopack, em um Mac Book Pro M2 Max
- Inclui dimensões como tempo de cold start em dev, tempo de HMR em root node e leaf node, tempo de build de produção e tamanho do bundle JS
- Em comparação com versões anteriores, os resultados foram os seguintes
- Ao compilar o projeto completo do Ant Design Pro, o Webpack leva 16 segundos e o Mako 3,9 segundos, uma melhora de velocidade de 4x
- Ao compilar o projeto completo do Ant Design Pro, o Mako oferece hot update praticamente em tempo real
- Ao compilar o projeto Smallfish, um framework híbrido de intranet baseado em RSC, o tempo de build do projeto scaffold foi reduzido de 36,7 segundos para 1,2 segundo
- Além disso, o Mako também tem um recurso experimental chamado SSU, que faz empacotamento e cache de dependências de forma semelhante à implementação anterior do MFSU
- Dependendo da proporção entre código-fonte e dependências, pode haver um ganho de 10x a 50x na velocidade de hot start-up em dev
1 comentários
Opiniões no Hacker News
O desempenho pode ser inferior em comparação com esbuild ou swc
Esta ferramenta oferece suporte a recursos não padronizados, o que pode criar dependência de um bundler específico
O principal recurso do Vite é aproveitar o sistema de plugins existente do rollup
Como havia "Rust" no título, pensei que fosse um compilador Rust para a web
Como não sou desenvolvedor web, fico confuso sobre o que um bundler realmente faz
Não sou desenvolvedor web, mas desenvolvo apps web regularmente
O Rspack (ByteDance) lançou a versão 1.0
Outro bundler JavaScript interessante baseado em Rust é o Oxid / OXC
Fico curioso sobre o que acontece quando chegarmos ao limite do bundling
Fico me perguntando se tem relação com MakoTemplates