-
libghostty는 어떤 애플리케이션에서도 사용 가능한 임베디드 터미널 에뮬레이터 라이브러리로 개발 진행 중임
- 첫 번째 구성 요소인 libghostty-vt는 파싱과 상태 유지에 최적화된, 의존성 없는 API임
-
터미널 에뮬레이션의 복잡성과 반복 구현 문제를 해결하기 위해 등장, 크로스 플랫폼 및 높은 이식성 추구임
- 향후 키보드 입력 처리, GPU 렌더링, 다양한 프레임워크 연동 등 추가 라이브러리 확장 계획임
- 현재 Zig API는 테스트 가능, C API도 곧 공개 예정으로 사용자 피드백을 적극 청취함
소개 및 libghostty 개발 배경
- libghostty는 모든 애플리케이션에서 최신의 빠르고 완벽한 터미널 에뮬레이터 기능을 임베드할 수 있도록 설계된 라이브러리 프로젝트임
- 현재 수많은 프로그램들이 고유한 방식의 터미널 에뮬레이터를 직접 구현하거나, 매우 제한적인 형태의 터미널 기능만을 별도로 제작하는 실정임
- 이렇게 개별적으로 개발되는 터미널 에뮬레이션 구현체들은 ad-hoc, 1회성 코드베이스가 많으며 예외 처리와 복잡성을 충분히 다루지 못해 불완전성, 버그, 성능 저하 문제를 자주 겪음
- 대부분 개발자의 입장에서 터미널 에뮬레이션 구현은 핵심 비즈니스가 아니므로, 공통적이고 재사용성 높은 솔루션에 대한 요구가 존재함
- libghostty는 최소 의존성으로 설계된 크로스 플랫폼 C API를 제공하며, 이를 통해 다양한 애플리케이션에서 안정적이고 빠른 터미널 에뮬레이션 기능을 활용 가능함
libghostty-vt: 첫 번째 라이브러리의 시작
-
libghostty-vt는 의존성이 전혀 없는 (libc조차 불필요) 라이브러리로, 터미널 시퀀스 파싱과 커서 위치, 스타일, 줄 바꿈 등 터미널 상태 유지 기능의 API를 제공함
- 이러한 터미널 시퀀스 파싱은 터미널 에뮬레이터의 핵심 기능일 뿐만 아니라, 단순한 스타일 출력이 요구되는 사이트(GitHub Actions, Vercel 빌드 로그 등)에도 반드시 필요한 역할임
- 터미널 프로토콜 파싱은 표면적으로 단순해보이지만 구현 난이도는 매우 높으며, 실제로 Jediterm 등 여러 구현체가 일부 시퀀스 처리에 문제를 보이는 사례가 있음
- 일부 개발자는 ANSI 시퀀스만 간단히 파싱하는 방식에 머무르나, 복잡한 스타일 처리(다양한 RGB 표기법 등)와 완전한 호환성 요구로 인해 정교한 파서가 필수임
- libghostty-vt는 Ghostty의 검증된 코어에서 추출되어, SIMD 최적화 파싱, 뛰어난 Unicode 지원, 고도화된 메모리 구조, 광범위한 프로토콜 호환성(Kitty Graphics, Tmux Control Mode 등) 을 갖춤
- 단일 파일의 제로-의존성 C API로 제공되어 모든 범용 언어 및 환경에 쉽게 임베드할 수 있고, macOS, Linux(x86_64, aarch64)를 우선 지원하며 점차 Windows, 임베디드, WASM 등으로 확장할 계획임
- Ghostty GUI보다 더 포괄적인 대상 지원이 가능함
장기적으로 확장될 libghostty
- libghostty-vt 이후로는 입력 처리(키보드 인코딩 등), GPU 렌더링(OpenGL, Metal) , GTK 위젯 및 Swift 프레임워크 등 추가 기능을 제공하는 라이브러리군이 연이어 출시될 예정임
- 이러한 기능적 확장들은 모듈별로 구성되어, 의존성 및 코드 사이즈, 유지보수 복잡성을 최소화함
libghostty-vt 개발 현황
- Zig 모듈로 libghostty-vt를 외부에 노출하는 PR(풀 리퀘스트) 가 최근 머지되었으며, Zig 개발자는 바로 사용 가능함
- C API는 정의 작업이 진행 중이며, 곧 테스트용으로 제공될 예정임(코어 로직은 이미 수년간 Ghostty에서 사용된 검증된 소스임)
- Ghostty macOS 앱에서도 내부용 C API를 사용하지만, 현재의 내부용 헤더는 외부 공개 및 일반 사용에는 적합하지 않으므로 완전히 새로운 C API를 설계 중임
- libghostty는 Ghostty 애플리케이션과 별도로 버전 관리를 하며, 현재 알파 단계로 빠른 도입과 언어 바인딩 개발자 참여를 기대함
- 6개월 내에 태그가 부여된 최초 릴리즈를 목표로 하고 있음
사용자 피드백 요청
- 현재 API 설계 단계이므로, 실제 사용자의 의견과 피드백이 매우 중요한 시점임
- Ghostty 외에도 다양한 커뮤니티 구성원이 libghostty 기반 프로젝트를 개발 중이며, 더 많은 사용자가 참여하길 희망함
- 프로젝트 활용 아이디어나 요구가 있다면 Ghostty Discord 또는 이메일을 통해 개발자와 직접 소통 가능함
- libghostty는 현재 알파 버전으로, API는 아직 안정적이지 않으나, 코어 로직은 실전에서 검증된 높은 안정성을 보장함
미래 전망 및 영향
- Ghostty 애플리케이션의 안정성 달성을 바탕으로, 이제 libghostty라는 더 큰 목표를 향해 나아갈 수 있게 됨
- libghostty가 다양한 애플리케이션에서 널리 사용된다면, Ghostty 단일 앱 이상으로 더 큰 생태계 파급력과 영향 마련 가능함
- libghostty의 활용이 늘어나면 Ghostty 본체 역시 더욱 풍부한 기능과 안정성을 확보할 수 있음
- Ghostty 및 libghostty는 상호 보완 형태로 발전하며, 개발자와 사용자 모두에게 이익을 제공할 전망임