Рабочая группа Rust Embedded, созданная для разработки технологий повышения качества и безопасности приложений, прошивок и драйверов к встраиваемым системам, представила первый выпуск фреймворка embedded-hal, предоставляющего набор программных интерфейсов для взаимодействия с периферией, обычно применяемой с микроконтроллерами (например, предоставляются типажи для работы с GPIO, UART, SPI и I2C). Наработки проекта написаны на языке Rust и распространяются под лицензией Apache 2.0.
Пакет подходит для написания на языке Rust универсальных драйверов для различных датчиков, экранов, приводов и сетевых адаптеров, не привязанных к конкретным моделям микроконтроллеров, т.е. созданный на базе embedded_hal драйвер можно использовать с любыми микроконтроллерами, для которых в пакете предоставляется HAL-прослойка. Пакетом также предоставляется гибкая встроенная система обработки ошибок – для каждого типа ошибок предусмотрено наличие типажа Error, поддерживающего средства для отладки и отслеживания причин появления ошибок.
Embedded-hal 1.0 помечен как первый стабильный выпуск проекта, который можно использовать для создания рабочих драйверов. Работа по стабилизации API продолжалась с 2020 года. Помимо embedded-hal также сформированы стабильные выпуски вспомогательных пакетов embedded-hal-async с компонентами для создания асинхронных обработчиков и embedded-hal-nb с реализацией модели опроса состояния в режиме полинга (polling). Также предложены пакеты: embedded-hal-bus с инструментами для работы с шинами SPI и I2C, embedded-can с поддержкой шины CAN (Controller Area Network) и embedded-io с реализацией типажей для байто-ориентированного ввода/вывода, пригодного для использования с UART.