From b94a98607a3bd4dd55f4d5ce16f171ba066bafb2 Mon Sep 17 00:00:00 2001 From: stephan Date: Thu, 29 Sep 2022 13:17:50 +0000 Subject: [PATCH] Rework the Emscripten-emitted module loader/init function such that it passes on the sqlite3 module, instead of the Emscripten module, to the first then() of sqlite3InitModule()'s returned Promise. This eliminates any need to mention the Emscripten module object in client-side code unless they want to configure it in advance for loading-status reports. FossilOrigin-Name: 0dbaa0e2b5abf5c23e2039ec90a3055ebb3c063aaf4e556c42546defe6fbb86d --- ext/wasm/GNUmakefile | 23 ++++++++++------ ext/wasm/api/extern-post-js.js | 41 ++++++++++++++++++++++++++++ ext/wasm/api/sqlite3-api-prologue.js | 3 ++ ext/wasm/batch-runner.js | 9 ++---- ext/wasm/common/SqliteTestUtil.js | 4 +-- ext/wasm/demo-123.js | 6 ++-- ext/wasm/demo-kvvfs1.js | 12 +++----- ext/wasm/scratchpad-wasmfs-main.js | 9 ++---- ext/wasm/speedtest1-wasmfs.html | 4 +-- ext/wasm/speedtest1-worker.js | 30 +++++++++----------- ext/wasm/speedtest1.html | 7 +---- ext/wasm/sqlite3-worker1.js | 8 ++---- ext/wasm/test-opfs-vfs.js | 8 ++++-- ext/wasm/testing1.js | 16 +++++------ ext/wasm/wasmfs.make | 6 ++-- manifest | 39 +++++++++++++------------- manifest.uuid | 2 +- 17 files changed, 127 insertions(+), 100 deletions(-) create mode 100644 ext/wasm/api/extern-post-js.js diff --git a/ext/wasm/GNUmakefile b/ext/wasm/GNUmakefile index 0cb05580a7..e9652e1da9 100644 --- a/ext/wasm/GNUmakefile +++ b/ext/wasm/GNUmakefile @@ -152,7 +152,6 @@ post-jses := \ $(dir.api)/post-js-header.js \ $(sqlite3-api.js) \ $(dir.api)/post-js-footer.js - $(post-js.js): $(post-jses) $(MAKEFILE) @echo "Making $@..." @for i in $(post-jses); do \ @@ -160,7 +159,9 @@ $(post-js.js): $(post-jses) $(MAKEFILE) cat $$i; \ echo "/* END FILE: $$i */"; \ done > $@ - +extern-post-js.js := $(dir.api)/extern-post-js.js +sqlite3.js.flags.--post-js := --post-js=$(post-js.js) --extern-post-js=$(extern-post-js.js) +post-jses.deps := $(post-js.js) $(extern-post-js.js) ######################################################################## # emcc flags for .c/.o/.wasm/.js. @@ -204,9 +205,12 @@ emcc.jsflags += -sINITIAL_MEMORY=13107200 # ^^^^ 64MB is not enough for WASMFS/OPFS test runs using batch-runner.js emcc.jsflags += $(emcc.environment) #emcc.jsflags += -sTOTAL_STACK=4194304 -emcc.jsflags += -sEXPORT_NAME=sqlite3InitModule + +sqlite3.js.init-func := sqlite3InitModule +# ^^^^ $(sqlite3.js.init-func) symbol name is hard-coded in $(extern-post-js.js) + +emcc.jsflags += -sEXPORT_NAME=$(sqlite3.js.init-func) emcc.jsflags += -sGLOBAL_BASE=4096 # HYPOTHETICALLY keep func table indexes from overlapping w/ heap addr. -emcc.jsflags += --post-js=$(post-js.js) #emcc.jsflags += -sSTRICT # fails due to missing __syscall_...() #emcc.jsflags += -sALLOW_UNIMPLEMENTED_SYSCALLS #emcc.jsflags += -sFILESYSTEM=0 # only for experimentation. sqlite3 needs the FS API @@ -253,6 +257,7 @@ emcc.jsflags += -sWASM_BIGINT=$(emcc_enable_bigint) # code get confused and cannot load property (namely, the # sqlite3.worker.js generated in conjunction with -sWASMFS). sqlite3.js := sqlite3.js +emcc.jsflags += $(sqlite3.js.flags.--post-js) sqlite3.wasm := sqlite3.wasm sqlite3-wasm.o := $(dir.api)/sqlite3-wasm.o $(sqlite3-wasm.o): emcc.cflags += $(SQLITE_OPT) @@ -274,9 +279,9 @@ endef $(foreach c,$(sqlite3-wasm.c) $(jaccwabyt_test.c),$(eval $(call WASM_C_COMPILE,$(c)))) $(sqlite3.js): $(MAKEFILE) $(sqlite3.wasm.obj) \ EXPORTED_FUNCTIONS.api \ - $(post-js.js) + $(post-jses.deps) @echo "Building $@ ..." - $(emcc.bin) -o $(sqlite3.js) $(emcc_opt) $(emcc.flags) $(emcc.jsflags) $(sqlite3.wasm.obj) + $(emcc.bin) -o $@ $(emcc_opt) $(emcc.flags) $(emcc.jsflags) $(sqlite3.wasm.obj) chmod -x $(sqlite3.wasm) $(maybe-wasm-strip) $(sqlite3.wasm) @ls -la $@ $(sqlite3.wasm) @@ -329,8 +334,8 @@ speedtest1-common.eflags += $(emcc.exportedRuntimeMethods) speedtest1-common.eflags += -sALLOW_TABLE_GROWTH speedtest1-common.eflags += -sDYNAMIC_EXECUTION=0 speedtest1-common.eflags += --minify 0 -speedtest1-common.eflags += -sEXPORT_NAME=sqlite3Speedtest1InitModule -speedtest1-common.eflags += --post-js=$(post-js.js) +speedtest1-common.eflags += -sEXPORT_NAME=$(sqlite3.js.init-func) +speedtest1-common.eflags += $(sqlite3.js.flags.--post-js) speedtest1-common.eflags += -sWASM_BIGINT=$(emcc_enable_bigint) speedtest1.exit-runtime0 := -sEXIT_RUNTIME=0 speedtest1.exit-runtime1 := -sEXIT_RUNTIME=1 @@ -365,7 +370,7 @@ $(speedtest1.js): emcc.cflags+= # the latter (predictably) results in a slightly faster binary, but we're # close enough to the target speed requirements that the 500ms makes a # difference. -$(speedtest1.js): $(MAKEFILE) $(speedtest1.cs) $(post-js.js) \ +$(speedtest1.js): $(MAKEFILE) $(speedtest1.cs) $(post-jses.deps) \ EXPORTED_FUNCTIONS.speedtest1 @echo "Building $@ ..." $(emcc.bin) \ diff --git a/ext/wasm/api/extern-post-js.js b/ext/wasm/api/extern-post-js.js new file mode 100644 index 0000000000..acb54c3c9a --- /dev/null +++ b/ext/wasm/api/extern-post-js.js @@ -0,0 +1,41 @@ +/* emscripten-js-addenda.js must be appended to the resulting sqlite3.js + file. */ +(function(){ + /** + In order to hide the sqlite3InitModule()'s resulting Emscripten + module from downstream clients (and simplify our documentation by + being able to elide those details), we rewrite + sqlite3InitModule() to return the sqlite3 object. + + Unfortunately, we cannot modify the module-loader/exporter-based + impls which Emscripten installs at some point in the file above + this. + */ + const originalInit = self.sqlite3InitModule; + if(!originalInit){ + throw new Error("Expecting self.sqlite3InitModule to be defined by the Emscripten build."); + } + self.sqlite3InitModule.ready = originalInit.ready; + self.sqlite3InitModule = (...args)=>{ + //console.warn("Using replaced sqlite3InitModule()",self.location); + return originalInit(...args).then((EmscriptenModule)=>{ + if(self.window!==self && + (EmscriptenModule['ENVIRONMENT_IS_PTHREAD'] + || EmscriptenModule['_pthread_self'] + || 'function'===typeof threadAlert + || self.location.pathname.endsWith('.worker.js') + )){ + /** Workaround for wasmfs-generated worker, which calls this + routine from each individual thread and requires that its + argument be returned. All of the criteria above are fragile, + based solely on inspection of the offending code, not public + Emscripten details. */ + return EmscriptenModule; + } + const f = EmscriptenModule.sqlite3.asyncPostInit; + delete EmscriptenModule.sqlite3.asyncPostInit; + return f(); + }); + }; + //console.warn("Replaced sqlite3InitModule()"); +})(); diff --git a/ext/wasm/api/sqlite3-api-prologue.js b/ext/wasm/api/sqlite3-api-prologue.js index e0379a646b..859c46bd4b 100644 --- a/ext/wasm/api/sqlite3-api-prologue.js +++ b/ext/wasm/api/sqlite3-api-prologue.js @@ -924,6 +924,9 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap( Bug: if called while a prior call is still resolving, the 2nd call will resolve prematurely, before the 1st call has finished resolving. + + In Emscripten-based builds, this function is called + automatically and deleted from this object. */ asyncPostInit: async function(){ let lip = sqlite3ApiBootstrap.initializersAsync; diff --git a/ext/wasm/batch-runner.js b/ext/wasm/batch-runner.js index 3762998b69..ad281c2e9d 100644 --- a/ext/wasm/batch-runner.js +++ b/ext/wasm/batch-runner.js @@ -604,11 +604,8 @@ }/*run()*/ }/*App*/; - self.sqlite3TestModule.initSqlite3().then(function(theEmccModule){ - self._MODULE = theEmccModule /* this is only to facilitate testing from the console */; - sqlite3 = theEmccModule.sqlite3; - console.log("App",App); - self.App = App; - App.run(theEmccModule.sqlite3); + self.sqlite3TestModule.initSqlite3().then(function(sqlite3){ + self.App = App /* only to facilitate dev console access */; + App.run(sqlite3); }); })(); diff --git a/ext/wasm/common/SqliteTestUtil.js b/ext/wasm/common/SqliteTestUtil.js index 277ab55294..08688fd487 100644 --- a/ext/wasm/common/SqliteTestUtil.js +++ b/ext/wasm/common/SqliteTestUtil.js @@ -230,9 +230,7 @@ object, calls it sqlite3InitModule(), and removes self.sqlite3ApiConfig after initialization is done. Returns the promise from sqlite3InitModule(), and the next then() handler - will get the Emscripten module object as its argument. That - module has the sqlite3's main namespace object installed as its - `sqlite3` property. + will get the sqlite3 API object as its argument. */ initSqlite3: function(){ self.sqlite3ApiConfig = this.sqlite3ApiConfig; diff --git a/ext/wasm/demo-123.js b/ext/wasm/demo-123.js index a08bffb64c..00ea1f5bc0 100644 --- a/ext/wasm/demo-123.js +++ b/ext/wasm/demo-123.js @@ -256,11 +256,11 @@ // like so... print: log, printErr: error - }).then(function(EmscriptenModule){ - //console.log('EmscriptenModule.sqlite3 =',EmscriptenModule.sqlite3); + }).then(function(sqlite3){ + //console.log('sqlite3 =',sqlite3); log("Done initializing. Running demo..."); try { - demo1(EmscriptenModule.sqlite3); + demo1(sqlite3); }catch(e){ error("Exception:",e.message); } diff --git a/ext/wasm/demo-kvvfs1.js b/ext/wasm/demo-kvvfs1.js index a2cff8639d..b358694ce8 100644 --- a/ext/wasm/demo-kvvfs1.js +++ b/ext/wasm/demo-kvvfs1.js @@ -41,10 +41,8 @@ logHtml('error',...args); }; - const runTests = function(Module){ - //log("Module",Module); - const sqlite3 = Module.sqlite3, - capi = sqlite3.capi, + const runTests = function(sqlite3){ + const capi = sqlite3.capi, oo = sqlite3.oo1, wasm = capi.wasm; log("Loaded module:",capi.sqlite3_libversion(), capi.sqlite3_sourceid()); @@ -115,9 +113,7 @@ } }; - sqlite3InitModule(self.sqlite3TestModule).then(function(theModule){ - console.warn("Installing Emscripten module as global EM for dev console access."); - self.EM = theModule; - runTests(theModule); + sqlite3InitModule(self.sqlite3TestModule).then((sqlite3)=>{ + runTests(sqlite3); }); })(); diff --git a/ext/wasm/scratchpad-wasmfs-main.js b/ext/wasm/scratchpad-wasmfs-main.js index 764f72e6df..e76011274b 100644 --- a/ext/wasm/scratchpad-wasmfs-main.js +++ b/ext/wasm/scratchpad-wasmfs-main.js @@ -34,11 +34,8 @@ }); }; - const runTests = function(Module){ - //stdout("Module",Module); - self._MODULE = Module /* this is only to facilitate testing from the console */; - const sqlite3 = Module.sqlite3, - capi = sqlite3.capi, + const runTests = function(sqlite3){ + const capi = sqlite3.capi, oo = sqlite3.oo1, wasm = capi.wasm; stdout("Loaded sqlite3:",capi.sqlite3_libversion(), capi.sqlite3_sourceid()); @@ -60,7 +57,7 @@ ].forEach((f)=>{ const n = performance.now(); stdout(banner1,"Running",f.name+"()..."); - f(db, sqlite3, Module); + f(db, sqlite3); stdout(banner2,f.name+"() took ",(performance.now() - n),"ms"); }); }finally{ diff --git a/ext/wasm/speedtest1-wasmfs.html b/ext/wasm/speedtest1-wasmfs.html index 6952fc1eed..e35546702e 100644 --- a/ext/wasm/speedtest1-wasmfs.html +++ b/ext/wasm/speedtest1-wasmfs.html @@ -143,9 +143,7 @@ self.sqlite3TestModule.print = log; self.sqlite3TestModule.printErr = logErr; - sqlite3Speedtest1InitModule(self.sqlite3TestModule).then(function(M){ - runTests(M.sqlite3); - }); + sqlite3InitModule(self.sqlite3TestModule).then(runTests); })(); diff --git a/ext/wasm/speedtest1-worker.js b/ext/wasm/speedtest1-worker.js index e6359966d5..1f421b0b86 100644 --- a/ext/wasm/speedtest1-worker.js +++ b/ext/wasm/speedtest1-worker.js @@ -80,22 +80,18 @@ printErr: logErr, setStatus: (text)=>mPost('load-status',text) }; - self.sqlite3Speedtest1InitModule(EmscriptenModule).then(function(EModule){ - log("Module inited."); - return EModule.sqlite3.asyncPostInit() - .then((sqlite3)=>{ - const S = sqlite3; - const vfsUnlink = S.capi.wasm.xWrap("sqlite3_wasm_vfs_unlink", "int", ["string"]); - App.unlink = function(fname){ - vfsUnlink(fname); - if(S.opfs) S.opfs.deleteEntry(fname); - }; - App.pDir = wasmfsDir(S.wasm); - App.wasm = S.capi.wasm; - //if(App.pDir) log("Persistent storage:",pDir); - //else log("Using transient storage."); - mPost('ready',true); - log("Registered VFSes:", ...S.capi.sqlite3_web_vfs_list()); - }); + self.sqlite3InitModule(EmscriptenModule).then((sqlite3)=>{ + const S = sqlite3; + const vfsUnlink = S.capi.wasm.xWrap("sqlite3_wasm_vfs_unlink", "int", ["string"]); + App.unlink = function(fname){ + vfsUnlink(fname); + if(S.opfs) S.opfs.deleteEntry(fname); + }; + App.pDir = wasmfsDir(S.wasm); + App.wasm = S.capi.wasm; + //if(App.pDir) log("Persistent storage:",pDir); + //else log("Using transient storage."); + mPost('ready',true); + log("Registered VFSes:", ...S.capi.sqlite3_web_vfs_list()); }); })(); diff --git a/ext/wasm/speedtest1.html b/ext/wasm/speedtest1.html index 6c2853a73a..358d8ba79e 100644 --- a/ext/wasm/speedtest1.html +++ b/ext/wasm/speedtest1.html @@ -163,12 +163,7 @@ self.sqlite3TestModule.print = log; self.sqlite3TestModule.printErr = logErr; - sqlite3Speedtest1InitModule(self.sqlite3TestModule) - .then((EmscriptenModule)=>{ - return EmscriptenModule.sqlite3.installOpfsVfs() - .catch((e)=>{console.warn(e.message)}) - .then(()=>runTests(EmscriptenModule.sqlite3)); - }); + sqlite3InitModule(self.sqlite3TestModule).then(runTests); })(); diff --git a/ext/wasm/sqlite3-worker1.js b/ext/wasm/sqlite3-worker1.js index 6de8facf90..7ccf79f010 100644 --- a/ext/wasm/sqlite3-worker1.js +++ b/ext/wasm/sqlite3-worker1.js @@ -28,9 +28,7 @@ */ "use strict"; importScripts('sqlite3.js'); -sqlite3InitModule().then((EmscriptenModule)=>{ - EmscriptenModule.sqlite3.asyncPostInit().then((sqlite3)=>{ - sqlite3.capi.sqlite3_wasmfs_opfs_dir(); - sqlite3.initWorker1API(); - }); +sqlite3InitModule().then((sqlite3)=>{ + sqlite3.capi.sqlite3_wasmfs_opfs_dir(); + sqlite3.initWorker1API(); }); diff --git a/ext/wasm/test-opfs-vfs.js b/ext/wasm/test-opfs-vfs.js index 93e9e0eb64..78f86e380f 100644 --- a/ext/wasm/test-opfs-vfs.js +++ b/ext/wasm/test-opfs-vfs.js @@ -28,7 +28,13 @@ const tryOpfsVfs = function(sqlite3){ const log = (...args)=>console.log(logPrefix,...args); const warn = (...args)=>console.warn(logPrefix,...args); const error = (...args)=>console.error(logPrefix,...args); + const opfs = sqlite3.opfs; log("tryOpfsVfs()"); + if(!sqlite3.opfs){ + const e = toss("OPFS is not available."); + error(e); + throw e; + } const capi = sqlite3.capi; const pVfs = capi.sqlite3_vfs_find("opfs") || toss("Missing 'opfs' VFS."); const oVfs = capi.sqlite3_vfs.instanceForPointer(pVfs) || toss("Unexpected instanceForPointer() result.");; @@ -38,7 +44,6 @@ const tryOpfsVfs = function(sqlite3){ const dbFile = "my-persistent.db"; if(urlArgs.has('delete')) sqlite3.opfs.deleteEntry(dbFile); - const opfs = sqlite3.opfs; const db = new opfs.OpfsDb(dbFile); log("db file:",db.filename); try{ @@ -78,7 +83,6 @@ const tryOpfsVfs = function(sqlite3){ importScripts('sqlite3.js'); self.sqlite3InitModule() - .then((EmscriptenModule)=>EmscriptenModule.sqlite3.asyncPostInit()) .then((sqlite3)=>tryOpfsVfs(sqlite3)) .catch((e)=>{ console.error("Error initializing module:",e); diff --git a/ext/wasm/testing1.js b/ext/wasm/testing1.js index 9607e3f379..5b3d6189db 100644 --- a/ext/wasm/testing1.js +++ b/ext/wasm/testing1.js @@ -33,7 +33,7 @@ return v1>=(v2-factor) && v1<=(v2+factor); }; - let sqlite3; + let sqlite3 /* loaded later */; const testBasicSanity = function(db,sqlite3){ const capi = sqlite3.capi; @@ -270,7 +270,7 @@ T.mustThrow(()=>db.exec("select * from foo.bar")); }; - const testIntPtr = function(db,S,Module){ + const testIntPtr = function(db,S){ const w = S.capi.wasm; const stack = w.scopedAllocPush(); let ptrInt; @@ -1011,9 +1011,8 @@ n,"entries totaling approximately",sz,"bytes."); }; - const runTests = function(Module){ - //log("Module",Module); - sqlite3 = Module.sqlite3; + const runTests = function(_sqlite3){ + sqlite3 = _sqlite3; const capi = sqlite3.capi, oo = sqlite3.oo1, wasm = capi.wasm; @@ -1074,7 +1073,7 @@ ].forEach((f)=>{ const t = T.counter, n = performance.now(); logHtml(banner1,"Running",f.name+"()..."); - f(db, sqlite3, Module); + f(db, sqlite3); logHtml(banner2,f.name+"():",T.counter - t,'tests in',(performance.now() - n),"ms"); }); }finally{ @@ -1085,8 +1084,7 @@ log('capi.wasm.exports',capi.wasm.exports); }; - self.sqlite3TestModule.initSqlite3().then(function(theModule){ - self._MODULE = theModule /* this is only to facilitate testing from the console */ - runTests(theModule); + self.sqlite3TestModule.initSqlite3().then((S)=>{ + runTests(S); }); })(); diff --git a/ext/wasm/wasmfs.make b/ext/wasm/wasmfs.make index daa074513d..20ddcdb9e2 100644 --- a/ext/wasm/wasmfs.make +++ b/ext/wasm/wasmfs.make @@ -55,9 +55,9 @@ sqlite3-wasmfs.jsflags += -sUSE_CLOSURE_COMPILER=0 sqlite3-wasmfs.jsflags += -sIMPORTED_MEMORY #sqlite3-wasmfs.jsflags += -sINITIAL_MEMORY=13107200 #sqlite3-wasmfs.jsflags += -sTOTAL_STACK=4194304 -sqlite3-wasmfs.jsflags += -sEXPORT_NAME=sqlite3InitModule +sqlite3-wasmfs.jsflags += -sEXPORT_NAME=$(sqlite3.js.init-func) sqlite3-wasmfs.jsflags += -sGLOBAL_BASE=4096 # HYPOTHETICALLY keep func table indexes from overlapping w/ heap addr. -sqlite3-wasmfs.jsflags += --post-js=$(post-js.js) +sqlite3-wasmfs.jsflags += $(sqlite3.js.flags.--post-js) #sqlite3-wasmfs.jsflags += -sFILESYSTEM=0 # only for experimentation. sqlite3 needs the FS API # Perhaps the wasmfs build doesn't? #sqlite3-wasmfs.jsflags += -sABORTING_MALLOC @@ -80,7 +80,7 @@ sqlite3-wasmfs.jsflags += -sWASM_BIGINT=$(emcc_enable_bigint) $(sqlite3-wasmfs.js): $(sqlite3-wasmfs.wasm.c) $(sqlite3-wasm.c) $(sqlite3-wasmfs.extra.c) \ EXPORTED_FUNCTIONS.api $(sqlite3-wasm.js) $(MAKEFILE) $(MAKEFILE.wasmfs) \ - $(post-js.js) + $(post-jses.deps) @echo "Building $@ ..." $(emcc.bin) -o $@ $(emcc_opt) $(emcc.flags) \ $(sqlite3-wasmfs.cflags) $(sqlite3-wasmfs.jsflags) $(sqlite3-wasmfs.wasm.c) $(sqlite3-wasmfs.extra.c) diff --git a/manifest b/manifest index f00fee8550..e54e9ea56d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Wasm:\sexpose\ssqlite3_exec()\sand\suse\sit\sto\ssimplify\sthe\sdb-reset\slogic\sin\sbatch-runner.js\sa\sbit. -D 2022-09-28T18:10:50.148 +C Rework\sthe\sEmscripten-emitted\smodule\sloader/init\sfunction\ssuch\sthat\sit\spasses\son\sthe\ssqlite3\smodule,\sinstead\sof\sthe\sEmscripten\smodule,\sto\sthe\sfirst\sthen()\sof\ssqlite3InitModule()'s\sreturned\sPromise.\sThis\seliminates\sany\sneed\sto\smention\sthe\sEmscripten\smodule\sobject\sin\sclient-side\scode\sunless\sthey\swant\sto\sconfigure\sit\sin\sadvance\sfor\sloading-status\sreports. +D 2022-09-29T13:17:50.536 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -474,32 +474,33 @@ F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04 F ext/userauth/userauth.c 7f00cded7dcaa5d47f54539b290a43d2e59f4b1eb5f447545fa865f002fc80cb F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c F ext/wasm/EXPORTED_RUNTIME_METHODS.fiddle 0e88c8cfc3719e4b7e74980d9da664c709e68acf863e48386cda376edfd3bfb0 -F ext/wasm/GNUmakefile 86ee7562063275779b108957db5bc7fdb18df4f6c506abbe28132b4fb071988e +F ext/wasm/GNUmakefile 7cf6c4346edd6656d5b9f258049ca56af7d7b8b10da3d21edcc3717015bc6511 F ext/wasm/README.md e1ee1e7c321c6a250bf78a84ca6f5882890a237a450ba5a0649c7a8399194c52 F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api 77a5ee8bd209b5e75dd0e822bc3f6e7319dc9b36431463d4175c775170f92126 F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de2470b0e9e7fbf7a5b41261c367cf4f1b7287 F ext/wasm/api/README.md f54102d74cfde01ebe242fa1411e126a9cda8f19b3ac378afd1103b21abfad05 +F ext/wasm/api/extern-post-js.js d29d5f615c887b356ff80a77a09a346339644c66d4fea79230d8378e2e2f4914 F ext/wasm/api/post-js-footer.js b64319261d920211b8700004d08b956a6c285f3b0bba81456260a713ed04900c F ext/wasm/api/post-js-header.js 2e5c886398013ba2af88028ecbced1e4b22dc96a86467f1ecc5ba9e64ef90a8b F ext/wasm/api/sqlite3-api-cleanup.js 4bd28e61216690b12d6f77bfce71b011995c29496397cfa77e08198eb8d19aeb F ext/wasm/api/sqlite3-api-glue.js 3b164f0ef690a838da8613a2aaec4fc49d29ad5e8fe39c8cdc0f5281f08f9d0b F ext/wasm/api/sqlite3-api-oo1.js 97a786b366fcac442e1557c3eedef3afa96877411bd6239094d4db5fd5b3c353 F ext/wasm/api/sqlite3-api-opfs.js af65e056b9f5bc6182499f7e7767e3d01abc3772a62c8abbcc04e4c7bb0affc6 -F ext/wasm/api/sqlite3-api-prologue.js ed850804d5cd7a976717e524d719b1f9743405226a879a5170f259dbee31d13c +F ext/wasm/api/sqlite3-api-prologue.js 47245a1bb279f54c7c1d6b32f13222536ce0196ced9c2bda2d12a0b4ef8c136d F ext/wasm/api/sqlite3-api-worker1.js d5d5b7fac4c4731c38c7e03f4f404b2a95c388a2a1d8bcf361caada572f107e0 F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9 F ext/wasm/api/sqlite3-wasm.c b756b9c1fee9d0598f715e6df6bf089b750da24aa91bb7ef9277a037d81e7612 F ext/wasm/batch-runner.html c363032aba7a525920f61f8be112a29459f73f07e46f0ba3b7730081a617826e -F ext/wasm/batch-runner.js 0d5517be51290098bf4a92754e25c552b7c1dc73bb3f2e2b18f16b1008df060f -F ext/wasm/common/SqliteTestUtil.js c997c12188c97109f344701a58dd627b9c0f98f32cc6a88413f6171f2191531c +F ext/wasm/batch-runner.js a94dd0005b34cb4e654a799fbe6357a66070510bbbe5d116cf1a8d4f9901bd80 +F ext/wasm/common/SqliteTestUtil.js 647bf014bd30bdd870a7e9001e251d12fc1c9ec9ce176a1004b838a4b33c5c05 F ext/wasm/common/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f F ext/wasm/common/testing.css 3a5143699c2b73a85b962271e1a9b3241b30d90e30d895e4f55665e648572962 F ext/wasm/common/whwasmutil.js 20291bbf4955358d0b5ead58db4c575be269b4976e39c43a93331547e3b86363 F ext/wasm/demo-123-worker.html e419b66495d209b5211ec64903b4cfb3ca7df20d652b41fcd28bf018a773234f F ext/wasm/demo-123.html aa281d33b7eefa755f3122b7b5a18f39a42dc5fb69c8879171bf14b4c37c4ec4 -F ext/wasm/demo-123.js d8490189cd2f7a47940d42174fe562d8b6a5cbab521eec4c602dead055b12414 +F ext/wasm/demo-123.js 35de7c544b9190759fcbf4ca125a674d3f6db03614b9a2175efaa1fbf363ef6f F ext/wasm/demo-kvvfs1.html 7d4f28873de67f51ac18c584b7d920825139866a96049a49c424d6f5a0ea5e7f -F ext/wasm/demo-kvvfs1.js e884ea35022d772c0d1dd884b40011413696438394f605c6cd4808cfb1642a4a +F ext/wasm/demo-kvvfs1.js d1126c3b08099dc1279f353b298ee90f6d374ab6ca2b4cf412031fc992e51d35 F ext/wasm/fiddle.make fd56fa21bada6ecbf860686a9a789ebda7cc3d9b60835927000fcb00246ea50f F ext/wasm/fiddle/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f F ext/wasm/fiddle/fiddle-worker.js 425b75b1debe1108c10f1373fdd75994a18adbdc0a593e7ff0ecd91cc6498e89 @@ -511,26 +512,26 @@ F ext/wasm/jaccwabyt/jaccwabyt.md 9aa6951b529a8b29f578ec8f0355713c39584c92cf1708 F ext/wasm/jaccwabyt/jaccwabyt_test.c 39e4b865a33548f943e2eb9dd0dc8d619a80de05d5300668e9960fff30d0d36f F ext/wasm/jaccwabyt/jaccwabyt_test.exports 5ff001ef975c426ffe88d7d8a6e96ec725e568d2c2307c416902059339c06f19 F ext/wasm/scratchpad-wasmfs-main.html 20cf6f1a8f368e70d01e8c17200e3eaa90f1c8e1029186d836d14b83845fbe06 -F ext/wasm/scratchpad-wasmfs-main.js e713a3da53da9194a1cc35d060f0ee5cb0abe907dcbc864d3d6f76fa6eafedf1 -F ext/wasm/speedtest1-wasmfs.html 852504ccf9d095c8f57d4f4f9cc2f912b3b432e300c6b5ed8d6234a37eeb86a6 +F ext/wasm/scratchpad-wasmfs-main.js 1aa32c1035cf1440a226a28fefcbb5762fbbcb020ccbe5895f8736d701695c63 +F ext/wasm/speedtest1-wasmfs.html bc28eb29b69a73864b8d7aae428448f8b7e1de81d8bfb9bba99541322054dbd0 F ext/wasm/speedtest1-worker.html 3780a29a6d0467dde34b61bf50a1b2e1a12a4e8498f4835b1293e79a3edcd675 -F ext/wasm/speedtest1-worker.js 65f50314cc56ebc03f7b5ea774e7d8386600e8a6f27cca02cb05e7e2eb7a0153 -F ext/wasm/speedtest1.html 4f4e26b634bb3288f2cad8cf4d458076b33d8bd0f3fd56e089a17bed32df6287 +F ext/wasm/speedtest1-worker.js a9e3d052dd1d8016d6e9a641e596e6d99aec04ef8995d7ee9a85a9964eed771a +F ext/wasm/speedtest1.html e4cb5d722b494104fc1249e7c008ca018f820a784833c51004c958c71038c80f F ext/wasm/split-speedtest1-script.sh a3e271938d4d14ee49105eb05567c6a69ba4c1f1293583ad5af0cd3a3779e205 x F ext/wasm/sql/000-mandelbrot.sql 775337a4b80938ac8146aedf88808282f04d02d983d82675bd63d9c2d97a15f0 F ext/wasm/sql/001-sudoku.sql 35b7cb7239ba5d5f193bc05ec379bcf66891bce6f2a5b3879f2f78d0917299b5 F ext/wasm/sqlite3-opfs-async-proxy.js fe4b8268eea9acaec633ebd1dd3f85dae7c461c5c68985ab1075d9560b1db8e8 F ext/wasm/sqlite3-worker1-promiser.js cca2b853692e4715b4761c46678f96d80819d4756de557922a815149fb93397e -F ext/wasm/sqlite3-worker1.js b941db258fd26ae2c7398b640c1ca8d5abac8ec77e54ba5b9526af2297409626 +F ext/wasm/sqlite3-worker1.js 5266ebc4d709fe23d2d076ae44e6085fbc32b82f26ef514b947312f36b1206a9 F ext/wasm/test-opfs-vfs.html eb69dda21eb414b8f5e3f7c1cc0f774103cc9c0f87b2d28a33419e778abfbab5 -F ext/wasm/test-opfs-vfs.js ba4c20085000b9f6195f62cf3abeeb0ae4703c3b34bc654afa806014a4f09e96 +F ext/wasm/test-opfs-vfs.js a59ff9210b17d46b0c6fbf6a0ba60143c033327865f2e556e14f06280cef62ac F ext/wasm/testing-worker1-promiser.html 6eaec6e04a56cf24cf4fa8ef49d78ce8905dde1354235c9125dca6885f7ce893 F ext/wasm/testing-worker1-promiser.js ee1ac4950720c07541e791b7f35bdf420e8ab81a74049cc65394371b0c53c480 F ext/wasm/testing1.html 50575755e43232dbe4c2f97c9086b3118eb91ec2ee1fae931e6d7669fb17fcae -F ext/wasm/testing1.js 20b37766d29815180e2e932bfc6132b649403ece1f1bf612a4712db131287970 +F ext/wasm/testing1.js 06b9a439ada636c5478c581c86b2b968f799e0468eae54dc5a4565dfd7afbb88 F ext/wasm/testing2.html a66951c38137ff1d687df79466351f3c734fa9c6d9cce71d3cf97c291b2167e3 F ext/wasm/testing2.js 34737da985c4cbd4812b2e7f200942662cae991c5a58ffa5d0350be089d0d410 -F ext/wasm/wasmfs.make fb4d0b4a6596ec2ed7815508a43b77bd7d14d3910ac387eb795643e33f5a3652 +F ext/wasm/wasmfs.make d53146b062386b01f7b0b0d498335b33c11548cf3d1706cff472d6cbd42a9c95 F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8 F magic.txt 8273bf49ba3b0c8559cb2774495390c31fd61c60 @@ -2026,8 +2027,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 3bd1bc240676e56da87fc49f3c67a1edc4fafcf2a2416298d19ae4f80b676a72 -R d0708515df8e5293032059e504723b7d +P 2e2821f782511b9d2274a89a5a922582aba18c7e9dc7ce01080e713942a56d7d +R 4702b024c44aa8b0e10da8a3cb6edeca U stephan -Z 774d17030f6b3ac9dea357109e6b49c9 +Z 43dbf13bcecc8e2f4da632a6ad6ef70c # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 5f8b8b7792..5e51671dec 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -2e2821f782511b9d2274a89a5a922582aba18c7e9dc7ce01080e713942a56d7d \ No newline at end of file +0dbaa0e2b5abf5c23e2039ec90a3055ebb3c063aaf4e556c42546defe6fbb86d \ No newline at end of file