SGScript is a scripting engine that originated from the interest to find a replacement for Lua and AngelScript, both of which I've worked previously with.
The goal was to improve error handling, have minimal typing requirements (picking dynamic typing as the solution) and have a familiar syntax with extensions for common actions.
- A C-like syntax
- The usual stuff (while/do-while/for/foreach, expressions, variables etc.)
- Highly optimized, register-based virtual machine
- Mixed memory management (ref.counting + GC)
- Extensive native debugging features
- Coroutines, threads, advanced sync features
- Interactive debug inspector add-on
- Function/instruction execution time and memory usage profiler add-on
- 10 data types (with lots of space for extensions): null, bool, int, real, string, function, C function, object, pointer, thread
- Multiple serialization formats, including SGSON (SGScript Object Notation) and a circular reference-safe binary format)
- Full state serialization, with the help of symbols - name/value bindings that can be resolved bidirectionally
- Tests for every submodule and stage (compilation, runtime, serialization, bindings)
- Object-oriented constructs (dict, class, closure, "compatible call", overloadable operators)