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

Humは、システムプログラミング言語に向けた初期段階(0.0.1 pre-alpha)の設計ドラフトです。掲げられた目標は、Rust/C++並みの低レベル性能とPythonのような可読性、静的型、明示的エフェクト、デフォルトでのメモリ安全性、そして人間とコーディングエージェントの両方に向けたコンパイラ生成コンテキストを組み合わせることです。 中心となる考えは、通常はコメントとして書かれるコントラクトを、検査される約束に変えることです。タスクは`why`、`targets`、`uses`、`changes`、`needs`、`ensures`、`protects`、`trusts`、`fails when`、`watch for`、`cost`、`allocates`、`avoids`、`tradeoffs`、`optimizes`、`tests`、`does`といったセクションを宣言できます。リポジトリには、意図的に改変されたフィクスチャが含まれており、`ensures: result == a + b`が`return a - b`という本体によって破られています。これを実行すると、呼び出し側ではなくタスク実装を責める診断が出力されます。 所有権を表す語(`borrow`、`change`、`consume`)も検査される約束として扱われます。ローカルビューは狭く、フィールドを借用している状態は、そのフィールドへの後続の書き込みで無効化され、リスト要素の借用は後続の拡張で無効化されます。書き込み可能なエイリアス形式(`let alias = change record.field`)は書き込みを透過し、直線的な構文上の最後の使用までのみ有効です。ムーブ後の使用は、ムーブ地点を示して報告されます。`old(...)`はタスク入口時点のパラメータ値を捕捉するため、実際には交換しないswapは自身のコントラクトによって捕捉されます。 READMEは限界について明示しています。`cost:`、`allocates:`、`protects:`、`trusts:`の行は、現時点では記録された意図、グラフ上の事実、生成された義務であり、強制される証明ではありません。チェッカーのレポートは明示的な非主張リストを出力し、検査済みと宣言済みの境界を可視化します。 状況:Milestone 0のRustブートストラップコンパイラのフロントエンドがあり、Milestone 1の実行は`hum run`が最初のFormal Coreフィクスチャを解釈することで始まっています。最初の正規ネイティブスライスは`programs/integer_sign.hum`で、`hum run --native --allow stdout.write ... --args -7`として実行され、ソースを検査し、バックエンドの事実を検証し、対応するWindowsおよびLinuxホスト上でCraneliftを通じて出力します。READMEはこれを一般的なネイティブコンパイルではなく、一つの限定的なプログラム形状として説明しています。 リポジトリはドキュメントが中心です。アーキテクチャ、言語リファレンス、文法、構文表面・ケイパビリティ・ターゲット事実・エビデンスレポート・数学的義務・リソースレポートのスキーマ、Core Humのcontract/preview/lower/verify、型・エフェクト・所有権・リソースの検査、IR contractとreadiness、backend input/probe/contract、LSPケイパビリティ、doctor、さらに決定記録、セキュリティモデル、unsafeポリシー、相互運用と移植性、メモリ安全性モデル、コンパイル時戦略、stdlib戦略、ランタイムプロファイル、バックエンド戦略、ロードマップ、ガバナンス、研究ノートが含まれます。ツールにはTextMate文法、計画中のフォーマッタ(`humfmt`)、パッケージマネージャ計画(Nectar)、そして`check`、`version`、`explain`、`diagnostics`、`capabilities`、`target-facts`、`core-contract`、`core-preview`、`core-lower`、`core-verify`、`full-type-check`などのCLIコマンドがあり、いくつかはJSON出力を備えます。 ブートストラップコンパイラはRustで書かれ、デフォルトでunsafeコードを拒否しますが、レビュー済みで局所的に許可されたunsafeなJIT呼び出し境界が一つと、固定された5つのCranelift依存関係があります。現在のビルドとインストール経路はCargoですが、READMEはHumを長期的に「単なるCargoクレート」として位置づけるべきではないと述べています。