# C++ 나 Rust 보다 더 빠르게 작동하고 메모리 사용량도 적은 프로그래밍 언어 'Goose'

> https://bookfactory.kr/board/news/23922
> 게시판: 뉴스
> 작성자: tachikoma43
> 작성일: 2026-10-27T05:03:52.589Z

---

Goose 는 AI 의 지원을 받아 개발된 혁신적인 시스템 프로그래밍 언어입니다.

「메모리 안전성」, 「놀라운 실행 속도」, 「ompact한 메모리 사용량」을 모두 달성했으며, 기존 C++ 나 Rust 와 같은 언어를 벤치마크에서 능가할 수 있습니다.

The Goose Programming Language · Goosehttps://aardappel.

github.

io/goose/GitHub - aardappel/goose: The Goose Programming Language · GitHubhttps://github.

com/aardappel/gooseGoose 는 설계 철학과 기능 세트에서 기존 프로그래밍 언어와 구별됩니다.

·C++ 나 Rust 보다 빠르고 메모리 안전하며, 16 개의 벤치마크를 통해 Goose 는 일반적인 C++ 의 3.3 배, 수동으로 최적화된 C++ 의 1.16 배, Rust 의 1.12 배의 속도로 작동하며, 메모리 사용량은 각각 1.9 배, 1.3 배, 1.2 배의 효율화가 확인되었습니다.

·알로케이터, 게이지 컬렉터, 참조 카운트, 디스트럭터가 필요 없으며, 100 만 개의 하위 요소를 가진 구조체를 해제할 때无论 네스트가 얼마나 깊더라도 1 회 스토어 연산으로 완료할 수 있습니다.

- 배열 확장 시에도 참조는 유지됩니다. Goose에서는 타입화된 참조를 유지하지만, C++에서는 최대 크기만큼 메모리를 확보하기 위해 'reserve'를 호출해야 하며, Rust에서는 배열 인덱스를 사용해야 합니다.
- Zero-annotation 을 통한 메모리 안전 컴파일러는 모든 참조의 루트 객체를 추론하며, 소유 객체보다 더 오래 생존할 수 있는 참조를 거부함으로써 메모리 안전성을 보장합니다.
- 네스트된 데이터를 인라인으로 유지하며, 문자열, 문자열 배열, 가변 길이 필드를 가진 레코드, 레코드 배열을 포인터를 포함하지 않는 하나의 연속 블록으로 저장합니다.
예를 들어, C++에서는 160 바이트를 소비하고 1 회 할당을 필요로 하는 레코드라도 Goose에서는 29 바이트로 충분하며 메모리 할당도 불필요합니다.
- 가변 크기의 열거형과 가변 크기의 추상 데이터 타입은 각 값을 최대 크기가 아닌 각 바리안트 자체의 크기로 저장하므로, Rust 의 열거형에 비해 메모리 사용량은 1/4 로 줄어듭니다. 또한 실행 속도는 2 배가 됩니다.
- 상대 참조를 통한 위치 독립성 타입과 체크된 링크는 1~4 바이트의 오프셋으로 저장되므로, 데이터 구조가 위치 독립적이 되어 파일에 대한 쓰기 및 읽기가 용이해집니다.

·인플레이스 빌드 호출의 깊이에 관계없이 데이터가 최종 위치로 직접 빌드되므로, 'items.push(parse(line))'와 같은 연산으로 파싱된 레코드가 배열에 직접 기록됩니다.

·효율적인 오류 처리 'return err from load'와 같은 문법이 지원되며, 이를 사용하면 수 스택의 임의의 프레임까지 정적으로 체크되어 언윈더나 Result 타입이나 '?' 를 필요로 하지 않는 방식으로 오류를 전파할 수 있습니다.

·공유 메모리가 없는 스레드 각 워커는 독립적인 메모리 공간을 가진 별도의 프로그램으로 컴파일되며, 값은 타입화된 큐와 memcpy 을 통해 스레드 간에 안전하게 전달되므로 데이터 경쟁, 락, 원자 연산, 메모리 순서와 같은 개념은 언어 수준에서 존재하지 않습니다.

·오버헤드가 없는 제네릭 고階 함수 제네릭과 함수 값은 컴파일 시 엔티티로 취급되어 실행 시 오버헤드 없이 작동하므로, 'xs.filter() { it > 0 }'와 같은 코드는 루프 문법과 동등한 성능을 발휘합니다.

·C 언어로 컴파일된 Goose 의 소스 코드는 단일 C 파일로 컴파일되므로 C 컴파일러가 있는 환경이라면 어디에서나 실행 가능하며, 'extern fn' 문법을 통해 C 함수를 직접 호출할 수도 있습니다.

Goose 의 높은 성능은 메모리 모델에 기인합니다.

그 중 하나는 '스コー프 종료 시 데이터 스택이 해제된다'는 점입니다.

프로그램은 네이티브 호출 스택, 정적 데이터, N 개의 데이터 스택을 가지며, N 의 값은 컴파일러에 의해 계산됩니다.

