What's new in ChaiScript 6.0.0
Apr 1, 2017
- BREAKING CHANGES:
- Headers have been reorganized to fully separate stdlib/parser/engine from each other (some faster builds)
- Bootstrap functions no longer return a reference to the module added to (compile time savings)
- It's now no longer possible modify AST_Nodes (compile time, runtime efficiency)
- Function annotations no longer exist (simplifies code, reduces compile time, compile size)
- Instantiating a ChaiScript object now, by default, builds the stdlib in:
- This was done to address the most common support issues of loading stdlib dynamically at runtime
- If you want the old behavior, use include/chaiscript/chaiscript_basic.hpp
- NEW FEATURES ADDED:
- Modular optimization system; this can be accessed via the ChaiScript_Basic interface
- Execution tracing capability; also accessed via ChaiScript_Basic interface
- range-based for loops for( id : container ) { } (much better performance than other loop types)
- If-init expressions (ala C++17)
- Support for passing r-value references to functions
- Support for containing unique_ptr
- Add helpers for exposing enum classes to ChaiScript
- Allow typed ChaiScript defined functions to perform conversions on call #303
- IMPROVEMENTS:
- Compile time improvements
- Compile size improvements
- Significant runtime improvements (see "Modular optimization system")
- Significant parser improvements, both with parse-time and parser initialization time (Thanks @niXman)
- Fix type conversion to bool in conditionals
- IMPROVEMENTS STILL NEED TO BE MADE:
- File location tracking has been rewritten; this currently means error location reporting is not as good as it was
- Tracing capability needs to be tested and vetted
New in ChaiScript 5.7.1 (Jul 18, 2015)
- Build time reduction
- Build size reduction
- Performance increases
- Automatic deduction of lambda type signatures
- Work with non-polymorphic parent/child conversions
- Move to codecov for coverage reporting
- Add .at method for Map objects
- Various corrections for support of move-only objects
- Fixed ~20 crash-bugs found with fuzzy testing #194:
- Let unhandled exceptions propogate to user
- Report eval_error when break statement is not in loop
- Fix handling of 0 length scripts closes #193
- Don’t crash on arity mismatch - Specifically affects the case where no overloads exist for a given function
- Fix error printing for bind calls
- Handle unexpected continue statement
- Check arity during bind
- Don’t allow arith conversion on variadic function
- Correct bind parameter match count
- Add in expected Boxed_Value exception cases
- Check access to AST, don’t allow ; in func def
- Don’t attempt arithmetic unary & call
- Don’t crash on 0 param call to bind
- Catch errors during member function dispatch
- Properly handle type of const bool &
New in ChaiScript 5.7.0 (May 8, 2015)
- Significant code cleanups and reduction
- Smaller builds
- Faster compiles
- Less runtime memory usage
- ~2x faster runtimes
- biicode support
- method_missing feature added #164 @arBmind
- Generic objects with dynamic properties support
- Add ability to call functions contained in properties
- Add lambda captures
- Create cheatsheet.md for all-in-one reference of features
- Fix support for libc++
- Eliminate clone of return value stored locally
- Eliminate 'return' statements when last line of function
- Reduce number of runtime exceptions occuring
- Reduce copies / moves of return values.
- make use statement return value of last statement in file
- Add ability to access fixed array sizes
- Add support for scientific notation floating point literals #174 @totalgee
New in ChaiScript 5.6.0 (Jan 19, 2015)
- Throw exception on integer divide by 0
- Add optional type specification to function declarations
- Many minor fixes for compiler warnings
- Add support for std::future and std::async
- Fully support r-value returns, supporting move-only objects and reducing object copies
New in ChaiScript 5.5.1 (Dec 22, 2014)
- 30% performance increase
- Fix handling of object stack, resulting in greatly reduced memory usage
- Code cleanups
New in ChaiScript 5.5.0 (Nov 11, 2014)
- Changes:
- 2x performance increase
- Significant code cleanups
- Throw exception if user attempts to call function on null object
- Allow user defined type conversions from within chaiscript or c++
- Fix object lifetime for nested function calls made at the global scope
- Fix returning of boolean values from function calls
New in ChaiScript 5.4.0 (Sep 9, 2014)
- Decreased compile time and build size
- Make "reflection" module built in (losing some of the time / build size gains)
- Add new "class" syntax for ChaiScript defined methods and attributes see: unittests/class.chai for examples
- Minor performance enhancements
- major to_string performance enhancements
- Provide API for retrieving registered type name #124
- Added strong reference to container to range object #132
New in ChaiScript 5.3.1 (Jun 12, 2014)
- Add automatic conversion of arithmetic return types, following the same rules as conversion of arithmetic types when passing parameters
- Add automatic casting up the inheritence hierarchy when possible.
- Enable travis.ci testing
- Allow users to add globals from within script
- Various static analysis fixes
- Code modernization to C++11
- Unofficial support for Haiku added
- Fix #121 - Inability to compile on cygwin
- Formatting fixes and spelling corrections
- Apply "include what you use" https://code.google.com/p/include-what-you-use/
- Apply clang-modernize
- Various threading fixes
- Performance improvements
New in ChaiScript 5.3.0 (Mar 28, 2014)
- Official support for MSVC with C++11. All major platforms and compilers are now support for C++11 release
- Enhanced unit tests
- Add continue statement, fix various use cases for for loops
- Fix use of suffixed numbers in vector initialization
- Code cleanups
- Eliminate global data, which makes code more portable and thread safe
- Fix issue #79
- Merge pretty_print fixes from @mgee #82
- Compiler warning fixes for latest compiler releases
- Fix threading problems
- Fix linking error on MacOS Mavericks #88
- Allow non-const globals
- Make sure user cannot name a variable with :: in it #91
- Fix various string / map / vector size and count calls for compilers which have weird overloads for them. #90 #93 #95
- Make module search path relative to the currently running executable
- Build and work with wstring windows builds
- fix for some new line cases in the middle of a vector initialization from jespada
New in ChaiScript 5.2.0 (Dec 3, 2012)
- Changes:
- Add support for automatic conversion of arithmetic types when possible and when no ambiguous method dispatch exists.
- Initial support for MinGW 4.7 with C++11 (ChaiScript 5.2.0)
New in ChaiScript 5.1.0 (Nov 20, 2012)
- Changes:
- Much improved error reporting
- Autosizing of integers now matches the C++ standard
- u, l, ll, f suffixes added to numeric constants
New in ChaiScript 5.0.0 (Jun 9, 2012)
- ChaiScript no longer users Boost. 5.0.0 Requires a C++11 compliant compiler. This means either g++ >= 4.5 or clang >= 3.1
- Much better performance but less portability. Due to its use of variadic templates, it will not be supported for some time by MSVC.
New in ChaiScript 4.0.0 (Jun 2, 2012)
- svenstaro: Unused variables and CMake consistency fixes
- Added support for returning pointers from functions (#13)
- Compile with -pedantic (#9)
- Fix issues with multiple ChaiScript object types having the same attribute name (#15)
- Prevent variable redeclaration in same scope (#22)
- mgee: Boxed_Number improvements (#27)
- Support switch statements (#34)
- Fix uint16 comparions (#26)
- Add ability to add const_var globals in Module objects (#14)
- Add support for ternary operators ?:
- Add headers to CMakeLists so they show up in IDEs
- Add ability to get vector of defined objects and vector of defined functions
- Fix memory leak in cyclical references
- Clean up static analysis issues discovered
- Fix vector construction to be consistent with map construction
- Increased unit tests to 161
- Performance enhancements
New in ChaiScript 3.1.0 (Jun 22, 2011)
- Numeric operations performance increased approximately 10x
- Looping operations performance increased up to 2x
- Engine start up time decreased
- Several parsing bugs related to index operators fixed
- Added full support for all C algebraic types: double, long double, float, int, long, char, uint8_t, uint16_t, uint32_t, uint64_t, int8_t, int16_t, int32_t, int64_t
- Enhanced support for capturing of exceptions thrown from ChaiScript in C++
New in ChaiScript 3.0.0 (May 24, 2011)
- Code simplifications
- Fully integrate documentation with source code in doxygen style comments
- Unit tests increased from 114 to 137
- Automatic conversion between boost::function objects and ChaiScript functions
- Many bug fixes
- Minor performance improvements
- Namespace reorganization to make end user code more accessible
- clang support
- VisualStudio 2010 Support
- Support for C++ base classes and automatic upcasting
New in ChaiScript 2.3.3 (May 17, 2010)
- Fixed method sugar lookup to not look at local variables. Note: This affects pre-2.3.3 code but should only affect a minority of cases.
- Fixed memory leak
- Standardized unit tests across platforms
- Standardized packaging across platforms
- Added vim and geshi syntax highlighting
New in ChaiScript 2.3.2 (Jan 19, 2010)
- Added support for 0b1010 style binary numbers
- Fixes to support VS 2010
- Bugfixes for swap and vector initialization
New in ChaiScript 2.3.1 (Dec 11, 2009)
- Fixed compilation in Visual Studio 2008
- Fixed compilation in MinGW
New in ChaiScript 2.3 (Dec 8, 2009)
- Saving and restoring script engine state
- Object type introspection
- Intelligent int types
- 5-10% speedup
- Bugfixes for array lookups, single-line comments, and const return values.
New in ChaiScript 2.2 (Nov 17, 2009)
- Add support for most of C++'s unary and binary operators
- Support for adding global consts, which are visible across threads
- Add .is_null() and .is_undef() methods
New in ChaiScript 2.1 (Oct 20, 2009)
- Support for octal and hexadecimal numbers
- Bit shifting operators ''
- Generic comparison functions 'eq', 'lt', and 'gt'
- Simplified method aliasing. You can now do chai.add(fun(&Class::method_name, object), "simple_method");
- Operator overloading
- Bugfixes
New in ChaiScript 2.0 (Sep 24, 2009)
- Automatic thread-safety
- Native object support
- Support for extending existing C++ classes with new methods
- try/catch/finally exception handling, with guarded catch blocks
- Support for throwing exceptions
- Module loading
- Readline support
- NaN and Infinity support
- In-string evaluation
New in ChaiScript 1.3 (Aug 28, 2009)
- Allow floating point numbers without a leading 0.
- Fix dispatch of functions that take boost::shared_ptr parameters.
- Add "use" function for loading ChaiScript files from within ChaiScript files.
- Double performance of tightloops by speeding up operator dispatches.
- Prevent the use of reserved words as function and object names.
- Fix error messages for failed "clone" calls.