Valen, 그룹 빌림 기반의 유연한 borrow checker 공개 명칭 Path Borrowing 논의 확산
- Valen의 유연한 borrow checker는 Nick Smith가 설계한 Group Borrowing 제안을 기반으로 함
- 컴파일러가 참조가 가리키는 위치를 기억해서 메모리 안전성을 검사하는 방식임
- Carbon, Ante, Zeta, Fang 등 여러 언어가 group borrowing 아이디어를 도입하거나 설계에 반영함
- Valen은 공유 xor 가변 제약을 완화해 참조 카운팅, 세대별 참조와 함께 쓸 수 있는 Vale 접근법을 결합함
- Valen은 Rust 코드 호출을 지원하고 참조 방식을 하나로 통일함
Hacker News opinions
글쓴이가 group 대신 Path Borrowing이 낫지 않냐고 물어봄. 그룹 개념은 본질이 아니라서 이름을 바꾸는 게 맞아 보임
foo in bar는 나한테 반복문 순회로 읽힘. .NET에서 bar가 컬렉션이고 foo에 원소를 하나씩 넣는 거랑 똑같은 느낌이라 헷갈림
그 이름 바꾸는 얘기에 동의함. 그룹 무효화가 핵심이면 Path Borrowing이 구현 방식이 아니라 아이디어를 설명하니까 더 낫다고 봄
Valen이 Vale 이름을 바꾼 건지 다른 프로젝트인지 궁금했는데 본문 읽고 별도 프로젝트인 걸 확인함
답글 보면 Valen은 Vale 컴파일러를 90% 재사용하는데 Rust 상호운용이랑 가변 별칭 처리 방식이 달라서 새 이름이 필요했다고 함. Vale의 세대별 참조와 리전 빌림 조합은 이름으로 남기고 싶었다고 함
Path Borrowing이 더 명확하게 읽힘. group이라고 하니까 자꾸 그룹 타입을 찾게 되더라
GPU 컴파일 얘기가 나오는데 요즘은 스칼라 자료구조보다 SIMD나 벡터화 쪽에 더 집중해야 하는 거 아닌가 싶음
Rust에 이걸 역이식하는 것도 가능해 보임. Polonius가 이미 경로 기준으로 생각하고 GhostCell 같은 게 절반쯤 가 있어서 컴파일러보다 언어 설계 문제라고 봄
예제에 제어 흐름이 없어서 아쉬움. 분기랑 루프를 어떻게 처리하는지 다음 글에서 나올 것 같음
각주가 한꺼번에 뭉쳐 있어서 스크롤을 많이 오가야 하는 게 불편함. 각주 번호에 본문 위치로 돌아가는 링크가 있으면 좋겠음