4 puan yazan GN⁺ 2026-01-10 | 2 yorum | WhatsApp'ta paylaş
  • Güvenli ve verimli gömülü uygulamaların hızla geliştirilebilmesi için tasarlanmış yeni nesil framework
  • Runtime veya garbage collector olmadan derleme zamanında bellek ve thread güvenliği sağlar; RTOS olmadan da çoklu görev yürütebilir
  • HAL, ağ iletişimi, Bluetooth, USB, bootloader gibi temel özellikleri içerir ve çeşitli mikrodenetleyicileri destekler
  • Düşük güç tüketimli tasarım ve öncelik tabanlı executor ile hem gerçek zamanlı işleme hem de pil ömrünü gözetir
  • Rust ekosistemiyle birleşen asenkron gömülü geliştirme için önde gelen platformlardan biri haline gelmiştir

Embassy'ye genel bakış

  • Embassy, Rust ve async özelliklerini kullanarak gömülü uygulamaların güvenli ve verimli biçimde yazılmasını sağlayan yeni nesil bir frameworktür
    • Runtime, garbage collector ve işletim sistemi olmadan çalışır
    • Derleme zamanında bellek ve thread güvenliği sağlar

Rust + async tabanlı mimari

  • Rust'ın async/await özelliği sayesinde gömülü ortamlarda verimli çoklu görev gerçekleştirir
    • Task'lar derleme zamanında durum makinesi (state machine) biçimine dönüştürülür ve iş birliğine dayalı olarak çalıştırılır
    • Dinamik bellek tahsisine gerek yoktur, tek bir stack üzerinde çalışır
    • RTOS'un context switching mekanizması olmadan da daha yüksek hız ve daha küçük kod boyutu elde edilir
  • Bağlantı verilen kaynaklarda RTOS'a kıyasla performans üstünlüğünden söz ediliyor

Başlıca bileşenler (Batteries Included)

  • Donanım soyutlama katmanı (HAL)
    • Donanım işlevleri güvenli Rust API'leriyle kontrol edilir
    • Başlıca desteklenen hedefler: STM32, nRF, RP2040, MSPM0, ESP32, CH32, PolarFire SoC, PY32
  • Zaman yönetimi (embassy-time)
    • Global olarak kullanılabilen Instant, Duration, Timer tipleri sunar; overflow yoktur
  • Gerçek zamanlı ve düşük güç desteği
    • Birden fazla executor oluşturularak öncelik tabanlı task çalıştırma mümkündür
    • Boşta kaldığında çekirdeği otomatik olarak güç tasarrufu moduna geçirir, interrupt tabanlı wake-up sağlar
  • Ağ iletişimi (embassy-net)
    • Ethernet, IP, TCP, UDP, ICMP, DHCP desteği sunar
    • Asenkron yapı sayesinde timeout yönetimi ve çoklu bağlantı işleme sadeleşir
  • Bluetooth
    • trouble, nrf-softdevice, embassy-stm32-wpan gibi çeşitli BLE stack'lerini destekler
  • LoRa, USB, Bootloader
    • lora-rs ile LoRaWAN stack desteği sunar
    • embassy-usb, USB CDC ve HID sınıflarını uygular
    • embassy-boot, güç kesintisi durumunda da güvenli firmware güncellemesini destekler

Teknik özellikler ve lisans

  • Minimum desteklenen Rust sürümü (MSRV): 1.75 ve üzeri
  • Lisans: Apache-2.0 veya MIT seçenekleri
  • Proje adı, “** EMBedded ASYnc**” ifadesinin kısaltmasıdır

2 yorum

 
pmnxis 2026-01-11

