Web Analytics

gig

⭐ 117 stars Simplified Chinese 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.patch.gleam 的模块,其中 x 是你想要修补的模块名称。 补丁将与原模块合并,因此你只需实现那些有问题的函数。 补丁可放置在 patch 目录或任何源码目录中。

为了在编辑器中更好地支持 C 语言,你可以为项目添加 .clangdcompile_flags.txt 文件。

.clangd CompileFlags: Add: [-Ipatch] `

compile_flags.txt:(空文件)

FFI

你可以使用 @external(c, "", "function_name") 注解来定义 C 函数,类似于普通 gleam 中的 FFI。 之后,使用 --headers 选项运行编译器以生成包含实现外部函数所需的函数和类型声明的头文件。 你的实现 C 文件应 #include 该头文件,并且命名应与头文件相同。 最好你的函数应带有命名空间,例如 module_name_function_name()`。

功能 / 待办列表

基础

函数

流程控制

其他数据类型

高级特性

贡献

我目前不接受代码贡献。不过欢迎提交问题、建议或参与讨论。

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