ChaiScript Changelog

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.