Evil ML: ML to C++ template language
akabe.github.io
akabe.github.io
It wont be totally wrong to say that it is to C++ what F# is to C#, or perhaps little more accurately Scala to Java.
It is plenty fast too. A toy brainfuck interpreter written in it turned out to be speedier than C++, D, Go, but got beaten by an interpreter written in nim. Can post the link once I get off the phone.
EDIT: Here it is https://github.com/kostya/benchmarks/blob/master/README.md#b...
Something I find interesting is that it has had fibres and coroutines long before go was a thing. The author(not me) used it in his projects on telco switches.
A quick once-over with gprof shows the C++ interpreter running bench.b shows it is spending 30% of its time allocating rb-tree nodes and another 30% searching it.
Swapping it out for a unordered_map (a hash table) actually makes it slower, but ~40% of the runtime is then sunk in to inserting in to the hash table. Probably allocating
I couldn't be bothered to drill in any further.
I had no idea even those where there on the website :) Could you post the link please. BTW the website is running on web-server written in Felix and the entire live install image can be browsed online.
Edit: Ah! they are here http://felix-lang.org/speed/ in their individual directories
Anyway, I was mainly considering Racket for its powerful metaprogramming abilities, IDE, and their constant optimization of compiler. The enhanced metaprogramming should nicely help with a new instant of my platform given what I did with CL's macros & meta. Thoughts?
"Chat and Discussion: Facebook Group Felix Programming Language"
This is acceptable for some ad hoc NGO initiative but it is ridiculous for a programming language project.
Anyway, just mentioning it because it's best of two worlds and someone else might want to re-create the concept. I saw one person do something similar for C just for interactive development. However, my old toolkit showed it could do a lot more. Some bright people could probably take it way further than what I did.
- double underscores at the beginning of names are reserved for compiler/STL.
- Using a namespace instead of "__ml_" seems more appropriate.