Not only does functional programming allow for strong scalability of compact, readable and effective code, but functional reactive programming is specifically designed to handle timing based events in an intuitive way. Juniper is designed to carry these advantages, as well as be lightweight enough to function viably on Arduino.
Juniper supports many features typical of functional programming languages, including algebraic data types, tuples, records, pattern matching, full type inference, immutable data structures, parametric polymorphic functions, and anonymous functions (lambdas).
Some imperative programming concepts are also present in Juniper, such as for, while and do while loops, the ability to mark variables as mutable, and mutable references.
Since Juniper transpiles to C++, integration with existing C/C++ libraries is easy and straightforward.
The Juniper compiler, standard library and documentation are all open sourced under the MIT License. The Juniper compiler itself is written in F#, an open source language originally developed by Microsoft Research.
Bugfixes and changes:
New features:
Juniper has a newly designed website and logo. The new website is substantially more modern and aesthetically pleasing. There is also a new tutorial series on a DIY smartwatch using the Adafruit CLUE board.
New features:
The paper that started it all is available for viewing on arXiv. This publication introduced the motivation and design behind the Juniper programming language. Since the publication's release in 2016 the language has continued to evolve, but the core philosophy remains the same.
This paper covers the implementation of closures in the Juniper programming language. The publication is available for viewing on arXiv.