Repolode
aardappel

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 の数値は毎日更新されます。

関連プロジェクト