Rust의 Garbage Collection, 'dumpster'로 더 강력해지다!

by DD
5개월 전
조회수 4

Rust에서 Garbage Collection은 언어 자체 지원이 없어, 라이브러리 형태로 구현해야 함

dumpster는 성능, 유연성, 정확성에 초점을 맞춰 개발되었으며, dynamic dispatch 지원을 통해 유연성을 확보함

Cyclic data structure 생성을 위한 `new_cyclic` 함수를 구현하여, Rust 환경에서 Garbage Collection의 활용성을 높임

Trace Trait의 Dyn-Compatibility 확보

dumpster는 Trace trait를 통해 garbage-collected value를 검사한다. 구체적으로, Visitor 패턴을 활용하여 각 garbage-collected value가 포함하는 Gc를 추적한다. 따라서, dynamic dispatch를 지원하기 위해 TraceWithV를 도입하여, 컴파일 타임 성능을 유지하면서도 dyn-compatibility를 확보했다. 결과적으로, Gc<dyn Any>와 같은 동적 타입 사용이 가능해졌다.

Cyclic Data Structure 생성을 위한 new_cyclic

Rust에서 cyclic data structure를 생성하는 것은 까다롭다. dumpster는 Rc::new_cyclic과 유사한 `new_cyclic` 함수를 제공하여 이를 해결한다. 구체적으로, visitor 패턴을 활용하여, 초기에는 garbage sentinel value를 가진 dead Gc를 생성하고, 생성 완료 후 rehydration 과정을 거친다. 반면, Rustborrow checker는 안전성을 보장하며, 메모리 안전성을 확보한다.

dumpster의 성능 개선 및 향후 과제

dumpster는 성능, 유연성, 정확성을 목표로 지속적인 개선을 진행하고 있다. 구체적으로, niche-optimization을 통해 Option<Gc>의 오버헤드를 줄이는 것을 목표로 한다. 따라서, garbage collection의 성능을 더욱 향상시키고, Rust 환경에서 메모리 관리의 효율성을 높일 수 있다. 결과적으로, Rust 기반 시스템의 성능 개선에 기여할 수 있을 것이다.

Garbage collection in Rust got a little better

댓글 0

첫 번째 댓글을 남겨보세요!