Microsofts öppna källor P-språk för IoT

Microsofts P-språk, för asynkron händelsestyrd programmering och IoT (sakernas internet), har öppet.

P är inriktat på inbäddade system, enhetsdrivrutiner och distribuerade tjänster, och är ett domänspecifikt språk som kompileras till och samverkar med C, vilket i sig själv ofta har använts i inbäddade system och IoT. "Målet med P är att tillhandahålla språkprimitiver för att kortfattat och exakt fånga protokoll som är inneboende för kommunikation mellan komponenter", säger Ethan Jackson och Shaz Qadeer från Microsoft, i en handledning om språket.

Med P smälts modellering och programmering samman till en enda aktivitet. "Inte bara kan ett P-program kompileras till körbar kod, men det kan också valideras med hjälp av systematisk testning", enligt språkets dokumentation på GitHub. "P har använts för att implementera och validera USB-enhetsdrivrutan som levereras med Microsoft Windows 8 och Windows Phone."

Microsoft har beskrivit att P erbjuder "säker" händelsestyrd programmering. I sin handledning säger Jackson och Qadeer att P-program har en beräkningsmodell som innehåller tillståndsmaskiner som kommunicerar via meddelanden, ett tillvägagångssätt som vanligtvis används i inbäddade, nätverkade och distribuerade system.

Varje tillståndsmaskin har en ingångskö, tillstånd, övergångar, händelsehanterare och maskin-lokal butik för en variabelsamling. Tillståndsmaskiner körs samtidigt, var och en kör en händelsesslinga som avköper ett meddelande från ingångskön. Tillståndsmaskinen undersöker också den lokala butiken, skickar meddelanden mellan maskiner och kan skapa nya maskiner. "I P är en sändningsoperation icke-blockerande. Meddelandet exekveras helt enkelt i inmatningskön på målmaskinen." Ett program innehåller en samling händelse- och maskindeklarationer.

Microsoft erbjuder också P #, ett tillägg till C # som riktar sig till asynkron programmering, som öppen källkod. Och i juni öppnade Microsoft Checked C, en modifierad version av C som lägger till ny syntax och skriver till C-språket, med avsikten att förbättra säkerheten i C.