Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
8ae2d11
Initial plan
Copilot May 6, 2026
176af12
feat: add structural equality for flat expressions
Copilot May 6, 2026
8fc6aff
docs: clarify flat inline constant decoding
Copilot May 6, 2026
f933b56
refactor: use loop-based flat expression equality
Copilot May 6, 2026
50deedb
refactor: simplify flat equality loop control
Copilot May 6, 2026
a1f952f
refactor: rename flat constant comparison helper
Copilot May 6, 2026
023bb11
refactor: simplify expr node equality precheck
Copilot May 6, 2026
14f0c05
docs: add xml comments for expr tree operators
Copilot May 7, 2026
b1874d8
refactor: inline small flat constants
Copilot May 27, 2026
005b4bf
refactor: assert normalized flat constants
Copilot May 28, 2026
0c059a4
refactor: simplify inline constant comparison
Copilot May 28, 2026
baad46f
refactor: simplify flat constant structural comparison
Copilot May 29, 2026
c196273
Apply remaining changes
Copilot Jun 17, 2026
09a0ac1
inlining
dadhi Jun 20, 2026
9624f3a
@wip starting simplification
dadhi Jun 22, 2026
6a1ce07
@wip @notcompiled using ushort indexes and simplifying To and From
dadhi Aug 4, 2026
14f1f50
FlatExpression tests passing; ISize1Plus
dadhi Aug 12, 2026
b8fc8d6
properly adding net10.0 - no alloc ComplexExpr but 3x slower creation…
dadhi Aug 14, 2026
8e6d04d
lowering; AddDefaultAndGetRef(out var index)
dadhi Aug 19, 2026
37e76fb
drop net 6 and 9; bm no-alloc but 2.6x degrade
dadhi Sep 9, 2026
cbc5dd3
a bit of inlining; remove method which use unstable ref
dadhi Oct 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 2 additions & 9 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,12 @@ jobs:
- name: Build
run: dotnet build -c:Release

- name: Tests - net10.0 (Latest)
- name: Tests - net10.0
run: dotnet run --no-build -c:Release -f:net10.0 --project test/FastExpressionCompiler.TestsRunner/FastExpressionCompiler.TestsRunner.csproj

- name: Tests - net9.0 (Latest)
run: dotnet run --no-build -c:Release -f:net9.0 --project test/FastExpressionCompiler.TestsRunner/FastExpressionCompiler.TestsRunner.csproj

- name: Tests - net8.0 (Latest LTS)
- name: Tests - net8.0
run: dotnet run --no-build -c:Release -f:net8.0 --project test/FastExpressionCompiler.TestsRunner/FastExpressionCompiler.TestsRunner.csproj

# - if: matrix.os == 'windows-latest'
# name: Tests - net6.0 (Previous LTS)
# run: dotnet run --no-build -c:Release -f:net6.0 --project test/FastExpressionCompiler.TestsRunner/FastExpressionCompiler.TestsRunner.csproj

- if: matrix.os == 'windows-latest'
name: Tests - net472 (Windows only)
run: dotnet run --no-build -c:Release --project test/FastExpressionCompiler.TestsRunner.Net472
4 changes: 2 additions & 2 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"request": "launch",
"preLaunchTask": "build_testsrunner",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/test/FastExpressionCompiler.TestsRunner/bin/Debug/net9.0/FastExpressionCompiler.TestsRunner.dll",
"program": "${workspaceFolder}/test/FastExpressionCompiler.TestsRunner/bin/Debug/net10.0/FastExpressionCompiler.TestsRunner.dll",
"args": [],
"cwd": "${workspaceFolder}/test/FastExpressionCompiler.TestsRunner",
// For more information about the 'console' field, see https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md#console-terminal-window
Expand All @@ -26,7 +26,7 @@
"request": "launch",
"preLaunchTask": "build_benchmarks",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/test/FastExpressionCompiler.Benchmarks/bin/Debug/net9.0/FastExpressionCompiler.Benchmarks.exe",
"program": "${workspaceFolder}/test/FastExpressionCompiler.Benchmarks/bin/Debug/net10.0/FastExpressionCompiler.Benchmarks.exe",
"args": [],
"cwd": "${workspaceFolder}/test/FastExpressionCompiler.Benchmarks",
// For more information about the 'console' field, see https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md#console-terminal-window
Expand Down
2 changes: 2 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@
"Castclass",
"Conv",
"cref",
"Diagnoser",
"Dmark",
"dont",
"Funcs",
"gotos",
"Hasher",
"idxs",
"iface",
"ifaces",
"ifthen",
Expand Down
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All"/>
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="10.0.401" PrivateAssets="All"/>
</ItemGroup>

</Project>
5 changes: 1 addition & 4 deletions b.bat
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,7 @@ echo:
echo:## Starting TESTS...
echo:

dotnet run --no-build -p:DevMode=true -f:net9.0 -c:Release --project test/FastExpressionCompiler.TestsRunner/FastExpressionCompiler.TestsRunner.csproj
if %ERRORLEVEL% neq 0 goto :error

