feat: cut over to WASM backend

This commit is contained in:
udo
2026-06-13 08:42:31 +00:00
parent 577aae076e
commit afaa4dd7c0
16 changed files with 603 additions and 25 deletions
+19
View File
@@ -1,4 +1,5 @@
#include "lib/uce_lib.cpp"
#include "wasm/backend.cpp"
#include <csetjmp>
#include <deque>
#include <errno.h>
@@ -940,6 +941,23 @@ int handle_complete(FastCGIRequest& request) {
compiler_invoke_cli(&request, request.params["SCRIPT_FILENAME"]);
else if(request.params["UCE_SERVE_HTTP"] == "1")
compiler_invoke_serve_http(&request, request.params["SCRIPT_FILENAME"], request.params["UCE_SERVE_HTTP_FUNCTION"]);
else if(wasm_backend_should_handle(request, compiler_normalize_unit_path(&request, request.params["SCRIPT_FILENAME"])))
{
// W4/W5: Wasmtime uses host signals internally to implement guest
// traps. The native SIGSEGV/SIGILL request recovery handler must not
// intercept those, or clean guest traps become native fatal signals.
request_fault_active = 0;
restore_request_fault_handlers();
String wasm_error = wasm_backend_serve(request, compiler_normalize_unit_path(&request, request.params["SCRIPT_FILENAME"]));
install_request_fault_handlers();
request_fault_active = 1;
if(wasm_error != "")
{
failure_title = "wasm runtime error during request";
failure_details = "";
failure_trace = wasm_error;
}
}
else
compiler_invoke(&request, request.params["SCRIPT_FILENAME"]);
}
@@ -1023,6 +1041,7 @@ void on_terminate(int sig)
if(getpid() != parent_pid)
exit(1);
printf("Terminating... PID %i:%i\n", getpid(), parent_pid);
wasm_backend_shutdown();
server.shutdown();
exit(1);
}