# Ghostling: libghostty의 C API를 보여주기 위한 최소 터미널
Ghostty 팀이 Ghostling이라는 오픈소스 데모 프로젝트를 공개했습니다. 이는 단일 C 파일로 구현된 단일 스레드 터미널로, VT 에뮬레이션을 위해 libghostty-vt를 사용하고 렌더링에는 Raylib를 사용합니다. 이 프로젝트는 GPU 가속 없이 라이브러리 통합을 보여주며, 시퀀스 파싱, 상태 관리, 기본 입출력에 중점을 둡니다.
아키텍처와 주요 구성 요소
Ghostling은 외부 종속성(심지어 libc 포함)이 전혀 없는 라이브러리인 libghostty-vt를 기반으로 구축되었습니다. 이 라이브러리는 VT 시퀀스 파싱, 커서 위치 지정, 스타일 적용, 텍스트 재배치, 스크롤링, 렌더러 관리를 처리합니다. 렌더링과 윈도우 루프는 2D 렌더러를 사용하는 Raylib로 구현되어 데모를 단순화하고 libghostty의 이식성을 강조합니다.
이 프로젝트는 Ghostty로부터 최적화 기능을 상속받았습니다: SIMD 파싱, Unicode 지원, 효율적인 메모리 사용. Libghostty는 C와 Zig API를 제공하여 어떤 애플리케이션에도 임베드할 수 있으며, 에뮬레이션과 UI를 분리합니다.
중요 경고: Ghostling은 프로덕션 터미널이 아닙니다. 철저한 코드 감사가 없는 최소 실행 예제로, API 학습을 목적으로 합니다.
지원 기능
이 프로젝트는 핵심 터미널 에뮬레이터 기능을 구현합니다:
- 텍스트 재배치와 함께 윈도우 크기 조정;
- 24비트 색상과 256색 팔레트;
- 텍스트 스타일(볼드, 이탤릭, 언더라인);
- 아티팩트 없는 Unicode 및 멀티 코드포인트 그래뎀 클러스터;
- 수정자(Shift, Ctrl, Alt, Super)를 포함한 키보드 입력;
- Kitty 키보드 프로토콜;
- 마우스 추적(X10, normal, button, any event 모드);
- 마우스 보고 형식(SGR, URxvt, UTF8, X10);
- 스크롤링 또는 앱 전달을 위한 마우스 휠;
- 드래그-투-스크롤 스크롤바.
이 기능들은 전형적인 쉘 앱 시나리오를 커버하며, 분리 모드에서 libghostty-vt의 견고함을 보여줍니다.
본체 Ghostty와의 차이점
Ghostty는 높은 성능을 위해 GPU 렌더링과 멀티스레딩을 사용합니다. Ghostling은 단순화된 버전으로 단일 스레드에 CPU 2D 렌더링을 사용합니다. 이는 GPU가 없거나 오버헤드를 피하고 싶은 임베드 시나리오에서 libghostty를 테스트할 수 있게 합니다. Raylib는 복잡한 윈도잉 라이브러리 없이 크로스플랫폼 지원을 제공합니다.
중고급 개발자에게 이 프로젝트는 커스텀 터미널의 출발점으로 활용할 수 있습니다: libghostty-vt 위에 자체 렌더러(Vulkan, SDL, 커스텀 캔버스)를 추가하세요.
주요 요점
- Libghostty-vt는 렌더링 없는 독립 VT 엔진으로 임베드에 이상적;
- Ghostling은 Raylib와의 단일 파일 C API 통합을 보여줌;
- 완전한 VT 호환성: 색상, Unicode, 마우스, 키보드 프로토콜;
- 종속성 없음, SIMD 최적화, 낮은 메모리 사용량;
- 프로토타이핑 데모, 일상 사용 터미널 아님.
개발 계획
개발자들이 로드맵을 발표했습니다:
- 이미지용 Kitty 그래픽스 프로토콜;
- OSC 클립보드 지원;
- OSC 윈도우 제목 구성.
이는 터미널 출력을 사용하는 GUI 앱(예: IDE 플러그인, 원격 데스크톱 클라이언트)의 유용성을 확대할 것입니다.
— Editorial Team
아직 댓글이 없습니다.