Slintは「.slint」という独自の宣言的DSLでUIを記述し、Rust・C++・Pythonなどのビジネスロジックと接続できるGUIツールキットです。UI定義はコンパイラでネイティブコードに変換され、組み込み機器からデスクトップ、Webまで同じ記法で動作します。本体はRust製のワークスペースで、言語ごとのバインディングやLSPサーバー、ビューアなど開発ツール群も同梱されています。
UIは.slintファイルに書き、internal/compilerが構文解析してASTを組み立てます。実行方式は2通りあり、ビルド時にネイティブコードへ静的コンパイルする方式と、internal/interpreterで動的に読み込む方式を選べます。読み込み方式はビューアやPython・Node APIで使われます。描画はinternal/backends配下のwinit・qt・linuxkmsなどのバックエンドと、internal/renderers配下のfemtovg・skia・softwareなどのレンダラーを、Cargo featureで組み合わせて選びます。api/cpp・api/node・api/rs/slintなどの言語バインディングは、このコア群を共通基盤として包み、同じコンパイラ出力を各言語のオブジェクトへ橋渡しします。開発体験はtools/lspのLSPサーバー、tools/viewerのビューア、internal/live-previewのライブプレビューで補強され、.slintファイルの変更をエディタ上で即時確認できます。
- STEP 01
クローン直後、api/cpp・api/node・api/rs/slintなどの言語別ディレクトリとtools/lsp・tools/viewerの開発ツールが並ぶ構成を確認できます。
- STEP 02
Rust版はcargo buildを実行すると、Cargo.tomlのdefault-membersに載ったcrateだけが対象になります。
- STEP 03
tools/viewerのビューアに.slintファイルを渡すと、README記載のHello Worldのようなネイティブウィンドウが開きます。
- STEP 04
Node.js版はapi/nodeがnapi経由でネイティブバイナリを生成するため、初回installはRustツールチェーンのビルドを伴い時間がかかります。
- STEP 05
Python版はapi/python/slintを導入すると、slint.loaderで.slintファイルをPythonクラスとして直接読み込めます。
- STEP 06
LSPサーバーtools/lspをエディタに設定すると、補完とライブプレビューが使えます。ただしQtバックエンドなどは別途システムライブラリの用意が必要です。
実機で得られるのは、.slintで書いたUIをRust・C++・Pythonなどのビジネスロジックと結びつけたネイティブGUIアプリ本体です。加えてtools/viewerのプレビュー実行結果、LSPによるエディタ補完、napi・pypi・crates.io向けの各言語パッケージも手に入ります。
巨大なモノレポで、api/cpp・internal/renderers/skiaなどネイティブ依存のビルドには相応の時間と環境準備が要ります。
ライセンスはGPL-3.0-only・独自ロイヤリティフリーライセンス・独自ソフトウェアライセンスの三択で、商用利用時は選択を確認する必要があります。
Node.jsとPythonのAPIはREADMEで「Beta」と明記されており、Rust・C++版より変更の余地があります。
LinuxKMSバックエンドのlibseat・libinput連携など、機能フラグの組み合わせが複雑で挙動差分が生じやすい設計です。
組み込み機器からデスクトップ、Webまで同じUI記述で展開したいRust・C++・Pythonなどの開発者に向いています。1.19.0という安定したバージョン番号、多数のCIワークフロー、各言語の公式ドキュメントとexamplesが揃っている点から、実際に動かさなくても機能範囲と成熟度の判断は十分できます。ただし商用ライセンスの選択やネイティブ依存のビルド環境は、導入前に自分の目で確認した方が安全です。