]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Experimenting with a custom wasm loader, but don't enable it without an explicit... wasm-64bit
authorstephan <stephan@noemail.net>
Mon, 22 Sep 2025 02:40:06 +0000 (02:40 +0000)
committerstephan <stephan@noemail.net>
Mon, 22 Sep 2025 02:40:06 +0000 (02:40 +0000)
FossilOrigin-Name: e5f0256feab95c30a8e3e1e69963fb3e25ed2da296aff5bc6646fe96a76c0b81

ext/wasm/GNUmakefile
ext/wasm/api/extern-post-js.c-pp.js
ext/wasm/api/post-js-footer.js
ext/wasm/api/post-js-header.js
ext/wasm/api/pre-js.c-pp.js
ext/wasm/common/whwasmutil.js
ext/wasm/mkwasmbuilds.c
manifest
manifest.uuid

index bed16c8f9d7756d6c75034b4ba4b7a59a77028f6..e6d62e2f5f0aa96e74dc23feb136c01e0deb9597 100644 (file)
@@ -381,6 +381,15 @@ $(bin.stripccomments): $(bin.stripccomments).c $(MAKEFILE)
        $(CC) -o $@ $<
 DISTCLEAN_FILES += $(bin.stripccomments)
 
+#
+# If $(WASM_CUSTOM_INSTANTIATE) is 1 then mkwasmbuilds will add
+# -Dcustom-Module.instantiateWasm to some of the builds. This is
+# experimental.
+#
+# Changing this may require a clean rebuild.
+#
+WASM_CUSTOM_INSTANTIATE = 0
+
 ########################################################################
 # SQLITE.CALL.C-PP.FILTER: a $(call)able to transform $(1) to $(2) via:
 #
@@ -928,7 +937,6 @@ $(dir.dout)/sqlite3-bundler-friendly.mjs: $(sqlite3.mjs)
 $(dir.dout)/sqlite3-node.mjs: $(sqlite3.mjs)
 #CLEAN_FILES += $(sqlite3.wasm)
 
-ifneq (1,$(MAKING_CLEAN))
 # This block MUST come between the above definitions of
 # sqlite3-...js/mjs and the $(eval) calls below this block which use
 # SQLITE.CALL.C-PP.FILTER.
@@ -944,16 +952,17 @@ ifneq (1,$(MAKING_CLEAN))
 # Maintenance note: the various $(c-pp.D.XYZ) vars are defined via
 # $(bin.mkwb).
 bin.mkwb = ./mkwasmbuilds
+ifneq (1,$(MAKING_CLEAN))
 $(bin.mkwb): $(bin.mkwb).c $(MAKEFILE)
-       $(CC) -o $@ $<
-DISTCLEAN_FILES += $(bin.mkwb)
+       $(CC) -o $@ $< -DWASM_CUSTOM_INSTANTIATE=$(WASM_CUSTOM_INSTANTIATE)
+
 .wasmbuilds.make: $(bin.mkwb)
        @rm -f $@
        $(bin.mkwb) > $@
        @chmod -w $@
 -include .wasmbuilds.make
 endif
-DISTCLEAN_FILES += .wasmbuilds.make
+CLEAN_FILES += .wasmbuilds.make $(bin.mkwb)
 
 ########################################################################
 # We need separate copies of certain supplementary JS files for the
index fdddc062e28328e3360fc6ad92c6f19a45a35c93..e898115a44b6c217e9895791a84b8e10f1f05233 100644 (file)
@@ -38,7 +38,7 @@ const toExportForESM =
      into the global scope and delete it when sqlite3InitModule()
      is called.
   */
