このプロジェクトについて

Slateは、構造にインデントを使用し、漸進的型チェッカーを備えた動的型付け言語です。本物のイベントループ上でのasync/await、ジェネレータ、モジュール、パターンマッチング、プロトタイプではなくクラス、および代数的データ型をサポートしています。APIサーバー向けに設計されており、HTTP(llhttp経由)、HTTP/2(nghttp2経由)、TCP、TLS、ファイルシステム操作、プロセス、正規表現、JSONを処理します。 この言語はJavaScriptにコンパイルされるため、同一のプログラムを独自のインタプリタ、Node.js、QuickJS、またはLathフレームワークを使用してブラウザで実行できます。`slate js`コマンドは、ランタイムとフレームワークを含む単一の自己完結型JavaScriptファイルを出力し、バンドラーやnode_modulesを不要にします。 漸進的型付けにより、型注釈は任意となります。型宣言はパターンマッチングとランタイムチェックの両方に利用されます。機能には、後置の`match`式、ジェネリック型、Promiseを返すasync関数が含まれます。APIサーバーでは、組み込みのルーターおよびハンドラーシステムを使用します。スクリプトはシバン(shebang)による実行をサポートしています。 実装にはスタックマシンと、クロージャのサイクルに対応するためのトレーシングガベージコレクションが採用されており、イベントループはlibuvに基づいて構築されています。macOS Apple siliconではHomebrew経由で利用可能で、その他のプラットフォームではソースからのビルドが必要です。ドキュメントには言語およびライブラリのリファレンスが含まれています。 特筆すべき除外事項として、リテレートプログラミングのサポートや、JavaScriptバックエンド向けの一部の標準ライブラリモジュールが挙げられます。また、`defer`文はガベージコレクションの関係で意図的に除外されています。