Lisp 방언 Janet, 왜 써야 할까?

by DD
1주 전
조회수 0

Janet 언어는 간결한 코어와 매크로를 통한 확장성으로 빠른 학습 곡선(Fast Learning Curve)을 제공함

네이티브 실행 파일(Native Executable)로 쉽게 컴파일되어 별도 설치 없이 배포 가능하며, 1MB 미만의 작은 크기가 장점임

정규 표현식 대신 파싱 표현 문법(PEG)을 사용하여 텍스트 처리 및 HTML, JSON 파싱에 탁월한 성능을 보임

매크로 시스템(Macro System)컴파일 타임 값 전달(Compile-time Value Passing) 기능은 코드 생성 및 최적화에 강력한 유연성을 제공함

Janet의 간결한 코어와 매크로 기반 확장성

커뮤니티에서는 Janet의 핵심 명령어 8개로 구성된 작은 코어와 매크로를 통한 고수준 제어 흐름 구현 방식에 주목하고 있습니다. 이는 JavaScript와 유사한 런타임 시맨틱(Runtime Semantics)을 제공하면서도, 매크로를 통해 코드 생성(Code Generation)추상화(Abstraction)를 자유롭게 할 수 있다는 점에서 높은 평가를 받습니다. 특히, 데이터 미저장 정책(Zero-Retention Policy)을 준수하며 간결함을 유지하는 설계가 인상적이라는 의견이 있습니다.

단일 파일 네이티브 실행 파일 배포의 이점

논의에 따르면 Janet은 C 컴파일러를 통해 바이트코드(Bytecode)를 포함한 단일 C 파일로 컴파일됩니다. 이 과정에서 데이터 격리 아키텍처(Data Isolation Architecture)를 활용하여 런타임, GC, 바이트코드 컴파일러까지 포함된 784KB 수준의 경량 실행 파일 생성이 가능합니다. 이는 별도의 런타임 설치 없이도 프로그램 공유가 가능해져, 특히 CLI 애플리케이션(CLI Applications) 개발에 매우 유리하다는 평가입니다.

파싱 표현 문법(PEG) 기반의 강력한 텍스트 처리

정규 표현식(Regular Expressions) 대신 파싱 표현 문법(Parsing Expression Grammars, PEG)을 채택한 점이 주요 논의 사항입니다. PEG는 HTML, JSON, 바이너리 포맷 등 비정규 언어 파싱에 더 강력하고 예측 가능하며, 멀티라인 텍스트 처리(Multiline Text Processing)에도 용이합니다. 이는 구조화된 파서(Structured Parsers)를 컴포저블하게 작성할 수 있다는 점에서 개발자들에게 높은 만족도를 제공합니다.

매크로와 컴파일 타임 값 전달의 시너지

Janet의 비위생적 매크로(Unhygienic Macros)함수 네임스페이스 분리 부재에도 불구하고, 컴파일 타임 코드 실행 및 값 직렬화 기능을 통해 참조 투명성(Referential Transparency)을 확보하는 방식이 주목받고 있습니다. 데이터 직렬화(Data Serialization)를 통해 컴파일 시점에 생성된 값이나 상태를 런타임에 그대로 전달하는 기능은 게임 개발의 에셋 임베딩(Asset Embedding)이나 DB 바인딩 자동 생성과 같은 복잡한 작업을 단순화합니다.

임베딩 및 서브프로세스 DSL의 활용성

Lua의 대안으로 제시되는 Janet의 임베딩 용이성(Embeddability)서브프로세스 DSL(Subprocess DSL)은 개발자들에게 매력적인 기능으로 언급됩니다. 특히 `sh` 라이브러리를 통한 파이프라인 및 리다이렉션 표현은 Bash 스크립팅을 대체할 수 있을 만큼 강력하다는 평가입니다. 이는 커스텀 DSL(Custom DSLs)을 통한 프로그래밍 경험을 향상시키며, 웹사이트 정적 사이트 생성에도 활용될 수 있습니다.

Why Janet? (2023)