핵심 요약
- 새로운 프로그래밍 언어 발렌(Valen)이 러스트의 엄격한 빌림 검사 규칙을 완화한 '그룹 빌림(Group Borrowing)' 메모리 안전성 모델을 소개했습니다.
- 컴파일러가 참조의 대상을 기억하는 방식을 통해 동일 객체에 대한 다중 수정 참조를 허용하면서도 런타임 비용 없이 컴파일 타임에 '해제 후 사용(UAF)' 오류를 잡아냅니다.
- 과거 모조(Mojo)에서 탈락했던 설계였으나 현재 구글 카본(Carbon) 등 여러 차세대 언어들이 채택하며 큰 주목을 받고 있습니다.
요약 프로그래밍 언어 개발자인 에반 오바디아(Evan Ovadia)가 러스트(Rust)의 엄격한 빌림 검사(Borrow Checker) 한계를 극복하기 위해 설계된 '발렌(Valen)' 언어의 새로운 메모리 안전성 모델인 '그룹 빌림(Group Borrowing)'을 공개했습니다.
오바디아에 따르면 기존 러스트 방식은 '공유되거나 수정 가능하거나(shared-xor-mutable)'라는 강력한 제약을 둡니다. 즉, 어떤 객체에 대한 참조를 쥐고 있으면 다른 누구도 그 객체를 수정할 수 없게 만들어 메모리 안전성을 확보하는 방식입니다. 하지만 이로 인해 여러 참조를 두고 자유롭게 값을 수정하는 유연한 코딩 패턴이 제한되는 문제가 있었습니다.
반면 닉 스미스(Nick Smith)가 고안하고 발렌에 적용된 '그룹 빌림' 방식은 컴파일러가 각 참조가 정확히 '어디를 가리키고 있는지'를 기억하도록 설계되었습니다. 이를 통해 'shared-xor-mutable' 제약을 '해제 후 사용(Use-After-Free) 방지' 수준으로 완화했습니다. 예를 들어 동일한 벡터(Vec) 객체를 가리키는 두 개의 참조(ref_a, ref_b)를 동시에 생성하고 양쪽 모두를 통해 자유롭게 데이터를 수정(push)하더라도, 컴파일러가 안전성을 확인하고 정상적으로 통과시키는 유연성을 보여줍니다.
이 개념은 과거 모조(Mojo) 프로젝트 도입이 무산되며 사장될 뻔했으나, 설계안 공개 이후 구글의 카본(Carbon) 언어가 그룹 빌림 방식을 전면 채택하고 안테(Ante), 플렉라(Plecra) 등 다양한 차세대 언어들이 이를 벤치마킹하는 등 업계 전반에 큰 반향을 일으키고 있습니다. 발렌은 여기에 더해 러스트 코드와의 상호 운용까지 지원하며 런타임 오버헤드 없는 컴파일 타임 메모리 안전성을 목표로 하고 있습니다.
Sponsored · 광고