
Microscheme: scheme for the Arduino - ducklord
http://microscheme.org/
======
Artlav
Fun fact - "microscheme" means "integrated circuit" in Russian. Oddly fitting.

So far i don't like the fact it can't handle interrupts (unless by C code),
and that it seem to ignore the C++ FFI completely.

That, and the fact that a garbage-collected language is to be run on a
microcontroller - a device that is mostly used for realtime tasks. It won't be
good for a quadcopter to go into a garbage collect subroutine during the
control loop calculations.

Not a problem if you are aware of the issue, but how many people are?

~~~
kognate
Microscheme is not garbage collected, at least according to the documentation.

~~~
technomancy
There's a form of faux-garbage-collection: you can wrap any form in `free!`
and the heap pointer will be reset when that form finishes:
[http://microscheme.org/documentation#memman](http://microscheme.org/documentation#memman)

This would be awful for general-purpose programming, but on a device with only
2.5kb of RAM to begin with you can usually pre-allocate anything that needs to
survive that reset. I use this in my keyboard firmware's outer loop:
[http://atreus.technomancy.us/firmware2](http://atreus.technomancy.us/firmware2)

------
petra
>> "Microscheme has a robust FFI (Foreign Function Interface) meaning that C
code may be invoked directly from (ms) programs. Therefore, the power of the
existing wealth of Arduino libraries is available within Microscheme. "

Arduino is c++, and c++ FFI's are really hard. So how does this FFI work ?

~~~
jrapdx3
According to a quick look through the documentation, C code is called though a
simple interface: (call-c-func "c-function-name" args …). OTOH it didn't
appear that it's possible to call Scheme from C, which may be a disadvantage
in some cases.

You are right, no mention of C++. It's not clear how much of a problem that
would be. IIRC wrapping C++ in "extern C" more or less enables C++ functions
to be called from C. Don't know about compatibility of Arduino libraries, but
possibly this is how Microscheme FFI works.

------
infocollector
Is there python for Arduino? :)

~~~
StavrosK
I would recommend the ESP8266, which is a much better microcontroller, with
integrated wifi and a price tag of only $2. It runs Lua, C, Javascript and,
most recently, MicroPython.

