Web Analytics

gig

⭐ 117 stars Japanese by schurhammer

gig

Gigはgleamで書かれたgleamコンパイラです。

使い方

サンプルファイルのコンパイルと実行:

# clone the repository
git clone https://github.com/schurhammer/gig
cd gig

compile a sample

gleam run samples/hello_world.gleam

run the sample

samples/hello_world.exe

gig をコンパイルする:

# compile gig into a binary
gleam run src/gig.gleam --gc --release

compile a sample using the gig binary

src/gig.exe samples/hello_world.gleam

run the sample

samples/hello_world.exe

gigバイナリを使用してプロジェクトをコンパイルする方法:

# you should be in your project root
cd 

copy patch directory (adjust file paths to match your system)

cp -r ../gig/patch patch

ensure dependencies are downloaded

gleam deps download

compile your main module

gig src/
.gleam

run your main module

src/
.exe

gigをパス依存関係として使ってプロジェクトをコンパイルする

# you should be in your project root
cd 

copy patch directory (adjust file paths to match your system)

cp -r ../gig/patch patch

ensure dependencies are downloaded

gleam deps download

compile your project using gig as a path dependency

gleam run -m gig src/
.gleam

run your main module

src/
.exe

オプションフラグ:

> [!重要]
スタックオーバーフローが発生する可能性が高いため、スタックサイズを増やしてください。これらはしばしばセグフォルトとして現れます。
>
> ulimit -s unlimited
``

必須依存関係:

  • Cコンパイラ(clangが最も適しているようです)
  • --gc用にBoehm GC(別名 libgc)が必要です

標準ライブラリ

標準ライブラリの多くは @external 呼び出しで実装されているため、現時点ではすべての関数が利用できるわけではありません。 いくつかの関数はすでにパッチで再実装されています。詳細は patch ディレクトリを参照してください。未実装の関数が使用されるとコンパイラは警告を表示し、関数本体は「todo」として扱われます。

パッチシステム

gigはサードパーティプロジェクトのため、一般に流通している多くのgleamライブラリは 対応していない可能性があります。このような場合に対応するために、 動作しないモジュールを上書きできるパッチシステムがあります。 これを行うには、修正したいモジュール名を x として、 x.patch.gleam というモジュールを作成してください。パッチは元のモジュールとマージされるため、 壊れている関数だけを実装すれば十分です。 パッチは patch ディレクトリまたは任意のソースディレクトリに配置できます。

より良いC言語サポートのために、プロジェクトに .clangdcompile_flags.txt ファイルを追加できます。

.clangd: CompileFlags: Add: [-Ipatch] `

compile_flags.txt: (空ファイル)

FFI

@external(c, "", "function_name") アノテーションを使用して、通常の gleam の FFI と同様に C 関数を定義できます。 これを行った後、--headers オプションを付けてコンパイラを実行すると、 外部関数を実装するために必要な関数および型宣言を含むヘッダーファイルが生成されます。 実装する C ファイルはこのヘッダーファイルを #include し、 ヘッダーファイルと同じ名前である必要があります。 関数はできるだけ名前空間を付けて、例えば module_name_function_name()` のようにしてください。

機能 / Todo リスト

基本

関数

フロー制御

その他のデータ型

高度な機能

貢献について

現時点ではコードの貢献は受け付けていません。問題提起、提案、または議論は自由に行ってください。

--- Tranlated By Open Ai Tx | Last indexed: 2025-12-11 ---