프로젝트 소개

Daslang(이전 이름 daScript)은 게임 및 실시간 애플리케이션을 위해 만들어진 고성능 정적 타입 프로그래밍 언어입니다. Gaijin Entertainment에서 ECS 게임 엔진의 스크립팅 언어와 C++ 간의 상호 운용 오버헤드를 해결하기 위해 만들어졌으며, 데이터 마샬링이 프레임 예산을 소비하는 문제를 해결했습니다. Daslang의 데이터 레이아웃은 C++와 일치하므로 스크립트에서 C++로의 호출은 마샬링, 박싱 또는 변환 없이 거의 비용이 들지 않는 것으로 설명됩니다. README에 명시된 핵심 원칙에는 빠른 반복(전체 프로덕션 게임이 약 5초 만에 재컴파일되고 내장 핫 리로드 지원), 명시성(숨겨진 타입 변환 또는 무음 할당 없음, `options log` 플래그로 컴파일러 출력 표시), 실용적인 안전성 접근, GC 압력을 줄이기 위한 수동 `delete`, 네이티브 속도를 위한 AOT to C++ 및 도메인에 맞게 라이브러리가 구문을 재구성할 수 있게 하는 컴파일 타임 매크로 시스템이 포함됩니다. 세 가지 실행 계층이 계획되어 있습니다: 빠른 트리 기반 인터프리터, C++로의 AOT 컴파일(콘솔에 필요), LLVM을 통한 JIT. 하이브리드 모드는 의미론적 해싱을 사용하여 변경되지 않은 함수는 AOT로 유지하고 변경된 함수는 인터프리터로 대체하여 전체 재빌드 없이 핫픽스를 허용합니다. 설치는 재귀적 하위 모듈 업데이트와 함께 git clone을 통해 이루어집니다. 빌드는 Release 구성과 `daslang` 타겟으로 CMake를 사용합니다. AOT 사용은 `.das` 파일에서 C++ 스텁을 생성한 다음 호스트 애플리케이션과 함께 컴파일 및 링크합니다. JIT 사용은 동적 바인딩 때문에 고정 경로(`lib/LLVM.dll`)에 LLVM 16.0.6 공유 라이브러리가 필요하며, 그 후 스크립트는 `-jit`로 실행됩니다. CMake 애플리케이션에 임베딩은 `find_package(DAS)`를 통해 이루어지며 `libDaScript` 및 `libDaScriptDyn` 타겟을 제공합니다. 내장 패키지 관리자 daspkg는 인덱스 또는 git URL에서 순수 daslang 및 C++ 네이티브 모듈을 포함한 daslang 패키지의 설치, 업데이트 및 빌드를 처리하며 검색을 지원합니다. VS Code 확장은 구문 강조 및 린팅, 디버깅, 스니펫과 같은 언어 서버 기능을 제공합니다. MCP 서버는 컴파일 진단, 타입 검사, 정의로 이동, 참조 찾기, AST 덤프, AOT 생성, 표현식 평가, 파싱 인식 grep 및 패키지 관리를 포함한 29개의 컴파일러 지원 도구를 AI 코딩 어시스턴트에 노출하며 stdio 전송을 사용하고 추가 빌드 종속성이 없습니다. tree-sitter 문법은 코드베이스를 파싱하고 구문 강조, ast-grep을 통한 파싱 인식 검색, Zed 확장을 포함한 편집기 확장을 지원합니다. 프로젝트는 BSD 3-Clause 라이선스로 제공되며, 벤더링된 타사 구성 요소는 자체 라이선스를 유지합니다.