피드로 돌아가기
GeekNewsInfrastructure
원문 읽기
자신만의 프로그래밍 언어를 만드는 것은 생각보다 쉽다(하지만 더 어렵기도 하다)
C 상호운용성과 샌드박싱을 동시에 달성한 10K LOC 규모의 저수준 언어 pslang 설계
AI 요약
Context
ECS 기반 대형 게임 모딩을 위해 C++의 배포 오버헤드와 Lua의 Native-Script 전환 비용 문제를 해결할 전용 언어 필요성 대두. 기존 Lua의 불완전한 샌드박싱과 C++의 거대한 컴파일러 풋프린트 및 보안 취약점이 주요 제약 사항으로 작용.
Technical Solution
- C-Interoperability 확보를 위해 정적·엄격·명목적 타입 시스템을 채택한 저수준 언어 설계
- Memory Layout 보장 및 포인터 직접 제어를 통해 ECS 엔티티 순회 시 발생하는 데이터 변환 오버헤드 제거
- 단일 스위치로 모든 IO 비활성화가 가능한 구조를 설계하여 Native 모듈의 보안 취약점을 극복한 샌드박싱 구현
- Bison 기반 파서와 IR 단계를 거쳐 Aarch64 타겟 JIT 컴파일로 연결되는 경량 컴파일러 파이프라인 구축
- 들여쓰기 기반 스코프와 명시적 값 호출 방식을 도입하여 스크립팅 언어의 생산성과 저수준 제어 성능을 동시에 추구
- 모듈 간 의존성을 위상 정렬 기반의 결정적 순서로 실행하여 C/C++의 고질적인 초기화 순서 문제 해결
실천 포인트
1. Native-Script 간 빈번한 데이터 교환이 발생하는 시스템에서 데이터 레이아웃 일치 여부 검토
2. 보안이 중요한 플러그인 환경 설계 시, 라이브러리 수준의 제한보다 언어적/구조적 샌드박싱 가능성 평가
3. 컴파일러 풋프린트가 배포 크기에 영향을 주는 환경에서 LLVM 등 무거운 툴체인 대신 도메인 특화 IR 및 JIT 도입 고려