The Julia programming language is a horrible fit for a no-frills microcontroller like the ATMega328p that lies within the vintage Arduino, but that didn’t halt [Sukera] from making an attempt, and succeeding.
All of the functions that make Julia a awesome programming language for your significant computer make it an dreadful option for the Arduino. It is made for interactivity, is dynamically typed, and leans greatly on its garbage selection each of these attributes alone would tax the Mega to the breaking stage. But in its favor, it is a compiled language that is primarily based on LLVM, and LLVM has an AVR backend for C. Need to just be a basic make a difference of stubbing out some of the overhead, recompiling LLVM to incorporate an AVR target for Julia, and then repairing up all the other free ends, proper?
Properly, it turns out it virtually was. Leaning intensely on the overall flexibility of LLVM, [Sukera] manages to change off all the language capabilities that are not required, and following some little hurdles like the typical issues with volatile and atomic variables, manages to blink an LED bit by bit. Huzzah. We adore [Sukera’s] wry “Now THAT is what I simply call two times very well spent!” after it is all completed, but very seriously, this is the to start with time we have each seen even super-rudimentary Julia code working on an 8-little bit microcontroller, so there are absolutely some kudos owing below.
By the time that Julia is wedged into the AVR, a large amount of what can make it interesting on the major personal computers is missing on the micro, so we really do not genuinely see individuals selecting it over straight C, which has a a great deal more produced ecosystem. But nevertheless, it’s fantastic to see what it normally takes to get a language created about a runtime and rubbish collection up and working on our most loved mini micro.
Thanks [Joel] for the suggestion!