jordanhubbard/nanolang

A tiny experimental language designed to be targeted by coding LLMs

해결하는 문제

NanoLang은 기계가 작성하고 인간이 읽을 수 있도록 특별히 설계된 최소한의 프로그래밍 언어입니다. 모호하지 않은 구문을 강제하고 함수에 대한 테스트 블록을 요구함으로써 프로그래밍 언어의 모호성 문제와 통합 테스트의 부족 문제를 해결합니다.

작동 방식

NanoLang은 타입 안전성, 진행성 및 결정론성을 보장하기 위해 Coq에서 검증된 세맨틱을 가진 형식적으로 증명된 코어(NanoCore)를 사용합니다. 두 가지 주요 실행 경로를 제공합니다. 네이티브 성능을 위한 C로의 트랜스파일 또는 위험한 외부 호출을 별도의 프로세스에서 격리하는 자체 스택 기반 가상 머신(NanoISA)을 통한 실행입니다. 이 언어는 참조 카운팅을 통한 자동 메모리 관리, 명시적인 부작용 처리를 위한 대수적 효과(algebraic effects), 그리고 상수 폴딩, 데드 코드 제거 및 프로파일 가이드 인라이닝을 수행하는 컴파일러를 특징으로 합니다.

대상

AI/기계가 생성하기 쉽고 인간이 유지 관리하기 쉬운 형식 검증된 모호하지 않은 언어가 필요한 개발자와 형식 검증 및 언어 설계에 관심이 있는 사람들을 대상으로 합니다.

주요 특징

  • 형식적으로 증명된 세맨틱: 코어 세맨틱은 공리나 허용된 서브 케이스 없이 Coq에서 기계적으로 증명되었습니다.
  • NanoISA VM: 약 94개의 opcodes를 가진 스택 기반 가상 머신과 FFI 격리를 위한 코프로세스 모델.
  • 멀티 타겟 컴파일: C, WebAssembly, LLVM IR, PTX/CUDA 및 RISC-V 어셈블리로의 트랜스파일을 지원합니다.
  • Shadow Tests: 함수 커버리지를 보장하기 위해 shadow 테스트 블록 사용을 강제합니다.
  • 고급 언어 기능: 대수적 효과, async/await (CPS 상태 머신을 통해), 풍부한 패턴 매칭 및 타입 추론을 포함합니다.
  • IDE 지원: VS Code 통합을 위한 자체 Language Server (LSP) 및 Debug Adapter (DAP)를 제공합니다.