핵심 요약
- 힙 할당자, 가비지 컬렉터, 라이프타임 표기를 모두 없애고 컴파일러가 관리하는 스택 모델을 채택한 신규 시스템 프로그래밍 언어 'Goose'가 공개되었습니다.
- 벤치마크 테스트에서 관용적 C++ 대비 3.3배, 최적화 Rust 대비 1.12배 빠른 속도와 적은 메모리 사용량을 기록했습니다.
- 배열이 커져도 요소가 이동하지 않아 참조가 유지되며, 최종적으로 단일 C 코드로 컴파일되어 높은 호환성을 제공합니다.
요약 힙(heap) 할당자도, 가비지 컬렉터(GC)도, 복잡한 라이프타임 표기(lifetime annotations)도 완전히 배제한 신규 시스템 프로그래밍 언어 '구스(Goose)'가 공개되어 개발자 커뮤니티에서 화제를 모으고 있습니다.
Goose는 C와 Rust 개발자들에게 친숙한 문법을 채택하고 있지만 메모리 관리 방식이 완전히 다릅니다. 프로그램 내 모든 동적 값이 컴파일러가 정적으로 배정한 여러 개의 데이터 스택 위에 인라인으로 배치되며, 크기가 커질 때 포인터를 단순히 전진(bump pointer)시키고 스코프가 끝나면 스택 포인터 위치를 되돌리는 것만으로 메모리를 즉시 해제합니다. 이 덕분에 100만 개 요소로 이뤄진 복잡한 구조체도 단 한 번의 스토어 명령어로 메모리 해제가 끝납니다.
벤치마크 결과에 따르면 Goose는 관용적인 C++ 대비 3.3배, 수작업 최적화된 C++ 대비 1.16배, 가장 안전한 Rust 코드 대비 1.12배 빠른 속도를 기록했으며, 메모리 사용량 역시 각각 1.9배, 1.3배, 1.2배 적게 사용했습니다. 특히 동적 배열이 커지더라도 메모리 재할당이나 요소 이동이 전혀 발생하지 않아, 백만 번 푸시한 후에도 기존 참조가 깨지지 않고 그대로 유지되는 강력한 안정성을 제공합니다.
또한 Rust처럼 복잡한 라이프타임 문법이나 소유권 규칙을 명시하지 않아도 컴파일러가 모든 참조의 루트를 정적으로 추론하여 스코프를 벗어나는 잘못된 참조를 컴파일 타임에 차단합니다. 이 밖에도 스레드 간에 메모리를 공유하지 않고 타입 큐를 통한 단순 메모리 복사(memcpy)로 데이터를 주고받아 락이나 데이터 레이스 자체가 존재하지 않으며, 단일 C 파일로 컴파일되어 TinyCC 백엔드를 통해 별도 빌드 단계 없이 즉시 실행할 수 있는 것이 특징입니다.
Sponsored · 광고