EXPLORINEER
ko

Hacker News

Goose 프로그래밍 언어

소프트웨어처음 오른 때 점수 146댓글 52


Goose는 새로 나온 시스템 프로그래밍 언어입니다. 힙(heap) 메모리, 쓰레기 수거기(GC), 수명 주석 없이도 메모리를 안전하게 다루고, 벤치마크에서 C++과 Rust보다 빠르고 메모리를 적게 씁니다.

무슨 일이 있었나

Goose 언어를 소개하는 저장소 글입니다. Goose는 C나 Rust와 비슷한 문법을 쓰지만 힙이 없습니다. 모든 값은 컴파일러가 관리하는 데이터 스택 위에 바로 놓입니다. 메모리는 값이 속한 범위(scope)가 끝나면 한꺼번에 해제됩니다. 언어의 타입 규칙과 수명 규칙이 이 방식을 안전하게 만듭니다.

주요 숫자

  • 16개 벤치마크에서 Goose는 일반적인 C++보다 3.3배 빠릅니다.
  • 손으로 최적화한 C++보다 1.16배, 안전한 Rust 중 가장 빠른 것보다 1.12배 빠릅니다.
  • 메모리는 C++보다 1.9배, 손으로 최적화한 C++보다 1.3배, 안전한 Rust보다 1.2배 적게 씁니다.
  • 160바이트짜리 레코드가 C++에서는 할당이 필요하고, Goose에서는 29바이트이며 할당이 없습니다.

메모리를 다루는 방식

보통 메모리 안전성을 얻으려면 쓰레기 수거기나 수명 주석이 필요합니다. Goose는 이 둘 없이 데이터 스택을 씁니다. 배열에 값을 넣으면 스택 포인터가 앞으로 움직이고, 범위가 끝나면 한 번의 기록으로 모두 해제됩니다. 문자열, 레코드, 배열처럼 여러 값이 묶인 데이터도 포인터 없이 한 덩어리로 저장됩니다.

왜 중요한가

Goose는 빠르면서도 메모리 오류를 막으려는 시도입니다. 보통 C++은 빠르지만 실수가 많고, Rust는 안전하지만 어렵고 느린 부분이 있습니다. Goose는 두 장점을 함께 얻으려 합니다. 또 데이터 구조가 그대로 파일 형식이 될 수 있어, 저장과 불러오기가 단순해집니다. 다만 이 수치는 저장소의 벤치마크 결과이므로, 실제 프로그램에서도 같을지는 직접 확인해 보아야 합니다.

앞으로 지켜볼 점

  • 튜토리얼, 레퍼런스, 명세서로 언어가 얼마나 완성되어 있는지 살펴보기
  • 샘플 31개 프로그램과 표준 라이브러리가 얼마나 늘어나는지 보기
  • 벤치마크 결과를 다른 환경에서 재현할 수 있는지 확인하기

용어 풀이

Goose
메모리를 안전하게 다루면서 빠르게 실행되도록 설계된 새 시스템 프로그래밍 언어입니다.
heap
프로그램이 실행 중에 필요한 만큼 메모리를 빌려 쓰는 공간입니다.