-  const initModuleState = globalThis.sqlite3InitModuleState = Object.assign(Object.create(null),{
+  const sIMS = globalThis.sqlite3InitModuleState = Object.assign(Object.create(null),{
     moduleScript: globalThis?.document?.currentScript,
     isWorker: ('undefined' !== typeof WorkerGlobalScope),
     location: globalThis.location,
@@ -46,27 +46,27 @@ const toExportForESM =
       ? new URL(globalThis.location.href).searchParams
       : new URLSearchParams()
   });
-  initModuleState.debugModule =
-    initModuleState.urlParams.has('sqlite3.debugModule')
+  sIMS.debugModule =
+    sIMS.urlParams.has('sqlite3.debugModule')
     ? (...args)=>console.warn('sqlite3.debugModule:',...args)
     : ()=>{};
 
-  if(initModuleState.urlParams.has('sqlite3.dir')){
-    initModuleState.sqlite3Dir = initModuleState.urlParams.get('sqlite3.dir') +'/';
-  }else if(initModuleState.moduleScript){
-    const li = initModuleState.moduleScript.src.split('/');
+  if(sIMS.urlParams.has('sqlite3.dir')){
+    sIMS.sqlite3Dir = sIMS.urlParams.get('sqlite3.dir') +'/';
+  }else if(sIMS.moduleScript){
+    const li = sIMS.moduleScript.src.split('/');
     li.pop();
-    initModuleState.sqlite3Dir = li.join('/') + '/';
+    sIMS.sqlite3Dir = li.join('/') + '/';
   }
 
   globalThis.sqlite3InitModule = function ff(...args){
     //console.warn("Using replaced sqlite3InitModule()",globalThis.location);
     return originalInit(...args).then((EmscriptenModule)=>{
       //console.warn("originalInit() then() arg =",EmscriptenModule);
-      //console.warn("initModuleState =",initModuleState);
+      //console.warn("sqlite3InitModule(): sIMS =",sIMS);
       EmscriptenModule.runSQLite3PostLoadInit(EmscriptenModule);
       const s = EmscriptenModule.sqlite3;
-      s.scriptInfo = initModuleState;
+      s.scriptInfo = sIMS;
       //console.warn("sqlite3.scriptInfo =",s.scriptInfo);
       if(ff.__isUnderTest){
         s.__isUnderTest = true;
@@ -95,13 +95,12 @@ const toExportForESM =
   };
   globalThis.sqlite3InitModule.ready = originalInit.ready;
 
-  if(globalThis.sqlite3InitModuleState.moduleScript){
-    const sim = globalThis.sqlite3InitModuleState;
-    let src = sim.moduleScript.src.split('/');
+  if(sIMS.moduleScript){
+    let src = sIMS.moduleScript.src.split('/');
     src.pop();
-    sim.scriptDir = src.join('/') + '/';
+    sIMS.scriptDir = src.join('/') + '/';
   }
-  initModuleState.debugModule('sqlite3InitModuleState =',initModuleState);
+  sIMS.debugModule('extern-post-js.c-pp.js sqlite3InitModuleState =',sIMS);
   if(0){
     console.warn("Replaced sqlite3InitModule()");
     console.warn("globalThis.location.href =",globalThis.location.href);
index 7af12cbe349d65fe28fcb86179c4ee50aa6a6254..9275ada605ebf63fdaf436c4f861fc0497a681b3 100644 (file)
@@ -1,6 +1,3 @@
-/* The current function scope was opened via post-js-header.js, which
-   gets prepended to this at build-time. This file closes that
-   scope. */
 //console.warn("This is the end of the Module.runSQLite3PostLoadInit handler.");
-}/*Module.runSQLite3PostLoadInit()*/;
+}/*Module.runSQLite3PostLoadInit(EmscriptenModule)*/;
 //console.warn("This is the end of the setup of the (pending) Module.runSQLite3PostLoadInit");
index 77e3cd227c8877c2c5f7fe11129998270c68c668..16805d1d0832ba811cdd23c78909b2fe8b5ec5ac 100644 (file)
@@ -17,6 +17,7 @@ Module.runSQLite3PostLoadInit = function(EmscriptenModule/*the Emscripten-style
   //console.warn("This is the start of Module.runSQLite3PostLoadInit()");
   /* This function will contain at least the following:
 
+     - extern-pre-js.js         => out-of-Emscripten prologue
      - post-js-header.js        => this file
      - sqlite3-api-prologue.js  => Bootstrapping bits to attach the rest to
      - common/whwasmutil.js     => Replacements for much of Emscripten's glue
@@ -29,5 +30,6 @@ Module.runSQLite3PostLoadInit = function(EmscriptenModule/*the Emscripten-style
      - sqlite3-vfs-opfs.c-pp.js => OPFS VFS
      - sqlite3-vfs-opfs-sahpool.c-pp.js => OPFS SAHPool VFS
      - sqlite3-api-cleanup.js   => final API cleanup
-     - post-js-footer.js        => closes this function
+     - post-js-footer.js        => this file's epilogue
+     - extern-post-js.js        => out-of-Emscripten epilogue
   */
index 7ee952365ab91b69fa69009a51c1de5d8ea87ae8..1e0a172fbb799f153b275ff2643ae9ae5fa83829 100644 (file)
@@ -4,14 +4,14 @@
    This file is intended to be prepended to the sqlite3.js build using
    Emscripten's --pre-js=THIS_FILE flag (or equivalent).
 */
-
 // See notes in extern-post-js.js
-const sqlite3InitModuleState = globalThis.sqlite3InitModuleState
+const sIMS =
+      globalThis.sqlite3InitModuleState/*from extern-post-js.c-pp.js*/
       || Object.assign(Object.create(null),{
         debugModule: ()=>{}
       });
 delete globalThis.sqlite3InitModuleState;
-sqlite3InitModuleState.debugModule('globalThis.location =',globalThis.location);
+sIMS.debugModule('pre-js.js sqlite3InitModuleState =',sIMS);
 
 //#ifnot target=es6-bundler-friendly
 /**
@@ -23,14 +23,16 @@ sqlite3InitModuleState.debugModule('globalThis.location =',globalThis.location);
    1) If URL param named the same as `path` is set, it is returned.
 
    2) If sqlite3InitModuleState.sqlite3Dir is set, then (thatName + path)
-      is returned (it's assumed to end with '/').
+   is returned (it's assumed to end with '/').
 
    3) If this code is running in the main UI thread AND it was loaded
-      from a SCRIPT tag, the directory part of that URL is used
-      as the prefix. (This form of resolution unfortunately does not
-      function for scripts loaded via importScripts().)
+   from a SCRIPT tag, the directory part of that URL is used
+   as the prefix. (This form of resolution unfortunately does not
+   function for scripts loaded via importScripts().)
 
    4) If none of the above apply, (prefix+path) is returned.
+
+   None of the above apply in ES6 builds.
 */
 Module['locateFile'] = function(path, prefix) {
 //#if target=es6-module
@@ -56,10 +58,10 @@ Module['locateFile'] = function(path, prefix) {
   );
   return theFile;
 //#endif target=es6-module
-}.bind(sqlite3InitModuleState);
+}.bind(sIMS);
 //#endif ifnot target=es6-bundler-friendly
 
-//#if custom-Module.instantiateModule
+//#if custom-Module.instantiateWasm
 /**
    Bug warning: a custom Module.instantiateWasm() does not work
    in WASMFS builds:
@@ -70,52 +72,59 @@ Module['locateFile'] = function(path, prefix) {
 */
 const xNameOfInstantiateWasm =
 //#if wasmfs
-  false
+    false
 //#else
-  true /* This works, but it does not have the testing coverage in the
-          wild which Emscripten's default impl does, so we'll save
-          this option until we really need a custom
-          Module.instantiateWasm() */
+    true /* This works, but it does not have the testing coverage in
+            the wild which Emscripten's default impl does, so we'll
+            save this option until we really need a custom
+            Module.instantiateWasm(). */
 //#endif
-      ? 'instantiateWasm'
-      : 'emscripten-bug-17951';
+  ? 'instantiateWasm'
+  : 'emscripten-bug-17951';
 Module[xNameOfInstantiateWasm] = function callee(imports,onSuccess){
-  imports.env.foo = function(){};
+  const sims = this;
   const uri = Module.locateFile(
-    callee.uri, (
+    sims.wasmFilename, (
       ('undefined'===typeof scriptDirectory/*var defined by Emscripten glue*/)
         ? "" : scriptDirectory)
   );
-  sqlite3InitModuleState.debugModule(
-    "instantiateWasm() uri =", uri
-  );
-  //console.warn("Custom instantiateModule",uri);
+  sims.debugModule("instantiateWasm() uri =", uri, "sIMS =",this);
   const wfetch = ()=>fetch(uri, {credentials: 'same-origin'});
   const loadWasm = WebAssembly.instantiateStreaming
-        ? async ()=>{
-          return WebAssembly.instantiateStreaming(wfetch(), imports)
-            .then((arg)=>onSuccess(arg.instance, arg.module));
-        }
-        : async ()=>{ // Safari < v15
-          return wfetch()
-            .then(response => response.arrayBuffer())
-            .then(bytes => WebAssembly.instantiate(bytes, imports))
-            .then((arg)=>onSuccess(arg.instance, arg.module));
-        };
-  loadWasm();
-  return {};
-};
+        ? async ()=>
+        WebAssembly
+        .instantiateStreaming(wfetch(), imports)
+        .then((arg)=>{
+          arg.imports = imports;
+          sims.intantiateWasm = arg;
+          onSuccess(arg.instance, arg.module);
+        })
+        : async ()=>// Safari < v15
+        wfetch()
+        .then(response => response.arrayBuffer())
+        .then(bytes => WebAssembly.instantiate(bytes, imports))
+        .then((arg)=>{
+          arg.imports = imports;
+          sims.intantiateWasm = arg;
+          onSuccess(arg.instance, arg.module);
+        })
+  ;
+  return loadWasm();
+  //return {};
+}.bind(sIMS);
 /*
-  It is literally impossible to reliably get the name of _this_ script
-  at runtime, so impossible to derive X.wasm from script name
+  It is literally impossible to reliably get the name of _this_
+  script at runtime, so impossible to derive X.wasm from script name
   X.js. Thus we need, at build-time, to redefine
-  Module[xNameOfInstantiateWasm].uri by appending it to a build-specific
-  copy of this file with the name of the wasm file. This is apparently
-  why Emscripten hard-codes the name of the wasm file into their glue
-  scripts.
+  sIMS.uri by appending it to a build-specific
+  copy of this file with the name of the wasm file. This is
+  apparently why Emscripten hard-codes the name of the wasm file
+  into their glue scripts.
 */
-Module[xNameOfInstantiateWasm].uri = 'sqlite3.wasm';
-//#endif custom-Module.instantiateModule
-/* END FILE: api/pre-js.js, noting that the build process may add a
+sIMS.wasmFilename = 'sqlite3.wasm';
+//#endif custom-Module.instantiateWasm
+/* Automation may append ".x = y" to this file, for some value of x and y.
+
+   END FILE: api/pre-js.js, noting that the build process may add a
    line after this one to change the above .uri to a build-specific
    one. */
index c3f8c4b00b9b217bbcd7d4eb9990aadae49d34f1..1f732eb1c1e3e65c6fecf6d45de2294e994dfcd3 100644 (file)
@@ -2505,15 +2505,13 @@ globalThis.WhWasmUtilInstaller.yawl = function(config){
                   yetAnotherWasmLoader()'s return value */;
   };
   const loadWasm = WebAssembly.instantiateStreaming
-        ? function loadWasmStreaming(){
-          return WebAssembly.instantiateStreaming(wfetch(), config.imports||{})
-            .then(finalThen);
-        }
-        : function loadWasmOldSchool(){ // Safari < v15
-          return wfetch()
-            .then(response => response.arrayBuffer())
-            .then(bytes => WebAssembly.instantiate(bytes, config.imports||{}))
-            .then(finalThen);
-        };
+        ? ()=>WebAssembly
+        .instantiateStreaming(wfetch(), config.imports||{})
+        .then(finalThen)
+        : ()=> wfetch()// Safari < v15
+        .then(response => response.arrayBuffer())
+        .then(bytes => WebAssembly.instantiate(bytes, config.imports||{}))
+        .then(finalThen)
+  ;
   return loadWasm;
 }.bind(globalThis.WhWasmUtilInstaller)/*yawl()*/;
index 25a6a0b03c20b2b409f1ded7bb6a45e0ec9d7423..7fea9906c0824bde1ad6d9524f5be5d5c0e44822 100644 (file)
@@ -86,11 +86,18 @@ struct BuildDef {
   const char *zJsOut;     /* Name of generated sqlite3.js/.mjs */
   /* TODO: dynamically determine zJsOut based on zName, zMode, and
      flags. */
+  const char *zWasmOut;   /* zJsOut w/ .wasm extension if it needs to be renamed */
   const char *zCmppD;     /* Extra -D... flags for c-pp */
   const char *zEmcc;      /* Extra flags for emcc */
 };
 typedef struct BuildDef BuildDef;
 
+#if !defined(WASM_CUSTOM_INSTANTIATE)
+#  define WASM_CUSTOM_INSTANTIATE 0
+#elif (WASM_CUSTOM_INSTANTIATE+0)==0
+#  undef WASM_CUSTOM_INSTANTIATE
+#  define WASM_CUSTOM_INSTANTIATE 0
+#endif
 /*
 ** The set of WASM builds for the library (as opposed to the apps
 ** (fiddle, speedtest1)). This array must end with an empty sentinel
@@ -101,11 +108,11 @@ typedef struct BuildDef BuildDef;
 */
 const BuildDef aBuildDefs[] = {
   {/* Core build */
-    "sqlite3", "vanilla", 0, "$(sqlite3.js)", 0, 0},
+    "sqlite3", "vanilla", 0, "$(sqlite3.js)", 0, 0, 0},
 
   {/* Core ESM */
-   "sqlite3", "esm", LIBMODE_ESM, "$(sqlite3.mjs)",
-   "-Dtarget=es6-module", 0},
+    "sqlite3", "esm", LIBMODE_ESM, "$(sqlite3.mjs)", 0,
+    "-Dtarget=es6-module", 0},
 
   {/* Core bundler-friendly build. Untested and "not really"
    ** supported, but required by the downstream npm subproject.
@@ -114,22 +121,21 @@ const BuildDef aBuildDefs[] = {
    ** subproject and they spot failures pretty quickly ;). */
     "sqlite3", "bundler-friendly",
     LIBMODE_BUNDLER_FRIENDLY | LIBMODE_ESM,
-    "$(dir.dout)/sqlite3-bundler-friendly.mjs",
+    "$(dir.dout)/sqlite3-bundler-friendly.mjs", 0,
     "$(c-pp.D.sqlite3-esm) -Dtarget=es6-bundler-friendly", 0},
 
   {/* node.js mode. Untested and unsupported. */
     "sqlite3", "node", LIBMODE_UNSUPPORTED | LIBMODE_NODEJS,
-    "$(dir.dout)/sqlite3-node.mjs",
+    "$(dir.dout)/sqlite3-node.mjs", "sqlite3-node.wasm",
     "$(c-pp.D.sqlite3-bundler-friendly) -Dtarget=node", 0},
 
   {/* Wasmfs build. Fully unsupported and largely untested. */
     "sqlite3-wasmfs", "esm" ,
     LIBMODE_UNSUPPORTED | LIBMODE_WASMFS | LIBMODE_ESM,
-    "$(dir.wasmfs)/sqlite3-wasmfs.mjs",
+    "$(dir.wasmfs)/sqlite3-wasmfs.mjs", "sqlite3-wasmfs.wasm",
     "$(c-pp.D.sqlite3-bundler-friendly) -Dwasmfs",
     "-sEXPORT_ES6 -sUSE_ES6_IMPORT_META"},
-
-  {/*End-of-list sentinel*/0,0,0,0,0,0}
+  {/*End-of-list sentinel*/0,0,0,0,0,0,0}
 };
 
 /*
@@ -250,7 +256,8 @@ static void mk_prologue(void){
 static void mk_pre_post(const char *zName  /* build name */,
                         const char *zMode  /* build mode */,
                         const char *zCmppD /* optional -D flags for c-pp for the
-                                           ** --pre/--post-js files. */){
+                                           ** --pre/--post-js files. */,
+                        const char *zWasmOut){
 /* Very common printf() args combo. */
 #define zNM zName, zMode
 
@@ -262,7 +269,8 @@ static void mk_pre_post(const char *zName  /* build name */,
   pf("pre-js.js.%s-%s = $(dir.tmp)/pre-js.%s-%s.js\n",
      zNM, zNM);
   pf("$(pre-js.js.%s-%s): $(MAKEFILE_LIST) $(sqlite3-license-version.js)\n", zNM);
-#if 1
+#if !WASM_CUSTOM_INSTANTIATE
+  (void)zWasmOut;
   pf("$(eval $(call SQLITE.CALL.C-PP.FILTER,$(pre-js.js.in),$(pre-js.js.%s-%s),"
      "$(c-pp.D.%s-%s)))\n", zNM, zNM);
 #else
@@ -271,17 +279,14 @@ static void mk_pre_post(const char *zName  /* build name */,
   pf("pre-js.js.%s-%s.intermediary = $(dir.tmp)/pre-js.%s-%s.intermediary.js\n",
      zNM, zNM);
   pf("$(eval $(call SQLITE.CALL.C-PP.FILTER,$(pre-js.js.in),$(pre-js.js.%s-%s.intermediary),"
-     "$(c-pp.D.%s-%s) -Dcustom-Module.instantiateModule))\n", zNM, zNM);
+     "$(c-pp.D.%s-%s) -Dcustom-Module.instantiateWasm))\n", zNM, zNM);
   pf("$(pre-js.js.%s-%s): $(pre-js.js.%s-%s.intermediary)\n", zNM, zNM);
   pf("\tcp $(pre-js.js.%s-%s.intermediary) $@\n", zNM);
 
   /* Amend $(pre-js.js.zName-zMode) for all targets except the plain
   ** "sqlite3" and the "sqlite3-wasmfs" builds... */
-  if( 0!=strcmp("sqlite3-wasmfs", zName)
-      && 0!=strcmp("sqlite3", zName) ){
-#error "This part ^^^ is needs adapting for use with the LIBMODE_... flags"
-    pf("\t@echo 'Module[xNameOfInstantiateWasm].uri = "
-       "\"%s.wasm\";' >> $@\n", zName);
+  if( zWasmOut ){
+    pf("\t@echo 'sIMS.wasmFilename = \"%s\";' >> $@\n", zWasmOut);
   }
 #endif
 
@@ -320,7 +325,7 @@ static void mk_pre_post(const char *zName  /* build name */,
 static void mk_fiddle(void){
   int i = 0;
 
-  mk_pre_post("fiddle-module","vanilla", 0);
+  mk_pre_post("fiddle-module","vanilla", 0, "fiddle-module.wasm");
   for( ; i < 2; ++i ){
     /* 0==normal, 1==debug */
     const char *zTail = i ? ".debug" : "";
@@ -389,7 +394,7 @@ static void mk_lib_mode(const BuildDef * pB){
   pf("# zJsOut=%s\n# zCmppD=%s\n", pB->zJsOut,
      pB->zCmppD ? pB->zCmppD : "<none>");
   pf("$(info Setting up build [%s-%s]: %s)\n", zNM, pB->zJsOut);
-  mk_pre_post(zNM, pB->zCmppD);
+  mk_pre_post(zNM, pB->zCmppD, pB->zWasmOut);
   pf("\nemcc.flags.%s.%s ?=\n", zNM);
   if( pB->zEmcc && pB->zEmcc[0] ){
     pf("emcc.flags.%s.%s += %s\n", zNM, pB->zEmcc);
@@ -397,6 +402,7 @@ static void mk_lib_mode(const BuildDef * pB){
 
   /* target pB->zJsOut */
   pf("%s: $(MAKEFILE_LIST) $(sqlite3-wasm.cfiles) $(EXPORTED_FUNCTIONS.api) "
+     "$(bin.mkwb) "
      "$(pre-post-%s-%s.deps) "
      "$(sqlite3-api.ext.jses)"
      /* ^^^ maintenance reminder: we set these as deps so that they
@@ -476,8 +482,9 @@ int main(void){
     mk_lib_mode( pB );
   }
   mk_fiddle();
-  mk_pre_post("speedtest1","vanilla", 0);
+  mk_pre_post("speedtest1","vanilla", 0, "speedtest1.wasm");
   mk_pre_post("speedtest1-wasmfs","esm",
-              "$(c-pp.D.sqlite3-bundler-friendly) -Dwasmfs");
+              "$(c-pp.D.sqlite3-bundler-friendly) -Dwasmfs",
+              "speetest1-wasmfs.wasm");
   return rc;
 }
index 16ce5ade0a2e4eb0912c86109df18cd4a936c03e..c27d53ed3a57633ae99bb2ef9dc7960c19721394 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Minor\sinternal\soptimizations\sin\sthe\swasm\sglue.
-D 2025-09-21T23:15:12.210
+C Experimenting\swith\sa\scustom\swasm\sloader,\sbut\sdon't\senable\sit\swithout\san\sexplicit\sbuild\sflag.\sThe\sgoal\shere\sis\sto\smake\sthe\sWebAssembly.Module\sobject\savailable\sinternally\s(the\sdefault\sloader\shides\sit\sfrom\sus).
+D 2025-09-22T02:40:06.033
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -578,7 +578,7 @@ F ext/session/sqlite3session.c 9cd47bfefb23c114b7a5d9ee5822d941398902f30516bf0dd
 F ext/session/sqlite3session.h 7404723606074fcb2afdc6b72c206072cdb2b7d8ba097ca1559174a80bc26f7a
 F ext/session/test_session.c 8766b5973a6323934cb51248f621c3dc87ad2a98f023c3cc280d79e7d78d36fb
 F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c
-F ext/wasm/GNUmakefile 0d44bd3fb861f062b27ec86c43e62230b43d7f0125c1dc6e48b71082385e97cd
+F ext/wasm/GNUmakefile 772aabff47c96450209af61aa7b6a9894313d6523afb857b58b611f10fa9b766
 F ext/wasm/README-dist.txt f01081a850ce38a56706af6b481e3a7878e24e42b314cfcd4b129f0f8427066a
 F ext/wasm/README.md 66ace67ae98a45e4116f2ca5425b716887bcee4d64febee804ff6398e1ae9ec7
 F ext/wasm/SQLTester/GNUmakefile e0794f676d55819951bbfae45cc5e8d7818dc460492dc317ce7f0d2eca15caff
@@ -591,11 +591,11 @@ F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-extras cb4fa8842c875b6ee99381523792975
 F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-see fb29e62082a658f0d81102488414d422c393c4b20cc2f685b216bc566237957b
 F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de2470b0e9e7fbf7a5b41261c367cf4f1b7287
 F ext/wasm/api/README.md 7f029c5fe83b3493931d2fb915e2febd3536267d538a56408a6fef284ea38d29
-F ext/wasm/api/extern-post-js.c-pp.js c4801f87c18c9c738295eef199efbb9fe4e42ff25ae6927953dd3a27bac74bce
+F ext/wasm/api/extern-post-js.c-pp.js 6d058dd44164f3d3055299979db92f8a5821ac79cfd89635ef44363cfd82c64d
 F ext/wasm/api/extern-pre-js.js cc61c09c7a24a07dbecb4c352453c3985170cec12b4e7e7e7a4d11d43c5c8f41
-F ext/wasm/api/post-js-footer.js 365405929f41ca0e6d389ed8a8da3f3c93e11d3ef43a90ae151e37fa9f75bf41
-F ext/wasm/api/post-js-header.js 53740d824e5d9027eb1e6fd59e216abbd2136740ce260ea5f0699ff2acb0a701
-F ext/wasm/api/pre-js.c-pp.js 58f823de197e2c10d76179aa05410a593b7ae03e1ece983bb42ffd818e8857e1
+F ext/wasm/api/post-js-footer.js e617e5f81a907362de152576323155f02d24642e625fc05fb801b86b6a269444
+F ext/wasm/api/post-js-header.js 935c4ff097dd2579217918ccbaaffa445e83f82f91cdd7ad68c8363080fa6913
+F ext/wasm/api/pre-js.c-pp.js d52f4a8e900927ac6f5f3608f322b2ad42cad181ec405b2ac8619d2cbf143bd2
 F ext/wasm/api/sqlite3-api-cleanup.js d4f1a5e665afaf84015f6ef0ddd766f638cb28501c4569b1d4b527c4b5a2b9a4
 F ext/wasm/api/sqlite3-api-glue.c-pp.js 12f5b36775fab1e7bf5385689fded2b2a9f77360562515e9849acb5e66602e2d
 F ext/wasm/api/sqlite3-api-oo1.c-pp.js db4c8ebb03bac60db32ce03f8c615b00f4e4ad53e7d5de5e63d2780cba052caa
@@ -618,7 +618,7 @@ F ext/wasm/c-pp.c cca55c5b55ebd8d29916adbedb0e40baa12caa9a2e8429f812683c308f9b0e
 F ext/wasm/common/SqliteTestUtil.js 7adaeffef757d8708418dc9190f72df22367b531831775804b31598b44f6aa51
 F ext/wasm/common/emscripten.css 11bd104b6c0d597c67d40cc8ecc0a60dae2b965151e3b6a37fa5708bac3acd15
 F ext/wasm/common/testing.css e97549bab24126c24e0daabfe2de9bb478fb0a69fdb2ddd0a73a992c091aad6f
-F ext/wasm/common/whwasmutil.js fb2a10747234ad720fbe713d7fecbad54abed30ac41355872e7c431f62c23e72
+F ext/wasm/common/whwasmutil.js a4d0736b7e3abfbbe5342743d11c4663a9a1411def3a25cf6a3f5982baa73f95
 F ext/wasm/config.make.in c424ae1cc3c89274520ad312509d36c4daa34a3fce5d0c688e5f8f4365e1049a
 F ext/wasm/demo-123-worker.html a0b58d9caef098a626a1a1db567076fca4245e8d60ba94557ede8684350a81ed
 F ext/wasm/demo-123.html 8c70a412ce386bd3796534257935eb1e3ea5c581e5d5aea0490b8232e570a508
@@ -639,7 +639,7 @@ F ext/wasm/index-dist.html 56132399702b15d70c474c3f1952541e25cb0922942868f70daf1
 F ext/wasm/index.html bcaa00eca521b372a6a62c7e7b17a870b0fcdf3e418a5921df1fd61e5344080d
 F ext/wasm/jaccwabyt/jaccwabyt.js bbac67bc7a79dca34afe6215fd16b27768d84e22273507206f888c117e2ede7d
 F ext/wasm/jaccwabyt/jaccwabyt.md 167fc0b624c9bc2c477846e336de9403842d81b1a24fc4d3b24317cb9eba734f
-F ext/wasm/mkwasmbuilds.c b722a3a44edc1498575d935939dfcbe23172f98b0f40d068998e0950707e749d
+F ext/wasm/mkwasmbuilds.c 17e1ed7825fbadce15ab2955c003ab61d0efb73167af9028ebd863cfc4a2fd00
 F ext/wasm/module-symbols.html dc476b403369b26a1a23773e13b80f41b9a49f0825e81435fe3600a7cfbbe337
 F ext/wasm/scratchpad-wasmfs.html a3d7388f3c4b263676b58b526846e9d02dfcb4014ff29d3a5040935286af5b96
 F ext/wasm/scratchpad-wasmfs.mjs 66034b9256b218de59248aad796760a1584c1dd842231505895eff00dbd57c63
@@ -2175,8 +2175,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 6a070f450ac9ee3d4d6a3e05ef8fa2071a684181ea160805e236c3bba226510a
-R 4abaa719c3f0b3c283ef0653194b4d07
+P fb053a27d94f9caedfddf28680e13836343745376e84c8008641df6bb517cd8b
+R 100960854ade0f263f89ddfe27508ecf
 U stephan
-Z 0755752744575b5a7a7fc02264f08ee2
+Z ad7ae87bed8b1ac707c9f8f92f28fda3
 # Remove this line to create a well-formed Fossil manifest.
index c76a2746e4ca82aa829b7ebe40ef768826c9a298..b90c6502d0156e9d678f9b6092c86d1258fabe91 100644 (file)
@@ -1 +1 @@
-fb053a27d94f9caedfddf28680e13836343745376e84c8008641df6bb517cd8b
+e5f0256feab95c30a8e3e1e69963fb3e25ed2da296aff5bc6646fe96a76c0b81