メインコンテンツへスキップ

Hewを試す前の質問

Hewは広い言語目標を持ち、v0.9.3は具体的なコンパイラとランタイムのリリースです。これらの回答は、今日動作するものと言語が到達するよう設計されているものを分けて説明します。

ポジショニング

なぜHewなのか?

Hewは、障害、並行性、プロトコル境界がライブラリに散らばった規約ではなく言語コントラクトの一部であるべきサービスのためにあります。アクター、スーパービジョン、ワイヤー型、ネイティブコンパイルは一緒に設計されており、コンパイラがシステムモデルのより多くの部分を把握できます。

なぜElixir、Erlang、OTPではないのか?

OTPはフォルトトレラントシステムのリファレンスであり続けています。Hewは別のトレードオフを選んでいます:let-it-crash の教訓を引き継ぎつつ、静的型、コンパイル時のアクター境界、プロトコル対応ツール、ネイティブLLVM出力を組み合わせます。

関連: 比較

なぜRust + Tokioではないのか?

Rust + Tokioは明示的な所有権と非同期ランタイムが必要な場合に優れています。Hewは異なる中心から出発します:アクター、監視された障害、構造化タスクスコープ、ワイヤーコントラクトは言語機能であり、各プロジェクトが手動で組み立てるアーキテクチャではありません。

なぜLLVMなのか?

Hewにはコードジェネレーターをゼロから作らずに使える本格的なネイティブバックエンドが必要です。LLVMは成熟した最適化、幅広いプラットフォーム対応、よく理解されたIRを提供します。コンパイラはRustでHew MIRからLLVM IRへ直接変換します。

準備状況

Hewはプロダクション対応ですか?

Hewはまだプロダクション対応ではありません。実験、ローカルサービス、言語評価、そしてコンパイラとランタイム内部に近い場所で作業したいコントリビューターには向いています。停止がビジネスや安全に影響するシステムでは、ステータスページで現在の境界を確認してください。

今日何が動作しますか?

現在のリリースは、関数、型、アクター、スーパービジョン、ステートマシン、ワイヤー型、テスト、プレイグラウンド、ネイティブLLVM出力を持つ実際のHewプログラムをコンパイル・実行できます。サンプルページが最適な入口を示しています。

ロードマップには何がありますか?

ロードマップは、分散アクターエルゴノミクス、より広いプロトコル保証、パッケージワークフロー、バックプレッシャー挙動、リソースライフタイムのハードニング、プロダクション運用を追跡しています。ステータスページでそれぞれを確認できます。

HewはGC、所有権、クリーンアップ、teardownをどのように扱いますか?

Hewにはグローバルなガベージコレクターがありません。通常の所有値は再帰的に解放され、アクターの状態は隔離され、アフィンリソースには1つの所有者があります。<code>#[resource]</code>値はスコープ終了時に自動で閉じ、<code>#[linear]</code>値はすべての経路で明示的な消費操作に到達する必要があります。

プロジェクトの範囲

1人のメンテナーによる開発はHewに何を意味しますか?

Hewは現在1人で保守されています。ロードマップもその前提で組まれています。バグ報告、ドキュメント、サンプル、範囲の明確な課題といった焦点を絞った貢献が最も馴染みやすく、より大きな設計作業は issue や discussion から始めるのが適しています。

どうすればコントリビュートできますか?

具体的なことから始めてください:再現可能なバグを報告する、ドキュメントを改善する、集中したサンプルを追加する、または大きな変更を引き受ける前に設計ディスカッションに参加する。コミュニティページが永続的なチャンネルを指しています。

リリースバージョンとHEW-SPEC改訂番号の関係は?

これらは独立したトラックです。Hewリリースバージョンは出荷されたコンパイラ/ランタイム/ツールのバンドルに名前を付けます。HEW-SPEC改訂番号は言語仕様の歴史に名前を付けます。リリースはリリース番号と一致しない改訂番号を持つ仕様レベルを実装することがあります。

最善の次のステップ

小さなサンプルを実行して、そのまま先へ進んでください。