v1.0.x-alpha Release!
Hello again friends!
It's been a long long time since last post I shared. I want to talk a little bit about project's progress and what future be like.
Why updates are so late?
Im sparing lots of my spare time to ellie but since Im working on full-time job it's getting harder and difficult to maintain both. Sorry about that. But my motivation is high since there is so much people stars on github in such a short time, thanks a lot for that.
You can support behemehal here btw :)
Or me here;
Im very sure that we will have more contributors in the future, the Ellie Robotics Studio will probably hype the project even more.
Behemehal Public Timeline
You can follow our public timeline in here: Behemehal Public Timeline
Whats new about ellie??
1 - EllieID the debugger removed and moved to EllieVM cli. 2 - Classes are now available and works like a charm 3 - Lots of bugs fixed evolving frame pointer and expecting to never occur. 4 - Brand new module interface! Which we cover in below
Module interface
Ellie's module interface renewed. And developing native modules is better now.
How can I create a native module?
1 - Adding Directly to VM
Assuming this is your file main.ei
pub fn HelloWorldInput() -> String;
Declaring function is enough.
compile with:
elliec compile ..\..\core.ei --compile-lib -output bin -module-name myNativeLib --insert-module ./core.eib
This looks like surgical operation gone wrong but lia
will make every problem go away.
lia compile
:)
Now rust side;
vm.rs
will be your vm code.
//Create a global module manager to store all of the native modules.
let mut module_manager = ModuleManager::new();
//Create your module
let mut my_native_lib = EllieModule::new("myNativeLib".to_string());
my_native_lib.register_element(ModuleElements::Function(FunctionElement::new(
"HelloWorldInput",
Box::new(|_, args| {
// User cant get out of syntax but we're adding this anyways
if !args.is_empty() {
return VmNativeAnswer::RuntimeError(
"Signature mismatch expected 0 argument(s)".to_string(),
);
}
VmNativeAnswer::Ok(
VmNativeCallParameters::Dynamic(
RawType::generate_string("Hello There".to_string())
)
)
}),
)));
let mut thread = Thread::new(..., ...);
thread.run(&mut module_manager, ...),
Thats it.
FFI?
FFI support is planned. C, C++ and zig will be available. Same bridge as ModuleManager
mentionad above will be implemented in zig lang since zig is awsome with existing c codebase. As you can guess FFI is a runtime feature and no support will be available for embedded use. But you're free to copy it from ellievm
.
What is Ellie Robotics Studio?
Ellie Robotics Studio will be a one-stop place for robotics usage for ellie. Planned cards are esp32
Raspberry pico
and arm bluepill
.
Thats it folks see you in next release I hope.
Created at 24.09.2023-12.50