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