- Verus는 Rust로 작성한 코드의 정확성을 검증하는 도구로, 개발자가 코드가 해야 할 일을 명세하면 실행 가능한 Rust 코드가 모든 가능한 실행에서 그 명세를 만족하는지 정적으로 확인함
- 런타임 검사를 추가하지 않고 강력한 솔버를 사용해 코드가 올바르다는 것을 증명하는 방식이며, 현재는 Rust의 일부만 지원함
- 일부 경우에는 표준 Rust 타입 시스템을 넘어 raw pointer를 조작하는 코드의 정확성까지 정적으로 검사할 수 있음
- 프로젝트는 활발히 개발 중이며 기능이 깨져 있거나 빠져 있을 수 있고 문서도 아직 완전하지 않아, 사용자는 Zulip에서 도움을 요청할 준비가 필요함
- 브라우저용 Verus Playground, 설치 안내, 튜토리얼과 레퍼런스, 표준 라이브러리 API 문서, 동시성 코드 검증 가이드, 예제와 테스트가 학습·실험 경로로 제공됨
Verus가 검증하는 것
- Verus는 Rust 코드의 정확성을 검증하는 도구임
- 개발자는 코드가 수행해야 할 동작을 명세로 작성함
- Verus는 실행 가능한 Rust 코드가 가능한 모든 실행에서 그 명세를 항상 만족하는지 정적으로 검사함
- 런타임 검사를 추가하는 대신, 솔버를 사용해 코드가 올바르다는 사실을 증명함
- 현재 지원 범위는 Rust의 부분집합이며, 지원 범위를 넓히는 작업이 진행 중임
- 일부 경우에는 표준 Rust 타입 시스템을 넘어, 예를 들어 raw pointer를 조작하는 코드의 정확성을 정적으로 확인할 수 있음
개발 상태와 사용 시 주의점
- Verus는 활발히 개발 중인 프로젝트임
- 기능이 깨져 있거나 빠져 있을 수 있음
- 문서는 아직 완전하지 않음
- Verus를 시도하려면 Zulip에서 도움을 요청할 준비가 필요함
- Verus 커뮤니티는 여러 연구 논문을 발표했으며, 산업계와 학계의 다양한 프로젝트가 Verus를 사용하고 있음
- 관련 목록은 publications and projects 페이지에서 확인할 수 있음
시작 방법과 개발 도구
- 브라우저에서 Verus를 시도하려면 Verus Playground를 사용할 수 있음
- 더 본격적인 개발을 위해서는 설치 안내를 따라야 함
- 학습은 Tutorial and reference에서 시작할 수 있음
- Verus 코드를 위한 자동 포매터 verusfmt도 지원함
문서와 학습 자료
- 작업 중인 문서 리소스는 다음을 포함함
- Tutorial and reference: Verus 튜토리얼과 레퍼런스
- API documentation for Verus's standard library: Verus 표준 라이브러리 API 문서
- Guide for verifying concurrent code: 동시성 코드 검증 가이드
- Contributing to Verus
- crates.io에 Verus 관련 크레이트를 게시하기 위한 Best Practices
- Verus License
- Verus Logos
예제와 커뮤니티 참여
- Verus 사용 예시는 문서 외에도 여러 출발점을 제공함
- Publications and projects: Verus를 사용하는 출판물과 프로젝트
- Videos, slides, and exercises: 하루짜리 Verus 튜토리얼의 영상, 슬라이드, 연습문제
- Standalone examples: 작고 구체적인 작업에서 Verus를 사용하는 독립 예제
- Small and medium-sized examples: 다양한 Verus 기능을 보여주는 예제
- Unit tests: Verus 문법과 기능 예시가 들어 있는 테스트
- 이슈 보고와 토론은 GitHub 또는 Zulip에서 진행할 수 있음
- 기능 요청과 열린 대화는 GitHub discussions를 사용하고, 기존 기능의 실행 가능한 버그는 GitHub issues에 두는 운영 방식을 사용함
- 코드 기여를 원하면 Contributing to Verus의 안내를 참고할 수 있음