FastExpressionCompiler.LightExpression 3.0.0-preview-06

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-06
dotnet add package FastExpressionCompiler.LightExpression --version 3.0.0-preview-06
<PackageReference Include="FastExpressionCompiler.LightExpression" Version="3.0.0-preview-06" />
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-06
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

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:
```cs
   var f = e.CompileFast(true, CompilerFlags.EnableDelegateDebugInfo);
   var di = f.Target as IDelegateDebugInfo;
   Assert.IsNotNull(di.Expression);
   Assert.IsNotNull(di.ExpressionString);
   Assert.IsNotNull(di.CSharpString);
```

### **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](https://github.com/dadhi/FastExpressionCompiler/milestone/19)

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 115 12/25/2020
3.0.0-preview-06 60 12/1/2020
3.0.0-preview-05 302 11/27/2020
3.0.0-preview-04 94 11/3/2020
3.0.0-preview-03 70 11/2/2020
3.0.0-preview-02 336 10/23/2020
3.0.0-preview-01 80 10/23/2020
2.0.0 3,729 1/25/2019
2.0.0-preview-03 276 11/9/2018
2.0.0-preview-02 270 10/25/2018
2.0.0-preview-01 289 10/24/2018