11 puan yazan GN⁺ 2025-12-15 | 3 yorum | WhatsApp'ta paylaş
  • uvm32, mikrodenetleyiciler gibi kaynakları kısıtlı ortamlara yönelik minimal bir sanal makine sandbox'ıdır; tek bir C dosyasından oluşur ve dinamik bellek ayırımı olmadan çalışır
  • RISC-V emülatörü tabanlıdır; C, Zig, Rust ve assembly ile yazılmış bayt kodu uygulamalarını çalıştırır ve asenkron tasarımıyla host'un durmasını önler
  • 3KB altı flash, 1KB altı RAM ile çalışabilir; güvenliği önceliklendirdiği için hatalı kod host'u çökertmez
  • Çeşitli VM host örnekleri ve dillere göre örnek uygulamalar sunar; bu sayede embedded, oyun, eklenti gibi farklı ortamlara entegre edilebilir
  • MIT lisansı ile yayımlanmıştır; araştırma, ürünler ve embedded cihazlarda serbestçe kullanılabilir

uvm32 genel bakış

  • uvm32, bağımlılığı olmayan hafif bir sanal makine sandbox'ıdır; mikrodenetleyiciler ve kaynak kısıtlı cihazlar için tasarlanmıştır
    • Tek C dosyası yapısı, C99 standardı temelli, asenkron tasarım, dinamik bellek kullanımı yok
    • STM32L0 (ARM Cortex-M0+) için 3KB flash / 1KB RAM altında çalışır
  • RISC-V emülatörü temel alınmıştır ve yönetim arayüzü ile verimli kod derleme araçlarını içerir

Başlıca kullanım amaçları

  • Lua, Duktape, MicroPython gibi embedded script motorlarının yerine geçmek
  • Sandbox ortamı üzerinden güvenilmeyen kodu izole etmek
  • Rust, Zig gibi modern sistem dilleri ile geliştirmeyi desteklemek
  • “Write once, run anywhere” ilkesiyle çoklu platform bakım yükünü en aza indirmek

Temel özellikler

  • C, Zig, Rust, assembly ile yazılmış bayt kodu örnekleri içerir
  • Non-blocking tasarım sayesinde anormal kod host'u durdurmaz
  • Host I/O varsayımı yoktur, basit ve tutarlı bir yürütme modeli sunar
  • Güvenli ve minimal bir FFI sağlar
  • Küçük script'lerden karmaşık uygulamalara kadar çalıştırabilir
  • Güvenlik öncelikli tasarım sayesinde VM içindeki hatalar host'a zarar vermez
  • Tam CPU emülatörü tabanlıdır, ancak donanım simülasyonu amacı taşımaz

Alternatiflerle karşılaştırma

  • Mevcut embedded script motorlarına kıyasla daha küçük bellek ayak izi
  • C, Rust, Zig gibi yaygın kullanılan diller desteği
  • Mevcut yazılımlarla kolay entegrasyon
  • Olay tabanlı, polling, çok işlemcili gibi çeşitli paradigmaları destekler
  • Anormal VM koduna karşı dayanıklılık sağlar
  • Buna karşılık doğrudan FFI çağrıları, maksimum verimlilik, basit bir scripting deneyimi ve gömülü standart kütüphane hedefleri arasında değildir

Derleme ve çalıştırma (Docker)

  • Yalnızca C derleyicisiyle derlenebilir, Docker ortamı sunulur
    • Ortamı hazırlamak için make dockerbuild, make dockershell komutları kullanılabilir
    • Docker shell içinde make çalıştırdıktan sonra,
      ./hosts/host/host apps/helloworld/helloworld.bin çalıştırılabilir
  • host -h komutuyla tüm seçenekler görülebilir

Lisans

  • MIT License uygulanır
  • Araştırma, ürünler, embedded cihazlar vb. alanlarda serbestçe kullanılabilir

3 yorum

 
GN⁺ 2025-12-15
Hacker News görüşleri
  • Koda bakınca yapının gerçekten kompakt olduğunu gördüm
    Doğrudan derleyip çalıştırmadım ama RISC-V 32 bit tamsayı, çarpma ve atomik komut uzantılarını içeriyor
    Kayan nokta işlemleri emülatör tarafından değil, derleyici (gcc vb.) tarafından yazılım fonksiyonlarıyla emüle ediliyor
    Bunun birden fazla derleyici tarafından desteklenmesi bence çok akıllıca bir tasarım
    Gerçek komut setini uygulayan temel proje mini-rv32ima

  • Bu proje, WASM gibi ortak bir çalışma ortamı oluşturmaya yönelik girişimlerle benzer bir alanda duruyor gibi görünüyor
    Farkı, temelinin RISC-V olması
    Her yaklaşımın sınırlamalarını ve avantajlarını daha iyi bilmek isterim ama ne olursa olsun, uygulamaların ortak bir VM üzerinde çalıştığı bir geleceğe gidiyor gibiyiz
    Modern web bunun en yakın örneği bence

    • Daha önce WASM ile libriscv’yi kısaca karşılaştırmıştım ve tarayıcı uyumluluğu nedeniyle WASM’ı seçmiştim
      libriscv de havalı ve etkileyici bir proje
      İlgili tartışma bağlantısı burada
    • Google Open Source Blog’daki Wasefire yazısına bakınca, kod ayak izi daha küçük görünüyor
      Ancak RISC-V bu tür kullanım için uygun olmayabilir
      Örneğin immediate decoding işlemini yazılımda yapmak yavaş olabilir, ama donanımda hızlıdır
      Yine de RISC-V, kararlı ve basit şekilde yapılandırılabilen bir hedef
  • Kod gerçekten temiz ve tek C dosyası yapısını beğendim
    Örnekleri çalıştırmak için Docker kullanılması da gömülü ortamlarda çok pratik
    Test kapsamı da iyi görünüyor ve metriklere bakmak da ilginç olabilir
    Tıbbi cihazlara betik desteği eklerken, çekirdek kodu her seferinde yeniden doğrulamak zorunda kalmama gibi bir avantaj sağlayabilir
    WASM Micro Runtime gibi gömülü sistemlere yönelik WASM yorumlayıcılarıyla karşılaştırmak ilginç
    Cortex M4F için 56.3K ile çok daha büyük
    Muhtemelen bunun nedeni, WASM’ın minimum RISC-V profilinden daha karmaşık bir komut kümesi olması

  • “Just add rats” diyerek ZigDoom örneğini tanıtıyor

  • Zamanlaması cuk oturdu
    Gömülü firmware testi için hafif bir emülatör arıyordum ama alternatiflerin çoğu ya fazla ağırdı ya da kararsızdı
    Bellek eşlemeli IO simülasyonunu desteklerse, gerçek donanım olmadan IoT veya mikrodenetleyici sürücülerini test etmek için faydalı olabilir

    • Bu kolayca uygulanabilir
      Emülatör çekirdeği zaten bellek eşlemeli IO’yu destekliyor, ancak uvm32 bunu yalnızca host üzerindeki ek RAM blokları (framebuffer veya ayrı heap gibi) için kullanıyor
      Yazma trap’i şurada, okuma trap’i ise şurada ele alınabilir
 
balthasar 2025-12-15

Sondaki phishing muhabbetinin tam olarak hangi yorumda geçtiğini gerçekten bilmiyorum.

 
xguru 2025-12-15

O yorum spam olarak işaretlenip kaybolduğu için yalnızca yanıt yorum kalmış ve bu yüzden garipleşmiş gibi görünüyor. Kaldırayım.