Microsoft veut faire de son langage P la solution de gestion de l'asynchronisme dans des environnements où cette capacité devient essentielle : le cloud, l'intelligence artificielle et les systèmes embarqués. Conçu pour la programmation asynchrone orientée évènement, le langage open source P est capable de traiter en même temps la modélisation et la programmation. « Aujourd’hui, les applications exploitent des ressources hébergées dans le cloud, elles sont souvent intégrées dans des appareils physiques et utilisent des techniques d'intelligence artificielle », a déclaré Shaz Qadeer, chercheur principal chez Microsoft. Ces applications sont affectées par une asynchronie, ce qui entraîne des problèmes liés aux accès concurrents et aux « heisenbugs » (nommés d'après le principe d'incertitude de Heisenberg), ces bugs dont les caractéristiques sont altérées quand on essaye de les observer, et elle est responsable d’autres complexités d'événements. Le langage P a été conçu pour relever ces défis.
En langage P, le protocole et les spécifications sont écrits à un niveau élevé. Le langage P offre un modèle de programmation basé sur l'exécution simultanée de machines à état qui communiquent via des événements. Chaque événement est associé à une valeur de charge utile type. Le langage assure également une gestion de mémoire sécurisée et une exécution concurrente simultanée sans données, à l’image de ce que propose le langage Rust. « Le compilateur P fournit des tests automatisés pour vérifier les conditions dans lesquelles sont effectués les accès concurrents et le code exécutable pour lancer le protocole », a déclaré Shaz Qadeer. « Le langage P prend en charge la modélisation de la concurrence, la spécification des propriétés de sécurité et de vivacité, et vérifie que le programme satisfait ses spécifications en utilisant la recherche systématique », a-t-il ajouté.
Développé à l'origine pour les pilotes Windows
« Par ailleurs, les programmes écrits en langage P peuvent être compilés en code C exécutable, comblant l'écart entre l'implémentation de haut et bas niveau et ils aident les programmeurs à accepter son modèle formel et ses spécifications », a-t-il précisé. Le langage permet aux ingénieurs de modéliser des interfaces asynchrones entre les composants en utilisant un service Azure. Il permet également de faire du débogage pour détecter des bugs qui mettent parfois des mois ou des années à se manifester après le déploiement d’un service. « À l’origine, le langage P a été utilisé en interne par Microsoft pour développer la pile des pilotes USB 3.0 de Windows 8.1 et de Windows Phone, et il est désormais couramment utilisé pour développer des pilotes pour Windows », a encore déclaré Shaz Qadeer.