피드로 돌아가기
GeekNewsInfrastructure
원문 읽기
왜 Janet인가? (2023)
784KB 런타임 기반의 고밀도 Lisp 방언, Janet의 네이티브 배포 전략
AI 요약
Context
전통적인 Lisp 언어들의 복잡한 관습과 무거운 런타임 의존성으로 인한 배포 효율성 저하 문제 발생. 정규식의 예측 불가능성과 스크립팅 언어의 느린 실행 속도를 극복하는 가벼운 시스템 언어의 필요성 대두.
Technical Solution
- 8개의 핵심 명령어로 구성된 최소ist 언어 설계를 통한 런타임 복잡도 제거
- Bytecode 컴파일 후 .c 파일 내에 바이너리를 임베딩하여 시스템 C 컴파일러로 정적 링크하는 네이티브 배포 구조 채택
- 정규식 대신 PEG(Parsing Expression Grammar)를 도입하여 비정규 언어 및 바이너리 파일의 예측 가능한 파싱 구현
- 컴파일 시점의 톱레벨 명령 실행 후 상태 스냅샷을 디스크에 기록하는 메커니즘을 통한 런타임 초기화 비용 최적화
- 가변(@)과 불변 컬렉션을 명확히 구분하는 값/참조 의미론 적용으로 메모리 관리 효율성 확보
- Reader Macro를 배제한 고정 문법 설계를 통해 코드 가독성 및 정적 분석 가능성 유지
실천 포인트
1. 배포 파일 크기 최적화가 필요한 임베디드 환경에서 런타임 정적 링크 구조 검토
2. 복잡한 텍스트 파싱 요구사항 발생 시 정규식 대신 PEG 도입 고려
3. 컴파일 시점 상태 스냅샷을 활용한 런타임 초기 부하 감소 설계 적용