Web Analytics

gig

⭐ 117 stars Korean 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

선택적 플래그:

> [!IMPORTANT]
스택 오버플로우가 발생할 가능성이 높은 경우, 스택 크기를 늘리세요. 이는 종종 세그멘테이션 폴트로 나타납니다.
>
> 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") 주석을 사용하여 C 함수를 정의할 수 있습니다. 일반 gleam의 FFI와 유사합니다. 이후, --headers 옵션을 사용하여 컴파일러를 실행하면 외부 함수 구현에 필요한 함수 및 타입 선언이 포함된 헤더 파일이 생성됩니다. 구현하는 C 파일은 이 헤더 파일을 #include 해야 하며 헤더 파일과 동일한 이름으로 명명되어야 합니다. 함수는 가능하면 네임스페이스를 사용하여 예를 들어 module_name_function_name()`처럼 이름을 지어야 합니다.

기능 / 할 일 목록

기본 사항

함수

흐름 제어

기타 데이터 타입

고급 기능

기여하기

현재 코드 기여는 받고 있지 않습니다. 다만 이슈, 제안, 토론은 언제든지 환영합니다.

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