Skip to content

xFunc 4.2.0

Compare
Choose a tag to compare
@sys27 sys27 released this 05 Jul 21:57
be4f438

Change Log:

  • #620 - Create Converter benchmarks / performance improvements (#621, #622).
  • #623 - Use shared instance of constants in ParameterCollection (#624).
  • #625 - Remove russian localization (#626).
  • #628 - Create CallExpression / High-Order Functions (#635).
  • #641 - Reduce memory allocation and increase ImmutableArray<T> speed (#640).
  • #304 - Parse assignment operators / 'if' function as expression instead of statement (#642).
  • #608 - Variable names not case sensitive (#613).

Breaking Changes:

  • xFunc.Maths targets .NET 6 instead of .NET Standard 2.1
  • ComplexNumber doesn't perform the strict comparison of floating point numbers (Real and Imaginary parts).
  • AngleUnit is class instead of enum.
  • Contains/ContainsKey (ParameterCollection) doesn't check the constants collection anymore (see #623).
  • Removed russian localization (see #625).
  • UserFunction was removed, partially replaced by CallExpression and Lambda (see #628).
  • ParameterCollection is renamed to ExpressionParamaters, and the old version of ExpressionParameters is removed.
  • FunctionCollection was removed, now ExpressionParameters can hold functions as well (see #628).
  • -> and => operators can be used only for lambda expressions, the implication and the equality operators can be used only by keywords: impl and eq.
  • Define/Undefine can accept only Variable instead of IExpression.
  • the grammar to define user function was changed from f(x) := sin(x) to f := (x) => sin(x).
  • Define -> Assign, Undefine -> Unassign.
  • The := operator and assign/unassign functions are parsed as expressions instead of statements (they can be used inside other expressions, for example: 1 + (x := 1)/(f := (x) => x)(2)
  • Assign/Unassign returns the assigned/unassigned value instead of string.
  • The ability to parse the implicit mull operator (eg. 2x) is removed. Now only 2 * x is supported.