天天看點

微軟開源 P 語言,實作安全的異步事件驅動程式設計

微軟最近開源了p語言,緻力于在linux、macos和windows上編寫安全的異步事件驅動程式。

微軟将p描述為一種領域特定語言,對異步系統的元件間通信進行模組化,例如嵌入式、網絡或分布式系統。p程式是通過有限狀态機(finite state machine)來定義的,這些狀态機會并發運作。每個狀态機都有一個輸入隊列、狀态、轉換、機器本地存儲,并且可以發送異步資訊給其他狀态機。在p中的基本操作要麼是更新本地存儲,發送消息,要麼就是建立新的狀态機。如下的代碼片段展示了如何使用p來描述一個狀态及其轉換。除此之外,它還展現了如何發送消息或建立新的狀态機:

按照微軟的說法,p程式能夠使用模型檢查功能來進行核實。這樣的話,就允許開發人員確定所有的事件均能得到及時地處理。對于p程式來說,要想保證響應性,它的狀态機就要處理每個狀态上所有可以出隊(dequeue)的事件。這種做法并不一定總是可行,是以對一些事件可能會進行延遲處理。在這種情況下,語言能夠確定某個事件不會無限期延遲。p編譯器能夠核實程式的狀态,還可以生成c代碼,并交給c編譯器執行,另外,它還可以輸出zing模型,用于系統測試。zing是一個針對并發程式的開源模型檢查器,它能夠系統性地暴露一個模型所有可能出現的狀态。

微軟使用p語言實作和檢驗了windows 8 usb裝置驅動棧的核心功能。按照微軟的說法,工程師使用p來序列化大量來自硬體、作業系統、功能驅動以及其他驅動元件的不同僚件,提升了性能和可靠性。他們尤其指出,在新的usb hub驅動中,非法記憶體通路和競态條件的數量不那麼明顯了,同時,枚舉時間快了30%,也沒有觀察到worker條目餓死的現象。

繼續閱讀