Pulse 게시 ·

Gleam 1.19, Erlang 중간 표현 생성으로 빌드·오류 위치 개선

Gleam이 10월 5일 1.19.0을 공개했다. Erlang 소스 대신 중간 표현을 생성해 Erlang 컴파일러의 토큰화·구문 분석을 건너뛴다. 개발팀은 빌드 시간이 줄고 BEAM 오류 보고·스택 추적의 줄 번호가 원래 Gleam 코드와 정확히 맞게 됐다고 밝혔다. 필드·인자 라벨의 정의 이동·참조 검색·이름 변경도 추가했다.

Erlang 코드 생성기를 재작성해 소스 코드 대신 메타데이터를 포함하는 Erlang abstract forms를 출력한다.

새 코드 생성기는 Gleam 원본의 위치 정보를 보존한다. 디버거의 완전한 Gleam 지원 가능성도 열리지만 개발팀이 직접 구현한 상태는 아니다.

공개한 빌드 비교는 문자열을 반환하는 함수 100개씩을 담은 모듈 100개를 캐시 없이 컴파일한 시험이다. 실제 프로젝트 전체의 성능을 대표하는 결과로 제시하지 않았다.

JavaScript 출력은 중첩 조건문과 중간 변수를 줄이고 짧은 리스트를 직접 구성하도록 개선했다. 긴 리스트는 기존 배열 변환 방식을 유지한다.

TypeScript 타입 판별 함수에 오버로드를 추가해 가능한 경우 제네릭 타입 정보를 보존한다.

외부 빌드 도구용 명령과 .app 파일 생성을 개선했으며, 브라우저에서 포매터를 실행할 수 있는 WebAssembly 함수도 추가했다.

중간 표현을 쓰면 Erlang 컴파일러의 기존 최적화를 활용하면서 직접 BEAM 바이트코드를 생성·유지하는 부담을 줄일 수 있다.

원문