Skip to content

Latest commit

 

History

History
259 lines (202 loc) · 20.2 KB

CHANGELOG.md

File metadata and controls

259 lines (202 loc) · 20.2 KB

5.2.10

  • Issue 335 parsing of large decimal literals by @kierantop in ncalc#340
  • Improve number parser readability by @gumbarros in ncalc#341
  • Fix exponentiation at NCalc.Async by @gumbarros in ncalc#343

5.2.9

  • Fix nested functions at FunctionExtractionVisitor by @gumbarros in ncalc#336
  • Fix logical operator priority by @gumbarros in ncalc#338

5.2.8

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

5.2.7

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

5.2.6

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

5.2.5

  • Added Like operator by @gumbarros in ncalc#324

5.2.4

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

5.2.3

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

5.2.2

5.2.1

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

5.2.0

  • Added FunctionExtractionVisitor by @gumbarros in ncalc#290
  • Re-use LogicalExpressionList logic for Function parameters by @gumbarros in ncalc#291
  • Added EvaluationHelper and in operator should respect string comparer by @gumbarros in ncalc#292
  • Small refactoring of MathHelper.ConvertToHighestPrecision by @Bykiev in ncalc#293
  • Code cleanup by @Bykiev in ncalc#294
  • Added ExpressionBase by @gumbarros in ncalc#297
  • ifs improvement by @Bykiev in ncalc#298
  • Update Parlot package by @Bykiev in ncalc#299
  • Update Parlot (1.0.2) by @Bykiev in ncalc#300
  • Add ValueType.Guid by @gumbarros in ncalc#301
  • Breaking Change: Use ValueTask instead of Task at NCalc.Async by @gumbarros in ncalc#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 ncalc#273
  • Small refactoring of Expression.IterateParameters by @Bykiev in ncalc#274
  • Added ShouldHandleBinaryExpression unit test by @gumbarros in ncalc#278
  • Add new ExpressionOptions.StringConcat to concat values as string by @Bykiev in ncalc#276
  • Added ExpressionOptions.AllowCharValues by @gumbarros in ncalc#279
  • Remove appveyor and use GH Actions with Coverlet by @gumbarros in ncalc#284
  • Small performance improvement for BinaryExpression by @gumbarros in ncalc#283
  • Move benchmarks to a separate workflow by @gumbarros in ncalc#285
  • Improve string_concatenation.md docs by @gumbarros in ncalc#281
  • Move event handlers to ExpressionContext by @gumbarros in ncalc#286
  • Add support for Parlot parser compilation via AppContext switch by @Bykiev in ncalc#288
  • Update Parlot parser by @Bykiev in ncalc#289
  • Added LogicalExpressionList and in operator by @gumbarros in ncalc#287

5.0.0

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

4.3.2

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

4.3.1

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

4.3.0

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