10 ポイント 投稿者 xguru 2024-07-04 | 1件のコメント | WhatsAppで共有
  • MakoはRustベースの「非常に高速」かつ「production-grade」なフロントエンドビルドツール
  • 2023年3月にリリースされ、1年でオープンソース化
  • 「非常に高速」なビルド速度が必要だったため、このプロジェクトを開始
  • 「production-grade」という表現は、2023年11月24日からMakoがAnt Group(旧Alipay)社内で正式リリースされたことによるもの
    • 数千のプロジェクトと、そこで使われた多様なnpmパッケージおよびバージョンで検証済み

Makoの開発理由

  • 昨年(2023年3月)、チームでRust、SSR、AIGの3つのプロジェクトを開始し、ビルド性能の問題を解決するためにRustを選択
  • 既存のRustツールを使わず自前で作ることにした理由は複雑さにある
    1. コミュニティライブラリの成熟度とAntの要件との互換性
    2. 制御権を持つ必要があること(ビジネス上の理由で多くのカスタマイズが必須)
    3. モダンなメタフレームワークはビルド以外にもコンパイル時フレームワークを必要とする。特にSSRおよびRSCのシナリオでは多くのコンパイルが必要
    4. Rustを学び、チームが成長する必要性
  • Makoのタイムライン:2023年3月にキックオフ、2023年7月に最初の実用版、2023年11月にAntで社内リリース、2024年6月にオープンソース化

速度

  • Makoは速度に多くの努力を注いでおり、ベンチマークデータは次のとおり
    • Mac Book Pro M2 Maxで、Turbopackもテストしているプロジェクトを使ってベンチマークを実行
    • dev cold start時間、root nodeとleaf nodeのHMR時間、production build時間、JS bundleサイズなどの軸を含む
  • 以前のバージョンと比べると次のとおり
    • Ant Design Proの全プロジェクトをビルドした場合、Webpackは16秒、Makoは3.9秒で4倍高速化
    • Ant Design Proの全プロジェクトをビルドした場合、Makoはほぼリアルタイムのhot update
    • RSCベースのイントラネットHybridフレームワークSmallfishプロジェクトのビルドでは、スキャフォールドプロジェクトのビルド時間が36.7秒から1.2秒に短縮
  • またMakoには実験的なSSU機能もあり、従来のMFSU実装と同様に依存関係のパッケージングとキャッシュを行う
    • ソースコードに対する依存関係の比率に応じて、Dev hot start-up時に10〜50倍の高速化が可能

1件のコメント

 
xguru 2024-07-04
Hacker Newsの意見
  • esbuildやswcと比べると性能で劣る可能性がある

    • JavaScriptエコシステムでは多くのツールが遅くバグも多いため、代替が必要
    • ネイティブツールと比べると、うまみは徐々に薄れていく
  • このツールは非標準機能をサポートしており、特定のバンドラーに依存する可能性がある

    • バンドラーなしでも動くプロジェクトのほうが望ましい
    • バンドラーは最適化段階として使うのがよい
  • Viteの主要な機能は、rollupの既存のプラグインシステムを活用していること

    • 既存エコシステム向けの互換レイヤーを構築する計画があるのか気になる
    • 他のビルドツールもこれを行っている(例: rspackはwebpackプラグインを使用、farmはviteプラグインを使用)
  • タイトルに"Rust"とあったので、Web向けのRustコンパイラかと思った

    • JavaScript向けのまた別のバンドラー
    • Rustで構築されている
  • Web開発者ではないので、バンドラーが実際に何をするのか混乱している

    • バンドラーが正確に何をするのかについての情報が必要
    • なぜ速度が重視されるのか気になる(例: パッケージのバージョン解決?)
  • Web開発者ではないが、Webアプリは定期的に開発している

    • 速い開発サイクルにおいて、バンドラーの目的が何なのか気になる
    • Webアプリを速く読み込ませるには、変更された部分だけを再ダウンロードするのがよい
    • バンドルしないほうがよい
  • Rspack(ByteDance)が1.0バージョンをリリースした

    • Farmもある
    • Ant Groupが作ったもの
    • Rustで構築されたビルドツールは数多くある
    • Turbopackはバンドリングの完全な再構築を目指している
    • RolldownはRustベースのrollup再実装のように見える
  • もう1つ興味深いRustベースのJavaScriptバンドラーはOxid / OXC

  • バンドリングの限界に達したらどうなるのか気になる

    • esbuildのようにms単位の性能に到達すれば、創造的な作業ができる
    • 各ブラウザに小さなWASM版のmakoやバンドラーがあればとても面白いはず
    • 多くの労力が注がれているように見える
  • MakoTemplatesと関係があるのか気になる