В каждом пятом пакете на языке Rust используется режим unsafe

Организация Rust Foundation опубликовала статистику, в соответствии с которой из 127 тысяч значительных пакетов, представленных в каталоге crates.io, более 24 тысяч (19.11%) используют ключевое слово «unsafe» для включения возможностей, допускающих небезопасную работу с памятью в отдельных блоках кода, таких как разыменование указателей, вызов внешних функций или изменение статических переменных. 34.35% пакетов совершают прямые вызовы функций из других crate-пакетов, в которых используется режим «unsafe».

Отмечается, что в большинстве случаев использование режима «unsafe» обусловлено вызовом кода, написанного на других языках или обращения к библиотекам на С/C++. Пакетом с наибольшим числом вызовов в режиме «unsafe» признан развиваемый компанией Microsoft crate-пакет windows, являющийся обвязкой над API платформы Windows. Данный пакет насчитывает 36 млн. загрузок. Unsafe также используется в самых популярных пакетах syn (470 млн загрузок), proc-macro2 (354 млн загрузок) и libc (345 млн загрузок).

Для выявления проблем в коде, выполняемом в режиме «unsafe», проектом развивается интерпретатор Miri, позволяющий определять обращения вне границ буферов, использование памяти после её освобождения, некорректное использование неинициализированных данных, нарушение инвариантность базовых типов (например, несоответствие bool значениям 0 или 1), нарушение правил владения объектами, возникновение состояний гонки и утечки памяти.

Источник: http://www.opennet.ru/opennews/art.shtml?num=61251