Hacker News new | past | comments | ask | show | jobs | submit login
Go on Very Small Hardware (ziutek.github.io)
129 points by onebot on March 31, 2018 | hide | past | favorite | 10 comments



How similar is Emgo to 'genuine' Go? The syntax looks the same. Perhaps this is a silly question, but is it garbage-collected?


The differences can be found here [0]. The current allocator seems to be a 'allocate once & never free' approach.

[0] https://github.com/ziutek/emgo/blob/master/doc/spec.md


> but is it garbage-collected?

Nope.


TBH this is not that small hardware. There are boards with this chip that can run JS (with interpreter running right on chip)


Yes, there is smaller hardware - however this is indeed small hardware. Especially in the context of running go.

This mcu has 4kb, which is not a lot of ram.

8bit controllers are sometimes 16kb - 32kb


Yup, come back when you can target an ATtiny.


Time to plug one of my favourite (semi-academic) programming languages targeting the embedded space: Céu[0].

It uses a Structured Synchronous Reactive Programming paradigm. Synchronously concurrency means that it is single-core, and not parallel. More accurately, it awaits events in parallel (hence "synchronous reactive programming"), using "trails" instead of threads.

An example from the documentation[1] below:

> The example in Céu that follows blinks a LED every second and terminates on a button press:

    input  none   BUTTON;
    output on/off LED;
    par/or do
        await BUTTON;
    with
        loop do
            await 1s;
            emit LED(on);
            await 1s;
            emit LED(off);
        end
    end

par/or do ... with ... end is an example of two parallel trails, each of which much have one or more await statements, meaning the block on these events. The or in par/or means that if either trail finishes, the whole section ends. In this case, the second trail has an infinite loop (which isn't a problem due to the await statements yielding control to the scheduler), so the program only ends if the first trail ends after a button press.

A more elaborate example by fellow Céu enthusiast Johnicholas can be found here[2][3].

[0] http://ceu-lang.org/

[1] http://fsantanna.github.io/ceu/out/manual/v0.30/

[2] http://johnicholas.github.io/2018/03/24/Hello_Ceu.html

[3] https://github.com/Johnicholas/learn_ceu_030


Very very nice article. Nice to see you can use something else than arduino.


>> arm-none-eabi-size

I wish I knew about this when dealing with MIB520 and MicaZ


Very interesting.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: