Changelog History
-
v2.3.2 Changes
June 16, 2020๐ Changes To version 2.3.1:
๐ Two different prereleases of v2.3.1 existed. The second one fixed the issue with the final keyword. To avoid confusion the second prerelease is now the official release with the version number 2.3.2.
๐ Changes To version 2.3.0:
- โ removed final keyword from parser class (highperformancecoder/scidavis#139)
๐ Security Fixes:
๐ The issues following issues were fixed. They are present in all prior releases
๐ Changes (compared to 2.2.6):
- ๐ using OpenMP is now the default settings for cmake based builds
- โ added optimization for trivial expressions. (Expressions whose RPN only has a single entry)
- introduced a maximum length for expressions (5000 Character)
- introduced a maximum length for identifiers (100 Characters)
- removed the MUP_MATH_EXCEPTION macro and related functionality. (C++ exceptions for divide by zero or sqrt of a negative number are no longer supported)
- โ removed ParserStack.h (replaced with std::stack)
- โ removed macros for defining E and PI (replaced with a static constants)
- ๐ the MUP_ASSERT macro is no longer removed in release builds for better protection against segmentation faults
๐ Security Fixes:
๐ The issues following issues were fixed. They are present in previous stable releases.
- Prevented multiple access violations for malformed expressions with if then else and functions taking multiple arguments like "sum(0?1,2,3,4:5)"
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=23330
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=22922
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=22938
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=23330
- โ Added additional runtime checks for release builds to prevent segmentation faults for invalid expressions
๐ Bugfixes:
- ๐ Fixed an issue where the bulk mode could hang on GCC/CLANG builds due to OpenMP chunksize dropping below 1.
-
v2.3.1
June 14, 2020 -
v2.3.1._prerelease2 Changes
June 15, 2020๐ This is the second prerelease for the upcoming Version 2.3.1. I'll wait for feedback and more error reports before doing the final release. At the time of creations (2020-06-15) this release does not contain any known unfixed issues!
๐ Changes To version 2.3.0:
- โ removed final keyword from parser class (highperformancecoder/scidavis#139)
๐ Security Fixes:
๐ The issues following issues were fixed. They are present in all prior releases
๐ Changes (compared to 2.2.6):
- ๐ using OpenMP is now the default settings for cmake based builds
- โ added optimization for trivial expressions. (Expressions whose RPN only has a single entry)
- introduced a maximum length for expressions (5000 Character)
- introduced a maximum length for identifiers (100 Characters)
- removed the MUP_MATH_EXCEPTION macro and related functionality. (C++ exceptions for divide by zero or sqrt of a negative number are no longer supported)
- โ removed ParserStack.h (replaced with std::stack)
- โ removed macros for defining E and PI (replaced with a static constants)
- ๐ the MUP_ASSERT macro is no longer removed in release builds for better protection against segmentation faults
๐ Security Fixes:
๐ The issues following issues were fixed. They are present in previous stable releases.
- Prevented multiple access violations for malformed expressions with if then else and functions taking multiple arguments like "sum(0?1,2,3,4:5)"
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=23330
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=22922
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=22938
- https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=23330
- โ Added additional runtime checks for release builds to prevent segmentation faults for invalid expressions
๐ Bugfixes:
- ๐ Fixed an issue where the bulk mode could hang on GCC/CLANG builds due to OpenMP chunksize dropping below 1.
-
v2.3.0 Changes
June 13, 2020๐ Changes:
- ๐ using OpenMP is now the default settings for cmake based builds
- โ added optimization for trivial expressions. (Expressions whose RPN only has a single entry)
- introduced a maximum length for expressions (5000 Character)
- introduced a maximum length for identifiers (100 Characters)
- removed the MUP_MATH_EXCEPTION macro and related functionality. (C++ exceptions for divide by zero or sqrt of a negative number are no longer supported)
- โ removed ParserStack.h (replaced with std::stack)
- โ removed macros for defining E and PI (replaced with a static constants)
- ๐ the MUP_ASSERT macro is no longer removed in release builds for better protection against segmentation faults
๐ Security Fixes:
๐ The issues following issues were fixed. They are present in previous stable releases.
- Prevented multiple access violations for malformed expressions with if then else and functions taking multiple arguments like "sum(0?1,2,3,4:5)"
- โ Added additional runtime checks for release builds to prevent segmentation faults for invalid expressions
๐ Bugfixes:
- ๐ Fixed an issue where the bulk mode could hang on GCC/CLANG builds due to OpenMP chunksize dropping below 1.
-
v2.2.6
September 11, 2018 -
v2.2.6.1 Changes
October 04, 2018๐ This is release 2.2.6 of muparser
๐ Changes:
- ๐ท build system based on cmake
- ๐ source code fixes for modern compilers
-
v2.2.5 Changes
August 16, 2015๐ Minor service release; Created to have an "official" release on github.
-
v1.31.cp Changes
Changes:
- Archive structure changed
- C# wrapper added
- Fixed issued that prevented compiling with VS2010 Beta2
Rev 1.30: 09.06.2008
Changes:
- Epsilon of the numerical differentiation algorithm changed to allow greater accuracy.
New features:
- Setting thousands separator and decimal separator is now possible
Bugfixes:
- The dll interface did not provide a callback for functions without any arguments.
Rev 1.29: Januar 2008
Unrelease Version available only via SVN.
Rev 1.28: 02. July, 2007
Library changes:
- Interface for the dynamic library changed and extended to create an interface using pure C functions only.
- mupInit() removed
Build system:
- MSVC7 Project files removed in favor of MSVC8
Bugfixes:
- The dynamic library did not build on other systems than linux due to a misplaced preprocessor definition. This is fixed now.
Rev 1.27:
Build system:
- Modified build\ directory layout introducing some subfolders for the various IDE supported
- Project files for BCB and MSVC7 added
- Switched to use bakefile 0.2.1 which now correctly creates the "make uninstall" target for autoconf's Makefile.in
- Now the library debug builds are named "muparserd" instead of "muparser" to allow multiple mixed release/debug builds to coexist; so e.g. on Windows when building with DEBUG=1, you'll get "muparserd.lib" instead of "muparser.lib"
New Features:
- Factory functions can now take a user defined pointer
- String functions can now be used with up to two additional double parameters
- Support for UNICODE character types added
- Infix operator priority can now be changed by the user
Bugfixes:
- An internal error was raised when evaluating an empty expressions
- The error message raised in case of name collisions between implicitely defined variables and postfix operators did contain misleading data.
๐ Rev 1.26: (unofficial release)
New Features:
- Unary operator precedence can now be changed by the user.
Rev 1.25: 5. February, 2006
Build system: (special thanks to Francesco Montorsi for implementing it!) * created a bakefile-based build system which adds support for the following win32 compilers: -> MS visual C++ (6 and .NET) -> BorlandC++ (5 or greater) -> Mingw32 (tested with gcc 3.2) -> Watcom (not tested) and for GCC on Unix (using a standard autoconf's configure script).
Compatibility improvements: * fixed some small warnings when using -Wall with GCC on Unix * added inclusion guards for win32-specific portions of code * added fixes that remove compiler warnings on Intel C++ and the Solaris C++ compiler.
Rev 1.24: 29. October, 2005
๐ Changes:
Compatibility improvements: * parser now works on 64 bit compilers * (bytecode base datatype can now be changed freely)
Rev 1.23: 19. October, 2005
๐ Changes:
Bugfixes: * Variable factory examples in Example1.cpp and Example3.cpp contained a subtle bug.
New features: * Added a MSVC6 project file and introduced muParserFixes.h in order to make it compile with MSVC6
Rev 1.22: October, 2005
๐ Release notes:
๐ All features of Version 1.22 are similar to Version 1.21. Version 1.22 fixes a compilation issue with ๐ gcc 4.0. In order to fix this issue I rewrote part of the library to remove some unnecessary templates. ๐ This should make the code cleaner. The Borland Project files were removed. If you want to use it ๐ with Borland either use the dll version or create your own project files. I can't support it since I don't have this compiler at hand.
๐ Changes:
Project Changes: * Borland project files removed (The code should still compile with BCB but I can't provide you with project files)
Internal Changes: * unnecessary template files have been removed: - new files: muParserError.cpp, muParserTokenReader.cpp, muParserCallback.cpp - removed Files: muIParserTypes.h
Rev 1.2 / 1.21: April, 2005
๐ Release Notes: First of all the interface has changed so this version is not backwards compatible. ๐ After receiving a couple of questions about it, this version features support for ๐ user defined binary operators. Consequently the built in operators can now be ๐ turned off, thus you can deactivate them and write complete customized parser subclasses that only contain the functionality you want. Another new feature is the introduction of callback functions taking string arguments, implicit generation of variables and the Assignment operator.
Functionality * New built in operator: xor; Logical xor. * New built in operator: Assignment operator; Defining variables in terms of other variables/constants * New feature: Strings as arguments for callback functions * New feature: User defined binary operators * New feature: ParserInt a class with a sample implementation for integer numbers. * New feature: Callbacks to value regognition functions.
* Removed: all predefined postfix operators have been removed. * New project file: Now comes with a ready to use windows DLL. * New project file: Makefile for cygwin now included. * New example: Example3 shows usage of the DLL.
Interface changes * New member function: DefineOprt For adding user defined binary operators. * New member function: EnableBuiltInOprt(bool) Enables/Disables built in binary operators. * New member function: AddValIdent(...) to add callbacks for custom value recognition functions. * Removed: SetVar(), SetConst(). * Renamed: Most interface functions have been renamed * Changed: The type for multiargument callbacks multfun_type has changed. It no longer takes a std::vector as input.
Internal changes * new class muParserTokenReader.h encapsulates the token identification and token assignment. * Internal handling of function callbacks unified as a result the performance of the bytecode evaluation increased.
Rev 1.10 : December 30, 2004
๐ Release Notes: This version does not contain major new feature compared to V1.07 but its internal structure has ๐ changed significantly. The String parsing routine is slower than the one of V1.07 but bytecode ๐ parsing is equally fast. On the other hand the error messages of V1.09 are more flexible and you can change its value datatype. It should work on 64-bit systems. For this reason I supply both ๐ versions for download. If you use V1.07 and are happy with it there is no need for updating your version.
* New example program: Archive now contains two demo programs: One for standard C++ and one for managed C++. * New member function: RemoveVar(...) can be used for removing a single variable from the internal storage. * New member function: GetVar() can be used for querying the variable names and pointers of all variables defined in the parser. * New member function: GetConst() can be used for querying all defined constants and their values. * New member function: GetFunDef() can be used for querying all defined functions and the number of arguments they expect. * Internal structure changed; hanging base datatype at compile time is now possible. * Bugfix: Postfix operator parsing could fail in certain cases; This has been fixed now. * Bugfix: Variable names must will now be tested if they conflict with constant or function names. * Internal change: Removed most dependencies from the C-string libraries. * Internal change: Bytecode is now stored in a separate class: ParserByteCode.h * Internal change: GetUsedVar() does no longer require that variables are defined at time of call. * Internal change: Error treatment changed. ParserException is no longer derived from std::runtime_error; Internal treatment of Error messages changed. * New functions in Parser interface: ValidNameChars(), ValidOprtChars() and ValidPrefixOprtChars() they are used for defining the charset allowed for variable-, operator- and function names.
Rev 1.09 : November 20, 2004
* New member function: RemoveVar(...) can be used for removing a single variable from the internal storage. * Internal structure changed; changing base datatype at compile time is now possible. * Bug fix: Postfix operator parsing could fail in certain cases; This has been fixed now. * Internal change: Removed most dependencies from the C-string libraries. * Internal change: Bytecode is now stored in a separate class: ParserByteCode.h. * Internal change: GetUsedVar() does no longer require that variables are defined at time of call. * Internal change: Error treatment changed. ParserException is no longer derived from std::runtime_error; Internal treatment of Error messages changed. * New functions in Parser interface; ValidNameChars(), ValidOprtChars() and ValidPrefixOprtChars() they are used for defining the charset allowed for variable-, operator- and function names.
Rev 1.08 : November, 2004
* unpublished; experimental template version with respect to data type and underlying string type (string <-> widestring). The idea was dropped...
Rev 1.07 : September 4 2004
* Improved portability; Changes to make life for MSVC 6 user easier, there are probably still some issues left. * Improved portability; Changes in order to allow compiling on BCB. * New function; value_type Diff(value_type *a_Var, value_type a_fPos) 4th order Differentiation with respect to a certain variable; added in muParser.h.
Rev 1.06 : August 20 2004
* Volatile functions added; All overloaded AddFun(...) functions can now take a third parameter indicating that the function can not be optimized. * Internal changes: muParserStack.h simplified; refactorings * Parser is now distributed under the MIT License; all comments changed accordingly.
Rev 1.05 : August 20 2004
* Variable/constant names will now be checked for invalid characters. * Querying the names of all variables used in an expression is now possible; new function: GetUsedVar(). * Disabling bytecode parsing is now possible; new function: EnableByteCode(bool bStat). * Predefined functions with variable number of arguments added: sum, avg, min, max. * Unary prefix operators added; new functions: AddPrefixOp(...), ClearPrefixOp(). * Postfix operator interface names changed; new function names: AddPostfixOp(...), ClearPostfixOp(). * Hardcoded sign operators removed in favor of prefix operators; bytecode format changed accordingly. * Internal changes: static array removed in Command code calculation routine; misc. changes.
Rev 1.04 : August 16 2004
* Support for functions with variable number of arguments added. * Internal structure changed; new: ParserBase.h, ParserBase.cpp; removed: ParserException.h; changed: Parser.h, Parser.cpp. * Bug in the bytecode calculation function fixed (affected the unary minus operator). * Optimizer can be deactivated; new function: EnableOptimizer(bool bStat).
Rev 1.03 : August 10 2004
* Support for user-defined unary postfix operators added; new functions: AddPostOp(), InitPostOp(), ClearPostOp(). * Minor changes to the bytecode parsing routine. * User defined functions can now have up to four parameters. * Performance optimized: simple formula optimization added; (precalculation of constant parts of the expression). * Bug fixes: Multi-arg function parameters, constant name lookup and unary minus did not work properly.
Rev 1.02 : July 30 2004
* Support for user defined constants added; new functions: InitConst(), AddConst(), SetConst(), ClearConst(). * Single variables can now be added using AddVar(); you have now the choice of adding them either one by one or all at the same time using SetVar(const varmap_type &a_vVar). * Internal handling of variables changed, is now similar to function handling. * Virtual destructor added; InitFun(), InitConst() are now virtual too thus making it possible to derive new parsers with a modified set of default functions and constants. * Support for user defined functions with 2 or 3 parameters added; bytecode format changed to hold function parameter count.
Rev 1.01 : July 23 2004
* Support for user defined functions has been added; new functions: AddFun(), ClearFun(), InitFunctions(). * Built in constants have been removed; the parser contained undocumented built in constants pi, e. There was the possibility of name conflicts with user defined variables. * Setting multiple variables with SetVar can now be done with a map of names and pointers as the only argument. For this reason, a new type Parser::varmap_type was added. The old version that took 3 arguments (array of names, array of pointers, and array length) is now marked as deprecated. * The names of logarithm functions have changed. The new names are: log2 for base 2, log10 or log for base 10, and ln for base e.
Rev 1.00 : July 21 2004
* Initial release