Some of you may have noticed that today a large number of changes got merged into HEAD from my branch, enigma-newtree
. I am currently undergoing a mostly solo effort to write an alternative runtime and eventually an alternative compiler fronted to take advantage of it.
The goals are as follows;
- Primarily a GM:S runtime remake rather than an augmentation. Over time it may support some of the more advanced features or extensions the default ENIGMA runtime offers, but not for a while yet.
- Building from the ground up to support compilation through linking rather than using a make system. This will bring faster compile times on both Windows and Unix and removes quite a few command line tool dependencies for the end user. Also aim to support -flto out of the box, increasing performance by very significant margins.
- Small and fast. Use little templates and re-use as much code as possible to produce the smallest binaries.
- Build from the ground up using new C++11 features
- Take advantage of optimisations introduced by C++11, such as the improved copy-free move semantics for rvalues.
- Many new committee-optimized libraries were added to std - improved RNG, improved hash containers and more. /newtree takes advantage of these.
- The build system uses CMake and the code is compiled under strict ISO standards so that it is guaranteed compliant for each platforms major compilers; gcc, clang and MSVC. It's also very easy to contribute with the new automatically generated project files and a lot of hypothetical project file cruft can move out of the repo.
I'll be keeping a list of what works and what doesn't here. Feel free to ask questions or criticise. I'm also open to code review.