Skip to content

Repository files navigation

zigo

zigo는 Zig 라이브러리에서 타입 안전한 Go 바인딩을 생성합니다. 라이브러리 구현과 분리된 bindings.zig에 공개 범위를 선언하면 C ABI shim, Go 패키지와 검증 메타데이터를 함께 만듭니다.

Zig API + bindings.zig
          │
          ▼
        zigo
          │
          ├── Zig C ABI shim과 C header
          ├── Go raw package
          ├── Go public package
          └── ABI·semantic metadata

생성된 공개 패키지는 스칼라와 슬라이스뿐 아니라 typed error, 객체 수명, 콜백, 스트림, tagged union과 중첩 결과도 Go다운 API로 노출합니다.

바로 실행하기

저장소의 최소 예제는 외부 네이티브 라이브러리 없이 생성부터 Go 호출까지 실행됩니다.

git clone https://github.com/ironpark/zigo.git
cd zigo/examples/00-quick-start
zig build go
(cd go && go test ./... && go run ./cmd/demo)

마지막 명령은 테스트를 통과한 뒤 다음을 출력합니다. 둘째 줄은 buildinfo 플러그인이 더한 것으로, 네이티브 library를 실제로 빌드한 toolchain과 target에 따라 달라집니다.

2 + 3 = 5
zig 0.16.0; Debug; aarch64-macos-none

자신의 Zig 프로젝트에 연결하려면 시작 가이드를 따라가세요.

주요 기능

  • 함수, 오류 유니온, 열거형, 구조체와 슬라이스의 타입 안전한 변환
  • 생성자, 메서드와 Close를 갖는 opaque 핸들
  • Go 콜백과 Zig std.Io의 io.Reader·io.Writer 연결
  • context.Context 기반 취소
  • tagged union projection, 스냅샷과 sealed variant
  • cgo 정적·동적 링크와 CGO_ENABLED=0 purego
  • 생성물 최신 상태, API coverage와 ABI 호환성 검사
  • 생성기 플러그인을 통한 Go API 확장

지원 환경

  • Zig 0.16.0
  • Go 1.24 이상
  • cgo: macOS와 Linux, Windows amd64 GNU ABI
  • purego: macOS, Linux와 Windows의 amd64·arm64

처음에는 기본값인 .cgo_static을 사용하세요. 전체 조건과 크로스 컴파일 범위는 지원 범위에서 확인할 수 있습니다.

문서

라이선스

MIT License

About

No description, website, or topics provided.

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages