asciinema CLI 3.0, Rust로 재작성되어 라이브 스트리밍 및 파일 포맷 업그레이드 제공

2 hours ago 1

  • 터미널 녹화 도구 asciinema CLI 3.0이 Rust로 전면 재작성되어, 파일 포맷 업그레이드터미널 라이브 스트리밍 기능이 추가됨
  • Rust 채택으로 정적 바이너리 제공과 빠른 시작 시간, AVT 통합으로 동시성·시스템 호출 처리가 쉬워지고 신규 기능 구현 기반 확보
  • asciicast v3 포맷은 이벤트 인터벌(델타) 기반 타이밍, term 하위 메타데이터 구조화, "x" 종료 이벤트, # 라인 주석을 도입해 편집성과 표현력을 높임
  • 라이브 터미널 스트리밍은 로컬 내장 서버와 원격 릴레이(자체 호스팅/공식 서버) 두 모드로 제공되며, 네트워크 상황에 따라 적응형 버퍼링으로 부드러운 뷰잉 경험을 제공
  • 기본 철학을 Local-first로 재정비하여 rec는 파일명을 필수로 받고 업로드를 분리(upload <파일>), 자체 서버 선택 프롬프트로 셀프 호스팅 친화성과 의도치 않은 데이터 유출 방지 강화

3.0 출시: Rust로 재작성된 asciinema CLI와 주요 개선점

  • asciinema CLI 3.0이 공식적으로 출시
  • 이번 버전에서는 전체 코드가 Rust로 재작성됨과 동시에 레코딩 파일 포맷이 업그레이드
  • 터미널 세션 라이브 스트리밍 등 다양한 기능들이 추가/개선됨

Rust 재작성과 전반적 개선

  • CLI를 Rust로 전면 재작성하여 개발자 경험과 유지보수성을 높였으며, 정적 바이너리 배포로 설치 경로 단순화, 시작 속도 향상, 기능 확장성 확보
    • 시스템 호출과 동시성 처리가 Python 대비 용이하다는 저자의 경험을 바탕으로 선택했으며, asciinema virtual terminal(AVT) 를 CLI에 통합해 신규 기능 구현이 가능해졌음
  • 결과적으로 성능·배포·아키텍처 측면에서 향후 기능 추가의 토대를 마련함

asciicast v3 파일 포맷

  • asciicast v3 파일 포맷으로 진화하며, 기존 v2에서 드러난 여러 단점을 보완함
  • v2의 절대 타임스탬프를 간격(인터벌/델타) 기반 타이밍으로 교체하여 이벤트 삽입·삭제 시 후속 타임스탬프 일괄 조정 문제를 해소
  • 헤더를 재구성하여 터미널 관련 메타데이터를 term 키 아래로 그룹화하고, 세션 종료 상태 저장을 위한 "x"(exit) 이벤트를 지원
  • 파일 내 라인 주석(#) 을 허용해 가독성과 관리 용이성 향상
  • 예시 스니펫 제공으로 구조와 이벤트 스트림 구성을 직관적으로 제시함
  • 신규 포맷은 asciinema server, asciinema player 에서 이미 지원됨

라이브 터미널 스트리밍

  • 로컬 모드: 내장 HTTP 서버로 동일 네트워크에서 시청 가능한 스트림 제공, 데이터가 시청자 브라우저로만 전달되는 프라이버시 우선 모드
    • CLI에 최신 asciinema player가 번들되어 즉시 재생 가능하며, 방화벽 포트 개방이 필요할 수 있음
  • 원격 모드: asciinema server(공식 또는 자가 호스팅)를 릴레이로 사용해 공유 가능한 URL로 스트림을 배포
    • 두 모드를 동시에 사용할 수 있어 상황에 맞는 배포 구성이 가능
  • 플레이어는 실시간 네트워크 지연 측정 기반의 적응형 버퍼링으로 낮은 지연과 버퍼 언더런 방지를 균형화
  • 서버는 스트림 자동 녹화를 지원하며, 현재 asciinema.org 운영 서버는 녹화 비활성·동시 1개 스트림 제한 정책을 운용 중
    • 셀프 호스팅 시 기본적으로 녹화 활성·동시 스트림 제한 없음

Local-first로의 회귀

  • 과거 asciinema rec는 업로드 동작이 기본 경로에 포함되어 무의식적 공개·정보 누출 위험이 있었음
    • 2.4에서 업로드 전 선택 프롬프트를 도입해 전환을 준비했으며, 3.0에서 파일명 필수·rec의 업로드 기능 제거·upload <파일> 명시적 명령으로 분리함
  • 기본 철학을 로컬 우선으로 명확히 하여, 사용자가 의도를 갖고 공개/공유를 결정하도록 흐름을 재설계함
    • 로컬 전용 사용이 완전 지원되며, 필요 시에만 명시적으로 퍼블리시함

셀프 호스팅 친화성 강화

  • upload/stream/auth를 처음 사용할 때 서버 URL 선택 프롬프트를 표시, 기본값을 asciinema.org로 제시하되 사용자 의도에 따른 인스턴스 선택을 저장함
    • 기존에도 설정 파일/환경 변수로 지정 가능했으나, 대화형 환경(신규 VM·Dev 컨테이너 등) 에서 수월한 지정이 가능해짐
  • 이는 셀프 호스팅 사용성을 높이는 동시에, 원치 않는 외부 업로드 방지라는 추가 안전장치 역할을 수행함

배포와 이용 안내

  • 각 배포판 패키지 리포지터리 반영까지는 시간이 소요될 수 있음
  • 그 사이 GNU/Linux·macOS용 사전 빌드 바이너리를 GitHub 릴리스에서 내려받아 사용하거나, 소스에서 빌드 가능함
  • 릴리스 노트와 상세 변경 이력은 GitHub의 release notesCHANGELOG 문서에서 확인 가능함

Read Entire Article