데이터 스택은 할당해야 할 빈 메모리의 첫 번째 주소 지시자를 갖는 '바텀 포인터'를 가진 큰 주소 공간을 예약한 것입니다.

각 스택에는 최대 1 개만 존재하며 크기 변경이 가능한 값이 항상 최상단에 배치됩니다.

필요한 메모리 용량은 모두 컴파일 시에 증명되며, 런타임은 바텀 포인터만 추적하므로 스택의 확장에 의해 데이터가 이동하거나 용량이 체크되지 않습니다.

그리고 스코프 종료 시 데이터 스택이 해제됩니다.

for round in 3 {
    var scratch: u8[>.

.

] = [];                        // 바텀 포인터
    for i in 100000 { scratch.

push((i % 256) as!

u8); }
    print("round ", round, ": ", scratch.len, " bytes");
}                                                     // 스코프 종료 시 데이터 스택이 해제됩니다. Goose 의 push() 는 새로운 요소에 대한 참조를 반환하므로, 프로그램은 배열을 구축하는 동안 요소를 링크할 수 있으며, 배열의 메모리는 결코 이동하지 않습니다.

C++ 의 vector 나 Rust 의 Vec 은 메모리 재할당이 발생할 수 있으므로, 배열의 메모리가 고정되어 있다는 보장은 없습니다.

Goose 의 이러한 특성은 몇 가지 벤치마크에서 성능 향상을 가져왔습니다.

struct Item { id: i32, weight: f32 }

var items: Item[>..] = [];
let first = items.push(Item { 1, 0.5 }); // 0 번 인덱스 요소에 대한 참조
for i: i32 in 2..1000001 { items.push(Item { i, 0.0 }); }
first.weight = 99.5; // 100 만 회 push() 호출 후에도 참조가 유효 Goose 컴파일러를 빌드하려면 git, cmake, C 컴파일러가 필요합니다. git clone https://github.com/aardappel/goose
cd goose
cmake -B build -DCMAKE_BUILD_TYPE=Release -DGOOSE_BUILTIN_LIBS=all
cmake --build build --config Release
記事作成時点における制限事項は以下の通りです。
1. 데이터 저장 위치, 즉 소유자 및 유효 기간을 고려해야 합니다.
2. 재귀 함수는 재귀 호출을 넘어 확장 가능한 데이터를 유지할 수 없습니다.
3. 변수 크기의 요소 배열은 반복 처리는 가능하지만 인덱스를 통한 참조는 불가능합니다 (참조 인덱스를 별도로 유지하는 경우를 제외합니다).
4. 이스케이프 클로저, 함수 포인터, ADT 태그를 초과하는 동적 디스패칭은 존재하지 않으며, 전체 프로그램의 컴파일만 지원됩니다.
5. 재사용 풀로 반환되었음에도 불구하고 참조가 계속되는 슬롯은 다음 소유자가 그곳에 작성한 내용을 읽을 수 있습니다. 이는 논리적 버그이지만 메모리 손상 절대로 발생하지 않습니다.
Goose 는 인간에 의한 언어 설계에 기반하지만 거의 완전히 AI 에 의해 생성되었습니다. 장기적으로 설계는 완료되었으나 구현 시간을 할당할 수 없었으나, 특히 Fable 이 등장함에 따라 Goose 의 구현이 현실감을 갖게 되었다고 합니다. 개발자는 AI 가 기존 언어의 재현에 그치지 않고 완전히 새로운 언어를 구현할 수 있는지에 대한 실험으로 이 프로젝트를 추진했다고 합니다.
Google 우선 소스 설정 Clipboard 기사 제목과 URL 을 복사 X Facebook Bluesky Discord Threads

Goose 의 push() 는 새로운 요소에 대한 참조를 반환하므로, 프로그램은 배열을 구축하는 동안 요소를 링크할 수 있으며, 배열의 메모리는 결코 이동하지 않습니다. C++ 의 vector 나 Rust 의 Vec 는 메모리 재할당이 발생할 수 있으므로, 배열의 메모리가 고정되어 있다는 보장은 없습니다. Goose 의 이러한 특성은 몇 가지 벤치마크에서 성능 향상을 가져왔습니다. struct Item { id: i32, weight: f32 }

