Microsoft a constaté que 70 % des vulnérabilités de sécurité qu’elle devait traiter étaient liées à des problèmes de sécurité de la mémoire. Pour faciliter l'écriture d'un code plus sûr, l’éditeur a développé un langage pour la programmation d'infrastructures sécurisées.
La première version du nouveau langage appelé Project Verona, sera bientôt disponible en open source. Il repose sur trois principes de base :
- Libre concurrence entre les données : le langage renonce aux mutations simultanées et arbitraires pour permettre une gestion évolutive de la mémoire avec une sécurité temporelle sans synchronisation globale.
- Un mode de propriété concurrente : ce nouveau modèle de concurrence permet une coordination légère et asynchrone des ressources.
- Des régions linéaires, avec un modèle de propriété basé sur des groupes d'objets. Microsoft explique que la différence par rapport au langage Rust, capable lui aussi de gérer la mémoire de manière sécurisée, c’est que ce langage est basé sur un seul objet. Dans Project Verona, les stratégies de gestion de la mémoire se font par région. Project Verona permet également de compartimenter les composants hérités.
Project Verona explore la compartimentation au niveau de conception du langage. Avec Verona, certains fils de discussion peuvent accéder aux régions. Chaque région n'est accessible que par un seul fil de discussion. Il n’y a qu’un point d'entrée linéaire possible par région, et les régions peuvent être imbriquées dans d'autres régions. Une région immuable partagée peut conserver des éléments non mutés. De plus, la présence permanente d’un bac à sable peut servir à exécuter un code non fiable. Les bibliothèques du bac à sable peuvent être intégrées dans un programme Project Verona.
Le projet comprend un runtime pour la production, un interprète de prototype et un contrôleur de type. L’éditeur prévoit également de livrer un compilateur en open source sur GitHub afin de favoriser les collaborations.
Microsoft a déjà exploré l’usage de Rust pour améliorer la gestion de la sécurité de la mémoire, pour créer de nouveaux composants et réécrire des composants existants. L’éditeur a fait remarquer que les logiciels systèmes ont été essentiellement écrits en C et C++, des langages qui n’étaient pas conçus intrinsèquement pour la sécurité.