Rustプログラミング言語のメインソースリポジトリ。コンパイラ、標準ライブラリ、ドキュメントを収録しています。
aardappel/goose
ヒープアロケーターやガベージコレクターを使わず、コンパイラー管理のデータスタックでメモリ安全性を実現する、実験的なシステムプログラミング言語です。
- スター
- 3,146
- フォーク
- 132
- 未解決の Issue
- 48
- 最終コミット
- 16 時間前
これは何?
GooseはCやRustに似た構文を持つ、ヒープを使わないプログラミング言語です。動的な値はすべて、コンパイラーが静的に管理するデータスタック上にインラインで配置されます。ポインターを進めることで領域を拡張し、スコープが終わるとメモリが解放されます。アロケーター、ガベージコレクター、参照カウント、デストラクター、ライフタイム注釈、unsafeブロックはありません。
言語機能として、参照を有効なまま拡張できる伸長専用および伸縮配列、1・2・4バイトのオフセットで格納する相対参照、各バリアントのサイズで格納できるenumを備えています。スレッドはそれぞれ独立したメモリを持つ別プログラムとして実行され、型付きキューを介してフラットな値をやり取りします。コンパイラーはCファイルを1つ生成し、extern fn経由でCを直接呼び出せます。また、プログラムをプロセス内で実行するTinyCCバックエンドが同梱されています。
プロジェクトにはチュートリアル、言語リファレンスと仕様書、グラフィックス・物理演算・UIモジュールを含む標準ライブラリ、31個のサンプルプログラム、C++およびRustとのベンチマークが含まれています。作者によると、このリポジトリは人間が書いた言語設計をもとに、主にAIの支援を受けて作成されました。
主な機能
- 01コンパイラーが割り当てるデータスタックでメモリを管理し、ヒープ割り当てやGCを使いません。
- 02拡張後も参照が有効な、伸長専用の配列。
- 03位置に依存しないデータを実現する、1・2・4バイトのオフセットで格納される相対参照。
- 04ポインターを使わない、可変サイズのenumとインラインのネストデータ。
- 05メモリを個別に持ち、型付きキューで通信するスレッド。
- 06extern fnによるCの直接呼び出しと、単一のCファイルへのコンパイル。
ユースケース
- ガベージコレクターや手動解放に頼らない、システムコード向けメモリモデルの検討。
- インライン配置の利点を活かせるパーサーやグラフ構造など、データ量の多いプログラムの作成。
- コンパイラーとドキュメントが主にAIの支援で作られた言語の学習。
- 同梱のgfxモジュールやphysicsモジュールを使った、小規模なグラフィックスや物理演算プログラムの開発。
使う前に知っておきたいこと
- メタデータではこの言語は実験的とされているため、変更される可能性があります。
- 可変長要素の配列は反復処理できますが、インデックスで直接アクセスすることはできません。
- 表示されているREADMEにはインストールや実行のコマンドが記載されていないため、セットアップ手順はここには含まれていません。
収録されている特集
トピック
よくある質問
- goose とは?
- ヒープアロケーターやガベージコレクターを使わず、コンパイラー管理のデータスタックでメモリ安全性を実現する、実験的なシステムプログラミング言語です。 GooseはCやRustに似た構文を持つ、ヒープを使わないプログラミング言語です。動的な値はすべて、コンパイラーが静的に管理するデータスタック上にインラインで配置されます。ポインターを進めることで領域を拡張し、スコープが終わるとメモリが解放されます。アロケーター、ガベージコレクター、参照カウント、デストラクター、ライフタイム注釈、unsafeブロックはありません。
- goose は無料で使えますか?ライセンスは?
- goose は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- goose は今もメンテナンスされていますか?
- 活発にメンテナンス中。goose の最終コミットは 2026年11月6日 です。
- goose は何に使えますか?
- ガベージコレクターや手動解放に頼らない、システムコード向けメモリモデルの検討。 インライン配置の利点を活かせるパーサーやグラフ構造など、データ量の多いプログラムの作成。 コンパイラーとドキュメントが主にAIの支援で作られた言語の学習。 同梱のgfxモジュールやphysicsモジュールを使った、小規模なグラフィックスや物理演算プログラムの開発。
- goose はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/aardappel/goose
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Swiftプログラミング言語とコンパイラツールチェーン。メモリ安全性と高いパフォーマンスを備え、CやObjective-Cをシームレスに利用できます。
依存ライブラリ不要で高速にコンパイルでき、CからVへの自動変換にも対応する、保守しやすいソフトウェア向けのシンプルなコンパイル言語。
Odinは、Cの代替として位置づけられた汎用のデータ指向システムプログラミング言語で、標準ライブラリを組み込んでいます。
既存コードをほぼ変更せずにコンパイルでき、メモリエラーをpanicとして検出する、メモリ安全なC/C++実装です。
Goは、シンプルで信頼性が高く、効率的なソフトウェアを開発するためのオープンソースプログラミング言語です。