Skip to content

Releases: dadhi/FastExpressionCompiler

v5.0.0 Major feature release

22 Nov 21:19
Compare
Choose a tag to compare

v5.0.0 Major feature release

  • feat: #271 Add conversion from the System Expression to the Light Expression to allow hoisted system expression embedding in the larger light expression

  • feat: #432 Add explicit target for .NET 9

  • feat: #434 ToCSharpString should generate stable names for the unnamed variables, parameters and labels

  • fix: #262 Optimize OpCode.Ceq plus Branch into a single compare-and-branch

  • fix: #424 TryCatch expression as argument in Call expression produces invalid program

  • fix: #426 Directly passing a method result to another method by ref, fails with InvalidProgramException

  • fix: #427 CSharp output with more consistency, robustness and more understandable code

  • fix: #428 Expression.Switch without a default case incorrectly calls first case for unmatched values

  • fix: #430 TryCatch - Bad label content in ILGenerator

v4.2.2 Bug-fix release

13 Oct 14:15
Compare
Choose a tag to compare

v4.2.2 Bug-fix release

  • fix: #418 Wrong output when comparing NaN value
  • fix: #419 System.InvalidProgramException : The JIT compiler encountered invalid IL code or an internal limitation
  • fix: #420 Nullable comparison differs from Expression.Compile
  • fix: #421 Date difference is giving wrong negative value
  • fix: #422 [bug] InvalidProgramException when having TryCatch + Default in Catch
  • fix: #423 Converting a uint to a float gives the wrong result

v4.2.1 Bug-fix release

02 Jul 19:29
Compare
Choose a tag to compare

v4.2.1 Feature and bug-fix release

  • fix: ImTools should disable the nullable context
  • fix: nullable property
  • fix: Incorrect il for struct indexer
  • fix: Fix or support return ref value
  • fix: Incorrect il when passing by ref value

Contributors

Full Changelog

v4.2.0...v4.2.1

v4.2.0 Feature and bug-fix release

29 Apr 20:03
Compare
Choose a tag to compare

v4.2.0 Feature and bug-fix release

  • feat: #133 Optimize Switch Expression

  • feat: #393 Support ToCSharpString of the block in the ternary expression

  • feat: #396 Optimize conditional expressions with the DefaultExpression left or right operand the same way as ConstantExpression

  • fix: #390 System.AccessViolationException when mapping using Mapster

  • fix: #391 ToCSharpString outputs ? for Nullable which does not produce the compile-able code

  • fix: #392 ToExpressionString wrongly declares Label instead of LabelTarget array

  • fix: #394 Calling a user defined == operator runs into a CLR invalid program exception

  • fix: #397 Fix and optimize the Switch support

  • fix: #399 Coalesce nullable with 0 is not working

  • fix: #400 Fix the direct assignment of Try to Member expression because indirect assignment through tmp var works

  • fix: #401 Invoke inlining is not working with collections in AutoMapper tests

  • fix: #404 An expression with a single parameter concatenated to a string causes 'Exception has been thrown by the target of an invocation' during delegate invocation

  • fix: #405 NullReferenceException with V4.X when using long?[]

  • fix: #406 NullReferenceException with V4.X

  • fix: #407 NullReferenceException when setting the Enum field

  • fix: #408 Dictionary mapping failing when the InvocationExpression inlining is involved

v4.1.0 Small feature and bug-fix release

20 Jan 19:52
Compare
Choose a tag to compare

v4.1.0 Small feature and bug-fix release

  • added: #379 Add direct net8.0 target as soon as Appveyor CI will support it
  • fixed: #380 Comparisons with nullable types
  • fixed: #381 NullReferenceException with V4.X when trying to map
  • fixed: #386 Value can not be null(parametr 'meth')

v4.0.1 Bug-fix release

23 Nov 11:44
Compare
Choose a tag to compare

v4.0.1 Bug-fix release

  • fixed: #374 CompileFast doesn't work with HasFlag

v4.0.0 Major release

12 Nov 14:13
Compare
Choose a tag to compare

v4.0.0 Major release

  • fixed: #352 xxxAssign doesn't work with MemberAccess

  • fixed: #353 NullReferenceException when calling CompileFast() results

  • fixed: #357 Invalid program exception

  • fixed: #366 FastExpressionCompiler[v3.3.4] gives incorrect results in some linq operations

  • fixed: #368 Fix duplicate nested lambda compilation

  • fixed: #374 CompileFast doesn't work with HasFlag

  • added: #264 Optimize the array index emit to emit specific Ldelem_ code instead of generic Ldelem

  • added: #273 Implement IArgumentProvider for the BlockExpression to minimize the consumed memory

  • added: #346 Is it possible to implement ref local variables?

  • added: #359 Improve the performance of variable lookup

  • added: #367 Better diagnostics and debugging with error codes from Collect and Compile rounds

  • added: #369 Decrease memory occupied by the LightExpression Block by storing Expression in SmallList (partly on stack)

  • added: #370 Optimize any nested lambda compilation (LINQ) by compiling right after collect one-by-one

  • added: #372 Support LightExpression.Expression.TryConvertDelegateIntrinsic for converting one type of delegate to another

  • added: #373 Support custom C# printing for the LightExpression.Expression

v3.3.4 Bug-fix release

17 Jan 13:57
Compare
Choose a tag to compare

v3.3.4 Bug-fix release

  • fixed: #345 EmitCall is for the varargs method and should not be used for normal convention

  • fixed: #347 InvalidProgramException on compiling an expression that returns a record which implements IList

  • fixed: #349 Error when loading struct parameters closed by the nested lambda e.g. predicate in Linq

  • fixed: #355 Error with converting to/from signed/unsigned integers (Thanks to @TYoungSL for the PR!)

  • fixed: the C# output for if-else test condition, and inc/dec operations; and for label at the end of the lambda

  • fixed: ref assignment C# output

  • perf: Replace ILGenerator.Emit(OpCodes.Call, ..) with EmitMethodCall performance

v3.3.3 Bug-fix release

24 Jul 13:06
Compare
Choose a tag to compare

v3.3.3 Bug-fix release

  • fixed: #336 Method TryCompileBoundToFirstClosureParam is returning passed Type array to pool may cause undefined behavior
  • fixed: #337 Switch LightExpression.Expression.ToString from System.Expression.ToString pseudo-code to ToCSharpString
  • fixed: #338 InvocationExpression is not properly converted to System Expression via ToExpression for non-lambda expression
  • fixed: #341 Equality comparison between nullable and null inside Any produces incorrect compiled expression

v3.3.2 Bug-fix release

27 May 15:54
Compare
Choose a tag to compare

v3.3.2 Bug-fix release

  • fixed: #335 FastExpressionCompiler.LightExpressions - MemberInit has recursive calls