The Julia programming language is a awful suit for a no-frills microcontroller like the ATMega328p that lies inside the common Arduino, but that did not halt [Sukera] from making an attempt, and succeeding.
All of the capabilities that make Julia a cool programming language for your big computer system make it an awful decision for the Arduino. It’s built for interactivity, is dynamically typed, and leans closely on its rubbish assortment each of these functions alone would tax the Mega to the breaking level. But in its favor, it is a compiled language that is primarily based on LLVM, and LLVM has an AVR backend for C. Must just be a straightforward issue of stubbing out some of the overhead, recompiling LLVM to add an AVR concentrate on for Julia, and then repairing up all the other loose ends, ideal?
Very well, it turns out it nearly was. Leaning greatly on the versatility of LLVM, [Sukera] manages to switch off all the language characteristics that aren’t needed, and following some modest hurdles like the common troubles with risky and atomic variables, manages to blink an LED bit by bit. Huzzah. We enjoy [Sukera’s] wry “Now THAT is what I call two days very well spent!” following it’s all accomplished, but severely, this is the 1st time we’ve every single observed even tremendous-rudimentary Julia code jogging on an 8-bit microcontroller, so there are definitely some kudos due in this article.
By the time that Julia is wedged into the AVR, a whole lot of what makes it attractive on the significant computer systems is lacking on the micro, so we really don’t really see folks choosing it above straight C, which has a much additional designed ecosystem. But even now, it’s wonderful to see what it normally takes to get a language made around a runtime and garbage selection up and managing on our favored mini micro.
Thanks [Joel] for the suggestion!