Skip to content

JitCat-0.2.0

Latest
Compare
Choose a tag to compare
@mvhooren mvhooren released this 09 Jul 11:12
· 14 commits to master since this release

JitCat 0.2.0

Major New Features
- LLVM-based JIT native code generation (Supports X86-64, windows and linux)
- Precompilation and cross-compilation to object files for multiple targets at once. Includes support for the Playstation 4 and Xbox One gaming consoles.
- Integration tests with ~80% code coverage.
- Greatly improved reflection of C++ classes for use in expressions, see "New Reflection Features" below.

New Reflection Features
- Improved reflection of C++ classes. Added support for static member functions, static variables and constants.
- Added support for reflection of references and object values.
- Added support for enums.
- Added support for double floating point types, including arithmetic operations.
- Added support for all C++ basic integral types, not yet including arithmetic operations.
- Support for reflection and usage of the arithmetic infix operators, comparison operators, the subscript [] operator and the assignment operator =.
- Function overloading is supported for reflected functions.
- C++ classes can now be reflected externally through the ExternalReflector<> class.
- Improved support for reflection of C++ STL container classes.

Other New Features
- Void-typed expressions.
- Added ExpressionAssignment and ExpressionAssignAny for assigning a value to the result of an expression.
- Replaced CatValue with std::any for type-erased value passing.
- Major refactor of the type system.
- All JitCat classes are now contained in namespaces and headers are now included with "jitcat/<header.h>" to prevent any naming clashes with user code.
- JitCat now requires C++17 to compile.
- CMake is now the only build system. VS2017 project files have been removed (but can be generated with CMake).
- Added a bunch more built-in math functions.
- Improved error messages when compiling expressions.

Experimental New Features
- Initial work on JitCat classes and functions, including code generation.

A note on production readyness

The JitCat expressions (ie. Expression and others) and C++ reflection system, have seen extensive production use, including the use of native code generation on multiple platforms.
This part of JitCat is also extensively tested through the integration tests that are new to this release.
There are currently no known major bugs, crashes or memory leaks known in that part of JitCat. Needless to say, that is no guarantee that there are none.
I do expect some minor breaking changes in the future when it comes to expressions.

The JitCat scripting language classes and functions are definitely not production ready and will be a major focus of future development.