В Microsoft пришли к выводу, что примерно 70% возникающих сегодня проблем с безопасностью связаны с вопросами безопасности памяти. Для упрощения процесса написания безопасного кода компания разрабатывает специальный язык, предназначенный для безопасного программирования инфраструктуры.
Уже в первой версии нового языка, исходный код которого предполагается в ближайшее время открыть, будут реализованы три основные идеи.
- Свободное наращивание объемов данных, предусматривающее отказ от параллельного внесения произвольных изменений и переход к масштабируемому управлению памятью с обеспечением временной безопасности без глобальной синхронизации.
- Параллельное владение с новой моделью параллелизма и упрощенной асинхронной координацией ресурсов.
- Выделение линейных областей с моделью владения, основанной на группах объектов. Отличие от языка Rust с безопасным управлением памятью заключается в том, что он базируется на единственном объекте. Verona же предлагает стратегии управления памятью для каждой области. Кроме того, поддерживается разделение унаследованных компонентов.
Разделение заложено на уровне проектирования языка. В Verona введены потоки, получающие доступ к областям. Любая область доступна только одному потоку. В каждой области имеется линейная точка входа, а сами области могут быть вложены одна в другую. Общая неизменяемая область содержит элементы, не подверженные изменениям.
Для запуска ненадежного унаследованного кода используется так называемая проникающая песочница. Библиотеки песочницы можно встраивать в программы, написанные на Verona.
Project Verona предлагает готовую исполняемую среду, а также интерпретатор и средство контроля типов. Дальнейшие планы предусматривают создание компилятора и размещение его открытого кода в GitHub для дальнейшей совместной работы.
В рамках обеспечения безопасности памяти Microsoft изучает возможность разработки новых и переписывания унаследованных компонентов на основе Rust. В Microsoft подчеркивают, что ранее при написании системного программного обеспечения широко использовались языки Си и C++, изначально не предназначавшиеся именно для безопасного программирования.