HN 日本語サマリー

← 一覧へ戻る
プログラミング

SultanC – アラビア語を第一言語とするシステムプログラミング言語

SultanC – an Arabic-first systems programming language (github.com)

14 pointsby supax2 コメント

要約

SultanCは、アラビア語と英語の両方を同等に扱える、自己ホスト型のシステムプログラミング言語です。所有権管理による安全性、代数的データ型、パターンマッチング、スレッド機能を備えています。コンパイラ自体もSultanCで書かれており、自己コンパイル能力を持ち、バイト単位での自己ホストチェックが可能です。

全文翻訳

SultanC

[画像: SultanC]

アラビア語で書かれた、自己ホスト型のシステムプログラミング言語。

[画像: CI]

[画像: 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.shCコンパイラ + LLVM
WebAssemblyシード./build.sh --bootstrap=wasmCコンパイラのみ
既存のコンパイラからの再ビルド./build.sh --bootstrap=existingビルド済みのbuild/sultanc (約1分)
LLVMバックエンド内蔵./build.sh --enable-llvmLLVM 19–23
セルフホストチェック./build.sh verifyStage3 == 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アーキテクチャ
Linuxx86_64, aarch64, riscv64, loongarch64, ppc64le, s390x, mips64el, sparcv9, i686, armv7
macOSarm64, x86_64
Windowsx64, arm64
FreeBSDx86_64, aarch64, riscv64
Androidx86_64, aarch64, armv7
WebAssemblyWASI (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) ですべてのルートをビルドしています。

ライセンス

MITライセンス