# End main Emscripten-based module build
########################################################################
-include kvvfs.make
+########################################################################
+# batch-runner.js...
+dir.sql := sql
+speedtest1 := ../../speedtest1
+speedtest1.c := ../../test/speedtest1.c
+speedtest1.sql := $(dir.sql)/speedtest1.sql
+$(speedtest1):
+ $(MAKE) -C ../.. speedtest1
+$(speedtest1.sql): $(speedtest1)
+ $(speedtest1) --script $@
+batch-runner.list: $(MAKEFILE) $(speedtest1.sql) $(dir.sql)/000-mandelbrot.sql
+ bash split-speedtest1-script.sh $(dir.sql)/speedtest1.sql
+ ls -1 $(dir.sql)/*.sql | grep -v speedtest1.sql | sort > $@
+clean-batch:
+ rm -f batch-runner.list $(dir.sql)/speedtest1*.sql
+# ^^^ we don't do this along with 'clean' because we clean/rebuild on
+# a regular basis with different -Ox flags and rebuilding the batch
+# pieces each time is an unnecessary time sink.
+batch: batch-runner.list
+all: batch
+# end batch-runner.js
+########################################################################
+# speedtest1.js...
+emcc.speedtest1-flags := -g $(emcc_opt)
+ifneq (0,$(ENABLE_WASMFS))
+ emcc.speedtest1-flags += -pthread -sWASMFS -sPTHREAD_POOL_SIZE=2
+ emcc.speedtest1-flags += -DSQLITE_WASM_OPFS
+endif
+emcc.speedtest1-flags += -sINVOKE_RUN=0
+#emcc.speedtest1-flags += --no-entry
+emcc.speedtest1-flags += -flto
+emcc.speedtest1-flags += -sABORTING_MALLOC
+emcc.speedtest1-flags += -sINITIAL_MEMORY=128450560
+emcc.speedtest1-flags += -sSTRICT_JS
+emcc.speedtest1-flags += $(emcc.environment)
+emcc.speedtest1-flags += -sMODULARIZE
+emcc.speedtest1-flags += -sEXPORT_NAME=sqlite3Speedtest1InitModule
+emcc.speedtest1-flags += -Wno-limited-postlink-optimizations
+emcc.speedtest1-flags += -sEXPORTED_FUNCTIONS=_main,_malloc,_free,_sqlite3_wasm_vfs_unlink,_sqlite3_wasm_init_opfs
+emcc.speedtest1-flags += -sDYNAMIC_EXECUTION=0
+emcc.speedtest1-flags += --minify 0
+
+speedtest1.js := speedtest1.js
+speedtest1.wasm := $(subst .js,.wasm,$(speedtest1.js))
++speedtest1.cflags := \
++ -I. -I$(dir.top) \
++ -DSQLITE_SPEEDTEST1_WASM
++
+$(speedtest1.js): emcc.cflags+=
+# speedtest1 notes re. sqlite3-wasm.o vs sqlite3-wasm.c: building against
+# 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): $(speedtest1.c) $(sqlite3-wasm.c) $(MAKEFILE)
++$(speedtest1.js): $(speedtest1.c) $(sqlite3-wasm.c) $(MAKEFILE) $(sqlite3.c)
+ $(emcc.bin) \
- $(emcc.speedtest1-flags) \
- -I. -I$(dir.top) \
- -DSQLITE_THREADSAFE=0 \
- -DSQLITE_TEMP_STORE=3 \
- -DSQLITE_OMIT_UTF16 \
- -DSQLITE_OMIT_DEPRECATED \
- -DSQLITE_OMIT_SHARED_CACHE \
++ $(emcc.speedtest1-flags) $(speedtest1.cflags) \
++ $(SQLITE_OPT) \
+ '-DSQLITE_DEFAULT_UNIX_VFS="unix-none"' \
- -DSQLITE_SPEEDTEST1_WASM \
+ -o $@ $(speedtest1.c) $(sqlite3-wasm.c) -lm
+ifneq (,$(wasm-strip))
+ $(wasm-strip) $(speedtest1.wasm)
+endif
+ ls -la $@ $(speedtest1.wasm)
+
+speedtest1: $(speedtest1.js)
- all: $(speedtest1.js)
++all: speedtest1
+CLEAN_FILES += $(speedtest1.js) $(speedtest1.wasm)
+# end speedtest1.js
+########################################################################
########################################################################
# fiddle_remote is the remote destination for the fiddle app. It
--- /dev/null
- <li><a href='demo-oo1.html'>demo-oo1</a>: demonstration of the OO API #1.</li>
+<!doctype html>
+<html lang="en-us">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
+ <link rel="stylesheet" href="common/testing.css"/>
+ <title>sqlite3 WASM Testing Page Index</title>
+ </head>
+ <body>
+ <header id='titlebar'><span>sqlite3 WASM test pages</span></header>
+ <hr>
+ <div>Below is the list of test pages for the sqlite3 WASM
+ builds. All of them require that this directory have been
+ "make"d first. The intent is that <em>this</em> page be run
+ using:</div>
+ <blockquote><pre>althttpd -page index.html</pre></blockquote>
+ <div>and the individual tests be started in their own tab.</div>
+ <div>Warnings and Caveats:
+ <ul class='warning'>
+ <li>Some of these pages require that
+ the web server emit the so-called COOP and COEP headers. The
+ default build of althttpd <em>does not</em>.
+ </li>
+ <li>Whether or not WASMFS/OPFS support is enabled on any given
+ page may depend on build-time options which are <em>off by
+ default</em> because they currently (as of 2022-09-08) break
+ with Worker-based pages.
+ </li>
+ </ul>
+ </div>
+ <div>The tests...
+ <ul id='test-list'>
+ <li><a href='testing1.html'>testing1</a>: sanity tests of the core APIs and surrounding utility code.</li>
+ <li><a href='testing2.html'>testing2</a>: Worker-based test of OO API #1.</li>
+ <li><a href='testing-worker1-promiser.html'>testing-worker1-promiser</a>:
+ tests for the Promise-based wrapper of the Worker-based API.</li>
++ <li><a href='demo-oo1.html'>demo-oo1</a>: demonstration of the OO API #1.</li>
+ <li><a href='batch-runner.html'>batch-runner</a>: runs batches of SQL exported from speedtest1.</li>
+ <li><a href='speedtest1.html'>speedtest1</a>: a main-thread WASM build of speedtest1.</li>
+ <li><a href='speedtest1-worker.html'>speedtest1-worker</a>: an interactive Worker-thread variant of speedtest1.</li>
++ <li><a href='speedtest1-kvvfs.html'>speedtest1-kvvfs</a>: a variant of speedtest1 built solely for the kv-vfs feature.</li>
+ <li><a href='kvvfs1.html'>kvvfs1</a>: very basic demo of using the key-value vfs for storing
+ a persistent db in JS localStorage or sessionStorage.</li>
+ <!--li><a href='x.html'></a></li-->
+ </ul>
+ </div>
+ <style>
+ #test-list { font-size: 120%; }
+ </style>
+ <script>//Assign a distinct target tab name for each test page...
+ document.querySelectorAll('a').forEach(function(e){
+ e.target = e.href;
+ });
+ </script>
+ </body>
+</html>
kvvfs.jsflags += -sWASM_BIGINT
endif
--$(kvvfs.js): $(MAKEFILE) $(MAKEFILE.kvvfs) $(kvvfs.wasm.c) \
++$(kvvfs.js): $(MAKEFILE) $(MAKEFILE.kvvfs) $(kvvfs.wasm.c) $(sqlite3.c) \
EXPORTED_FUNCTIONS.api \
$(post-js.js)
-- $(emcc.bin) -o $@ $(emcc_opt) $(emcc.flags) $(kvvfs.cflags) $(kvvfs.jsflags) $(kvvfs.wasm.c)
++ $(emcc.bin) -o $@ $(emcc_opt) $(emcc.flags) \
++ $(SQLITE_OPT) \
++ $(kvvfs.cflags) $(kvvfs.jsflags) $(kvvfs.wasm.c)
chmod -x $(kvvfs.wasm)
ifneq (,$(wasm-strip))
$(wasm-strip) $(kvvfs.wasm)
@ls -la $@ $(kvvfs.wasm)
kvvfs: $(kvvfs.js)
+all: kvvfs
++
++########################################################################
++# speedtest1-kvvfs
++speedtest1-kvvfs.js := speedtest1-kvvfs.js
++speedtest1-kvvfs.wasm := speedtest1-kvvfs.wasm
++CLEAN_FILES += $(speedtest1-kvvfs.js) $(speedtest1-kvvfs.wasm)
++$(speedtest1-kvvfs.js): $(speedtest1.c) $(sqlite3-wasm.c) $(sqlite3.c) $(MAKEFILE.kvvfs)
++ $(emcc.bin) \
++ $(emcc.speedtest1-flags) $(speedtest1.cflags) \
++ $(SQLITE_OPT) \
++ -sEXIT_RUNTIME=1 \
++ $(kvvfs.cflags) \
++ -o $@ $(speedtest1.c) $(sqlite3-wasm.c) -lm
++ifneq (,$(wasm-strip))
++ $(wasm-strip) $(speedtest1-kvvfs.wasm)
++endif
++ ls -la $@ $(speedtest1-kvvfs.wasm)
++
++speedtest1: $(speedtest1-kvvfs.js)
--- /dev/null
--- /dev/null
++<!doctype html>
++<html lang="en-us">
++ <head>
++ <meta charset="utf-8">
++ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
++ <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon">
++ <link rel="stylesheet" href="common/emscripten.css"/>
++ <link rel="stylesheet" href="common/testing.css"/>
++ <title>speedtest1.wasm</title>
++ </head>
++ <body>
++ <header id='titlebar'><span>speedtest1.wasm</span></header>
++ <div>See also: <a href='speedtest1-worker.html'>A Worker-thread variant of this page.</a></div>
++ <!-- emscripten bits -->
++ <figure id="module-spinner">
++ <div class="spinner"></div>
++ <div class='center'><strong>Initializing app...</strong></div>
++ <div class='center'>
++ On a slow internet connection this may take a moment. If this
++ message displays for "a long time", intialization may have
++ failed and the JavaScript console may contain clues as to why.
++ </div>
++ </figure>
++ <div class="emscripten" id="module-status">Downloading...</div>
++ <div class="emscripten">
++ <progress value="0" max="100" id="module-progress" hidden='1'></progress>
++ </div><!-- /emscripten bits -->
++ <div class='warning'>This page starts running the main exe when it loads, which will
++ block the UI until it finishes! Adding UI controls to manually configure and start it
++ are TODO.</div>
++ </div>
++ <div class='warning'>Achtung: running it with the dev tools open may
++ <em>drastically</em> slow it down. For faster results, keep the dev
++ tools closed when running it!
++ </div>
++ <div>Output is delayed/buffered because we cannot update the UI while the
++ speedtest is running. Output will appear below when ready...
++ <div id='test-output'></div>
++ <script src="common/whwasmutil.js"></script>
++ <script src="common/SqliteTestUtil.js"></script>
++ <script src="speedtest1-kvvfs.js"></script>
++ <script>(function(){
++ const eOut = document.querySelector('#test-output');
++ const log2 = function(cssClass,...args){
++ const ln = document.createElement('div');
++ if(cssClass) ln.classList.add(cssClass);
++ ln.append(document.createTextNode(args.join(' ')));
++ eOut.append(ln);
++ };
++ const logList = [
++ ] /* We can't update DOM while speedtest and kvvfs only works
++ in the main thread, so we queue up main()-time output
++ into logList. */;
++ const dumpLogList = function(){
++ logList.forEach((v)=>log2('',v));
++ logList.length = 0;
++ };
++ const log = (...args)=>{
++ console.log(...args);
++ logList.push(args.join(' '));
++ };
++ const logErr = function(...args){
++ console.error(...args);
++ logList.push('ERROR: '+args.join(' '));
++ };
++ const clearStorage = function(){
++ sessionStorage.clear();
++ localStorage.clear();
++ };
++ const runTests = function(EmscriptenModule){
++ console.log("Module inited.",EmscriptenModule);
++
++ const wasm = {
++ exports: EmscriptenModule.asm,
++ alloc: (n)=>EmscriptenModule._malloc(n),
++ dealloc: (m)=>EmscriptenModule._free(m),
++ memory: EmscriptenModule.asm.memory || EmscriptenModule.wasmMemory
++ };
++ log2('warning',"Clearing session/local storage before test starts.");
++ clearStorage();
++ //console.debug('wasm =',wasm);
++ self.WhWasmUtilInstaller(wasm);
++ const scope = wasm.scopedAllocPush();
++ const dbFile = 0 ? "session" : "local";
++ const urlArgs = self.SqliteTestUtil.processUrlArgs();
++ const argv = ["speedtest1", "--size", "1"];
++ if(urlArgs.flags){
++ // transform flags=a,b,c to ["--a", "--b", "--c"]
++ argv.push(...(urlArgs.flags.split(',').map((v)=>'--'+v)));
++ }else{
++ argv.push(
++ "--singlethread",
++ "--nomutex",
++ "--nosync",
++ "--nomemstat"
++ );
++ //argv.push("--memdb" /* note that memdb trumps the filename arg */);
++ argv.push("--big-transactions"/*important for tests 410 and 510!*/,
++ dbFile);
++ }
++ console.log("argv =",argv);
++ // These log messages are not emitted to the UI until after main() returns. Fixing that
++ // requires moving the main() call and related cleanup into a timeout handler.
++ log2('',"Starting native app:\n ",argv.join(' '));
++ log2('',"This will take a while and the browser might warn about the runaway JS.",
++ "Give it time...");
++ logList.length = 0;
++ new Promise(function(resolve,reject){
++ setTimeout(function(){
++ try {
++ wasm.xCall('__main_argc_argv', argv.length,
++ wasm.scopedAllocMainArgv(argv));
++ }catch(e){
++ reject(e);
++ }
++ resolve();
++ }, 50);
++ }).finally(function(){
++ wasm.scopedAllocPop(scope);
++ logList.unshift("Done running native main(). Output:");
++ dumpLogList();
++ log2('warning',"Clearing session/local storage.");
++ clearStorage();
++ });
++ }/*runTests()*/;
++
++ self.sqlite3TestModule.print = log;
++ self.sqlite3TestModule.printErr = logErr;
++ sqlite3Speedtest1InitModule(self.sqlite3TestModule).then(function(M){
++ setTimeout(()=>runTests(M), 100);
++ });
++ })();
++ </script>
++ </body>
++</html>
- C Add\ssqlite3.oo1.DB.clearKvvfsStorage().\sAdd\scontrols\sto\skvvfs1.js\sdemo\sto\sreset\sand\squery\sthe\sdb\swithout\srequiring\sthe\sdev\sconsole.
- D 2022-09-12T17:59:04.237
-C Fix\sthe\s<sys/time.h>\sinclude\sin\sos_kv.c.
-D 2022-09-12T19:33:20.055
++C Merge\skv-vfs\sbranch\sinto\sfiddle-opfs\sand\sadd\sspeedtest1-kvvfs.html\stest\sapp\s(which\scurrently\sfails\searly\son).
++D 2022-09-12T20:18:28.723
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
F ext/userauth/sqlite3userauth.h 7f3ea8c4686db8e40b0a0e7a8e0b00fac13aa7a3
F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04
F ext/userauth/userauth.c 7f00cded7dcaa5d47f54539b290a43d2e59f4b1eb5f447545fa865f002fc80cb
-F ext/wasm/EXPORTED_FUNCTIONS.fiddle 7fb73f7150ab79d83bb45a67d257553c905c78cd3d693101699243f36c5ae6c3
+F ext/wasm/EXPORTED_FUNCTIONS.fiddle db7a4602f043cf4a5e4135be3609a487f9f1c83f05778bfbdf93766be4541b96
F ext/wasm/EXPORTED_RUNTIME_METHODS.fiddle a004bd5eeeda6d3b28d16779b7f1a80305bfe009dfc7f0721b042967f0d39d02
- F ext/wasm/GNUmakefile 6e642a0dc7ac43d9287e8f31c80ead469ddc7475a6d4ab7ac3b1feefcd4f7279
-F ext/wasm/GNUmakefile 12a672ab9125dc860457c2853f7651b98517e424d7a0e9714c89b28c5ff73800
-F ext/wasm/README.md 4b00ae7c7d93c4591251245f0996a319e2651361013c98d2efb0b026771b7331
-F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api c5eaceabb9e759aaae7d3101a4a3e542f96ab2c99d89a80ce20ec18c23115f33
++F ext/wasm/GNUmakefile 0434268aa7e042ec265c13e85a82cc3a760be02851ba428aa996a36d4ba77dfd
+F ext/wasm/README.md e1ee1e7c321c6a250bf78a84ca6f5882890a237a450ba5a0649c7a8399194c52
+F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api 1dfd067b3cbd9a49cb204097367cf2f8fe71b5a3b245d9d82a24779fd4ac2394
F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de2470b0e9e7fbf7a5b41261c367cf4f1b7287
-F ext/wasm/api/README.md b6d0fb64bfdf7bf9ce6938ea4104228f6f5bbef600f5d910b2f8c8694195988c
+F ext/wasm/api/README.md d876597edd2b9542b6ea031adaaff1c042076fde7b670b1dc6d8a87b28a6631b
F ext/wasm/api/post-js-footer.js b64319261d920211b8700004d08b956a6c285f3b0bba81456260a713ed04900c
F ext/wasm/api/post-js-header.js 0e853b78db83cb1c06b01663549e0e8b4f377f12f5a2d9a4a06cb776c003880b
-F ext/wasm/api/sqlite3-api-cleanup.js 149fd63a0400cd1d69548887ffde2ed89c13283384a63c2e9fcfc695e38a9e11
-F ext/wasm/api/sqlite3-api-glue.js 82c09f49c69984009ba5af2b628e67cc26c5dd203d383cd3091d40dab4e6514b
-F ext/wasm/api/sqlite3-api-oo1.js e9612cb704c0563c5d71ed2a8dccd95bf6394fa4de3115d1b978dc269c49ab02
-F ext/wasm/api/sqlite3-api-opfs.js c93cdd14f81a26b3a64990515ee05c7e29827fbc8fba4e4c2fef3a37a984db89
-F ext/wasm/api/sqlite3-api-prologue.js 0fb0703d2d8ac89fa2d4dd8f9726b0ea226b8708ac34e5b482df046e147de0eb
-F ext/wasm/api/sqlite3-api-worker.js 1124f404ecdf3c14d9f829425cef778cd683911a9883f0809a463c3c7773c9fd
+F ext/wasm/api/sqlite3-api-cleanup.js 101919ec261644e2f6f0a59952fd9612127b69ea99b493277b2789ea478f9b6b
+F ext/wasm/api/sqlite3-api-glue.js 2bf536a38cde324cf352bc2c575f8e22c6d204d667c0eda5a254ba45318914bc
+F ext/wasm/api/sqlite3-api-oo1.js b498662748918c132aa59433ea2bd2ebb7e026549fd68506a1ae1ea94736f4f6
+F ext/wasm/api/sqlite3-api-opfs.js 011799db398157cbd254264b6ebae00d7234b93d0e9e810345f213a5774993c0
+F ext/wasm/api/sqlite3-api-prologue.js 9e37ce4dfd74926d0df80dd7e72e33085db4bcee48e2c21236039be416a7dff2
+F ext/wasm/api/sqlite3-api-worker1.js d33062afa045fd4be01ba4abc266801807472558b862b30056211b00c9c347b4
F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9
-F ext/wasm/api/sqlite3-wasm.c 8585793ca8311c7a0618b7e00ed2b3729799c20664a51f196258576e3d475c9e
-F ext/wasm/api/sqlite3-worker.js 1325ca8d40129a82531902a3a077b795db2eeaee81746e5a0c811a04b415fa7f
-F ext/wasm/common/SqliteTestUtil.js e41a1406f18da9224523fad0c48885caf995b56956a5b9852909c0989e687e90
+F ext/wasm/api/sqlite3-wasm.c bf4637cf28463cada4b25f09651943c7ece004b253ef39b7ab68eaa60662aa09
+F ext/wasm/batch-runner.html 23209ade7981acce7ecd79d6eff9f4c5a4e8b14ae867ac27cd89b230be640fa6
+F ext/wasm/batch-runner.js 2abd146d3e3a66128ac0a2cc39bfd01e9811c9511fa10ec927d6649795f1ee50
+F ext/wasm/common/SqliteTestUtil.js 529161a624265ba84271a52db58da022649832fa1c71309fb1e02cc037327a2b
F ext/wasm/common/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f
-F ext/wasm/common/testing.css 572cf1ffae0b6eb7ca63684d3392bf350217a07b90e7a896e4fa850700c989b0
-F ext/wasm/common/whwasmutil.js 3d9deda1be718e2b10e2b6b474ba6ba857d905be314201ae5b3df5eef79f66aa
+F ext/wasm/common/testing.css 3a5143699c2b73a85b962271e1a9b3241b30d90e30d895e4f55665e648572962
+F ext/wasm/common/whwasmutil.js f7282ef36c9625330d4e6e82d1beec6678cd101e95e7108cd85db587a788c145
+F ext/wasm/demo-oo1.html 75646855b38405d82781246fd08c852a2b3bee05dd9f0fe10ab655a8cffb79aa
+F ext/wasm/demo-oo1.js 477f230cce3455e701431436d892d8c6bfea2bdf1ddcdd32a273e2f4bb339801
F ext/wasm/fiddle/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f
-F ext/wasm/fiddle/fiddle-worker.js 88bc2193a6cb6a3f04d8911bed50a4401fe6f277de7a71ba833865ab64a1b4ae
+F ext/wasm/fiddle/fiddle-worker.js bccf46045be8824752876f3eec01c223be0616ccac184bffd0024cfe7a3262b8
F ext/wasm/fiddle/fiddle.html 550c5aafce40bd218de9bf26192749f69f9b10bc379423ecd2e162bcef885c08
-F ext/wasm/fiddle/fiddle.js 812f9954cc7c4b191884ad171f36fcf2d0112d0a7ecfdf6087896833a0c079a8
-F ext/wasm/jaccwabyt/jaccwabyt.js 99b424b4d467d4544e82615b58e2fe07532a898540bf9de2a985f3c21e7082b2
+F ext/wasm/fiddle/fiddle.js 4ffcfc9a235beebaddec689a549e9e0dfad6dca5c1f0b41f03468d7e76480686
- F ext/wasm/index.html 5876ae0442bef5b37fec9a45ee0722798e47ef727723ada742d33554845afa6a
++F ext/wasm/index.html f4b04f866ac420e7037b3818e9cb73ccc059675e0f24482932a2f7a121b814e3
+F ext/wasm/jaccwabyt/jaccwabyt.js 0d7f32817456a0f3937fcfd934afeb32154ca33580ab264dab6c285e6dbbd215
F ext/wasm/jaccwabyt/jaccwabyt.md 447cc02b598f7792edaa8ae6853a7847b8178a18ed356afacbdbf312b2588106
F ext/wasm/jaccwabyt/jaccwabyt_test.c 39e4b865a33548f943e2eb9dd0dc8d619a80de05d5300668e9960fff30d0d36f
F ext/wasm/jaccwabyt/jaccwabyt_test.exports 5ff001ef975c426ffe88d7d8a6e96ec725e568d2c2307c416902059339c06f19
- F ext/wasm/kvvfs.make dba616578bf91a76370a46494dd68a09c6dff5beb6d5561e2db65a27216e9630
-F ext/wasm/kvvfs.make 7cc9cf10e744c3ba523c3eaf5c4af47028f3a5bb76db304ea8044a9b2a9d496f
-F ext/wasm/kvvfs1.html 2acb241a6110a4ec581adbf07a23d5fc2ef9c7142aa9d60856732a102abc5016
-F ext/wasm/kvvfs1.js 46afaf4faba041bf938355627bc529854295e561f49db3a240c914e75a529338
-F ext/wasm/testing1.html 0bf3ff224628c1f1e3ed22a2dc1837c6c73722ad8c0ad9c8e6fb9e6047667231
-F ext/wasm/testing1.js cba7134901a965743fa9289d82447ab71de4690b1ee5d06f6cb83e8b569d7943
-F ext/wasm/testing2.html 73e5048e666fd6fb28b6e635677a9810e1e139c599ddcf28d687c982134b92b8
-F ext/wasm/testing2.js d37433c601f88ed275712c1cfc92d3fb36c7c22e1ed8c7396fb2359e42238ebc
++F ext/wasm/kvvfs.make 1858354b02ebdccc459fb2d235552f8951d6ce28340083da9bb230bcf2533789
+F ext/wasm/kvvfs1.html 83bac238d1e93ed102a461672fc58fe74e611e426708e9a5c66002c01eadb942
+F ext/wasm/kvvfs1.js 53721a42e0ec45f6978cc723e5de47f882517867d0fcff4c6ff05f4c422e27c4
+F ext/wasm/scratchpad-opfs-main.html 4565cf194e66188190d35f70e82553e2e2d72b9809b73c94ab67b8cfd14d2e0c
+F ext/wasm/scratchpad-opfs-main.js 69e960e9161f6412fd0c30f355d4112f1894d6609eb431e2d16d207d1380518e
+F ext/wasm/scratchpad-opfs-worker.html 66c1d15d678f3bd306373d76b61c6c8aef988f61f4a8dd40185d452f9c6d2bf5
+F ext/wasm/scratchpad-opfs-worker.js 3ec2868c669713145c76eb5877c64a1b20741f741817b87c907a154b676283a9
+F ext/wasm/scratchpad-opfs-worker2.js 5f2237427ac537b8580b1c659ff14ad2621d1694043eaaf41ae18dbfef2e48c0
++F ext/wasm/speedtest1-kvvfs.html fe7d314343b275f8b241af83267ca56274ea995535c6abca4d6e568a98fa31e3
+F ext/wasm/speedtest1-worker.html 6b5fda04d0b69e8c2651689356cb0c28fd33aa1a82b03dcbc8b0d68fbd7ed57f
+F ext/wasm/speedtest1-worker.js 356b9953add4449acf199793db9b76b11ee016021918d8daffd19f08ec68d305
+F ext/wasm/speedtest1.html 8f61cbe68300acca25dd9fa74dce79b774786e2b4feeb9bcbc46e1cefbfa6262
+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-worker1-promiser.js 92b8da5f38439ffec459a8215775d30fa498bc0f1ab929ff341fc3dd479660b9
+F ext/wasm/sqlite3-worker1.js 0c1e7626304543969c3846573e080c082bf43bcaa47e87d416458af84f340a9e
+F ext/wasm/testing-worker1-promiser.html 6eaec6e04a56cf24cf4fa8ef49d78ce8905dde1354235c9125dca6885f7ce893
+F ext/wasm/testing-worker1-promiser.js c62b5879339eef0b21aebd9d75bc125c86530edc17470afff18077f931cb704a
+F ext/wasm/testing1.html 528001c7e32ee567abc195aa071fd9820cc3c8ffc9c8a39a75e680db05f0c409
+F ext/wasm/testing1.js 2def7a86c52ff28b145cb86188d5c7a49d5993f9b78c50d140e1c31551220955
+F ext/wasm/testing2.html a66951c38137ff1d687df79466351f3c734fa9c6d9cce71d3cf97c291b2167e3
+F ext/wasm/testing2.js 25584bcc30f19673ce13a6f301f89f8820a59dfe044e0c4f2913941f4097fe3c
F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
F magic.txt 8273bf49ba3b0c8559cb2774495390c31fd61c60
F src/os.c 0eb831ba3575af5277e47f4edd14fdfc90025c67eb25ce5cda634518d308d4e9
F src/os.h 1ff5ae51d339d0e30d8a9d814f4b8f8e448169304d83a7ed9db66a65732f3e63
F src/os_common.h b2f4707a603e36811d9b1a13278bffd757857b85
- F src/os_kv.c a188e92dac693b1c1b512d93b0c4dc85c1baad11e322b01121f87057996e4d11
-F src/os_kv.c 395b3ab831e0d2b172e6dccf6bae3e21b141f3b6d8b3aa828630634edac2604d
++F src/os_kv.c f3c5f46f62ed495c7d17c752f58f250c04b944c9cf34060518511e4e7537658c
F src/os_setup.h 0711dbc4678f3ac52d7fe736951b6384a0615387c4ba5135a4764e4e31f4b6a6
- F src/os_unix.c d6322b78130d995160bb9cfb7850678ad6838b08c1d13915461b33326a406c04
+ F src/os_unix.c 0fa91925f0b8831fc0156a9c04d39d86f85baf9eef66c98712395e1715cb75cc
-F src/os_win.c e9454cb141908e8eef2102180bad353a36480612d5b736e4c2bd5777d9b25a34
+F src/os_win.c 8d129ae3e59e0fa900e20d0ad789e96f2e08177f0b00b53cdda65c40331e0902
F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
F src/pager.c 6176d9752eb580419e8fef4592dc417a6b00ddfd43ee22f818819bf8840ceee8
F src/pager.h f82e9844166e1585f5786837ddc7709966138ced17f568c16af7ccf946c2baa3
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
- P a7d8b26acd3c1ae344369e4d70804c0cab45272c0983cfd32d616a0a7b28acb9
- R 984d02350bb7056e7ff7dbf797b44085
-P e393ed650ef124143f84e9d787fb996e308dd7af6b8f50df72a6f085b67bf9c3
-R 7d043d1f24831e04bac4a09dedf809ea
-U drh
-Z f4bc361a8f5540cb46c54b92ebd31edc
++P d845c6c22bd5d3fffc66e0566df346d690dd8bd1fc1688e312161b1a1edcfd79 878cc93e779c3857adc711f212520f007256274fcd3f6f3d72c754a937fcd198
++R af6be1e15f44117c1188e0c623230580
+U stephan
- Z f41406c18c315f5b1f10f4c607ad1f16
++Z 1b00f3836ac4e8ae817bece731c1dd12
# Remove this line to create a well-formed Fossil manifest.
- d845c6c22bd5d3fffc66e0566df346d690dd8bd1fc1688e312161b1a1edcfd79
-878cc93e779c3857adc711f212520f007256274fcd3f6f3d72c754a937fcd198
++8b1608a9a37131121cb3a0cb1e8dbad5e39dc1fc2a341d056f09537f179b2e7a
try {
const zXKey = kvstorageMakeKeyOnJSStack(zClass,zKey);
if(!zXKey) return 1/*OOM*/;
-- _sqlite3_wasm__kvvfsMakeKey(zClass, zKey, zXKey);
const jKey = UTF8ToString(zXKey);
((115/*=='s'*/===getValue(zClass))
? sessionStorage : localStorage).removeItem(jKey);