프로그래머 aardappel이 새로운 시스템 프로그래밍 언어 ‘Goose’를 공개했습니다. 이 언어는 힙 할당자, 가비지 컬렉터, 수명 주석 없이 메모리 안전성을 보장하는 것을 핵심 특징으로 내세우고 있습니다.
공식 문서와 GitHub 저장소에 따르면 Goose의 메모리 모델은 오직 스택과 스코프 종료 시점의 해제로만 구성됩니다. 모든 동적 값은 컴파일러가 관리하는 데이터 스택에 인라인으로 배치됩니다. 메모리는 포인터가 전진하며 할당되고, 해당 스코프가 끝나면 즉시 해제되는 방식입니다.
벤치마크 결과도 주목할 만합니다. 개발자는 16개 이상의 테스트에서 Goose가 관습적인 C++보다 3.3배 빠르고, 손으로 최적화한 C++보다 1.16배, 안전한 Rust보다 1.12배 빠른 속도를 기록했다고 밝혔습니다. 메모리 사용량 역시 각각 1.9배, 1.3배, 1.2배 적게 소요된다고 설명했습니다.
이러한 성능 향상은 Goose의 고유한 데이터 레이아웃과 메모리 모델에서 기인합니다. 할당자나 GC, 참조 카운팅, 소멸자가 존재하지 않습니다. 메모리는 컴파일러가 정적으로 할당하는 몇 개의 데이터 스택으로만 이루어집니다.
백만 개 요소로 구성된 구조체라도 중첩 깊이에 관계없이 한 번의 스토어 연산으로 해제됩니다.
Hacker News에서는 이 언어의 설계 철학에 대한 구체적인 질문들이 오갔습니다. 특히 고정된 수의 스택만으로는 임의의 크기를 가진 동적 값을 어떻게 표현하는지에 대한 의문이 제기되었습니다. 해시 테이블처럼 무작위 삽입과 삭제가 빈번한 경우를 예로 들며, 문자열을 별도 스택에 두고 주기적으로 압축하거나 크기별 스택을 분리해야 하는 것 아니냐는 지적이 나왔습니다.
일부 사용자들은 Rust에서 유사한 메모리 관리 로직을 직접 구현해 본 경험을 공유하며 Goose의 접근법에 공감대를 형성하기도 했습니다. 이름의 유래에 대해 거위가 편대 비행을 하며 에너지를 절약하는 모습과 메모리 관리 모델을 연결 짓는 해석도 등장했습니다.
현재 Goose는 공식 릴리스를 통해 설치 및 빌드가 가능하며, 튜토리얼과 레퍼런스, 사양서, 샘플 코드 등이 제공되고 있습니다. 다만 힙 부재로 인한 특정 데이터 구조 구현의 복잡성이나 실제 프로덕션 환경에서의 확장성은 아직 검증 단계에 있는 것으로 보입니다.