var items: Item[>..] = [];
let first .= items.push(Item { 1, 0.5 });             // 0 번 인덱스 요소에 대한 참조
for i: i32 in 2..1000001 { items.push(Item { i, 0.0 }); }
first.weight = 99.5;                                  // push() 를 100 만 번 호출한 후에도 참조는 유효함
Goose 컴파일러를 빌드하려면 git, cmake, C 컴파일러가 필요합니다.
git clone https://github.com/aardappel/goose
cd goose
cmake -B build -DCMAKE_BUILD_TYPE=Release -DGOOSE_BUILTIN_LIBS=all
cmake --build build --config Release
현재 기사 작성 시점의 제한 사항은 다음과 같습니다.
- 데이터 저장 위치, 즉 누가 소유하고 유효 기간이 얼마나 되는지를 고려해야 합니다.
- 재귀 함수는 재귀 호출을 넘어 확장 가능한 데이터를 보유할 수 없습니다.
- 가변 크기의 요소 배열은 반복 처리는 가능하지만 인덱스를 통한 참조는 불가능합니다(참조 인덱스를 별도로 유지하는 경우를 제외합니다).
- 에스케이프 클로저, 함수 포인터, ADT 태그를 초과하는 동적 디스패칭은 존재하지 않으며, 프로그램 전체의 컴파일만 지원됩니다.
- 재사용 풀로 반환되었음에도 불구하고 참조가 계속되는 슬롯은 다음 소유자가 그곳에 작성한 내용을 읽을 수 있습니다. 이는 논리적 버그이지만 메모리 손상 절대로 발생하지 않습니다.
Goose 는 인간에 의한 언어 설계에 기반하지만 거의 완전히 AI 에 의해 작성되었습니다.
설계는 오랫동안 완료되었으나 구현 시간을 할당할 수 없었으나, 특히 Fable 이 등장함에 따라 Goose 의 구현이 현실감을 갖추게 되었다고 합니다.
개발자는 AI 가 기존 언어의 재현에 그치지 않고 완전히 새로운 언어를 구현할 수 있는지에 대한 실험으로 이 프로젝트를 추진했다고 합니다.
Google 우선 소스 설정
Clipboard
기사 제목과 URL 을 복사
X
Facebook
Bluesky
Discord
Threads

Goose 컴파일러를 빌드하려면 git, cmake, C 컴파일러가 필요합니다. git clone https://github.com/aardappel/goose 를 실행한 후 cd goose 를 입력하고 다음 명령어를 실행합니다. cmake -B build -DCMAKE_BUILD_TYPE=Release -DGOOSE_BUILTIN_LIBS=all 이고, cmake --build build --config Release 를 실행합니다.

작성 시점의 제한 사항은 다음과 같습니다.
- 데이터 저장 위치, 즉 누가 소유하고 유효 기간이 얼마나 되는지를 고려해야 합니다.
- 재귀 함수는 재귀 호출을 넘어 확장 가능한 데이터를 유지할 수 없습니다.
- 가변 크기의 요소의 배열은 반복 처리는 가능하지만 인덱스를 통한 참조는 불가능합니다 (참조 인덱스를 별도로 유지하는 경우를 제외합니다).
- 이스케이프 클로저, 함수 포인터, ADT 태그를 초과하는 동적 디스패칭은 존재하지 않으며, 프로그램 전체의 컴파일만 지원됩니다.
- 재사용 가능한 풀로 반환되었음에도 불구하고 참조가 계속되는 슬롯은 다음 소유자가 그곳에 작성한 내용을 읽을 수 있습니다. 이는 논리적 버그이지만 메모리 손상 절대로 발생하지 않습니다.

Goose 는 인간에 의한 언어 설계에 기반하지만 거의 완전히 AI 에 의해 작성되었습니다. 설계는 오랫동안 완료되었으나 구현 시간을 할당할 수 없었으나, 특히 Fable 이 등장함에 따라 Goose 의 구현이 현실감을 갖게 되었다고 합니다. 개발자는 AI 가 기존 언어의 재현에 그치지 않고 완전히 새로운 언어를 구현할 수 있는지를 실험하기 위해 이 프로젝트를 추진했다고 합니다.

Google 우선 소스 설정 Clipboard
기사 제목과 URL 을 복사
X Facebook Bluesky Discord Threads

이 기사가 작성된 시점의 제한 사항은 다음과 같습니다. 1. 데이터 저장소, 즉 누가 소유하고 유효 기간이 얼마나 되는지를 고려해야 합니다. 2. 재귀 함수는 재귀 호출을 넘어 확장 가능한 데이터를 유지할 수 없습니다. 3. 가변 크기의 요소 배열은 반복 처리는 가능하지만 인덱스를 통한 참조는 불가능합니다 (참조 인덱스를 별도로 유지하는 경우를 제외합니다). 4. 이스케이프 클로저, 함수 포인터, ADT 태그를 넘어선 동적 디스패칭은 존재하지 않으며, 전체 프로그램의 컴파일만 지원됩니다. 5. 재사용 풀로 반환되었음에도 불구하고 참조가 계속되는 슬롯은 다음 소유자가 그곳에 작성한 내용을 읽을 수 있습니다. 이는 논리적 버그이지만 메모리 손상 절대로 발생하지 않습니다. Goose 는 인간에 의한 언어 설계에 기반하지만 거의 완전히 AI 에 의해 작성되었습니다. 설계는 오랫동안 완료되었으나 구현 시간을 할당할 수 없었으나, 특히 Fable 이 등장함에 따라 Goose 의 구현이 현실감을 갖게 되었다는 것입니다. 개발자는 AI 가 기존 언어의 재현에 그치지 않고 완전히 새로운 언어를 구현할 수 있는지를 실험으로 이 프로젝트를 추진했다고 합니다.

[원문 보기](https://gigazine.net/news/20261027-goose/) | 출처: Gigazine