- uvm32 सीमित संसाधन वाले वातावरण, जैसे माइक्रोकंट्रोलर, के लिए एक मिनिमल virtual machine sandbox है, जो एक ही C फ़ाइल से बना है और dynamic memory allocation के बिना चलता है
- यह RISC-V emulator पर आधारित है, C·Zig·Rust·assembly में लिखे bytecode ऐप्स चलाता है, और asynchronous डिज़ाइन के कारण host के रुकने से बचाता है
- यह 3KB से कम flash, 1KB से कम RAM पर चल सकता है, और सुरक्षा को प्राथमिकता देते हुए गलत कोड भी host को crash नहीं करता
- विभिन्न VM host examples और भाषा-विशिष्ट sample apps उपलब्ध कराता है, जिससे embedded·game·plugin जैसे कई वातावरणों में integration संभव है
- इसे MIT License के तहत जारी किया गया है, इसलिए research, products और embedded devices में स्वतंत्र रूप से उपयोग किया जा सकता है
uvm32 का परिचय
- uvm32 बिना dependencies वाला एक lightweight virtual machine sandbox है, जिसे माइक्रोकंट्रोलर और resource-constrained devices के लिए डिज़ाइन किया गया है
- single C file संरचना, C99 standard आधारित, asynchronous design, dynamic memory का उपयोग नहीं
- STM32L0 (ARM Cortex-M0+) पर 3KB flash / 1KB RAM से कम में चल सकता है
- यह RISC-V emulator पर आधारित है और management interface तथा efficient code build tools शामिल करता है
मुख्य उपयोग उद्देश्य
- Lua, Duktape, MicroPython जैसे embedded scripting engines का विकल्प
- sandbox environment के ज़रिए अविश्वसनीय कोड को isolate करना
- Rust, Zig जैसी modern systems languages में development का समर्थन
- “Write once, run anywhere” सिद्धांत के साथ multi-platform maintenance को न्यूनतम करना
मुख्य विशेषताएँ
- C, Zig, Rust, assembly में लिखे bytecode examples शामिल
- non-blocking design के कारण असामान्य कोड भी host को रोकता नहीं है
- host I/O की कोई अनिवार्य धारणा नहीं, सरल और consistent execution model
- सुरक्षित और minimal FFI उपलब्ध
- छोटे scripts से लेकर complex applications तक चलाने में सक्षम
- safety-first design, VM के अंदर की त्रुटियाँ host को नुकसान नहीं पहुँचातीं
- पूरा CPU emulator आधारित है, लेकिन hardware simulation इसका उद्देश्य नहीं है
विकल्पों से तुलना
- मौजूदा embedded scripting engines की तुलना में कम memory footprint
- C, Rust, Zig जैसी व्यापक रूप से उपयोग होने वाली भाषाओं का समर्थन
- मौजूदा software के साथ integration में आसानी
- event-driven·polling·multiprocessor जैसे विभिन्न paradigms का समर्थन
- असामान्य VM code के प्रति मजबूत स्थिरता
- वहीं, direct FFI calls, maximum efficiency, सरल scripting अनुभव, और standard library built-in इसका लक्ष्य नहीं हैं
build और run (Docker)
- सिर्फ C compiler से build संभव, Docker environment उपलब्ध
make dockerbuild, make dockershell कमांड से environment तैयार किया जा सकता है
- Docker shell के अंदर
make चलाने के बाद,
./hosts/host/host apps/helloworld/helloworld.bin चलाया जा सकता है
host -h कमांड से सभी options देखे जा सकते हैं
लाइसेंस
- MIT License लागू
- research, products, embedded devices आदि में स्वतंत्र रूप से उपयोग किया जा सकता है
अभी कोई टिप्पणी नहीं है.