Анализатор заимствований Valen работает в обратном порядке, проходя по функциям, и это новый подход к проверке безопасности памяти. В отличие от традиционных анализаторов заимствований с прямым проходом, таких как в Rust, Valen на этапе проверки безопасности обходит инструкции функции от последней к первой.
Компилятор обрабатывает функции в четыре этапа: разбор в AST, статическая типизация, статическая группировка и проверка безопасности. Проверка безопасности (№ 4) — это необычный обратный проход: сначала анализируется последняя инструкция, а затем происходит движение назад к началу функции.
Такой обратный подход даёт преимущества в удобстве, обработке циклов и скорости. Valen по-прежнему является экспериментальным проектом, и до выпуска v0.1 в феврале ожидаются шероховатости, хотя масштабная работа по рефакторингу уже ведётся.
Эта техника отличается от вывода областей жизни на основе решения ограничений, которое используется в Rust и за которым следует проверка конфликтов в прямом порядке. Хотя rustc действительно сканирует назад, чтобы найти использование переменных, его реальные проверки безопасности памяти выполняются в прямом направлении.
Источник: Hacker News · Сводку подготовил HeadlinesBriefing