embassy-rs kullanarak STM32G030C8T6 ile ürün geliştirip seri üretime kadar gittim; kullanırken birkaç dezavantajı olduğunu gördüm.
Yaygın olmayan bir HAL'e erişmek gerektiğinde, sonuçta RTIC framework'ünü kullanırkenki yaklaşıma ihtiyaç duyuluyor.
async nedeniyle belleğin verimsiz kullanılma ihtimali yüksek olduğu için dikkatli olmak gerekiyor.
Flash belleğin 32KB ve altında olduğu ortamlarda geliştirme yapmak oldukça kısıtlayıcı. (log + debug symbol vb.)
NRF/STM/ESP/RP dışındaki ekosistemlerde geliştirme yapmak istediğinizde iş pratikte çok zorlaşıyor.
embassy-rs ile Rust embedded dünyasını tatmak güzel ama ileride seri üretim ya da kariyer açısından gelişmek istiyorsanız RTIC'e de biraz daha bakmak daha iyi olabilir gibi görünüyor.
Öte yandan, erişilebilirliğinin yüksek olması nedeniyle adeta gelişmiş bir Rust Arduino'suna dönüşmesinin, daha zorlayıcı geliştirmeler yapılırken tersine sıkıntılı durumlar yaratabilecek bir soruna yol açmasından endişe ediyorum.

 
GN⁺ 2026-01-10
Hacker News yorumları
  • Ben Embassy projesinin büyük bir hayranıyım. Bu, async Rust'ın neden bu kadar harika olduğunu gösteren mükemmel bir örnek
    Heap olmadan çalışıyor ve düşük maliyetli soyutlamalar ile tek çekirdekli çiplerde bile eşzamanlı yürütme sağlıyor. RTOS karmaşası da yok
    Embassy ekibinin bu kadar büyümüş olması gerçekten şaşırtıcı
    Ayrıca Embassy-net için HTTP istemcisi olan reqwless'i tavsiye ederim. HTTPS de destekliyor
    Eskiden Rust embedded'in C/C++'tan daha iyi olduğunu düşünmüyordum ama artık MCU satın alma kararlarını Rust desteğine göre veriyorum

    • Bunu denemek için hangi MCU geliştirme kitini tavsiye ettiğinizi merak ediyorum
    • HAL'e tip güvenliği getirmesi gerçekten çok iyi. Bu alana yeni girenler için bir tampon görevi görüyor
      Ama watchdog'un ne olduğunu hâlâ tam olarak bilmiyorum
  • Embassy'den en çok uygulama deseni katmanında keyif alıyorum
    Zamanlama ve koordinasyonu küçük async API'lerin arkasına gizleyen, uzun ömürlü aygıt görevlerinden oluşan bir yapı söz konusu
    Örneğin loop { let btn = ir.wait_for_press().await; } gibi bir kodda derleyici durumu otomatik olarak bir state machine'e dönüştürüyor
    Bence bu tarz, async + no-std'nin doğal bir sonucu
    HAL veya executor'dan ziyade, bu tür uygulama yapıları hakkında daha çok tartışma görmek isterdim
    Brad Gibson ile birlikte yazdığım ücretsiz yazı da bu fikirleri ele alıyor
    Ayrıca bu desenleri denemek ve belgelemek için device-kit deposunu açtım. Benzer şeyler yapan başka depolar da bilmek isterim

    • Bu sadece yüksek seviye mantık için değil, düşük seviye firmware için de faydalı
      Eskiden NIC firmware'ini state machine olarak yazdığım günlerde, Rust async gibi bir şey olsaydı gerçekten harika olurdu
      C'de de coroutine benzeri yapılar taklit edilebilir ama fazlasıyla hacky oluyor
      O zamanlar RTOS thread'lerinin pahalı olduğuna inanıyordum ama şimdi dönüp bakınca bunun mutlaka doğru olmadığını düşünüyorum
      802.11 gibi protokolleri işlerken de async olsaydı kod çok daha küçük ve basit olurdu
  • Embassy'yi gerçekten seviyorum
    Bare metal C ve FreeRTOS'tan geldim; sonunda embedded dünyasında da modern bir toolchain varmış gibi hissettiriyor
    Özellikle çevresindeki ekosistem harika — probe-rs + cargo run entegrasyonu, defmt logging, embedded_hal, stm32-rs vb.
    RTIC de kullandım ama async sözdiziminin ergonomisi yüzünden Embassy'de kaldım
    macOS'ta da doğrudan derlenip çalışması beni şaşırttı. Eskiden hep Linux kullanmak zorundaydım ama artık M serisi çiplerde doğrudan mümkün
    Çevre birimi erişimini paylaşma kavramını anlamam biraz zaman aldı ama derleme zamanında kilit kuralları zorlandığı için neredeyse hiç bug olmuyor
    USB ve ağ yığınlarının kalitesi de çok yüksek. PLDM over USB ve Ethernet TCP yığını kullanıyorum, kusursuz çalışıyorlar
    Dezavantaj olarak, mevcut vendor örneklerine alışkın kişileri sisteme alıştırmak zor ve vendor Rust bilmiyorsa hata ayıklamada birlikte çalışmak güçleşiyor
    Yine de STM ekosistemindeyseniz kesinlikle tavsiye ederim

    • Geçmişte Embassy'yi derlediğimde 100'den fazla bağımlılık çekmesine şaşırmıştım. Hobi için güzel ama endüstriyel kullanım için hâlâ yolu var diye düşünüyorum
    • ESP32 gibi çok çekirdekli sistemleri de destekleyip desteklemediğini merak etmiştim; gördüğüm kadarıyla ikinci bir executor ile mümkün ve embassy_sync ile iletişim kuruluyor
  • Embassy ve async Rust, son 10 yılda embedded dünyasında yaşanan en büyük yenilik
    C tabanlı RTOS'lar kavramsal olarak iyi ama pratikte kullanmaları acı verici. Embassy gibi hafif bir framework bunun doğal evrimi
    Aslında Embassy'yi fiilen bir gerçek zamanlı işletim sistemi olarak da görebilirsiniz. Ayrıntılar için bu yazıya bakın

  • Glicol'u no-std olarak yeniden yazıyorum ve embassy-rs + 2350 kombinasyonu müthiş
    2026'da embedded geliştirmeye başlamayı planlıyorsanız bu yığını kuvvetle tavsiye ederim

  • Biraz konu dışı ama embedded geliştirmeye ilk kez başlamak için en iyi yolun ne olduğunu merak ediyorum
    10 yılı aşkın süredir sadece web geliştirme yaptım ve şu anda Rust kitabı çalışıyorum. Raspberry Pi sipariş ettim; bu gerçekten embedded sayılır mı?

    • Raspberry Pi yerine ST Nucleo kartlarını tavsiye ederim. Dahili SWD programlayıcıları olduğu için flashlama ve hata ayıklama kolay
      USB portu olan NUCLEO-F767ZI gibi bir model iyi olur
    • Ben ESP32-C6 Touch LCD'yi 25 dolara aldım; neredeyse kayışsız bir Fitbit gibi
      Wi‑Fi, BLE ve 6 eksenli sensör var; C demoları da hemen çalışıyor. LVGL de harika
      Rust'ı henüz denemedim ama RISC-V tabanlı olması ilginç. Elecrow veya Makerfabs da yeni başlayanlar için iyi
    • İçinde RP2040 olan bir kart ve elektronik bileşen başlangıç kiti alıp hemen kodlamaya başlamanızı öneririm
      Rust için rp-hal başlangıç açısından iyi; Embassy'yi ise biraz daha sonra denemek mantıklı olabilir
    • Raspberry Pi ile de GPIO kullanabildiğiniz için embedded hissini edinmek mümkün
      Biraz daha bare metal tarafa yaklaşmak istiyorsanız ESP32 kartlarını tavsiye ederim. Ucuzlar ve pil şarj cihazı ya da ekran içeren çeşitli form faktörlerine sahipler
  • Embassy ile LoRa rölesi yaptım ve bunu Bitchat uygulamasında (nrf52 tabanlı) kullanıyorum
    Büyük ölçüde çok sorunsuz çalışıyor; yaşadığım panic'ler Nordic SoftDevice tarafındaki sorunlardı

    • Bitchat BLE tabanlı değil miydi? LoRa protokolünü doğrudan mı uyguladınız, yoksa Meshtastic benzeri bir şeyi mi köprülüyorsunuz, merak ettim
  • Embassy ile Spark modelleme gitar amfi pedal denetleyicisi yapıyordum
    BLE üzerinden amfiyi kontrol ediyor ve Rust BLE yığınının tamamen açık kaynak olması ilgimi çekiyordu
    Ancak hâlâ erken aşamada olduğu için API sık sık değişiyor ve Cargo'da git revision sabitlemek zorunda kaldım
    Yine de projenin geleceği umut verici

  • Microsoft da Embassy'yi EC (Embedded Controller) için kullanıyor
    Ayrıntılar için Open Device Partnership sayfasına bakabilirsiniz

  • Ariel OS, Embassy üzerine inşa edilmiş bir işletim sistemi. Bakmaya değer

    • Embassy'den bağımsız ama preemptive multitasking arıyorsanız Xous'a da göz atabilirsiniz