dotnet run --no-build -p:DevMode=true -c:Release --project test/FastExpressionCompiler.TestsRunner.Net472
dotnet run --no-build -p:DevMode=true -f:net10.0 -c:Release --project test/FastExpressionCompiler.TestsRunner/FastExpressionCompiler.TestsRunner.csproj
if %ERRORLEVEL% neq 0 goto :error

echo:
Expand Down
2 changes: 1 addition & 1 deletion bm.bat
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
@echo off
dotnet run -c:Release -f:net9.0 --project test/FastExpressionCompiler.Benchmarks/FastExpressionCompiler.Benchmarks.csproj
dotnet run -c:Release -f:net10.0 --project test/FastExpressionCompiler.Benchmarks/FastExpressionCompiler.Benchmarks.csproj
2 changes: 1 addition & 1 deletion bt.bat
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
echo:
echo:## Running TESTS on the Latest Supported .NET...
echo:
dotnet run -p:DevMode=true -f:net9.0 -c:Release --project test/FastExpressionCompiler.TestsRunner/FastExpressionCompiler.TestsRunner.csproj
dotnet run -p:DevMode=true -f:net10.0 -c:Release --project test/FastExpressionCompiler.TestsRunner/FastExpressionCompiler.TestsRunner.csproj
if %ERRORLEVEL% neq 0 goto :error

echo:
Expand Down
2 changes: 1 addition & 1 deletion btdebug.bat → btd.bat
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
echo:
echo:## Running TESTS on the Latest Supported .NET...
echo:
dotnet run -p:DevMode=true -f:net9.0 -c:Debug --project test/FastExpressionCompiler.TestsRunner/FastExpressionCompiler.TestsRunner.csproj
dotnet run -p:DevMode=true -f:net10.0 -c:Debug --project test/FastExpressionCompiler.TestsRunner/FastExpressionCompiler.TestsRunner.csproj
if %ERRORLEVEL% neq 0 goto :error

echo:
Expand Down
14 changes: 2 additions & 12 deletions build.bat
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,15 @@ echo:## Finished: RESTORE and BUILD
echo:
echo:## Starting: TESTS...
echo:
echo:running on .NET 10.0 (Latest)
echo:running on .NET 10.0
dotnet run --no-build -f:net10.0 -c:Release --project test/FastExpressionCompiler.TestsRunner
if %ERRORLEVEL% neq 0 goto :error

echo:
echo:running on .NET 9.0 (Latest)
dotnet run --no-build -f:net9.0 -c:Release --project test/FastExpressionCompiler.TestsRunner
if %ERRORLEVEL% neq 0 goto :error

echo:
echo:running on .NET 8.0 (LTS)
echo:running on .NET 8.0
dotnet run --no-build -f:net8.0 -c:Release --project test/FastExpressionCompiler.TestsRunner
if %ERRORLEVEL% neq 0 goto :error

echo:
echo:running on .NET 6.0 (Previous LTS)
dotnet run --no-build -f:net6.0 -c:Release --project test/FastExpressionCompiler.TestsRunner
if %ERRORLEVEL% neq 0 goto :error

echo:
echo:running on .NET 4.7.2
dotnet run --no-build -c:Release --project test/FastExpressionCompiler.TestsRunner.Net472
Expand Down
9 changes: 2 additions & 7 deletions build_debug.bat
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,15 @@ echo:## Finished: RESTORE and BUILD
echo:
echo:## Starting: TESTS...
echo:
echo:running on .NET 9.0 (Latest)
dotnet run --no-build -f:net9.0 -c:Debug --project test/FastExpressionCompiler.TestsRunner
echo:running on .NET 10.0
dotnet run --no-build -f:net10.0 -c:Debug --project test/FastExpressionCompiler.TestsRunner
if %ERRORLEVEL% neq 0 goto :error

echo:
echo:running on .NET 8.0 (LTS)
dotnet run --no-build -f:net8.0 -c:Debug --project test/FastExpressionCompiler.TestsRunner
if %ERRORLEVEL% neq 0 goto :error

echo:
echo:running on .NET 6.0 (Previous LTS)
dotnet run --no-build -f:net6.0 -c:Debug --project test/FastExpressionCompiler.TestsRunner
if %ERRORLEVEL% neq 0 goto :error

echo:
echo:running on .NET 4.7.2
dotnet run --no-build -c:Debug --project test/FastExpressionCompiler.TestsRunner.Net472
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks Condition="'$(DevMode)' != 'true'">net472;netstandard2.0;netstandard2.1;net6.0;net8.0;net9.0;net10.0</TargetFrameworks>
<TargetFrameworks Condition="'$(DevMode)' == 'true'">net472;net9.0;net10.0</TargetFrameworks>
<TargetFrameworks Condition="'$(DevMode)' != 'true'">net472;netstandard2.0;netstandard2.1;net8.0;net10.0</TargetFrameworks>
<TargetFrameworks Condition="'$(DevMode)' == 'true'">net472;net10.0</TargetFrameworks>

<VersionPrefix>5.4.1</VersionPrefix>
<VersionSuffix></VersionSuffix>
Expand Down
Loading
Loading