이름은 장난스럽지만 설계는 진지한 터미널, Shitty

Shitty는 C++23으로 만든 macOS·Linux용 터미널 에뮬레이터예요. 튀는 이름보다 눈여겨볼 부분은 CPU에 터미널 상태를 두고 Metal과 Vulkan으로 셀을 그리는 구조, 5,000개가 넘는 테스트, 보수적인 기본 권한 정책이에요. 1
핵심 요약
| 구분 | 내용 | 확인할 점 |
| 렌더링 | macOS는 Metal, Linux는 Vulkan 컴퓨트 백엔드를 써요 | 터미널 상태는 CPU에 유지해요 |
| 성능 | 저장소의 동일 조건 벤치마크에서 ASCII 118MiB/s를 기록했어요 | 최신 Ghostty 개발판은 같은 표에서 더 빨라요 |
| 호환성 | VT52~VT5xx, xterm 확장, Kitty 키보드 프로토콜을 지원해요 | 양방향 텍스트와 sixel은 아직 없어요 |
| 배포 | Shitty와 이름을 순화한 Pretty 빌드를 함께 제공해요 | 현재 결합 저작물 배포에는 GPL 조건이 남아 있어요 |
1. 빠른 출력만 노린 프로젝트는 아니에요
프로젝트가 제시한 Apple 실리콘 MacBook 테스트는 100MB 데이터를 GUI로 출력해 처리 시간을 재요. Menlo 12pt, 80×24 그리드, 스크롤백 500줄로 조건을 맞춘 뒤 세 번 가운데 가장 좋은 결과를 택했어요. 현재 저장소 표에서 Shitty는 출력 가능한 ASCII를 0.81초, 약 118MiB/s로 처리해요. Alacritty 0.17.0의 0.96초와 Kitty 0.48.2의 1.28초보다 빠르지만, Ghostty 1.3.2 개발판은 0.56초로 앞서요. 따라서 모든 터미널보다 가장 빠르다고 단정하기보다, 공개 재현 스크립트가 있는 상위권 결과로 보는 편이 정확해요. 2
파서가 다루기 까다로운 무작위 바이트 테스트에서는 1.88초, 약 51MiB/s를 기록했어요. 같은 표의 Alacritty는 3.07초, Ghostty 1.3.2 개발판은 3.37초예요. 이 수치는 일반적인 셸 작업의 체감 지연 시간을 그대로 뜻하지 않아요. 대량 출력 경로와 잘못된 UTF-8 입력을 얼마나 빠르고 안정적으로 처리하는지 비교한 결과예요.
CPU 상태와 네이티브 컴퓨트 렌더링을 나눴어요
터미널 상태는 CPU가 관리하고, 화면 셀은 macOS의 Metal이나 Linux의 Vulkan으로 그려요. 창 크기를 바꿀 때 경계 변경과 렌더링을 같은 트랜잭션에서 처리해 깜빡임을 줄여요. 바뀐 영역만 갱신하고, 글리프는 필요할 때 래스터화한 뒤 GPU 캐시에 보관해 불필요한 작업도 줄여요.
유니코드 처리는 코드포인트 한 개가 아니라 그래핌 클러스터를 기준으로 해요. 결합 문자, 이모지 시퀀스, 변형 선택자, 폭이 넓은 CJK 문자를 한 화면 셀에서 어떻게 다룰지 고려한 설계예요. 한국어와 이모지를 자주 쓰는 터미널에서는 단순 처리량만큼 중요한 부분이에요.
테스트와 기본 권한 정책도 구체적이에요
저장소는 kitty, xterm vttests, libvterm, Alacritty, Ghostty, Konsole, mosh 등 여러 테스트 묶음에서 5,000개가 넘는 사례를 모았다고 밝혀요. 실제 PTY를 거치는 블랙박스 방식으로 외부에 보이는 동작을 확인해요. 파서 상태 머신에는 퍼징용 입력도 넣어 무작위 데이터가 크래시로 이어지는지 검사해요. 2
애플리케이션이 선택 영역을 읽는 OSC 52 기능과 호스트 창 제어는 기본으로 잠겨 있어요. 신뢰하는 프로그램에만 사용자가 명시적으로 허용할 수 있어요. 터미널 안에서 실행한 프로그램이 클립보드나 창 상태에 접근하는 범위를 줄인 선택이에요.
설치 전에 한계와 라이선스를 봐야 해요
현재 양방향 텍스트 배치와 sixel 같은 인라인 그래픽 프로토콜은 구현되지 않았어요. 빌드도 가볍지만은 않아요. macOS에서는 Homebrew LLVM과 SPIRV-Cross가 필요하고, Linux에서는 Wayland와 Vulkan 환경을 요구해요. Apple 실리콘용 Homebrew 탭과 릴리스 바이너리는 따로 제공해요.
이 프로젝트는 Zutty의 하드 포크이자 대규모 재작성판이에요. 새 기여분은 GPLv3 이상과 MIT로 이중 라이선스하지만, 저장소에는 GPL로 가져온 코드가 남아 있어요. README는 결합 저작물을 배포할 때 아직 GPL 조건을 따라야 한다고 명시해요. MIT 전용 전환은 목표이지 현재 전체 코드에 곧바로 적용되는 상태는 아니에요. 2
이름이 부담스러운 환경을 위해 기능이 같은 Pretty 빌드도 제공해요. 실행 파일과 앱 이름, 설정 경로, 환경 변수 이름만 달라요. 기업 장비나 팀 문서에서 프로젝트 이름이 걸림돌이라면 `pt` 빌드가 현실적인 선택이에요.
왜 중요한가요
터미널 경쟁은 GPU 가속 하나로 끝나지 않아요. 파서 안정성, 유니코드 셀 모델, 리사이즈 처리, 클립보드 권한, 재현 가능한 벤치마크가 함께 맞아야 해요. Shitty는 이 요소를 코드와 테스트, 비교 스크립트로 공개해 다른 터미널 프로젝트와 검토할 수 있게 했어요. 2
다만 대량 ASCII 출력 처리량만으로 일상 사용성을 고르기는 어려워요. 키 입력 지연, 셸 통합, 글꼴 품질, 탭과 분할 화면, 접근성, 운영체제별 안정성은 별도로 확인해야 해요. 지금 쓰는 터미널에서 성능 문제를 느끼지 못한다면 갈아탈 이유도 약해요. 반대로 대량 로그를 자주 출력하거나 터미널 렌더러 구현을 살펴보는 개발자라면 비교해 볼 코드가 많아요.
참고 자료
- Shitty - 이상한 이름이지만 진지한 터미널 에뮬레이터 — GeekNews
- pg83/shitty: Shitty / Pretty — GitHub
'IT & AI' 카테고리의 다른 글
| AI가 프로토타입을 빨리 만들어도 제품 안목은 따로 길러야 해요 (0) | 2026.08.07 |
|---|---|
| 4B 검색 모델이 GPT-5.6 Sol을 앞선 조건 (0) | 2026.08.07 |
| 수천 개 AI 실험을 병렬로 돌리는 Discovery Loop (0) | 2026.08.06 |
| 구글 딥마인드 운영권은 코레이에게, 하사비스는 AGI 전략에 집중해요 (0) | 2026.08.06 |
| Cloudflare OS 공개, 사내 AI 앱의 권한과 데이터 이동을 함께 관리해요 (0) | 2026.08.06 |