Skip to content

Commit 8526de8

Browse files
committed
Update NativeAOT-LLVM infrastructure to current ABI and add CI smoketest
The experimental NativeAOT-LLVM build path (EXPERIMENTAL_WASM_AOT=1) was missing several host function imports added in ABI versions 10.0-10.4, and the compiler package reference was hardcoded to Windows x64 only. Changes to SpacetimeDB.Runtime.targets: - Add missing spacetime_10.0 imports: datastore_update_bsatn, identity - Add all spacetime_10.1 imports: bytes_source_remaining_length - Add all spacetime_10.2 imports: get_jwt - Add all spacetime_10.3 imports: procedure_start_mut_tx, procedure_commit_mut_tx, procedure_abort_mut_tx, procedure_http_request - Add all spacetime_10.4 imports: datastore_index_scan_point_bsatn, datastore_delete_by_index_scan_point_bsatn - Replace hardcoded runtime.win-x64 package reference with runtime.$(NETCoreSdkPortableRuntimeIdentifier) so the AOT compiler package resolves correctly on both Windows x64 and Linux x64 - Use explicit version strings instead of $(SpacetimeNamespace) variable Changes to ci.yml: - Add AOT build smoketest in csharp-testsuite job to verify the NativeAOT-LLVM build path works on Linux x64 See #4514 for full context on the C# AOT situation.
1 parent b322348 commit 8526de8

2 files changed

Lines changed: 44 additions & 19 deletions

File tree

.github/workflows/ci.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,12 @@ jobs:
995995
exit 1
996996
}
997997
998+
- name: Smoketest C# AOT build (NativeAOT-LLVM)
999+
run: |
1000+
cd modules/sdk-test-cs
1001+
EXPERIMENTAL_WASM_AOT=1 dotnet publish -c Release
1002+
test -f bin/Release/net8.0/wasi-wasm/publish/StdbModule.wasm
1003+
9981004
internal-tests:
9991005
name: Internal Tests
10001006
needs: [lints]

crates/bindings-csharp/Runtime/build/SpacetimeDB.Runtime.targets

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,46 @@
44
<NativeLibrary Include="$(MSBuildThisFileDirectory)..\bindings.c" />
55
<UnmanagedEntryPointsAssembly Include="SpacetimeDB.Runtime" />
66

7-
<WasmImport Include="$(SpacetimeNamespace)!table_id_from_name" />
8-
<WasmImport Include="$(SpacetimeNamespace)!index_id_from_name" />
9-
<WasmImport Include="$(SpacetimeNamespace)!datastore_table_row_count" />
10-
<WasmImport Include="$(SpacetimeNamespace)!datastore_table_scan_bsatn" />
11-
<WasmImport Include="$(SpacetimeNamespace)!datastore_index_scan_range_bsatn" />
12-
<WasmImport Include="$(SpacetimeNamespace)!datastore_btree_scan_bsatn" />
13-
<WasmImport Include="$(SpacetimeNamespace)!row_iter_bsatn_advance" />
14-
<WasmImport Include="$(SpacetimeNamespace)!row_iter_bsatn_close" />
15-
<WasmImport Include="$(SpacetimeNamespace)!datastore_insert_bsatn" />
16-
<WasmImport Include="$(SpacetimeNamespace)!datastore_delete_by_index_scan_range_bsatn" />
17-
<WasmImport Include="$(SpacetimeNamespace)!datastore_delete_by_btree_scan_bsatn" />
18-
<WasmImport Include="$(SpacetimeNamespace)!datastore_delete_all_by_eq_bsatn" />
19-
<WasmImport Include="$(SpacetimeNamespace)!bytes_source_read" />
20-
<WasmImport Include="$(SpacetimeNamespace)!bytes_sink_write" />
21-
<WasmImport Include="$(SpacetimeNamespace)!console_log" />
22-
<WasmImport Include="$(SpacetimeNamespace)!console_timer_start" />
23-
<WasmImport Include="$(SpacetimeNamespace)!console_timer_end" />
24-
<WasmImport Include="$(SpacetimeNamespace)!volatile_nonatomic_schedule_immediate" />
7+
<!-- spacetime_10.0 imports -->
8+
<WasmImport Include="spacetime_10.0!table_id_from_name" />
9+
<WasmImport Include="spacetime_10.0!index_id_from_name" />
10+
<WasmImport Include="spacetime_10.0!datastore_table_row_count" />
11+
<WasmImport Include="spacetime_10.0!datastore_table_scan_bsatn" />
12+
<WasmImport Include="spacetime_10.0!datastore_index_scan_range_bsatn" />
13+
<WasmImport Include="spacetime_10.0!datastore_btree_scan_bsatn" />
14+
<WasmImport Include="spacetime_10.0!row_iter_bsatn_advance" />
15+
<WasmImport Include="spacetime_10.0!row_iter_bsatn_close" />
16+
<WasmImport Include="spacetime_10.0!datastore_insert_bsatn" />
17+
<WasmImport Include="spacetime_10.0!datastore_update_bsatn" />
18+
<WasmImport Include="spacetime_10.0!datastore_delete_by_index_scan_range_bsatn" />
19+
<WasmImport Include="spacetime_10.0!datastore_delete_by_btree_scan_bsatn" />
20+
<WasmImport Include="spacetime_10.0!datastore_delete_all_by_eq_bsatn" />
21+
<WasmImport Include="spacetime_10.0!bytes_source_read" />
22+
<WasmImport Include="spacetime_10.0!bytes_sink_write" />
23+
<WasmImport Include="spacetime_10.0!console_log" />
24+
<WasmImport Include="spacetime_10.0!console_timer_start" />
25+
<WasmImport Include="spacetime_10.0!console_timer_end" />
26+
<WasmImport Include="spacetime_10.0!volatile_nonatomic_schedule_immediate" />
27+
<WasmImport Include="spacetime_10.0!identity" />
28+
29+
<!-- spacetime_10.1 imports -->
30+
<WasmImport Include="spacetime_10.1!bytes_source_remaining_length" />
31+
32+
<!-- spacetime_10.2 imports -->
33+
<WasmImport Include="spacetime_10.2!get_jwt" />
34+
35+
<!-- spacetime_10.3 imports -->
36+
<WasmImport Include="spacetime_10.3!procedure_start_mut_tx" />
37+
<WasmImport Include="spacetime_10.3!procedure_commit_mut_tx" />
38+
<WasmImport Include="spacetime_10.3!procedure_abort_mut_tx" />
39+
<WasmImport Include="spacetime_10.3!procedure_http_request" />
40+
41+
<!-- spacetime_10.4 imports -->
42+
<WasmImport Include="spacetime_10.4!datastore_index_scan_point_bsatn" />
43+
<WasmImport Include="spacetime_10.4!datastore_delete_by_index_scan_point_bsatn" />
2544

2645
<PackageReference Include="Microsoft.DotNet.ILCompiler.LLVM" Version="8.0.0-*" />
27-
<PackageReference Include="runtime.win-x64.Microsoft.DotNet.ILCompiler.LLVM" Version="8.0.0-*" />
46+
<PackageReference Include="runtime.$(NETCoreSdkPortableRuntimeIdentifier).Microsoft.DotNet.ILCompiler.LLVM" Version="8.0.0-*" />
2847
<PackageReference Include="Microsoft.NET.ILLink.Tasks" Version="8.0.0-*" Condition="'$(ILLinkTargetsPath)' == ''" />
2948

3049
<CustomLinkerArg Include="-DEXPERIMENTAL_WASM_AOT" />

0 commit comments

Comments
 (0)