핵심 요약
- 스킴의 문법과 C의 동작 방식, ML의 타입 시스템을 결합한 미니멀 정적 타입 언어 'L2' 프로젝트가 공개되었습니다.
- 단 10개의 언어 구문과 10개의 내장 함수만으로 구성되었으며 기본 데이터 타입조차 없지만 매크로와 강력한 제어 흐름을 지원합니다.
- C 기반 부트스트랩 컴파일러와 L2로 작성된 자체 셀프 호스팅 컴파일러가 완전히 동일한 목적 코드를 생성하도록 구현되었습니다.
요약 'L2'라는 이름의 독특한 미니멀리즘 프로그래밍 언어 프로젝트가 깃허브를 통해 공개되어 개발자 커뮤니티에서 관심을 모았습니다. 제작자에 따르면 L2는 외형상 스킴(Scheme)처럼 생겼고 C 언어처럼 동작하며, 타입 검사는 ML 계열처럼 수행하는 독특한 정적 타입 언어입니다.
이 언어의 가장 큰 특징은 극단적인 단순함입니다. L2는 단 10개의 핵심 언어 구성 요소(구문)와 S-표현식 조작을 위한 10개의 내장 함수만으로 전체 체계가 설계되어 있습니다. 기본형 데이터 타입이나 대수적 데이터 타입을 아예 제공하지 않으며, 메모리 관리도 수동으로 처리하도록 되어 있습니다. 대신 S-표현식 문법, 일급 함수, 컴파일 타임 일급 타입, 힌들리-밀너(Hindley-Milner) 타입 추론, 그리고 비위생적(unhygienic) 절차적 매크로 등을 지원합니다. 또한 break, return, longjmp를 포괄하는 매우 일반화된 제어 흐름을 지원하여 코루틴이나 제너레이터 같은 고급 기능도 구현할 수 있도록 설계되었습니다.
프로젝트는 C 언어로 작성된 부트스트랩 컴파일러와 L2 언어 자체로 작성된 셀프 호스팅 컴파일러 등 두 가지 구현체를 제공합니다. L2 셀프 호스팅 컴파일러는 C 언어에 내장되어 있던 제어 흐름이나 리터럴 같은 기능들을 직접 정의해야 하므로 소스 코드 규모는 더 크지만, 두 컴파일러 모두 동일한 입력을 주면 완전히 동일한 목적 코드(오브젝트 파일)를 생성합니다. 컴파일 과정에서는 컴파일 타임 함수 호출을 위해 프로그램을 먼저 메모리에 로드하고 지연 컴파일(lazy compilation) 기법을 활용하여 프로그램 전체가 자기 자신을 전처리할 수 있는 환경을 구성하는 독특한 방식을 취하고 있습니다.
Sponsored · 광고