Releases: dadhi/FastExpressionCompiler
v5.0.0 Major feature release
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
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
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
- @sebastienros made contribution in #412
Full Changelog
v4.2.0 Feature and bug-fix release
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
v4.0.1 Bug-fix release
v4.0.1 Bug-fix release
- fixed: #374 CompileFast doesn't work with HasFlag
v4.0.0 Major release
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
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
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
v3.3.2 Bug-fix release
- fixed: #335 FastExpressionCompiler.LightExpressions - MemberInit has recursive calls