ChaiScript

Embedded Scripting Language Designed for C++

OTHER License

Stars
2.9K
Committers
66

Bot releases are visible (Hide)

ChaiScript - Release 6.1.0 Latest Release

Published by lefticus over 6 years ago

Changes since 6.0.0

  • Add namespacing support #290 @stephenberry
  • Add utf parsing support
  • cheatsheet.md updates
  • add_class utility support for scoped enums #306 @StanEpp
  • Parser optimizations #300 @niXman
  • Various JSON fixes #377 #400 #409 #371 @totalgee @dinghram @arcoRocks
  • Various cleanups, bugfixes and warning fixes and minor performance improvements
  • Support for C++17 compilers!
  • Support for UTF8 BOM #439 @AlekMosingiewicz @MarioLiebisch
ChaiScript - Release 6.0.0

Published by lefticus over 7 years ago

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

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
ChaiScript - Release 5.8.6

Published by lefticus over 7 years ago

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
ChaiScript - Release 5.8.5

Published by lefticus about 8 years ago

Changes since 5.8.4

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

Published by lefticus about 8 years ago

Changes since 5.8.3

  • Fix case with some numeric conversions mixed with numerics that do not need conversion
ChaiScript - Release 5.8.3

Published by lefticus about 8 years ago

Changes since 5.8.2

  • Add support for reference of pointer return types
ChaiScript - Release 5.8.2

Published by lefticus about 8 years ago

Changes since 5.8.1

  • Allow casting to non-const & std::shared_ptr
ChaiScript - Release 5.8.1

Published by lefticus over 8 years ago

Changes since 5.8.0

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

Published by lefticus over 8 years ago

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)
ChaiScript - Test_Release

Published by lefticus about 9 years ago

ChaiScript - Release 5.7.1

Published by lefticus over 9 years ago

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
ChaiScript - Release 5.7.0

Published by lefticus over 9 years ago

Changes since 5.6.0

  • 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
ChaiScript - Release 5.6.0

Published by lefticus almost 10 years ago

Changes since 5.5.1

  • Throw exception on integer divide by 0

  • Add optional type specification to function declarations

    def func(int i, j, double k) {
      // i must be an int.
      // j can be anything
      // k must be a double
      // normal conversion rules still apply
    }
    
  • Many minor fixes for compiler warnings

  • Add support for std::future and std::async

    var f := async(someFunction);
    var f2 := async(someFunction2);
    
    // someFunction and someFunction2 are running in parallel now
    f.get();
    f2.get();
    
  • Fully support r-value returns, supporting move-only objects and reducing object copies

ChaiScript - Release 5.5.1

Published by lefticus almost 10 years ago

Changes Since 5.5.0

  • 30% performance increase
  • Fix handling of object stack, resulting in greatly reduced memory usage
  • Code cleanups
ChaiScript - Release 5.5.0

Published by lefticus almost 10 years ago

Changes since 5.4.0

  • 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
ChaiScript - Release 5.4.0

Published by lefticus about 10 years ago

Changes since 5.3.1

  • 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
ChaiScript - Release 5.3.1

Published by lefticus over 10 years ago

Changes since 5.3.0

  • 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
ChaiScript - v4.3.1

Published by lefticus over 10 years ago

  • Add automatic arithmetic conversions for return types
  • Enable automatic down casting in inheritance when possible
ChaiScript - Release 5.3.0

Published by lefticus over 10 years ago

Current Version: 5.3.0

Note, with this version the C++11 version of ChaiScript has become the official version, and the boost version of ChaiScript will see very little if any future development.

Changes since 5.2.0

  • 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
ChaiScript - Release 4.3.0

Published by lefticus over 10 years ago

Current Version: 4.3.0

Note: this is scheduled to be the last release that requires boost, new releases
after this will require a C++11 compiler.

Changes since 4.2.0

  • 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