v1.0.x-alpha Release!

Hello There

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 :)

Behemehal Sponsor

Or me here;

Ahmetcan Aksu Sponsor

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 by @ahmtcn123

Created at 24.09.2023-12.50