2026년 10월 9일 공개된 글에서 Eyad Amr는 자신이 개발한 실험적 프로그래밍 언어 Zeta의 대여 검사기가 Rust보다 다양한 메모리 접근 패턴을 허용하면서 안전성을 유지한다고 주장한다. 핵심은 서로 겹치지 않는 메모리 영역을 컴파일러가 판별하는 ‘분리성(disjointness)’과 공유 상태를 변경할 수 있는 &alias 참조다.

Rust는 가변 참조 &mut가 한 번에 하나만 존재하거나 불변 참조 &가 여러 개 존재하도록 제한한다. 이 규칙은 메모리 안전과 최적화에 도움이 되지만, 서로 다른 배열 원소를 동시에 수정하는 경우에도 컴파일러가 접근 영역의 분리 여부를 증명하지 못하면 코드를 거부할 수 있다. Rust의 get_disjoint_mut처럼 런타임에 인덱스가 겹치는지 확인하는 방법도 있지만, 글은 이 방식에 검사와 unsafe 구현이 필요하다고 지적한다.

Zeta는 함수의 접근 방식을 분석해 참조가 닿는 메모리 영역을 추론하고, 인덱스나 범위가 겹치지 않음을 증명하면 여러 가변 참조를 허용한다. 상수 인덱스, 반복문 인덱스, 런타임 조건, 산술 관계 등이 증명에 쓰일 수 있다. 반대로 겹침을 증명할 수 없거나 실제로 두 참조가 같은 영역을 가리키면 컴파일 오류가 난다. 글은 이 방식을 통해 서로 다른 배열 구간을 여러 스레드에서 동시에 수정하는 사례도 허용한다고 설명한다.

또 다른 요소인 &alias는 같은 데이터에 대한 여러 변경 가능한 별칭을 허용한다. 작성자의 설명에 따르면 &alias는 일반적인 &mut나 불변 참조와 동시에 사용할 수 없으며, &mut처럼 noalias 최적화 보장도 제공하지 않는다. 참조 대상이 이동하거나 해제돼 무효화되는 상황은 분리성 분석으로 감지한다는 주장이다. 이 기능은 이중 연결 리스트처럼 노드 간 역참조가 필요한 자료 구조를 참조 카운팅이나 런타임 대여 검사 없이 표현하는 데 쓰인다.

Zeta는 소유 포인터와 소유 슬라이스도 제공한다. 이들은 이동과 자동 해제를 따르며, 포인터를 만든 할당자를 직접 사용할 수 있다. Rust의 수명 표기 대신 참조와 포인터의 출처 및 소유 관계를 나타내는 ‘provenance’를 사용해 수명을 추론하고 더 구체적인 오류 진단을 제공하는 것이 설계 목표다. 초기화되지 않은 메모리는 필드나 배열 요소 단위로 초기화 여부를 추적한다. 다만 초기화되지 않은 값을 FFI 호출에 전달하는 경우 안전하게 초기화됐다고 추론할 수 없어, 이를 사용하려면 unsafe가 필요하다고 글은 설명한다.

글의 성능·안전성 비교는 Zeta 제작자의 설명이며 독립적으로 검증된 결과는 아니다. 글은 Zeta가 실험적 언어이고 실제로 구축된 소프트웨어가 거의 없어 설계 주장을 충분히 스트레스 테스트하지 못했다고 밝힌다. 작성 시점에 대여 검사기는 구현·테스트됐지만 비동기 처리는 지원하지 않는다고도 적었다. 이후 비동기와 분리된 슬라이스를 다루는 예시를 제시하지만, 실제 제품에서의 성능 비교나 광범위한 재현 결과는 제공하지 않는다.

코드와 구현 자료는 Zeta GitHub 저장소에서 확인할 수 있다. 관련 배경 자료로는 그룹 대여(group borrowing) 설명, Rust 이중 연결 리스트 구현 글, LLVM의 noalias 문서가 링크돼 있다. Rust 대여 오류 사례도 Rust Playground, Rust Playground, Rust Playground, Rust Playground에서 볼 수 있다.