0.6.1 (2017-05-28)
- Fixed bug where optimizer stopped as soon as it encountered a custom symbol in the expression
0.6.0 (2017-05-27)
- BREAKING CHANGE:
constant
symbols have now been renamed tovariable
to more accurately reflect their behavior - Minor breaking change:
description
now returns the optimized description - Added built-in symbol library for boolean operations
- Added thread-safe in-memory caching of previously parsed expressions
- Improved optimizer - now pre-evaluates subexpressions with constant arguments
- Added configuration options for enabling/disabling optimizations and boolean arguments
- Added modulo
%
operator to the standard math symbol library - Added support for hexadecimal literals
0.5.0 (2017-04-12)
- Added support for multi-character operators, and precedence rules for most standard operators
- Added special-case support for implementing a ternary
?:
operator with 3 arguments - Static constants are now replaced by their literal values at initialization time, reducing lookup overhead
- Constant expressions are now computed once at initialization time and then cached
- Numeric literals are now stored as Doubles instead of Strings, avoiding conversion overhead
- Fixed bug where printing an expression omitted the parens around sub-expressions
- Fixed crash when parsing a trailing postfix operator preceded by a space
- Fixed bug in Colors example when running on 32-bit
0.4.0 (2017-03-27)
- You can now get all symbols used by an expression via the
symbols
property - Fixed crash with postfix operators followed by comma or closing paren
0.3 (2017-01-04)
- Fixed crash when processing malformed expression
- Added support for Swift Package Manager and Linux
- Updated for latest Xcode version
0.2 (2016-10-15)
Expression.init
no longer throws. The expression will still be compiled on init, but errors won't be thrown until first evaluation- Added optional
constants
andsymbols
arguments toExpression.init
for simpler setup of custom functions and operators - Removed the
constants
param from theevaluate()
function - this can now be provided inExpression.init
- Added automatic error reporting for custom functions called with the wrong arity
- Improved evaluation performance for built-in symbols
0.1 (2016-10-01)
- First release