Lambda Mountain is a small portable assembler, suitable for embedded AOT or JIT compilation.
Patch v1.17 brings a large variety of new features. Most features are meant to improve the programming experience and bring the language more in line with what most people expect from a modern compiler. There are also many internal improvements that set the foundation for future goals.
The theme of this release seems to be “provably correct code is easy to optimize.” The performance of the compiler is improving in leaps and bounds due mainly to swapping out slow implementations with fast specialized equivalent implementations. The original project hypothesis that specialization is sufficient to implement a complex functional language is starting to show true. Yes, F<: with Specialization is a strong foundation for low-level programming concepts.
All Features In This Release
single instruction math operations and comparisons
typed fragments
function inlining
simple profiling
more organized project structure with index files and unit files
varargs
named field accessors
complex destructuring improvements
improve source location spans to play better with macros
StackVariable field accessors
for-each loop macro to iterate through lists
hook function invocation to contrast specialized invocation
improvements to cdecl calling implementation to remove sensitivity to current stack size
lambda terms (not just their lhs/rhs) can be ascripted with additional type information
libc compatible malloc, free, realloc