v2.2.0
Home

Melange

Ocaml for JavaScript developers


Melange は JavaScript を生成する OCaml コンパイラのバックエンドです。Melange は、OCaml と JavaScript の両方のエコシステムと最高の統合を提供するように努めています。Melange についてより詳しく知るには、まず入門チュートリアルを読み、詳しくは「学ぶ」セクションをご覧ください。

Features

強固な型システム

Melange は OCaml の強力な型システムを活用し、コンパイル時に多くのバグを検出します。大規模で複雑なコードベースも、メンテナンスとリファクタリングが容易になります。

エディタとツール

Melange は OCaml プラットフォームのパワーをフルに活用し、VSCode、Vim、Emacs などのエディタと統合し、タイプインスペクション、オートコンプリートなどの機能を提供します。また、OCaml で最も使用されているビルドシステムである Dune ともファーストクラスで統合されています。

JavaScript とのインテグレーション

NPM の既存の JavaScript パッケージを使用する場合でも、独自の JavaScript ライブラリをプロジェクトで使用する場合でも、Melange がカバーします。表現力豊かなバインディング言語と人間工学に基づいたコンパイルモデルにより、Melange は JavaScript エコシステムの機能を活用した堅牢なアプリケーションの構築を支援します。

安定性と業界の裏付け

Melange は数十年にわたる型システムの研究、コンパイラエンジニアリング、ツール開発の上に構築されており、洗練された開発者体験を提供します。Ahrefs のような企業では、Melange を毎日使用してユーザーにウェブアプリケーションを提供しています。

Melange とは

Melange は、モダンな JavaScript を生成し、相互運用するためのツール群です:

  • コンパイラライブラリです:コンパイラライブラリ:これらのライブラリは OCaml コンパイラライブラリをフォークしたもので、バイトコードやアセンブリとは対照的に、無駄のない JavaScript コードを生成するよう適応されています。
  • コンパイラ (melc):この実行ファイルは OCaml コードを入力として受け取り、JavaScript を生成します。Melange コンパイラライブラリに依存しています。
  • ランタイム:コンパイラが生成した JavaScript プログラムを実行するために必要な小さなコードコンポーネントです。
  • 標準ライブラリ:Melange には、データ構造、関数、JavaScript API へのバインディングなど、開発者がアプリ開発を加速させるための基礎的な要素が含まれています。
  • プリプロセッサ(melange.ppx):これは Melange プログラムの前処理を行うために設計されたメタプログラミングツールで、バインディングや型からコードを生成するような一般的なユースケースのコード生成を簡素化します。
  • プレイグラウンド (opens in a new tab):ブラウザベースのコンパイラで、Melange のコードスニペットや小さなプログラムを試したり、共有したりすることができます。

これらのコア・コンポーネントに加え、Melange をより広範な OCaml プラットフォームや OCaml エコシステム内の他のツールやライブラリに統合する取り組みも進行中です:

  • ビルドシステム:著名な OCaml ビルドシステムである Dune は、Melange をシームレスにサポートしている。
  • パッケージマネージャ:Melange は OCaml のデフォルトパッケージマネージャである opam とシームレスに統合されています。
  • パッケージリポジトリ:Melange のライブラリとツールは、opam のメインパブリックパッケージリポジトリで公開されています。
  • 構文:Melange バインディングライブラリ ReasonReact (opens in a new tab) によって React アプリケーションを完全にサポートします。
  • エディタとの統合 Melange は OCaml エディタツールと完全な互換性があり、ocamlformat や refmt のようなコードフォーマッタとも互換性があります。