Skip to content

Latest commit

 

History

History
251 lines (195 loc) · 19.7 KB

CHANGELOG.md

File metadata and controls

251 lines (195 loc) · 19.7 KB

5.2.8

  • Fix in operator when there is an empty string by @gumbarros in #330

5.2.7

  • Use Microsoft.Extensions.Logging instead of hard-coded logging by @gumbarros in #328
  • ExpressionOptions.NoStringTypeCoercion should respect in operator by @gumbarros in #329

5.2.6

  • Allow objects to be used with the in operator by @gumbarros in #325
  • Fix ternary operator at NCalcAsync by @gumbarros in #326
  • Code Quality: Remove exponentiation duplicated logic by @gumbarros in #327

5.2.5

  • Added Like operator by @gumbarros in #324

5.2.4

  • Add ExpressionOptions.NoStringTypeCoercion by @alexwarren in #321
  • Add ExpressionOptions.AllowNullOrEmptyExpressions by @gumbarros in #322

5.2.3

  • Roslynator - PrivateAssets="all" by @Bykiev in #319
  • Fix compiler warnings in NCalc.Tests by @axunonb in #318

5.2.2

  • Fix number parsing by @Bykiev in #316

5.2.1

  • Fix inner parameter and functions at extraction visitors by @gumbarros in #306
  • Fix ExpressionOptions.IterateParameters by @Bykiev in #309

5.2.0

  • Added FunctionExtractionVisitor by @gumbarros in #290
  • Re-use LogicalExpressionList logic for Function parameters by @gumbarros in #291
  • Added EvaluationHelper and in operator should respect string comparer by @gumbarros in #292
  • Small refactoring of MathHelper.ConvertToHighestPrecision by @Bykiev in #293
  • Code cleanup by @Bykiev in #294
  • Added ExpressionBase by @gumbarros in #297
  • ifs improvement by @Bykiev in #298
  • Update Parlot package by @Bykiev in #299
  • Update Parlot (1.0.2) by @Bykiev in #300
  • Add ValueType.Guid by @gumbarros in #301
  • Breaking Change: Use ValueTask instead of Task at NCalc.Async by @gumbarros in #302

Full Changelog: https://github.com/ncalc/ncalc/compare/v5.1.0...v5.2.0

5.1.0

  • Fix typo in MathHelper by @Bykiev in #273
  • Small refactoring of Expression.IterateParameters by @Bykiev in #274
  • Added ShouldHandleBinaryExpression unit test by @gumbarros in #278
  • Add new ExpressionOptions.StringConcat to concat values as string by @Bykiev in #276
  • Added ExpressionOptions.AllowCharValues by @gumbarros in #279
  • Remove appveyor and use GH Actions with Coverlet by @gumbarros in #284
  • Small performance improvement for BinaryExpression by @gumbarros in #283
  • Move benchmarks to a separate workflow by @gumbarros in #285
  • Improve string_concatenation.md docs by @gumbarros in #281
  • Move event handlers to ExpressionContext by @gumbarros in #286
  • Add support for Parlot parser compilation via AppContext switch by @Bykiev in #288
  • Update Parlot parser by @Bykiev in #289
  • Added LogicalExpressionList and in operator by @gumbarros in #287

5.0.0

  • Overflow protection by @Bykiev in #256
  • Consolidate NETStandard.Library package version by @Bykiev in #257
  • Add OverflowProtection to LambdaExpressionVisitor by @gumbarros in #259
  • Improve CI with DOTNET_NOLOGO and DOTNET_CLI_TELEMETRY_OPTOUT by @gumbarros in #260
  • Fix treating an expression with whitespace in fractional part as valid by @Bykiev in #262
  • Added IDictionary<string,ExpressionFunction> and IDictionary<string,ExpressionParameter> support by @gumbarros in #254
  • Use decimal with exponentiation when DecimalAsDefault is used by @Bykiev in #269
  • Add NOTRACE for the entire solution at Release by @gumbarros in #268
  • Fix AsyncFunctionArgs regression by @gumbarros in #271
  • Added Id property to Identifier by @gumbarros in #266
  • Visitor pattern is now stateless with generics by @gumbarros in #272

