(C) 2014-2016 Christian Gunderman Contact Email: [email protected]
Uses a fork of Mozilla NanoJIT library for code generation which is subject to MPL 2.0 license. Uses the Boehm-Demers-Weiser conservative C++ garbage Collector, subject to its own licenses.
Gunderscript 2 is the successor to the original Gunderscript scripting language. For more information on Gunderscript, see http://github.com/gundermanc/gunderscript
Gunderscript 2 attempts to learn from the mistakes of Gunderscript 1 and is a completely new language that is written mostly from scratch in C++. The focus is to create a clean, object oriented scripting language that borrows the best features from C#, Java, C, and C++ and that is small, efficient, and modular in design and that supports native code compilation and garbage collected memory management.
Gunderscript 2 is intended to be a strongly typed language for the Javascript, Lua, and Squirrel occupied market sector and will be aptly suited to use as a game engine scripting language, Unix command shell, or general purpose scripting environment.
Below is a high level over view of the ongoing road map. For specific work items, please see the Github issues page.
Build the current code by generating build files for your platform with CMake. Project has been tested on Windows 10 Professional 10586 and is CI built on Ubuntu 15.10 and should be able to run cross platform with no issue. OS X support through GCC 4.9 is low priority and should be considered experimental.
Officially Gunderscript 2 supports the following build configurations via CMAKE:
All engine code is unit tested. To run tests, compile the project and run the gunderscript_compiler_tests and gunderscript_runtime_tests executables. There are currently over 350 tests covering almost all of the lexer, parser, and type checker all well as all completed code gen functionality.
To run a script, download or compile the Gunderscript executable for your platform. Run ./gunderscript_cli [filename] and Gunderscript will compile and run the script. At the moment, the only end-to-end completed functionality is:
No built in functions are provided yet. Return values printed on screen are the only currently supported output.