4 pontos por GN⁺ 2026-01-10 | 2 comentários | Compartilhar no WhatsApp
  • Framework de próxima geração projetado para desenvolver rapidamente aplicações embarcadas seguras e eficientes
  • Garante segurança de memória e de threads em tempo de compilação sem runtime nem coletor de lixo, e realiza multitarefa mesmo sem RTOS
  • Inclui recursos principais como HAL, rede, Bluetooth, USB e bootloader, com suporte a diversos microcontroladores
  • Com design de baixo consumo de energia e executor baseado em prioridade, considera tanto o processamento em tempo real quanto a duração da bateria
  • Está se consolidando como a principal plataforma de desenvolvimento embarcado assíncrono integrada ao ecossistema Rust

Visão geral do Embassy

  • Embassy é um framework de próxima geração que permite escrever aplicações embarcadas de forma segura e eficiente usando Rust e recursos async
    • Funciona sem runtime, coletor de lixo ou sistema operacional
    • Garante segurança de memória e de threads em tempo de compilação

Arquitetura baseada em Rust + async

  • Implementa multitarefa eficiente em ambientes embarcados por meio do recurso async/await do Rust
    • As tarefas são convertidas em máquinas de estado (state machines) em tempo de compilação e executadas de forma cooperativa
    • Não requer alocação dinâmica de memória, executando em uma única stack
    • Alcança código menor e mais rápido mesmo sem troca de contexto de um RTOS
  • O material vinculado menciona vantagem de desempenho em relação a RTOS

Principais componentes (Batteries Included)

  • Camada de abstração de hardware (HAL)
    • Controla funções de hardware com APIs Rust seguras
    • Principais alvos suportados: STM32, nRF, RP2040, MSPM0, ESP32, CH32, PolarFire SoC, PY32
  • Gerenciamento de tempo (embassy-time)
    • Fornece tipos Instant, Duration, Timer utilizáveis globalmente, sem overflow
  • Suporte a tempo real e baixo consumo
    • É possível criar vários executors para execução de tarefas baseada em prioridade
    • Quando ocioso, coloca automaticamente o núcleo em modo de economia de energia, com wake-up baseado em interrupção
  • Rede (embassy-net)
    • Suporta Ethernet, IP, TCP, UDP, ICMP, DHCP
    • A estrutura assíncrona simplifica o gerenciamento de timeout e o tratamento de múltiplas conexões
  • Bluetooth
    • Suporta diversas stacks BLE, como trouble, nrf-softdevice, embassy-stm32-wpan
  • LoRa, USB, Bootloader
    • Suporte à stack LoRaWAN com lora-rs
    • embassy-usb implementa classes USB CDC e HID
    • embassy-boot oferece atualização de firmware segura mesmo em caso de falha de energia

Especificações técnicas e licença

  • Versão mínima suportada do Rust (MSRV): 1.75 ou superior
  • Licença: escolha entre Apache-2.0 ou MIT
  • O nome do projeto é uma abreviação de “** EMBedded ASYnc**”

2 comentários

 
pmnxis 2026-01-11

