]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Cleanups and docs in the internal parts of the JS lib bootstrapping. More tinkering...
authorstephan <stephan@noemail.net>
Mon, 22 Sep 2025 17:29:52 +0000 (17:29 +0000)
committerstephan <stephan@noemail.net>
Mon, 22 Sep 2025 17:29:52 +0000 (17:29 +0000)
FossilOrigin-Name: 35651d9ab5529da915500fc50ca3833a004d0b7a19d98e8fbf39234d94697aec

ext/wasm/api/extern-post-js.c-pp.js
ext/wasm/api/post-js-header.js
ext/wasm/api/pre-js.c-pp.js
ext/wasm/api/sqlite3-api-cleanup.js
ext/wasm/api/sqlite3-api-prologue.js
ext/wasm/api/sqlite3-vfs-opfs-sahpool.c-pp.js
ext/wasm/api/sqlite3-vfs-opfs.c-pp.js
ext/wasm/mkwasmbuilds.c
manifest
manifest.uuid

index e898115a44b6c217e9895791a84b8e10f1f05233..eb5b722cd2fda07606d94c26622fae99f21d9b68 100644 (file)
@@ -62,19 +62,31 @@ const toExportForESM =
   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("sqlite3InitModule(): sIMS =",sIMS);
-      EmscriptenModule.runSQLite3PostLoadInit(EmscriptenModule);
+      sIMS.debugModule("sqlite3InitModule() sIMS =",sIMS);
+      sIMS.debugModule("sqlite3InitModule() EmscriptenModule =",EmscriptenModule);
+      EmscriptenModule.runSQLite3PostLoadInit(
+        EmscriptenModule /* see post-js-header/footer.js */
+      );
+      delete EmscriptenModule.runSQLite3PostLoadInit;
       const s = EmscriptenModule.sqlite3;
-      s.scriptInfo = sIMS;
-      //console.warn("sqlite3.scriptInfo =",s.scriptInfo);
+      delete EmscriptenModule.sqlite3;
+      s.scriptInfo = sIMS /* needed by async init below */;
       if(ff.__isUnderTest){
         s.__isUnderTest = true;
         s.emscripten = EmscriptenModule;
+//#if custom-Module.instantiateWasm
+        const iw = sIMS.instantiateWasm;
+        if( iw ){
+          /* Metadata injected by the custom Module.instantiateWasm()
+             in pre-js.c-pp.js. */
+          s.wasm.module = iw.module;
+          s.wasm.instance = iw.instance;
+          s.wasm.imports = iw.imports;
+        }
+//#endif custom-Module.instantiateWasm
       }
-      const f = s.asyncPostInit;
+      const rv = s.asyncPostInit();
       delete s.asyncPostInit;
