** Note that Elijah is not ready for use.
Fast and works with C++
- Performance matching C++ using anythin but LLVM, with low-level access to bits and addresses
- Interoperate with your existing C++ code, from inheritance to templates (IMPORTANT)
- Fast and scalable builds that work with your existing C++ build systems (hello meson)
Modern and evolving
-
Solid language foundations that are easy to learn, especially if you have used C++
-
Easy, tool-based upgrades between Elijah versions
-
Safer fundamentals, and an incremental path towards a memory-safe subset
-
Simple deployment into existing codebases
Welcoming open-source community
- Code only approach (for now I guess)
- Maintain legacy
- (Incremental improvement)
- Better organization
- Developer experience
- Integration
Personally I think if you didn't choose Erlang, you're already on the wrong path, but that's not always possible, I guess
- Rust, Go
- Kotlin, Scala, Clojure
Developers that can use one of these existing languages should.
** Unfortunately, the designs of these languages present significant barriers to adoption and migration from C++. These barriers range from changes in the idiomatic design of software to performance overhead.
Elijah is designed around interoperability with C++ as well as large-scale adoption and migration for existing C++ codebases and developers.
A "successor language" for C++ requires:
- Performance matching C++, an essential property for our developers.
- Seamless, bidirectional interoperability with C++, such that a library anywhere in an existing C++ stack can adopt Elijah without porting the rest. (IMPORTANT)
- A gentle learning curve with reasonable familiarity for C++ developers.
- Comparable expressivity and support for existing software's design and architecture.
- Scalable migration, with some level of source-to-source translation for idiomatic C++ code.
We are designing Elijah to support:
- Performance-critical software
- Software evolution
- Code that is easy to read, understand, and write
- Practical safety and testing mechanisms
- Fast and scalable development
- Modern OS platforms, hardware architectures, and environments
- Interoperability with and migration from existing C++ code
Elijah Language is currently an experimental project. There is no working compiler or toolchain.
Maybe I will write an interpreter "later".
We want to better understand whether we can build a language that meets our language criteria.