Breaking Changes

  • NCalcAsync now uses AsyncExpressionContext
  • ExpressionContext is now a record instead of a class, allowing support for shallow cloning
  • IEvaluationVisitor is removed, please use IEvaluationService for an easier to implement interface
  • ILogicalExpressionVisitor is now ILogicalExpressionVisitor<T>, where <T> is the return of the visitor
  • IAsyncLogicalExpressionVisitor is removed, please use ILogicalExpressionVisitor<Task<object?>>
  • AdvancedExpression and AsyncAdvancedExpression are removed, please use the respective constructors at Expression and AsyncExpression to prevent unnecessary casting.

4.3.3

  • Add MemberNotNullWhen attribute to HasErrors by @gmcchessney in #250
  • Fix tests by @Bykiev in #251
  • Fix parsing fractional zero by @Bykiev in #253
  • Refactor MathHelper by @Bykiev in #255

4.3.2

  • Fix handling new lines in expression by @Bykiev in #234
  • Add support UInt64 for binary operators by @Bykiev in #237
  • Fix parsing expression by @Bykiev in #241
  • Re-added HasErrors method to NCalc.Async by @gumbarros in #245
  • Require braces to be closed by a brace of the same type by @gumbarros in #246
  • Make unclosed brace cause a parsing exception by @gmcchessney in #243

4.3.1

  • Fix handling new lines in expression by @Bykiev in #234

4.3.0

  • Added async support by @gumbarros in #207
  • Remove unused Parlot rule by @Bykiev in #221
  • Inline TypeHelper.IsReal by @gumbarros in #225
  • Allow whitespace at end of expression by @gumbarros and @Bykiev in #224
  • Re-added Benchmark project by @gumbarros in #220
  • Run Benchmark at CI by @gumbarros in #228
  • Fixed not operator behavior by @gumbarros and @Bykiev in #227

Breaking Changes

  • Expression is now AsyncExpression at NCalcAsync, related classes are also prefixed with Async to prevent naming collisions
  • Removed obsolete HasOption extension method from ExpressionOptions, please use HasFlag
  • Removed obsolete CaseInsensitiveComparer enum member, please use CaseInsensitiveStringComparer

4.2.1

4.2

Breaking Changes

4.1

4.0

Breaking Changes

  • .NET Framework 4.6.1 no longer supported, please update to .NET Framework 4.6.2 or higher
  • Renamed EvaluateOptions enum to ExpressionOptions
  • Renamed EvaluateOptionsExtensions class to ExpressionOptionsExtensions
  • Renamed Expression.OriginalExpression property to Expression.ExpressionString
  • Renamed Expression.ParsedExpression property to Expression.LogicalExpression
  • Renamed Numbers static class to MathHelper
  • Removed Expression.Compile static method, please use LogicalExpressionFactory.Create
  • Removed unused BinaryExpressionType.Unknown enum value
  • Expression.Error property now stores an Exception object instead of a string
  • Expression.GetParametersNames method now returns a List<String> instead of a string[]

3.13.1

3.13

3.12

3.11

3.10

3.9

3.8

3.7

3.6

3.5

3.4

3.2

3.1

3.0

Several syntax changes to the grammar:

While these changes in themselves wouldn't introduce compatibility issues with previously valid statements, code that relies on statements with these constructs being invalid would be affected. The grammar also had to be regenerated with a new version of ANTLR with some fixes to it since it was clear that the generated source code had been modified manually. Manual review indicates that the regenerated grammar is identical, but because of both these reasons this is released as a new major version.

  • Bugfix: invalid tokens were skipped silently without any errors. Expressions like "4711" would ignore the " (since that is not the string character in the NCalc syntax) and parse it as the number 4711, but now an EvaluationException is thrown as for other syntax issues. This may affect existing expressions, but since they were always incorrect and now give an exception rather than silently getting a new value it does not merit a new major release.
  • Major bugfix: long integers are now treated as integers. Previous versions converted them to single-precision floats, which caused data loss on large numbers. Since this affects the results of existing expressions, it requires a new major release.
  • New builtin function Ln()

2.0

Initial public release of the .NET Core version.