Release 6.0.0

@lefticus lefticus released this Feb 22, 2017 · 1 commit to develop since this release

Changes since 5.8.6

6.0.0 is a massive rework compared to 5.x. It now requires a C++14 enabled compiler

Compiler Requirements

  • MSVC 2015 or greater
  • g++ 4.9 or greater
  • clang 3.6 or greater

Breaking Changes

  • 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
  • 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)

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


  • 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


Release 5.8.6

@lefticus lefticus released this Oct 28, 2016 · 256 commits to develop since this release

Changes since 5.8.5

  • Optimize away return statements in lambdas also
  • Allow conversions to bool in conditionals
  • Don't allow class statements inside of scopes
  • Properly error when a dynamic object non-function member is called


Release 5.8.5

@lefticus lefticus released this Oct 10, 2016 · 264 commits to develop since this release

Changes since 5.8.4

  • Fix order of operations for prefix operators
  • Make sure atomics are initialized properly
  • Remove parsing of unused prefix & operator


Release 5.8.4

@lefticus lefticus released this Sep 24, 2016 · 270 commits to develop since this release

Changes since 5.8.3

  • Fix case with some numeric conversions mixed with numerics that do not need conversion


Release 5.8.3

@lefticus lefticus released this Apr 29, 2016 · 273 commits to develop since this release

Changes since 5.8.2

  • Add support for reference of pointer return types


Release 5.8.2

@lefticus lefticus released this Mar 30, 2016 · 274 commits to develop since this release

Changes since 5.8.1

  • Allow casting to non-const & std::shared_ptr


Release 5.8.1

@lefticus lefticus released this Mar 5, 2016 · 23 commits to release-5.x since this release

Changes since 5.8.0

  • Fix parsing of floats to be locale independent #250
  • Various warning fixes on various platforms


Release 5.8.0

@lefticus lefticus released this Feb 16, 2016 · 47 commits to release-5.x since this release

Changes since 5.7.1

  • Make all parser iterator operations range checked
  • Parse in-string eval statements once, not once for each execution
  • Fix parsing of operators (ie 1<-1 now parses)
  • Fix variable scoping for functors
  • Exception reduction
  • Various object lifetime fixes
  • Add JSON support for load / save #207
  • Numeric overload resolution fixes #209
  • Fix long long #208
  • Add octal escapes in strings #211
  • Fixed sizing of binary literals #213
  • Added support for != with bool values #217
  • Various value assignment vector fixes
  • Fixed broken hex escape sequences from @ChristianKaeser
  • Multiply defined symbols fixes #232 @RaptorFactor
  • Add add_class helper #233 @vrennert
  • Cheatsheet fixes #235 @mlamby
  • Fix parsing of strings inside of in-string eval statements
  • Allow lower-case global keyword
  • Enable thread-local on MSVC (should be significant performance boost)



@lefticus lefticus released this Oct 17, 2015 · 393 commits to develop since this release

Implement option explicit for dynamic objects.

Closes #218


Release 5.7.1

@lefticus lefticus released this Jul 17, 2015 · 465 commits to develop since this release

Changes since 5.7.0

  • Build time reduction
  • Build size reduction
  • Performance increases
  • 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 &
  • 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