SultanC – アラビア語を第一言語とするシステムプログラミング言語
SultanC – an Arabic-first systems programming language (github.com)
要約
SultanCは、アラビア語と英語の両方を同等に扱える、自己ホスト型のシステムプログラミング言語です。所有権管理による安全性、代数的データ型、パターンマッチング、スレッド機能を備えています。コンパイラ自体もSultanCで書かれており、自己コンパイル能力を持ち、バイト単位での自己ホストチェックが可能です。
全文翻訳
SultanC
アラビア語で書かれた、自己ホスト型のシステムプログラミング言語。
[画像: Self-hosted] [画像: Linux] [画像: macOS] [画像: Windows] [画像: FreeBSD, Android, WASI] [画像: Language] [画像: License]
インストール · 言語 · 標準ライブラリ · ターゲット · ドキュメント
SultanCは、所有権を意識した安全性、代数的データ型、パターンマッチング、スレッドを備えたネイティブシステム言語です。そのキーワードはアラビア語と英語の両方に存在し、同じ構文の等価で交換可能な表面として機能します。コンパイラはSultanCで書かれており、自己コンパイルします。すべてのビルドはバイト単位のセルフホストチェック(Stage3 == Stage4)に合格します。
English
العربية
def main(): int {
let x: int = 40;
let y: int = 2;
return x + y;
}
عرف الرئيسية(): عدد {
دع س: عدد = 40;
دع ص: عدد = 2;
أرجع س + ص;
}
同じAST、同じセマンティクス、同じ診断メッセージ:キーワードと識別子のみが変更されます。
インストール
git clone https://github.com/sultan-language/sultanc.git && cd sultanc
./build.sh # C Stage0 -> Stage1 -> Stage2 (LLVMが必要)
sudo cp build/sultanc /usr/local/bin/sultanc
| ルート | コマンド | 必要条件 |
|---|---|---|
| Cブートストラップ (デフォルト) | ./build.sh | Cコンパイラ + LLVM |
| WebAssemblyシード | ./build.sh --bootstrap=wasm | Cコンパイラのみ |
| 既存のコンパイラからの再ビルド | ./build.sh --bootstrap=existing | ビルド済みのbuild/sultanc (約1分) |
| LLVMバックエンド内蔵 | ./build.sh --enable-llvm | LLVM 19–23 |
| セルフホストチェック | ./build.sh verify | Stage3 == Stage4、バイト単位で一致 |
macOS (Homebrew LLVM): ビルド前に
export LLVM_CONFIG="$(brew --prefix llvm)/bin/llvm-config"を実行してください。Windows:./build.sh --bootstrap=c --enable-llvm --backend=llvm。
sultanc main.sn -o app && ./app
言語
- 所有権、借用、ムーブチェック:コード生成前に静的に検証されます
- 代数的データ型とパターンマッチング:網羅性チェック付き
- ジェネリクスとコンパイル時評価 (
وقت_الترجمة) - エラーを値として扱う:
نتيجة(結果)型、؟(伝播)演算子、إنهيار(パニック) - スレッドと同期:スレッドの生成/結合、アトミック操作、
Arc、Mutex、Condvar、Once、チャネル。スレッドがキャプチャできるものに対するコンパイル時チェック付き - アラビア語と英語:すべての診断メッセージを含む、等価なソースサーフェスとして機能
- 検証済み中間表現 (MSIR):すべてのパスはバックエンドに到達する前にチェッカーを通過します
- ネイティブ出力:ELF、Mach-O、PE/COFF、WebAssembly。コンパイラ独自のリンカを使用。LinuxとFreeBSDではlibcは不要です
sultanc check main.sn # 型チェックのみ
sultanc run main.sn # インタプリタで実行、コンパイルなし
sultanc --backend=llvm main.sn -o app # LLVMバックエンド (O2)
sultanc --target=aarch64-linux-gnu main.sn # クロスコンパイル
sultanc --lang=en check main.sn # 英語の診断メッセージ (デフォルトはアラビア語)
sultanc --diagnostic-format=json check main.sn
sultanc targets # すべてのターゲットをリスト表示
インタプリタは、Linux、macOS、Windows、FreeBSD上で、コンパイラと同じMSIRと標準ライブラリを実行します。
標準ライブラリ
| エリア | ハイライト |
|---|---|
| テキストとフォーマット | UTF-8テキスト、Unicodeセグメンテーションと正規化、std.fmt (Rustスタイルのフォーマット文字列、コンパイル時にチェック) |
| コレクション | 容量付きベクタ、マップ、セット、ソート |
| ファイルとプロセス | ファイル、ディレクトリ、シンボリックリンク、ファイルロック、ストリーミング子プロセス、環境変数 |
| ネットワーキング | TCP、UDP、Unixソケット、DNS、TLS 1.3、HTTP/1.1およびHTTP/2 (クライアントおよびサーバー) |
| データフォーマット | JSON、TOML、CSV、zip、tar |
| 圧縮 | gzip/deflate、zstd、xz/LZMA2 |
| 暗号化とハッシュ | SHA-2、X25519、Ed25519、ChaCha20-Poly1305、AES-GCM、XXH64、CRC |
| 並行処理 | std.thread、std.sync (アトミック操作、Arc、Mutex、RwLock、Condvar、Once、チャネル) |
RustおよびGoとの比較を含む、完全なリストについては標準ライブラリの網羅率を参照してください。
ターゲット
| OS | アーキテクチャ |
|---|---|
| Linux | x86_64, aarch64, riscv64, loongarch64, ppc64le, s390x, mips64el, sparcv9, i686, armv7 |
| macOS | arm64, x86_64 |
| Windows | x64, arm64 |
| FreeBSD | x86_64, aarch64, riscv64 |
| Android | x86_64, aarch64, armv7 |
| WebAssembly | WASI (wasm32); フリースタンディング wasm32/wasm64 |
x86_64およびarm64用のネイティブバックエンドがあります。その他のターゲットはすべてLLVMを経由します。ターゲットを参照してください。
ドキュメント
| アーキテクチャとMSIR | ソースコードがネイティブコードになるまで |
| カーネルアーキテクチャ | コンパイラ内部構造 |
| ブートストラップ | C Stage0とWebAssemblyシード |
| 安全性フロー | 所有権と借用チェック |
| 型システム | 型、推論、ジェネリクス、キャスト |
| 所有権と破棄 | ムーブ、ドロップ、一時変数、容量 |
| エラー処理 | 結果型、؟、パニック、ローカライズされたメッセージ |
| 並行処理 | スレッド、アトミック操作、同期 |
| フォーマット | std.fmt |
| インタプリタ | sultanc run |
| プラットフォーム依存性 | 各OSで標準ライブラリが必要とするもの |
| アラビア語の用語集 | 標準的なアラビア語のコンパイラ語彙 |
| 例 · テスト | examples/ ディレクトリとテストランナー |
状況
x86_64-linux および arm64-darwin でのセルフホストが完了しており、C Stage0 および WebAssembly シードからのコンパイラ世代間でのバイト同一の収束によって検証されています。CIはLinux、macOS、Windows (x64およびarm64) ですべてのルートをビルドしています。