Usei embassy-rs para desenvolver um produto com STM32G030C8T6 até a produção em massa, e há algumas desvantagens ao usar.
Quando é preciso acessar uma HAL que não é comum, no fim acaba sendo necessária a abordagem usada no framework RTIC.
Por causa de async, há uma grande chance de o uso de memória se tornar ineficiente, então é preciso tomar cuidado.
É muito restritivo desenvolver em ambientes com memória flash de 32 KB ou menos (log + símbolos de debug etc).
Se quiser desenvolver em um ecossistema fora de NRF/STM/ESP/RP, na prática é muito difícil.
É bom experimentar Rust embarcado com embassy-rs, mas se depois você quiser melhorar em termos de produção em massa e carreira, acho que vale mais a pena explorar um pouco mais o RTIC.
Por outro lado, também me preocupo que, por ele acabar sendo um advanced Rust Arduino e ter boa acessibilidade, isso possa gerar situações complicadas quando se tenta fazer um desenvolvimento de maior dificuldade.

 
GN⁺ 2026-01-10
Comentários do Hacker News
  • Sou um grande fã do projeto Embassy. É um exemplo perfeito de por que async Rust é tão impressionante
    Funciona sem heap e, com abstrações de baixo custo, permite concorrência até em chips de núcleo único. E sem a complexidade de um RTOS
    É realmente surpreendente o quanto a equipe do Embassy cresceu.
    Também recomendo o reqwless, um cliente HTTP para Embassy-net. Ele suporta HTTPS também
    Antes eu não achava que Rust embarcado fosse melhor que C/C++, mas agora passei a decidir a compra de MCUs com base no suporte a Rust

    • Fico curioso sobre qual kit de desenvolvimento de MCU vocês recomendariam para testar isso
    • Gosto muito de como isso traz segurança de tipos para a HAL. Funciona como uma espécie de amortecedor para quem está entrando nessa área
      Mas ainda não entendo muito bem o que é watchdog
  • O que mais gosto no Embassy é a camada de padrões de aplicação
    A estrutura esconde temporização e coordenação de tarefas de dispositivo de longa duração atrás de pequenas APIs async
    Por exemplo, em um código como loop { let btn = ir.wait_for_press().await; }, o compilador gera automaticamente a máquina de estados
    Acho que esse estilo é um resultado natural de async + no-std
    Gostaria que houvesse mais discussão sobre essa arquitetura de aplicação do que sobre HALs ou executores
    Essas ideias também aparecem em um artigo gratuito que escrevi com Brad Gibson
    Também abri o repositório device-kit para experimentar e documentar esses padrões. Queria conhecer outros repositórios tentando algo parecido

    • Isso é útil não só para lógica de alto nível, mas também para firmware de baixo nível
      Na época em que eu escrevia firmware de NIC como máquinas de estado, teria sido incrível ter algo como async do Rust
      Dá para imitar corrotinas em C, mas fica muito gambiarra
      Naquele tempo acreditávamos que threads de RTOS eram caras, mas hoje acho que isso não era necessariamente verdade
      Se houvesse async no processamento de protocolos como 802.11, o código teria sido muito menor e mais simples
  • Eu gosto muito do Embassy
    Vim de C bare metal e FreeRTOS, e finalmente parece que o embarcado ganhou uma toolchain moderna
    Especialmente o ecossistema ao redor é excelente — integração de probe-rs + cargo run, logging com defmt, embedded_hal, stm32-rs etc.
    Também usei RTIC, mas acabei ficando no Embassy por causa da ergonomia da sintaxe async
    Fiquei surpreso por compilar e rodar direto no macOS. Antes eu sempre precisava usar Linux, mas agora dá para fazer tudo direto em chips M
    Demorei um pouco para entender o conceito de compartilhamento de acesso a periféricos, mas como as regras de lock são impostas em tempo de compilação, quase não há bugs
    A qualidade das pilhas de USB e rede também é muito alta. Uso PLDM sobre USB e uma pilha TCP sobre Ethernet, e funciona perfeitamente
    Como ponto negativo, é difícil fazer onboarding de quem está acostumado com exemplos de fabricantes, e se o fornecedor não conhece Rust, a depuração em conjunto fica complicada
    Ainda assim, recomendo fortemente no ecossistema STM

    • Quando compilei Embassy no passado, fiquei surpreso ao ver que ele puxava mais de 100 dependências. Para hobby tudo bem, mas para uso industrial ainda acho cedo
    • Eu tinha curiosidade se ele suportava multicore como no ESP32, e pelo que vi dá para fazer com um segundo executor e comunicação via embassy_sync
  • Embassy e async Rust são a maior inovação que aconteceu no mundo embarcado nos últimos 10 anos
    RTOSs baseados em C têm conceitos bons, mas na prática são dolorosos de usar. Um framework leve como Embassy é uma evolução natural
    Na prática, Embassy pode até ser visto como um sistema operacional de tempo real. Para mais detalhes, veja este texto

  • Estou reescrevendo o Glicol para no-std, e a combinação embassy-rs + 2350 é excelente
    Se você está pensando em começar com desenvolvimento embarcado em 2026, recomendo muito essa stack

  • Fugindo um pouco do assunto, queria saber o que seria bom para começar em desenvolvimento embarcado
    Depois de mais de 10 anos só com desenvolvimento web, estou estudando o livro de Rust. Pedi um Raspberry Pi, mas isso pode realmente ser chamado de embarcado?

    • Em vez de Raspberry Pi, recomendo uma placa ST Nucleo. Ela já vem com programador SWD embutido, então gravar e depurar fica fácil
      Um modelo com porta USB como a NUCLEO-F767ZI é uma boa escolha
    • Eu comprei uma ESP32-C6 Touch LCD por US$ 25, e ela parece quase uma Fitbit sem pulseira
      Tem Wi‑Fi, BLE, sensor de 6 eixos, e os demos em C já rodam de cara. O LVGL também é excelente
      Ainda não testei Rust nela, mas por ser baseada em RISC-V, acho interessante. Elecrow e Makerfabs também são boas para iniciantes
    • Recomendo comprar uma placa com RP2040 e um kit inicial de componentes eletrônicos para já começar a programar
      Se for usar Rust, o rp-hal é bom para iniciar, e o Embassy pode ficar para um pouco depois
    • Raspberry Pi também permite mexer com GPIO, então já ajuda a pegar a sensação de embarcado
      Se quiser algo mais próximo de bare metal, recomendo uma placa ESP32. É barata e há muitos formatos com carregador de bateria ou display embutidos
  • Estou usando Embassy para fazer um relé LoRa para usar com o app Bitchat (baseado em nrf52)
    No geral funciona muito bem, e os panics vieram de problemas no lado do Nordic SoftDevice

    • O Bitchat não é baseado em BLE? Fico curioso se você implementou o protocolo LoRa diretamente ou se está fazendo uma ponte com algo como Meshtastic
  • Eu estava fazendo um controlador de pedal para amplificador de guitarra com modelagem Spark usando Embassy
    Ele controla o amplificador via BLE, e achei interessante que a stack BLE em Rust é totalmente open source
    Mas ainda está em estágio inicial, então a API muda com frequência e eu precisei fixar revisões git no Cargo
    Mesmo assim, estou animado com o futuro do projeto

  • A Microsoft também está usando Embassy para EC (Embedded Controller)
    Mais detalhes em Open Device Partnership

  • O Ariel OS é um sistema operacional construído sobre o Embassy. Vale a pena dar uma olhada

    • Ele é independente do Embassy, mas se você estiver procurando multitarefa preemptiva, vale olhar também para o Xous