-      const rv = f();
 //#if wasmfs
       if('undefined'!==typeof WorkerGlobalScope &&
          EmscriptenModule['ENVIRONMENT_IS_PTHREAD']){
index 5bc9714d11c6de092deaac9578566e6ba4629caf..3b988952a212c99f3df24543d3f91ea52eacb6d7 100644 (file)
@@ -3,8 +3,8 @@
    post-js.js for use with Emscripten's --post-js flag. This code
    requires that it be running in that context. The Emscripten
    environment must have been set up already but it will not have
-   loaded its WASM when the code in this file is run. The function it
-   installs will be run after the WASM module is loaded, at which
+   loaded its WASM when the code in this file is run. The function this
+   file installs will be run after the WASM module is loaded, at which
    point the sqlite3 JS API bits will get set up.
 */
 Module.runSQLite3PostLoadInit = function(EmscriptenModule/*the Emscripten-style module object*/){
@@ -18,7 +18,7 @@ Module.runSQLite3PostLoadInit = function(EmscriptenModule/*the Emscripten-style
   /* This function will contain at least the following:
 
      - post-js-header.js          => this file
-       - sqlite3-api-prologue.js  => Bootstrapping bits to attach the following files to
+       - sqlite3-api-prologue.js  => Bootstrapping bits for the following files
        - common/whwasmutil.js     => Generic JS/WASM glue
        - jaccwabyt/jaccwabyt.js   => C struct-binding glue
        - sqlite3-api-glue.js      => glues previous parts together
@@ -28,7 +28,7 @@ Module.runSQLite3PostLoadInit = function(EmscriptenModule/*the Emscripten-style
        - sqlite3-vtab-helper.c-pp.js => Utilities for virtual table impls
        - 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
+       - sqlite3-api-cleanup.js   => final bootstrapping phase
      - post-js-footer.js          => this file's epilogue
 
      And all of that gets sandwiched between extern-pre-js.js and
index 1e0a172fbb799f153b275ff2643ae9ae5fa83829..65cbbf638164a0f19dcb58bccdf981700fbff185 100644 (file)
@@ -2,9 +2,18 @@
    BEGIN FILE: api/pre-js.js
 
    This file is intended to be prepended to the sqlite3.js build using
-   Emscripten's --pre-js=THIS_FILE flag (or equivalent).
+   Emscripten's --pre-js=THIS_FILE flag (or equivalent). It is run
+   from inside of sqlite3InitModule(), after Emscripten's Module is
+   defined, but early enough that we can ammend, or even outright
+   replace, Module from here.
+
+   Because this runs in-between Emscripten's own bootstrapping and
+   Emscripten's main work, we must be careful with file-local symbol
+   names. e.g. don't overwrite anything Emscripten defines and do not
+   use 'const' for local symbols which Emscripten might try to use for
+   itself. i.e. try to keep file-local symbol names obnoxiously
+   collision-resistant.
 */
-// See notes in extern-post-js.js
 const sIMS =
       globalThis.sqlite3InitModuleState/*from extern-post-js.c-pp.js*/
       || Object.assign(Object.create(null),{
@@ -63,6 +72,8 @@ Module['locateFile'] = function(path, prefix) {
 
 //#if custom-Module.instantiateWasm
 /**
+   Override Module.instantiateWasm().
+
    Bug warning: a custom Module.instantiateWasm() does not work
    in WASMFS builds:
 
@@ -70,18 +81,17 @@ Module['locateFile'] = function(path, prefix) {
 
    In such builds we must disable this.
 */
-const xNameOfInstantiateWasm =
+Module[
 //#if wasmfs
-    false
+  'emscripten-bug-17951'
 //#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(). */
+  'instantiateWasm'
+  /* 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';
-Module[xNameOfInstantiateWasm] = function callee(imports,onSuccess){
+] = function callee(imports,onSuccess){
   const sims = this;
   const uri = Module.locateFile(
     sims.wasmFilename, (
@@ -96,7 +106,7 @@ Module[xNameOfInstantiateWasm] = function callee(imports,onSuccess){
         .instantiateStreaming(wfetch(), imports)
         .then((arg)=>{
           arg.imports = imports;
-          sims.intantiateWasm = arg;
+          sims.instantiateWasm = arg /* used by extern-post-js.c-pp.js */;
           onSuccess(arg.instance, arg.module);
         })
         : async ()=>// Safari < v15
@@ -105,12 +115,11 @@ Module[xNameOfInstantiateWasm] = function callee(imports,onSuccess){
         .then(bytes => WebAssembly.instantiate(bytes, imports))
         .then((arg)=>{
           arg.imports = imports;
-          sims.intantiateWasm = arg;
+          sims.instantiateWasm = arg;
           onSuccess(arg.instance, arg.module);
         })
   ;
   return loadWasm();
-  //return {};
 }.bind(sIMS);
 /*
   It is literally impossible to reliably get the name of _this_
@@ -123,8 +132,7 @@ Module[xNameOfInstantiateWasm] = function callee(imports,onSuccess){
 */
 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. */
+/*
+  END FILE: api/pre-js.js, noting that the build process may append
+  "sIMS.wasmFilename = x;" to this file, for some value of x.
+*/
index c04664379aaa13e166294cf989348df2844197e4..4035ebdeec043e6e0f9f79084992e5e551f76616 100644 (file)
   that it can finalize any setup and clean up any global symbols
   temporarily used for setting up the API's various subsystems.
 
-  In Emscripten builds it's run in the context of a Module.postRun
-  handler.
+  In Emscripten builds it's run in the context of what amounts to a
+  Module.postRun handler, though it's no longer actually a postRun
+  handler because Emscripten 4.0 changed postRun semantics in an
+  incompatible way.
+
+  In terms of amalgamation code placement, this file is appended
+  immediately after the final sqlite3-api-*.js piece. Those files
+  cooperate to prepare sqlite3ApiBootstrap() and this file calls it.
+  It is run within a context which gives it access to Emscripten's
+  Module object, after sqlite3.wasm is loaded but before
+  sqlite3ApiBootstrap() has been called.
 */
 'use strict';
 if( 'undefined' !== typeof Module ){ // presumably an Emscripten build
   try{
-    /**
-       The WASM-environment-dependent configuration for
-       sqlite3ApiBootstrap().
-    */
     const SABC = Object.assign(
+      /**
+         The WASM-environment-dependent configuration for
+         sqlite3ApiBootstrap().
+      */
       Object.create(null),
       globalThis.sqlite3ApiConfig || {}, {
         memory: ('undefined'!==typeof wasmMemory)
index fb9112ba4239210f430bdb678f7bdc4c0cc5522e..0754bc82b5533ce9ea752f91b820e1ae62fbc59d 100644 (file)
    globalThis.sqlite3ApiConfig get deleted by sqlite3ApiBootstrap()
    because any changes to them made after that point would have no
    useful effect.
+
+   This function bootstraps only the _synchronous_ pieces of the
+   library.  After calling this, sqlite3.asyncPostInit() must be
+   called to initialize any async pieces (most notably the
+   OPFS-related pieces) and should then delete sqlite3.asyncPostInit.
+   That function is NOT part of the public interface, but is rather a
+   side-effect of how we need to finalize initialization. If we
+   include that part of the init from here, this function will need to
+   return a Promise instead of being synchronous.
 */
 'use strict';
 globalThis.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
@@ -2002,7 +2011,7 @@ globalThis.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
     WasmAllocError: WasmAllocError,
     SQLite3Error: SQLite3Error,
     capi,
-    util,
+    util /* internal: will get removed after library init */,
     wasm,
     config,
     /**
@@ -2067,6 +2076,8 @@ globalThis.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
              clients build their own sqlite3.wasm which contains their
              own C struct types. */
           delete sqlite3.StructBinder;
+          delete sqlite3.scriptInfo;
+          delete sqlite3.emscripten;
         }
         return sqlite3;
       };
index c987458a11c1843fa9aca934229326ea1012568f..f489b36e21c1686e8bf7a481d90efb1a087464e7 100644 (file)
@@ -1007,7 +1007,7 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
       try{
         while( undefined !== (chunk = await callback()) ){
           if(chunk instanceof ArrayBuffer) chunk = new Uint8Array(chunk);
-          if( 0===nWrote && chunk.byteLength>=15 ){
+          if( !checkedHeader && 0===nWrote && chunk.byteLength>=15 ){
             util.affirmDbHeader(chunk);
             checkedHeader = true;
           }
index dc74dc13b7369c659fc1628e986201a465d89731..2b83a52e3ade565804dcf3747d962862ae385c0d 100644 (file)
@@ -1198,7 +1198,7 @@ const installOpfsVfs = function callee(options){
         sah.truncate(0);
         while( undefined !== (chunk = await callback()) ){
           if(chunk instanceof ArrayBuffer) chunk = new Uint8Array(chunk);
-          if( 0===nWrote && chunk.byteLength>=15 ){
+          if( !checkedHeader && 0===nWrote && chunk.byteLength>=15 ){
             util.affirmDbHeader(chunk);
             checkedHeader = true;
           }
index 7fea9906c0824bde1ad6d9524f5be5d5c0e44822..1e1ff53f2645de08b9e3c22984965c8bbb2adf3b 100644 (file)
@@ -98,6 +98,13 @@ typedef struct BuildDef BuildDef;
 #  undef WASM_CUSTOM_INSTANTIATE
 #  define WASM_CUSTOM_INSTANTIATE 0
 #endif
+
+#if WASM_CUSTOM_INSTANTIATE
+#define C_PP_D_CUSTOM_INSTANTIATE " -Dcustom-Module.instantiateWasm "
+#else
+#define C_PP_D_CUSTOM_INSTANTIATE
+#endif
+
 /*
 ** The set of WASM builds for the library (as opposed to the apps
 ** (fiddle, speedtest1)). This array must end with an empty sentinel
@@ -268,27 +275,26 @@ static void mk_pre_post(const char *zName  /* build name */,
   /* --pre-js=... */
   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 !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
-  /* This part is needed if/when we re-enable the custom
-  ** Module.instantiateModule() impl in api/pre-js.c-pp.js. */
-  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.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( zWasmOut ){
-    pf("\t@echo 'sIMS.wasmFilename = \"%s\";' >> $@\n", zWasmOut);
+  pf("$(pre-js.js.%s-%s): $(MAKEFILE_LIST) "
+     "$(sqlite3-license-version.js)\n", zNM);
+  if( 0==WASM_CUSTOM_INSTANTIATE || 0==zWasmOut ){
+    pf("$(eval $(call SQLITE.CALL.C-PP.FILTER,$(pre-js.js.in),"
+       "$(pre-js.js.%s-%s),"
+       C_PP_D_CUSTOM_INSTANTIATE "$(c-pp.D.%s-%s)))\n", zNM, zNM);
+  }else{
+    /* This part is needed for builds which have to rename the wasm file
+       in zJsOut so that the loader can find it. */
+    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_CUSTOM_INSTANTIATE "$(c-pp.D.%s-%s)))\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);
+    pf("\t@echo 'sIMS.wasmFilename = \"%s\";' >> $@\n", zWasmOut)
+      /* see api/pre-js.c-pp.js:Module.instantiateModule() */;
   }
-#endif
 
   /* --post-js=... */
   pf("post-js.js.%s-%s = $(dir.tmp)/post-js.%s-%s.js\n", zNM, zNM);
@@ -296,9 +302,11 @@ static void mk_pre_post(const char *zName  /* build name */,
      "$(post-js.js.%s-%s),$(c-pp.D.%s-%s)))\n", zNM, zNM);
 
   /* --extern-post-js=... */
-  pf("extern-post-js.js.%s-%s = $(dir.tmp)/extern-post-js.%s-%s.js\n", zNM, zNM);
-  pf("$(eval $(call SQLITE.CALL.C-PP.FILTER,$(extern-post-js.js.in),$(extern-post-js.js.%s-%s),"
-     "$(c-pp.D.%s-%s)))\n", zNM, zNM);
+  pf("extern-post-js.js.%s-%s = $(dir.tmp)/extern-post-js.%s-%s.js\n",
+     zNM, zNM);
+  pf("$(eval $(call SQLITE.CALL.C-PP.FILTER,$(extern-post-js.js.in),"
+     "$(extern-post-js.js.%s-%s),"
+     C_PP_D_CUSTOM_INSTANTIATE "$(c-pp.D.%s-%s)))\n", zNM, zNM);
 
   /* Combined flags for use with emcc... */
   pf("pre-post-common.flags.%s-%s = "
@@ -313,7 +321,8 @@ static void mk_pre_post(const char *zName  /* build name */,
   pf("pre-post-jses.%s-%s.deps = $(pre-post-jses.deps.common) "
      "$(post-js.js.%s-%s) $(extern-post-js.js.%s-%s)\n",
      zNM, zNM, zNM);
-  pf("pre-post-%s-%s.deps = $(pre-post-jses.%s-%s.deps) $(dir.tmp)/pre-js.%s-%s.js\n",
+  pf("pre-post-%s-%s.deps = $(pre-post-jses.%s-%s.deps) "
+     "$(dir.tmp)/pre-js.%s-%s.js\n",
      zNM, zNM, zNM);
   pf("# End --pre/--post flags for %s-%s%s", zNM, zBanner);
 #undef zNM
@@ -391,8 +400,9 @@ static void mk_lib_mode(const BuildDef * pB){
 #define zNM pB->zName, pB->zMode
 
   pf("%s# Begin build [%s-%s]. flags=0x%02x\n", zBanner, zNM, pB->flags);
-  pf("# zJsOut=%s\n# zCmppD=%s\n", pB->zJsOut,
-     pB->zCmppD ? pB->zCmppD : "<none>");
+  pf("# zJsOut=%s\n# zCmppD=%s\n# zWasmOut=%s\n", pB->zJsOut,
+     pB->zCmppD ? pB->zCmppD : "<none>",
+     pB->zWasmOut ? pB->zWasmOut : "");
   pf("$(info Setting up build [%s-%s]: %s)\n", zNM, pB->zJsOut);
   mk_pre_post(zNM, pB->zCmppD, pB->zWasmOut);
   pf("\nemcc.flags.%s.%s ?=\n", zNM);
index bad5dbaeb9931b619795a7cb294e30cb3e6f8d99..7dc689e2dd36f0c73855799d57f0af8f77fc0ed2 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Revise\s[a4430d262b3e129d]\sto\spreserve\slegacy\sbehavior\sof\sthe\simposter\ntest-control.\s\sThe\scontrol\sargument\smust\sbe\s2\snow\sto\sget\sread-only\sbehavior.\nThe\scontrol\sargument\sof\s1\sgoes\sback\sto\sthe\sprior\sread/write\sbehavior.
-D 2025-09-22T17:28:08.241
+C Cleanups\sand\sdocs\sin\sthe\sinternal\sparts\sof\sthe\sJS\slib\sbootstrapping.\sMore\stinkering\swith\sthe\scustom\s(but\sstill\sdisabled)\swasm\sfile\sloader.
+D 2025-09-22T17:29:52.547
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -591,21 +591,21 @@ 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 6d058dd44164f3d3055299979db92f8a5821ac79cfd89635ef44363cfd82c64d
+F ext/wasm/api/extern-post-js.c-pp.js 36181698fa0a8dba6292d0659c8945941f7794d632883bd335c4a7c7d2981555
 F ext/wasm/api/extern-pre-js.js cc61c09c7a24a07dbecb4c352453c3985170cec12b4e7e7e7a4d11d43c5c8f41
 F ext/wasm/api/post-js-footer.js e617e5f81a907362de152576323155f02d24642e625fc05fb801b86b6a269444
-F ext/wasm/api/post-js-header.js 2cb240ad1a7dc3a3a788f23b8b505665d585b61b7462c41789a0214c1ffa886d
-F ext/wasm/api/pre-js.c-pp.js d52f4a8e900927ac6f5f3608f322b2ad42cad181ec405b2ac8619d2cbf143bd2
-F ext/wasm/api/sqlite3-api-cleanup.js d4f1a5e665afaf84015f6ef0ddd766f638cb28501c4569b1d4b527c4b5a2b9a4
+F ext/wasm/api/post-js-header.js ada7c1efc3f72126cc10c5977dba1813f2b790fafed1a817fdea805d92bd2ae6
+F ext/wasm/api/pre-js.c-pp.js 9926ffc97c1053b5605c1b46ada396d73c07c424dd3e1cd499bbe80dc1f838cb
+F ext/wasm/api/sqlite3-api-cleanup.js 9d15f0593628c526a3eee4906a224b59d60f82e765b20c7277ffe109c3da4920
 F ext/wasm/api/sqlite3-api-glue.c-pp.js 12f5b36775fab1e7bf5385689fded2b2a9f77360562515e9849acb5e66602e2d
 F ext/wasm/api/sqlite3-api-oo1.c-pp.js db4c8ebb03bac60db32ce03f8c615b00f4e4ad53e7d5de5e63d2780cba052caa
-F ext/wasm/api/sqlite3-api-prologue.js 67c61aa65662a0efa2b3985fb749e65ad13f7c6396faf3a4c523f43cdb47cc20
+F ext/wasm/api/sqlite3-api-prologue.js 0daf5f7c6ebbae3c21df19ede17114aad2643b7898f0ea1ae35abbd824b6e6cf
 F ext/wasm/api/sqlite3-api-worker1.c-pp.js 760191cd13416e6f5adfd9fcc8a97fed5645c9e0a5fbac213a2d4ce2d79a4334
 F ext/wasm/api/sqlite3-license-version-header.js 0c807a421f0187e778dc1078f10d2994b915123c1223fe752b60afdcd1263f89
 F ext/wasm/api/sqlite3-opfs-async-proxy.js 9654b565b346dc609b75d15337f20acfa7af7d9d558da1afeb9b6d8eaa404966
 F ext/wasm/api/sqlite3-vfs-helper.c-pp.js 3f828cc66758acb40e9c5b4dcfd87fd478a14c8fb7f0630264e6c7fa0e57515d
-F ext/wasm/api/sqlite3-vfs-opfs-sahpool.c-pp.js e6389ff91cdb3c17354211bea226f67c2374f23fc0f51691e7c8de66cd2a678d
-F ext/wasm/api/sqlite3-vfs-opfs.c-pp.js 7071a9519dacb643a7fe2fd6b9f33f7c69e63d2929e907a5ef846bb5b1b7dec8
+F ext/wasm/api/sqlite3-vfs-opfs-sahpool.c-pp.js e2c0bd6917b697137035d775ed3300e603642ac845568402fcf712641fbcc5d2
+F ext/wasm/api/sqlite3-vfs-opfs.c-pp.js f8e762aeb568e0fd050ab991c5f3420dca9c14630386e4e18d42c0624b8ff7cd
 F ext/wasm/api/sqlite3-vtab-helper.c-pp.js 9097074724172e31e56ce20ccd7482259cf72a76124213cbc9469d757676da86
 F ext/wasm/api/sqlite3-wasm.c ff2dc011e17b06186b8b35e408626d7ace69a362b92c197a34d78bef25c7105a
 F ext/wasm/api/sqlite3-worker1-promiser.c-pp.js 4ad256b4ff7f839ad18931ed35d46cced544207bd2209665ec552e193f7f4544
@@ -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 17e1ed7825fbadce15ab2955c003ab61d0efb73167af9028ebd863cfc4a2fd00
+F ext/wasm/mkwasmbuilds.c 47dc7d329aa91735113ef062fe6e191346f6273b5f26ae789be7d7a0cf09a3be
 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 ef73bb1ddae28c6a0b462a2a840bfaaec3fc70d843e9ab6c53097281ffc85a78
-R b187746c8c6dc497bdfb9bbe5c1b2ad3
-U drh
-Z 384e19e709d7b1ccb27caff4212f1ac9
+P 3e7ede2e6dc9ac8e746dafe0ecb5379044631e753e951f9ab97ec84addbd830a
+R 470af61e633781a34c9404de25c82545
+U stephan
+Z 415b84aa6c95cbcde807602afc8a1e9e
 # Remove this line to create a well-formed Fossil manifest.
index 0277e25f65375cbd7d02e671c5497f36013ca63e..619c4ba9685285033b8f60ab13db64a215038b97 100644 (file)
@@ -1 +1 @@
-3e7ede2e6dc9ac8e746dafe0ecb5379044631e753e951f9ab97ec84addbd830a
+35651d9ab5529da915500fc50ca3833a004d0b7a19d98e8fbf39234d94697aec