Skip to content

feat: C 및 C++ 호환 바인딩 추가 - #179

Open
kdyann wants to merge 1 commit into
dev-five-git:mainfrom
kdyann:feat/c-binding
Open

feat: C 및 C++ 호환 바인딩 추가#179
kdyann wants to merge 1 commit into
dev-five-git:mainfrom
kdyann:feat/c-binding

Conversation

@kdyann

@kdyann kdyann commented Aug 6, 2026

Copy link
Copy Markdown

설명

braillify 라이브러리의 기능을 C 및 C++ 환경에서 사용할 수 있도록 C ABI 바인딩을 추가합니다.

주요 구성

  • Rust 기반 C ABI 구현: Rust 코어 엔진의 점역 기능을 extern "C" 인터페이스로 제공합니다.
  • C/C++ 호환 헤더: extern "C" 가드가 적용된 braillify.h를 제공하여 동일한 API를 C와 C++에서 사용할 수 있습니다.
  • 정적·동적 링크 지원: staticlibcdylib을 모두 빌드할 수 있어 애플리케이션 환경에 따라 정적 또는 동적 링크 방식을 선택할 수 있습니다.
  • 크로스 플랫폼 지원: Linux x64/ARM64, macOS Intel/ARM, Windows x64 환경의 릴리스 빌드를 지원합니다.
  • 명시적인 메모리 관리: Rust에서 할당한 문자열과 바이트 배열을 안전하게 해제할 수 있도록 전용 해제 API를 제공합니다.
  • 스레드별 오류 처리: Rust 측 thread-local 저장소에 마지막 오류를 보관하고 C/C++ 호출자가 이를 조회할 수 있습니다.
  • 패닉 경계 처리: Rust 코어에서 예상하지 못한 패닉이 발생해도 C ABI 경계를 넘어 전파되지 않도록 처리합니다.

패키지 구조

packages/c/
├── Cargo.toml
├── Makefile
├── README.md
├── include/
│   └── braillify.h
├── src/
│   └── lib.rs
└── tests/
    └── smoke.c

scripts/
└── test-c.ts

GitHub Actions 워크플로우

플랫폼별로 정적·동적 라이브러리를 빌드하고, 헤더와 함께 GitHub Release에 업로드합니다.

테스트

  • Rust 단위 테스트 10개
  • C11 및 C++17 컴파일·링크·실행
  • NULL, UTF-8 오류, 메모리 해제 및 패닉 처리 검증

@codecov

codecov Bot commented Aug 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Files with missing lines Coverage Δ
packages/c/src/lib.rs 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Changepacks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant