Microsoft Open Sources P


Microsoft сделала P, свой язык программирования, управляемый событиями, открытым исходным кодом. P предназначен для того, чтобы дать разработчикам возможность писать безопасные асинхронные программы, управляемые событиями.

P позволяет указать систему как набор взаимодействующих машин состояний, которые взаимодействуют друг с другом с помощью событий.

Он объединяет моделирование и программирование в одно действие и используется для реализации и проверки стека драйверов USB-устройств, поставляемых с Microsoft Windows 8 и Windows Phone. Microsoft говорит, что P подходит для проектирования и реализации сетевых, встроенных и распределенных систем. 

Каждый конечный автомат в ваших программах имеет входную очередь, состояния, локальное хранилище машин и возможность отправлять асинхронные сообщения другим автоматам в вашей программе.

P был разработан для предоставления языковых примитивов для краткого и точного захвата протоколов, которые присущи связи между компонентами в асинхронных системах. Машины состояний работают одновременно друг с другом, каждая из которых выполняет цикл обработки событий, который освобождает сообщение из очереди ввода, проверяет локальное хранилище и может выполнять последовательность операций. Каждая операция либо обновляет локальное хранилище, отправляет сообщения на другие машины, либо создает новые машины.

В демонстрационном видео ниже показано, как P используется для управления квадрокоптером:

Обсуждая стек драйверов USB-устройств Windows 8, разработанный с использованием P, разработчики говорят, что полученный драйвер более надежен и работает лучше, чем его предыдущее воплощение (которое не использовало P). Они говорят, что использование P позволило разработчикам:

«для сериализации большого количества несогласованных событий, поступающих от оборудования, операционной системы, функциональных драйверов и других компонентов драйверов.»

Обработка событий была более надежной и быстрой. Новый драйвер концентратора предоставляет надмножество функций старого драйвера концентратора. С точки зрения надежности, проблемы с синхронизацией и сбои снизились до такой степени, что количество сбоев в новом драйвере USB-концентратора из-за недопустимых обращений к памяти и условий гонки незначительно.

С точки зрения производительности среднее время перечисления для USB-устройства на 30% быстрее, и разработчики не видели никаких случаев нехватки рабочих элементов, которые были очевидны со старым драйвером концентратора.

Microsoft также разработала компилятор P, который выводит модель Zing для обеспечения систематического тестирования. Компилятор также генерирует код C, который может быть использован в компиляторе C для выполнения. Это необходимо, поскольку, поскольку P является специфичным для домена языком для реализации протоколов в асинхронном приложении, части приложения, отличные от протоколов, будут написаны на языке хоста, таком как C. В руководстве по P описывается интерфейс внешнего кода, используемый для взаимодействия между кодом P и внешним кодом, написанным на языке C. 

P теперь доступен на Github.


Добавить комментарий