FastExpressionCompiler.LightExpression 3.0.0-preview-05

FastExpressionCompiler for LightExpression is 10-40x times faster than Expression.Compile()

This is a prerelease version of FastExpressionCompiler.LightExpression.
There is a newer prerelease version of this package available.
See the version list below for details.
Install-Package FastExpressionCompiler.LightExpression -Version 3.0.0-preview-05
dotnet add package FastExpressionCompiler.LightExpression --version 3.0.0-preview-05
<PackageReference Include="FastExpressionCompiler.LightExpression" Version="3.0.0-preview-05" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FastExpressionCompiler.LightExpression --version 3.0.0-preview-05
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: FastExpressionCompiler.LightExpression, 3.0.0-preview-05"
For F# scripts that support #r syntax, copy this into the source code to reference the package.

Release Notes

## v3.0.0 - Major feature release

The version contains a lot of fixes and improvements and hopefully as-little-as-possible breaking changes.

### **FastExpressionCompiler** and **FastExpressionCompiler.LightExpression**

- Performance and memory consumption is improved, especially for the expressions with the closure and for expressions with the nested lambdas.
- Filled the gaps in the expressions support.
- Many fixes in the IL emit.
- Adds `ToCSharpString()` to output the compile-able C# code described by the expression (tries hard).
- Adds `ToExpressionString()` to output the valid expression construction syntax, so given an expression object you'll get e.g. `Lambda(New(...))`.
- Adds optional `enum CompilerFlags { Default, NoInvocationLambdaInlining, EnableDelegateDebugInfo}` parameter for the compilation
- `EnableDelegateDebugInfo` adds the diagnostic info into the compiled delegate including its source Expression and C# code. Can be used as following:
   var f = e.CompileFast(true, CompilerFlags.EnableDelegateDebugInfo);
   var di = f.Target as IDelegateDebugInfo;

### **FastExpressionCompiler.LightExpression**

- Now includes the `ExpressionVisitor`.
- Improves the compatibility (the drop-in replacement) between `FastExpressionCompiler.LightExpression.Expression` and `System.Linq.Expression`.
- Decreasing the memory consumed by the created expressions, plus implementing the `IArgumentProvider` and `IParameterProvider` for some of the expressions.

### The full list of fixes

[Milestone v3.0.0](

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
3.0.0-preview-07 140 12/25/2020
3.0.0-preview-06 77 12/1/2020
3.0.0-preview-05 554 11/27/2020
3.0.0-preview-04 124 11/3/2020
3.0.0-preview-03 94 11/2/2020
3.0.0-preview-02 359 10/23/2020
3.0.0-preview-01 104 10/23/2020
2.0.0 3,927 1/25/2019
2.0.0-preview-03 358 11/9/2018
2.0.0-preview-02 339 10/25/2018
2.0.0-preview-01 359 10/24/2018