Предложенная реализация Borrow checker отличается тем, что написана на языке Rust и предоставляет расширенные возможности верификации кода, позволяющие в ряде случаев считать безопасным (safe) код, который до сих пор требовал пометки ключевым словом Unsafe из-за ограничений применяемой по умолчанию реализации Borrow checker.
Подготовленное для GCC решение имеет ограничения:
- Для Polonius известны ситуации, в которых некоторый реально существующий в проектах код приводит к экспоненциальному росту сложности анализа.
- В случае GCC для завершения фазы бутстрэппинга (начальной сборки) компилятора gccrs на данный момент требуется компилятор Rust (в будущем данное ограничение будет устранено).
Полная реализация подразумевает 2-стадийную раскрутку, при которой сначала GCC соберёт gccrs без Borrow checker, а затем соберёт упомянутую реализацию Borrow checker, написанную на языке Rust, используя урезанный варианта компилятора, считая код условно-доверяемым (т.е. не выполняя проверку заимствования). После сборки Borrow checker-а будет выполнена пересборка компилятора, уже с выполнением проверок заимствования.
Источник: http://www.opennet.ru/opennews/art.shtml?num=62924