타입 안전성을 지향하는 프로그래밍 언어 Gleam이 최신 v1.19.0 업데이트를 통해 Erlang 가상 머신(BEAM) 환경에서의 빌드 방식을 혁신했습니다. 기존에는 Erlang 소스 코드를 생성한 뒤 Erlang 컴파일러를 통해 다시 컴파일하는 방식이었으나, 이제는 Erlang 소스 코드 대신 Erlang 추상 형식(abstract forms)이라는 중간 표현을 직접 생성합니다. 이는 Erlang 컴파일러의 토큰화 및 파싱 단계를 건너뛰어 빌드 시간을 크게 단축하는 효과를 가져옵니다.
새로운 Erlang 코드 생성기는 기존 설계를 전면 교체하여 Erlang 추상 형식을 출력하며, 이 형식은 Erlang 구문을 나타내는 메타데이터가 포함된 트리 구조입니다. 이를 external term format으로 바이너리 인코딩하여 직접 불러오기 때문에 Erlang 컴파일러의 전반부를 우회할 수 있습니다. 이로 인해 Gleam 프로젝트의 빌드 성능이 향상되었을 뿐만 아니라, BEAM 오류 보고서나 스택 추적에서 원본 Gleam 코드의 정확한 줄 번호를 확인할 수 있게 되어 디버깅 효율성도 크게 개선되었습니다. Gleam 팀은 BEAM 바이트코드를 직접 생성하는 대신 추상 형식을 선택했는데, 이는 BEAM 가상 머신의 잦은 변경 사항을 추적하고 기존 최적화를 재구현하는 부담을 피하기 위한 비용 효율적인 결정입니다.
또한 이번 업데이트에서는 JavaScript 코드 생성도 개선되었습니다. 패턴 매칭(pattern matching) 시 중첩된 조건문과 중간 변수를 줄여 생성되는 JavaScript 코드의 복잡성을 낮췄고, 짧은 리스트(list)는 배열 변환 없이 직접 구성하도록 최적화하여 런타임 성능을 향상시켰습니다. TypeScript 연동에서는 제네릭(generic) 타입 보존을 강화하여 타입 정보를 더 정확하게 유지할 수 있게 되었으며, Elixir의 Mix나 Erlang의 rebar3와 같은 외부 빌드 도구와의 연동을 위한 명령어도 개선되어 상호운용성이 더욱 강화될 전망입니다. 언어 서버 기능도 향상되어 레이블 탐색, 이름 변경, 브라우저 내 포맷팅, 그리고 오류 진단 기능이 강화되어 개발자 경험이 전반적으로 개선되었습니다.
이러한 개선은 Gleam이 후원 기반으로 운영되는 커뮤니티 프로젝트라는 점을 고려할 때 더욱 의미가 큽니다. 제한된 자원 내에서 지속 가능성을 확보하면서도 개발자 생산성을 높이는 방향으로 언어를 발전시키고 있기 때문입니다. 특히 빌드 시간 단축과 정확한 디버깅 정보 제공은 개발자들이 Gleam을 선택하고 프로젝트에 적용하는 데 중요한 요소로 작용할 것입니다. Gleam은 Erlang 생태계 내에서 타입 안전성과 현대적인 개발 경험을 제공하며, 앞으로도 더욱 많은 개발자들에게 매력적인 선택지가 될 것으로 기대됩니다.