diff options
author | stephan <stephan@noemail.net> | 2022-10-19 01:07:30 +0000 |
---|---|---|
committer | stephan <stephan@noemail.net> | 2022-10-19 01:07:30 +0000 |
commit | 71de8e02416aa9a4ad90ac6958ff3fa025a33d2d (patch) | |
tree | 0c2b079d3d1015cbbc4af3dfd08107e96d2e2d1d | |
parent | b5e2e6fcd39901f3280a4bbbfec7f41d4bcc48f8 (diff) | |
download | sqlite-71de8e02416aa9a4ad90ac6958ff3fa025a33d2d.tar.gz sqlite-71de8e02416aa9a4ad90ac6958ff3fa025a33d2d.zip |
Considerable wasm/js build cleanups and reworking. Remove wasmfs builds from the end-user deliverables and disable the wasmfs build by default, per /chat discussion, as it doubles our deliverable count for only marginal gain. Attempt to move the sqlite3.js/wasm files into subdirectories but rediscovered that that breaks loading in Worker mode because URI resolution of the wasm files differs depending on whether the main script is loaded from a script tag or a Worker.
FossilOrigin-Name: 5b23e0675efdd2f1ea7b4f5836a579e8d6aa8a25b3f1a6a950520ad845ff01bb
-rw-r--r-- | ext/wasm/EXPORTED_RUNTIME_METHODS.fiddle | 15 | ||||
-rw-r--r-- | ext/wasm/GNUmakefile | 155 | ||||
-rw-r--r-- | ext/wasm/README-dist.txt | 28 | ||||
-rw-r--r-- | ext/wasm/api/extern-post-js.js | 8 | ||||
-rw-r--r-- | ext/wasm/api/sqlite3-api-prologue.js | 1 | ||||
-rw-r--r-- | ext/wasm/api/sqlite3-wasm.c | 2 | ||||
-rw-r--r-- | ext/wasm/dist.make | 31 | ||||
-rw-r--r-- | ext/wasm/fiddle.make | 11 | ||||
-rw-r--r-- | ext/wasm/index.html | 10 | ||||
-rw-r--r-- | ext/wasm/sqlite3-worker1.js | 22 | ||||
-rw-r--r-- | ext/wasm/testing1.html | 36 | ||||
-rw-r--r-- | ext/wasm/wasmfs.make | 29 | ||||
-rw-r--r-- | manifest | 32 | ||||
-rw-r--r-- | manifest.uuid | 2 |
14 files changed, 185 insertions, 197 deletions
diff --git a/ext/wasm/EXPORTED_RUNTIME_METHODS.fiddle b/ext/wasm/EXPORTED_RUNTIME_METHODS.fiddle deleted file mode 100644 index 5e80f703a..000000000 --- a/ext/wasm/EXPORTED_RUNTIME_METHODS.fiddle +++ /dev/null @@ -1,15 +0,0 @@ -FS -addFunction -allocateUTF8OnStack -ccall -cwrap -getValue -intArrayFromString -lengthBytesUTF8 -removeFunction -setValue -stackAlloc -stackRestore -stackSave -stringToUTF8Array -wasmMemory diff --git a/ext/wasm/GNUmakefile b/ext/wasm/GNUmakefile index 881eabfac..f461f8b46 100644 --- a/ext/wasm/GNUmakefile +++ b/ext/wasm/GNUmakefile @@ -1,4 +1,4 @@ -######################################################################## +####################################################################### # This GNU makefile drives the build of the sqlite3 WASM # components. It is not part of the canonical build process. # @@ -22,8 +22,10 @@ ######################################################################## SHELL := $(shell which bash 2>/dev/null) MAKEFILE := $(lastword $(MAKEFILE_LIST)) +CLEAN_FILES := +DISTCLEAN_FILES := ./--dummy-- default: all -release: default +release: oz # Emscripten SDK home dir and related binaries... EMSDK_HOME ?= $(word 1,$(wildcard $(HOME)/src/emsdk $(HOME)/emsdk)) @@ -58,15 +60,50 @@ else endif dir.top := ../.. -# Reminder: some Emscripten flags require absolute paths -dir.wasm := $(patsubst %/,%,$(dir $(abspath $(MAKEFILE)))) +# Reminder: some Emscripten flags require absolute paths but we want +# relative paths for most stuff simply to reduce noise. The +# $(abspath...) GNU make function can transform relative paths to +# absolute. +dir.wasm := $(patsubst %/,%,$(dir $(MAKEFILE))) dir.api := api dir.jacc := jaccwabyt dir.common := common dir.fiddle := fiddle dir.tool := $(dir.top)/tool -CLEAN_FILES := *~ $(dir.jacc)/*~ $(dir.api)/*~ $(dir.common)/*~ -DISTCLEAN_FILES := ./-dummy +######################################################################## +# MAINTENANCE REMINDER: the output .js and .wasm files of emcc must be +# in _this_ dir, rather than a subdir, or else parts of the generated +# code get confused and cannot load property. Specifically, when X.js +# loads X.wasm, whether or not X.js uses the correct path for X.wasm +# depends on how it's loaded: an HTML script tag will resolve it +# intuitively, whereas a Worker's call to importScripts() will not. +# That's a fundamental incompatibility with how URL resolution in +# JS happens between those two contexts. See: +# +# https://zzz.buzz/2017/03/14/relative-uris-in-web-development/ +# +# We unfortunately have no way, from Worker-initiated code, to +# automatically resolve the path from X.js to X.wasm. +# +# In case we ever find a solution to that which does not require +# duplicating the X.js files only to swap out the path to X.wasm for +# the loading-from-worker case... +# +# dir.dout = output dir for deliverables. +dir.dout := $(dir.wasm) +# dir.tmp = output dir for intermediary build files, as opposed to +# end-user deliverables. +dir.tmp := $(dir.wasm)/bld +#CLEAN_FILES += $(wildcard $(dir.dout)/*) $(wildcard $(dir.tmp)/*) +ifeq (,$(wildcard $(dir.dout))) + dir._tmp := $(shell mkdir -p $(dir.dout)) +endif +ifeq (,$(wildcard $(dir.tmp))) + dir._tmp := $(shell mkdir -p $(dir.tmp)) +endif + +cflags.common := -I. -I.. -I$(dir.top) +CLEAN_FILES += *~ $(dir.jacc)/*~ $(dir.api)/*~ $(dir.common)/*~ emcc_enable_bigint ?= 1 sqlite3.c := $(dir.top)/sqlite3.c sqlite3.h := $(dir.top)/sqlite3.h @@ -149,6 +186,8 @@ else endif version-info := $(dir.wasm)/version-info +# ^^^^ NOT in $(dir.tmp) because we need it to survive the cleanup +# process for the dist build to work properly. $(version-info): $(dir.wasm)/version-info.c $(sqlite3.h) $(MAKEFILE) $(CC) -O0 -I$(dir.top) -o $@ $< DISTCLEAN_FILES += $(version-info) @@ -158,15 +197,16 @@ $(stripccomments): $(stripccomments).c $(MAKEFILE) $(CC) -o $@ $< DISTCLEAN_FILES += $(stripccomments) -EXPORTED_FUNCTIONS.api.in := $(dir.api)/EXPORTED_FUNCTIONS.sqlite3-api - -EXPORTED_FUNCTIONS.api: $(EXPORTED_FUNCTIONS.api.in) $(MAKEFILE) +EXPORTED_FUNCTIONS.api.in := $(abspath $(dir.api)/EXPORTED_FUNCTIONS.sqlite3-api) +EXPORTED_FUNCTIONS.api := $(dir.tmp)/EXPORTED_FUNCTIONS.api +$(EXPORTED_FUNCTIONS.api): $(EXPORTED_FUNCTIONS.api.in) $(MAKEFILE) cat $(EXPORTED_FUNCTIONS.api.in) > $@ -CLEAN_FILES += EXPORTED_FUNCTIONS.api -sqlite3-license-version.js := sqlite3-license-version.js +sqlite3-license-version.js := $(dir.tmp)/sqlite3-license-version.js sqlite3-license-version-header.js := $(dir.api)/sqlite3-license-version-header.js -sqlite3-api-build-version.js := $(dir.api)/sqlite3-api-build-version.js +sqlite3-api-build-version.js := $(dir.tmp)/sqlite3-api-build-version.js +# sqlite3-api.jses = the list of JS files which make up $(sqlite3-api.js), in +# the order they need to be assembled. sqlite3-api.jses := $(sqlite3-license-version.js) sqlite3-api.jses += $(dir.api)/sqlite3-api-prologue.js sqlite3-api.jses += $(dir.common)/whwasmutil.js @@ -178,10 +218,7 @@ sqlite3-api.jses += $(dir.api)/sqlite3-api-worker1.js sqlite3-api.jses += $(dir.api)/sqlite3-api-opfs.js sqlite3-api.jses += $(dir.api)/sqlite3-api-cleanup.js -sqlite3-api.js := sqlite3-api.js -CLEAN_FILES += $(sqlite3-api.js) -CLEAN_FILES += $(sqlite3-license-version.js) -CLEAN_FILES += $(sqlite3-api-build-version.js) +sqlite3-api.js := $(dir.tmp)/sqlite3-api.js $(sqlite3-api.js): $(sqlite3-api.jses) $(MAKEFILE) @echo "Making $@..." @for i in $(sqlite3-api.jses); do \ @@ -190,7 +227,7 @@ $(sqlite3-api.js): $(sqlite3-api.jses) $(MAKEFILE) echo "/* END FILE: $$i */"; \ done > $@ -$(sqlite3-api-build-version.js): $(version-info) +$(sqlite3-api-build-version.js): $(version-info) $(MAKEFILE) @echo "Making $@..." @{ \ echo 'self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){'; \ @@ -204,8 +241,7 @@ $(sqlite3-api-build-version.js): $(version-info) # --post-js and --pre-js are emcc flags we use to append/prepend JS to # the generated emscripten module file. pre-js.js := $(dir.api)/pre-js.js -post-js.js := post-js.js -CLEAN_FILES += $(post-js.js) +post-js.js := $(dir.tmp)/post-js.js post-jses := \ $(dir.api)/post-js-header.js \ $(sqlite3-api.js) \ @@ -222,7 +258,7 @@ extern-pre-js.js := $(dir.api)/extern-pre-js.js pre-post-common.flags := \ --post-js=$(post-js.js) \ --extern-post-js=$(extern-post-js.js) \ - --extern-pre-js=$(dir.wasm)/$(sqlite3-license-version.js) + --extern-pre-js=$(sqlite3-license-version.js) pre-post-jses.deps := $(post-js.js) \ $(extern-post-js.js) $(extern-pre-js.js) $(sqlite3-license-version.js) $(sqlite3-license-version.js): $(sqlite3.h) $(sqlite3-license-version-header.js) $(MAKEFILE) @@ -275,12 +311,11 @@ emcc.jsflags += -sMODULARIZE emcc.jsflags += -sSTRICT_JS emcc.jsflags += -sDYNAMIC_EXECUTION=0 emcc.jsflags += -sNO_POLYFILL -emcc.jsflags += -sEXPORTED_FUNCTIONS=@$(dir.wasm)/EXPORTED_FUNCTIONS.api +emcc.jsflags += -sEXPORTED_FUNCTIONS=@$(EXPORTED_FUNCTIONS.api) emcc.exportedRuntimeMethods := \ - -sEXPORTED_RUNTIME_METHODS=FS,wasmMemory,allocateUTF8OnStack + -sEXPORTED_RUNTIME_METHODS=FS,wasmMemory # FS ==> stdio/POSIX I/O proxies # wasmMemory ==> required by our code for use with -sIMPORTED_MEMORY - # allocateUTF8OnStack => for kvvfs internals emcc.jsflags += $(emcc.exportedRuntimeMethods) emcc.jsflags += -sUSE_CLOSURE_COMPILER=0 emcc.jsflags += -sIMPORTED_MEMORY @@ -312,7 +347,7 @@ emcc.jsflags += -Wno-limited-postlink-optimizations emcc.jsflags += -sERROR_ON_UNDEFINED_SYMBOLS=0 emcc.jsflags += -sLLD_REPORT_UNDEFINED #emcc.jsflags += --allow-undefined -emcc.jsflags += --import-undefined +#emcc.jsflags += --import-undefined #emcc.jsflags += --unresolved-symbols=import-dynamic --experimental-pic #emcc.jsflags += --experimental-pic --unresolved-symbols=ingore-all --import-undefined #emcc.jsflags += --unresolved-symbols=ignore-all @@ -340,36 +375,22 @@ emcc.jsflags += -sWASM_BIGINT=$(emcc_enable_bigint) # debugging info, _huge_. ######################################################################## -######################################################################## -# Maintenance reminder: the output .js and .wasm files of emcc must be -# in _this_ dir, rather than a subdir, or else parts of the generated -# code get confused and cannot load property (namely, the -# sqlite3.worker.js generated in conjunction with -sWASMFS). -sqlite3.js := sqlite3.js -sqlite3.wasm := sqlite3.wasm -sqlite3-wasm.o := $(dir.api)/sqlite3-wasm.o -$(sqlite3-wasm.o): emcc.cflags += $(SQLITE_OPT) -$(sqlite3-wasm.o): $(dir.top)/sqlite3.c +sqlite3.js := $(dir.dout)/sqlite3.js +sqlite3.wasm := $(dir.dout)/sqlite3.wasm sqlite3-wasm.c := $(dir.api)/sqlite3-wasm.c -######################################################################## -# call-wasm-c-compile sets up build rules -# for $1.o. $1 must be the name of a C file (with extension). -define call-wasm-c-compile -$(1).o := $$(subst .c,.o,$(1)) -sqlite3.wasm.obj += $$($(1).o) -$$($(1).o): $$(MAKEFILE) $(1) - $$(emcc.bin) $$(emcc_opt_full) $$(emcc.flags) $$(emcc.cflags) -c $(1) -o $$@ -CLEAN_FILES += $$($(1).o) -endef -$(foreach c,$(sqlite3-wasm.c),$(eval $(call call-wasm-c-compile,$(c)))) +# 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. Thus we build all binaries against sqlite3-wasm.c +# instead of building a shared copy of sqlite3-wasm.o. $(eval $(call call-make-pre-js,sqlite3)) $(sqlite3.js): $(MAKEFILE) $(sqlite3.wasm.obj) \ - EXPORTED_FUNCTIONS.api \ + $(EXPORTED_FUNCTIONS.api) \ $(pre-post-sqlite3.deps) @echo "Building $@ ..." $(emcc.bin) -o $@ $(emcc_opt_full) $(emcc.flags) \ $(emcc.jsflags) $(pre-post-common.flags) $(pre-post-sqlite3.flags) \ - $(sqlite3.wasm.obj) + $(cflags.common) $(SQLITE_OPT) $(sqlite3-wasm.c) chmod -x $(sqlite3.wasm) $(maybe-wasm-strip) $(sqlite3.wasm) @ls -la $@ $(sqlite3.wasm) @@ -417,7 +438,8 @@ speedtest1-common.eflags += -sINITIAL_MEMORY=128450560 speedtest1-common.eflags += -sSTRICT_JS speedtest1-common.eflags += -sMODULARIZE speedtest1-common.eflags += -Wno-limited-postlink-optimizations -speedtest1-common.eflags += -sEXPORTED_FUNCTIONS=@$(dir.wasm)/EXPORTED_FUNCTIONS.speedtest1 +EXPORTED_FUNCTIONS.speedtest1 := $(abspath $(dir.tmp)/EXPORTED_FUNCTIONS.speedtest1) +speedtest1-common.eflags += -sEXPORTED_FUNCTIONS=@$(EXPORTED_FUNCTIONS.speedtest1) speedtest1-common.eflags += $(emcc.exportedRuntimeMethods) speedtest1-common.eflags += -sALLOW_TABLE_GROWTH speedtest1-common.eflags += -sDYNAMIC_EXECUTION=0 @@ -444,31 +466,24 @@ speedtest1.exit-runtime1 := -sEXIT_RUNTIME=1 # -sEXIT_RUNTIME=1 but we need EXIT_RUNTIME=0 for the worker-based app # which runs speedtest1 multiple times. -EXPORTED_FUNCTIONS.speedtest1: EXPORTED_FUNCTIONS.api - { echo _wasm_main; cat EXPORTED_FUNCTIONS.api; } > $@ -CLEAN_FILES += EXPORTED_FUNCTIONS.speedtest1 -speedtest1.js := speedtest1.js +$(EXPORTED_FUNCTIONS.speedtest1): $(EXPORTED_FUNCTIONS.api) + @echo "Making $@ ..." + @{ echo _wasm_main; cat $(EXPORTED_FUNCTIONS.api); } > $@ +speedtest1.js := $(dir.dout)/speedtest1.js speedtest1.wasm := $(subst .js,.wasm,$(speedtest1.js)) -speedtest1.cflags := \ - -I. -I.. -I$(dir.top) \ - -DSQLITE_SPEEDTEST1_WASM -speedtest1.cs := $(speedtest1.c) $(sqlite3-wasm.c) -$(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.cflags := $(cflags.common) -DSQLITE_SPEEDTEST1_WASM +speedtest1.cses := $(speedtest1.c) $(sqlite3-wasm.c) $(eval $(call call-make-pre-js,speedtest1)) -$(speedtest1.js): $(MAKEFILE) $(speedtest1.cs) \ +$(speedtest1.js): $(MAKEFILE) $(speedtest1.cses) \ $(pre-post-speedtest1.deps) \ - EXPORTED_FUNCTIONS.speedtest1 + $(EXPORTED_FUNCTIONS.speedtest1) @echo "Building $@ ..." $(emcc.bin) \ $(speedtest1.eflags) $(speedtest1-common.eflags) $(speedtest1.cflags) \ $(pre-post-speedtest1.flags) \ $(SQLITE_OPT) \ $(speedtest1.exit-runtime0) \ - -o $@ $(speedtest1.cs) -lm + -o $@ $(speedtest1.cses) -lm $(maybe-wasm-strip) $(speedtest1.wasm) ls -la $@ $(speedtest1.wasm) @@ -531,6 +546,13 @@ oz: clean include fiddle.make +ifneq (,$(filter wasmfs,$(MAKECMDGOALS))) +# wasmfs build disabled 2022-10-19 per /chat +# discussion. OPFS-over-wasmfs was initially a stopgap measure and a +# convenient point of comparison for the OPFS sqlite3_vfs's +# performance, but it currently doubles our deliverables for very +# little, if any, benefit. +# ######################################################################## # Some platforms do not support the WASMFS build. Raspberry Pi OS is one # of them. As such platforms are discovered, add their (uname -m) name @@ -544,9 +566,12 @@ else HAVE_WASMFS := 1 include wasmfs.make endif +endif +# /wasmfs +######################################################################## ######################################################################## -# Create deliverables: TODO +# Create deliverables: ifneq (,$(filter dist,$(MAKECMDGOALS))) include dist.make endif diff --git a/ext/wasm/README-dist.txt b/ext/wasm/README-dist.txt index bbc82a1df..422f3f1e0 100644 --- a/ext/wasm/README-dist.txt +++ b/ext/wasm/README-dist.txt @@ -4,23 +4,21 @@ Main project page: https://sqlite.org TODO: link to main WASM/JS docs, once they are online -This archive contains two related deliverables: +This archive contains the sqlite3.js and sqlite3.wasm file which make +up the sqlite3 WASM/JS build. -- ./main contains the sqlite3.js and sqlite3.wasm file which make up - the standard sqlite3 WASM/JS build. - -- ./wasmfs contains a build of those files which includes the - Emscripten WASMFS[^1]. It offers an alternative approach - to accessing the browser-side Origin-Private FileSystem - but is less portable than the main build, so is provided - as a separate binary. - -Both directories contain small demonstration and test apps. Browsers -will not serve WASM files from file:// URLs, so the demo/test apps -require a web server and that server must include the following -headers in its response when serving the files: +The jswasm directory contains both the main deliverables and small +demonstration and test apps. Browsers will not serve WASM files from +file:// URLs, so the demo/test apps require a web server and that +server must include the following headers in its response when serving +the files: Cross-Origin-Opener-Policy: same-origin Cross-Origin-Embedder-Policy: require-corp -[^1]: https://emscripten.org +The files named sqlite3*.js and sqlite3.wasm belong to the core +sqlite3 deliverables and the others are soley for demonstration and +may be discarded. They are not in separate directories from the main +deliverables because a quirk of URI resolution in JS code would then +require that sqlite3.js be duplicated and edited for Worker-loaded +operation. diff --git a/ext/wasm/api/extern-post-js.js b/ext/wasm/api/extern-post-js.js index 51e8d12b2..7dba03b3a 100644 --- a/ext/wasm/api/extern-post-js.js +++ b/ext/wasm/api/extern-post-js.js @@ -43,3 +43,11 @@ self.sqlite3InitModule.ready = originalInit.ready; //console.warn("Replaced sqlite3InitModule()"); })(); + +if(0){ + console.warn("self.location.href =",self.location.href); + if('undefined' !== typeof document){ + console.warn("document.currentScript.src =", + document?.currentScript?.src); + } +} diff --git a/ext/wasm/api/sqlite3-api-prologue.js b/ext/wasm/api/sqlite3-api-prologue.js index 7d9ae9691..f8c0f024e 100644 --- a/ext/wasm/api/sqlite3-api-prologue.js +++ b/ext/wasm/api/sqlite3-api-prologue.js @@ -1158,7 +1158,6 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap( */ capi.sqlite3_web_db_export = function(pDb){ if(!pDb) toss('Invalid sqlite3* argument.'); - const wasm = wasm; if(!wasm.bigIntEnabled) toss('BigInt64 support is not enabled.'); const stack = wasm.pstack.pointer; let pOut; diff --git a/ext/wasm/api/sqlite3-wasm.c b/ext/wasm/api/sqlite3-wasm.c index 26771d5c9..cda4e7ae2 100644 --- a/ext/wasm/api/sqlite3-wasm.c +++ b/ext/wasm/api/sqlite3-wasm.c @@ -1007,7 +1007,7 @@ int sqlite3_wasm_init_wasmfs(const char *zMountPoint){ hypothetically suffice for the transient wasm-based virtual filesystem we're currently running in. */ const int rc = wasmfs_create_directory(zMountPoint, 0777, pOpfs); - emscripten_console_logf("OPFS mkdir(%s) rc=%d", zMountPoint, rc); + /*emscripten_console_logf("OPFS mkdir(%s) rc=%d", zMountPoint, rc);*/ if(rc) return SQLITE_IOERR; } return pOpfs ? 0 : SQLITE_NOMEM; diff --git a/ext/wasm/dist.make b/ext/wasm/dist.make index cb13b0bd9..e19b361b1 100644 --- a/ext/wasm/dist.make +++ b/ext/wasm/dist.make @@ -9,10 +9,6 @@ ####################################################################### MAKEFILE.dist := $(lastword $(MAKEFILE_LIST)) -ifeq (0,$(HAVE_WASMFS)) -$(error The 'dist' target needs to be run on a WASMFS-capable platform.) -endif - ######################################################################## # Chicken/egg situation: we need $(version-info) to get the version # info for the archive name, but that binary may not yet be built, and @@ -33,7 +29,7 @@ CLEAN_FILES += $(wildcard sqlite-wasm-*.zip) #endif ######################################################################## -# dist-opt must be the name of a target which triggers the +# dist-build must be the name of a target which triggers the # build of the files to be packed into the dist archive. The # intention is that it be one of (o0, o1, o2, o3, os, oz), each of # which uses like-named -Ox optimization level flags. The o2 target @@ -42,7 +38,7 @@ CLEAN_FILES += $(wildcard sqlite-wasm-*.zip) # file sizes. Note that -O2 (the o2 target) results in faster binaries # than both -O3 and -Os (the o3 and os targets) in all tests run to # date. -dist-opt ?= oz +dist-build ?= oz demo-123.html := $(dir.wasm)/demo-123.html demo-123-worker.html := $(dir.wasm)/demo-123-worker.html @@ -50,36 +46,33 @@ demo-123.js := $(dir.wasm)/demo-123.js demo-files := $(demo-123.js) $(demo-123.html) $(demo-123-worker.html) \ tester1.html tester1.js tester1-worker.html README-dist := $(dir.wasm)/README-dist.txt -dist-dir-main := $(dist-name)/main -dist-dir-wasmfs := $(dist-name)/wasmfs +dist-dir-main := $(dist-name)/jswasm +dist.main.extras := \ + sqlite3-opfs-async-proxy.js \ + sqlite3-worker1.js \ + sqlite3-worker1-promiser.js + ######################################################################## # $(dist-archive): create the end-user deliverable archive. # # Maintenance reminder: because $(dist-archive) depends on -# $(dist-opt), and $(dist-opt) will depend on clean, having any deps +# $(dist-build), and $(dist-build) will depend on clean, having any deps # on $(dist-archive) which themselves may be cleaned up by the clean # target will lead to grief in parallel builds (-j #). Thus # $(dist-target)'s deps must be trimmed to non-generated files or # files which are _not_ cleaned up by the clean target. $(dist-archive): \ $(stripccomments) $(version-info) \ - $(dist-opt) \ + $(dist-build) \ $(MAKEFILE) $(MAKEFILE.dist) @echo "Making end-user deliverables..." @rm -fr $(dist-name) - @mkdir -p $(dist-dir-main) $(dist-dir-wasmfs) + @mkdir -p $(dist-dir-main) @cp -p $(README-dist) $(dist-name)/README.txt - @cp -p $(sqlite3.wasm) $(dist-dir-main) + @cp -p $(sqlite3.wasm) $(dist.main.extras) $(dist-dir-main) @$(stripccomments) -k -k < $(sqlite3.js) \ > $(dist-dir-main)/$(notdir $(sqlite3.js)) @cp -p $(demo-files) $(dist-dir-main) - @cp -p $(sqlite3-wasmfs.wasm) sqlite3-wasmfs.worker.js $(dist-dir-wasmfs) - @$(stripccomments) -k -k < $(sqlite3-wasmfs.js) \ - > $(dist-dir-wasmfs)/$(notdir $(sqlite3-wasmfs.js)) - @for i in $(demo-123.js) $(demo-123.html); do \ - sed -e 's/\bsqlite3\.js\b/sqlite3-wasmfs.js/' $$i \ - > $(dist-dir-wasmfs)/$${i##*/} || exit; \ - done @vnum=$$($(version-info) --version-number); \ vdir=sqlite-wasm-$$vnum; \ arc=$$vdir.zip; \ diff --git a/ext/wasm/fiddle.make b/ext/wasm/fiddle.make index 6f9002481..84cc6b298 100644 --- a/ext/wasm/fiddle.make +++ b/ext/wasm/fiddle.make @@ -23,6 +23,7 @@ $(dir.top)/shell.c: $(SHELL_SRC) $(dir.top)/tool/mkshellc.tcl # /shell.c ######################################################################## +EXPORTED_FUNCTIONS.fiddle := $(dir.tmp)/EXPORTED_FUNCTIONS.fiddle fiddle.emcc-flags = \ $(emcc.cflags) $(emcc_opt_full) \ --minify 0 \ @@ -35,17 +36,17 @@ fiddle.emcc-flags = \ -sWASM_BIGINT=$(emcc_enable_bigint) \ -sEXPORT_NAME=$(sqlite3.js.init-func) \ $(sqlite3.js.flags.--post-js) \ - -sEXPORTED_RUNTIME_METHODS=@$(dir.wasm)/EXPORTED_RUNTIME_METHODS.fiddle \ - -sEXPORTED_FUNCTIONS=@$(dir.wasm)/EXPORTED_FUNCTIONS.fiddle \ + $(emcc.exportedRuntimeMethods) \ + -sEXPORTED_FUNCTIONS=@$(abspath $(EXPORTED_FUNCTIONS.fiddle)) \ $(SQLITE_OPT) $(SHELL_OPT) \ -DSQLITE_SHELL_FIDDLE # -D_POSIX_C_SOURCE is needed for strdup() with emcc fiddle.EXPORTED_FUNCTIONS.in := \ EXPORTED_FUNCTIONS.fiddle.in \ - EXPORTED_FUNCTIONS.api + $(EXPORTED_FUNCTIONS.api) -EXPORTED_FUNCTIONS.fiddle: $(fiddle.EXPORTED_FUNCTIONS.in) $(MAKEFILE.fiddle) +$(EXPORTED_FUNCTIONS.fiddle): $(fiddle.EXPORTED_FUNCTIONS.in) $(MAKEFILE.fiddle) sort -u $(fiddle.EXPORTED_FUNCTIONS.in) > $@ fiddle-module.js := $(dir.fiddle)/fiddle-module.js @@ -58,7 +59,7 @@ $(dir.fiddle)/$(SOAP.js): $(SOAP.js) $(eval $(call call-make-pre-js,fiddle-module)) $(fiddle-module.js): $(MAKEFILE) $(MAKEFILE.fiddle) \ - EXPORTED_FUNCTIONS.fiddle EXPORTED_RUNTIME_METHODS.fiddle \ + $(EXPORTED_FUNCTIONS.fiddle) \ $(fiddle.cses) $(pre-post-fiddle-module.deps) $(dir.fiddle)/$(SOAP.js) $(emcc.bin) -o $@ $(fiddle.emcc-flags) \ $(pre-post-common.flags) $(pre-post-fiddle-module.flags) \ diff --git a/ext/wasm/index.html b/ext/wasm/index.html index 663d4c924..9fc475f1e 100644 --- a/ext/wasm/index.html +++ b/ext/wasm/index.html @@ -34,8 +34,7 @@ </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. + default</em>. </li> </ul> </div> @@ -68,7 +67,8 @@ <li>speedtest1 ports (sqlite3's primary benchmarking tool)... <ul> <li><a href='speedtest1.html'>speedtest1</a>: a main-thread WASM build of speedtest1.</li> - <li><a href='speedtest1-wasmfs.html?flags=--size,25'>speedtest1-wasmfs</a>: a variant of speedtest1 built solely for the wasmfs/opfs feature.</li> + <!--li><a href='speedtest1-wasmfs.html?flags=--size,25'>speedtest1-wasmfs</a>: a variant of speedtest1 built solely for the wasmfs/opfs feature. + </li--> <li><a href='speedtest1.html?vfs=kvvfs'>speedtest1-kvvfs</a>: speedtest1 with the kvvfs.</li> <li><a href='speedtest1-worker.html?size=25'>speedtest1-worker</a>: an interactive Worker-thread variant of speedtest1.</li> <li><a href='speedtest1-worker.html?vfs=opfs&size=25'>speedtest1-worker-opfs</a>: speedtest1-worker with the @@ -81,10 +81,10 @@ <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='batch-runner.html'>batch-runner</a>: runs batches of SQL exported from speedtest1.</li> - <li><a href='scratchpad-wasmfs-main.html'>scratchpad-wasmfs-main</a>: + <!--li><a href='scratchpad-wasmfs-main.html'>scratchpad-wasmfs-main</a>: experimenting with WASMFS/OPFS-based persistence. Maintenance reminder: we cannot currently (2022-09-15) load WASMFS in a - worker due to an Emscripten limitation.</li> + worker due to an Emscripten limitation.</li--> <li><a href='test-opfs-vfs.html'>test-opfs-vfs</a> (<a href='test-opfs-vfs.html?opfs-sanity-check&opfs-verbose'>same with verbose output and sanity-checking tests</a>) is an diff --git a/ext/wasm/sqlite3-worker1.js b/ext/wasm/sqlite3-worker1.js index 167c6a5c7..fef155e1f 100644 --- a/ext/wasm/sqlite3-worker1.js +++ b/ext/wasm/sqlite3-worker1.js @@ -25,13 +25,29 @@ Worker-specific API needs to pass _this_ file (or equivalent) to the Worker constructor and then listen for an event in the form shown above in order to know when the module has completed initialization. + + This file accepts a couple of URL arguments to adjust how it loads + sqlite3.js: + + - `sqlite3.dir`, if set, treats the given directory name as the + directory from which `sqlite3.js` will be loaded. + - `sqlite3.js`, if set, is used as the URI to `sqlite3.js` and it + may contain path elements, e.g. `sqlite3.js=foo/bar/my-sqlite3.js`. + + By default is loads 'sqlite3.js'. */ "use strict"; (()=>{ const urlParams = new URL(self.location.href).searchParams; - importScripts(urlParams.has('wasmfs') - ? 'sqlite3-wasmfs.js' - : 'sqlite3.js'); + let theJs; + if(urlParams.has('sqlite3.js')){ + theJs = urlParams.get('sqlite3.js'); + }else if(urlParams.has('sqlite3.dir')){ + theJs = urlParams.get('sqlite3.dir')+'/sqlite3.js'; + }else{ + theJs = 'sqlite3.js'; + } + importScripts(theJs); sqlite3InitModule().then((sqlite3)=>{ sqlite3.capi.sqlite3_wasmfs_opfs_dir(); sqlite3.initWorker1API(); diff --git a/ext/wasm/testing1.html b/ext/wasm/testing1.html deleted file mode 100644 index bf73974ee..000000000 --- a/ext/wasm/testing1.html +++ /dev/null @@ -1,36 +0,0 @@ -<!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>sqlite3-api.js tests</title> - </head> - <body> - <header id='titlebar'><span>sqlite3-api.js tests</span></header> - <!-- 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>Most stuff on this page happens in the dev console.</div> - <hr> - <div id='test-output'></div> - <!-- testing1.js "should" work with both sqlite3.js and sqlite3-kvvfs.js --> - <!--script src="sqlite3-kvvfs.js"></script--> - <script src="sqlite3.js"></script> - <script src="common/SqliteTestUtil.js"></script> - <script src="testing1.js"></script> - </body> -</html> diff --git a/ext/wasm/wasmfs.make b/ext/wasm/wasmfs.make index ee7b9f12b..f27c9d631 100644 --- a/ext/wasm/wasmfs.make +++ b/ext/wasm/wasmfs.make @@ -7,23 +7,24 @@ ######################################################################## MAKEFILE.wasmfs := $(lastword $(MAKEFILE_LIST)) -sqlite3-wasmfs.js := sqlite3-wasmfs.js -sqlite3-wasmfs.wasm := sqlite3-wasmfs.wasm +# Maintenance reminder: these particular files cannot be built into a +# subdirectory because loading of the auxiliary +# sqlite3-wasmfs.worker.js file it creates fails if sqlite3-wasmfs.js +# is loaded from any directory other than the one in which the +# containing HTML lives. +dir.wasmfs := $(dir.wasm) +sqlite3-wasmfs.js := $(dir.wasmfs)/sqlite3-wasmfs.js +sqlite3-wasmfs.wasm := $(dir.wasmfs)/sqlite3-wasmfs.wasm CLEAN_FILES += $(sqlite3-wasmfs.js) $(sqlite3-wasmfs.wasm) \ $(subst .js,.worker.js,$(sqlite3-wasmfs.js)) ######################################################################## -# emcc flags for .c/.o/.wasm. -sqlite3-wasmfs.flags = -#sqlite3-wasmfs.flags += -v # _very_ loud but also informative about what it's doing - -######################################################################## # emcc flags for .c/.o. sqlite3-wasmfs.cflags := sqlite3-wasmfs.cflags += -std=c99 -fPIC sqlite3-wasmfs.cflags += -pthread -sqlite3-wasmfs.cflags += -I. -I.. -I$(dir.top) +sqlite3-wasmfs.cflags += $(cflags.common) sqlite3-wasmfs.cflags += $(SQLITE_OPT) -DSQLITE_WASM_WASMFS ######################################################################## @@ -35,7 +36,7 @@ sqlite3-wasmfs.jsflags += -sMODULARIZE sqlite3-wasmfs.jsflags += -sSTRICT_JS sqlite3-wasmfs.jsflags += -sDYNAMIC_EXECUTION=0 sqlite3-wasmfs.jsflags += -sNO_POLYFILL -sqlite3-wasmfs.jsflags += -sEXPORTED_FUNCTIONS=@$(dir.api)/EXPORTED_FUNCTIONS.sqlite3-api +sqlite3-wasmfs.jsflags += -sEXPORTED_FUNCTIONS=@$(abspath $(dir.api)/EXPORTED_FUNCTIONS.sqlite3-api) sqlite3-wasmfs.jsflags += -sEXPORTED_RUNTIME_METHODS=FS,wasmMemory,allocateUTF8OnStack # wasmMemory ==> for -sIMPORTED_MEMORY # allocateUTF8OnStack ==> wasmfs internals @@ -67,7 +68,7 @@ sqlite3-wasmfs.jsflags += -sWASM_BIGINT=$(emcc_enable_bigint) $(eval $(call call-make-pre-js,sqlite3-wasmfs)) sqlite3-wasmfs.jsflags += $(pre-post-common.flags) $(pre-post-sqlite3-wasmfs.flags) $(sqlite3-wasmfs.js): $(sqlite3-wasm.c) \ - EXPORTED_FUNCTIONS.api $(MAKEFILE) $(MAKEFILE.wasmfs) \ + $(EXPORTED_FUNCTIONS.api) $(MAKEFILE) $(MAKEFILE.wasmfs) \ $(pre-post-sqlite3-wasmfs.deps) @echo "Building $@ ..." $(emcc.bin) -o $@ $(emcc_opt_full) $(emcc.flags) \ @@ -84,22 +85,22 @@ all: wasmfs # speedtest1 for wasmfs. Re. sqlite3-wasm.o vs sqlite3-wasm.c: # building against the latter (predictably) results in a slightly # faster binary. -speedtest1-wasmfs.js := speedtest1-wasmfs.js +speedtest1-wasmfs.js := $(dir.wasmfs)/speedtest1-wasmfs.js speedtest1-wasmfs.wasm := $(subst .js,.wasm,$(speedtest1-wasmfs.js)) speedtest1-wasmfs.eflags := $(sqlite3-wasmfs.fsflags) speedtest1-wasmfs.eflags += $(SQLITE_OPT) -DSQLITE_WASM_WASMFS $(eval $(call call-make-pre-js,speedtest1-wasmfs)) -$(speedtest1-wasmfs.js): $(speedtest1.cs) $(sqlite3-wasmfs.js) \ +$(speedtest1-wasmfs.js): $(speedtest1.cses) $(sqlite3-wasmfs.js) \ $(MAKEFILE) $(MAKEFILE.wasmfs) \ $(pre-post-speedtest1-wasmfs.deps) \ - EXPORTED_FUNCTIONS.speedtest1 + $(EXPORTED_FUNCTIONS.speedtest1) @echo "Building $@ ..." $(emcc.bin) \ $(speedtest1-wasmfs.eflags) $(speedtest1-common.eflags) \ $(pre-post-speedtest1-wasmfs.flags) \ $(speedtest1.cflags) \ $(sqlite3-wasmfs.cflags) \ - -o $@ $(speedtest1.cs) -lm + -o $@ $(speedtest1.cses) -lm $(maybe-wasm-strip) $(speedtest1-wasmfs.wasm) ls -la $@ $(speedtest1-wasmfs.wasm) @@ -1,5 +1,5 @@ -C More\swork\son\sthe\sJS\send-user\sdeliverables.\sAdd\stool/stripccomments.c\sto\ssupport\sthat. -D 2022-10-18T20:36:50.562 +C Considerable\swasm/js\sbuild\scleanups\sand\sreworking.\sRemove\swasmfs\sbuilds\sfrom\sthe\send-user\sdeliverables\sand\sdisable\sthe\swasmfs\sbuild\sby\sdefault,\sper\s/chat\sdiscussion,\sas\sit\sdoubles\sour\sdeliverable\scount\sfor\sonly\smarginal\sgain.\sAttempt\sto\smove\sthe\ssqlite3.js/wasm\sfiles\sinto\ssubdirectories\sbut\srediscovered\sthat\sthat\sbreaks\sloading\sin\sWorker\smode\sbecause\sURI\sresolution\sof\sthe\swasm\sfiles\sdiffers\sdepending\son\swhether\sthe\smain\sscript\sis\sloaded\sfrom\sa\sscript\stag\sor\sa\sWorker. +D 2022-10-19T01:07:30.150 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -472,14 +472,13 @@ 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.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c -F ext/wasm/EXPORTED_RUNTIME_METHODS.fiddle 0e88c8cfc3719e4b7e74980d9da664c709e68acf863e48386cda376edfd3bfb0 -F ext/wasm/GNUmakefile 279fd4589ba602e24d8e66ca795ec5a2275a0e329405e4e984e8ea0579339bae -F ext/wasm/README-dist.txt 170be2d47b4b52504ef09088ca2f143aab657de0f9ac04d3a68e366f40929c3d +F ext/wasm/GNUmakefile d5a39121aeb316562895889c6b27f9ec11e9cae2f844b23d5c7d04479a3bec2a +F ext/wasm/README-dist.txt 13438bafe5fab1eca223be91459e757e6e67248fc959b9ae0ffb5808fd0a1610 F ext/wasm/README.md 1e5b28158b74ab3ffc9d54fcbc020f0bbeb82c2ff8bbd904214c86c70e8a3066 F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api 89983a8d122c35a90c65ec667844b95a78bcd04f3198a99c1e0c8368c1a0b03a F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de2470b0e9e7fbf7a5b41261c367cf4f1b7287 F ext/wasm/api/README.md 946398dd80bfd673f098b9d6ca3564e1fc77b03e660274d132f267c407b8703c -F ext/wasm/api/extern-post-js.js dfae3a5f621ae94f1fae671f8013ed6464355f11e2adda38ed8b10bf1929f337 +F ext/wasm/api/extern-post-js.js b3d14b7d5880e70caec2feae2ab2f31ccb3af67d200e4a9fd58dcc0c4b401bf1 F ext/wasm/api/extern-pre-js.js cc61c09c7a24a07dbecb4c352453c3985170cec12b4e7e7e7a4d11d43c5c8f41 F ext/wasm/api/post-js-footer.js cd0a8ec768501d9bd45d325ab0442037fb0e33d1f3b4f08902f15c34720ee4a1 F ext/wasm/api/post-js-header.js 2e5c886398013ba2af88028ecbced1e4b22dc96a86467f1ecc5ba9e64ef90a8b @@ -488,11 +487,11 @@ F ext/wasm/api/sqlite3-api-cleanup.js 4d07a7524dc9b7b050acfde57163e839243ad2383b F ext/wasm/api/sqlite3-api-glue.js 05eb701460bb72edbe3bf923bd51262551614612c37802fc597eabb4c6b83232 F ext/wasm/api/sqlite3-api-oo1.js 9a5f0c00d476c504f16dcd456e1743dbc2826ca3d10645dfa62663a39e3ed0d8 F ext/wasm/api/sqlite3-api-opfs.js 5a8ab3b76880c8ada8710ca9ba1ca5b160872edfd8bd5322e4f179a7f41cc616 -F ext/wasm/api/sqlite3-api-prologue.js a17b35814c6399a2e69c7836e5fd2eaa71f755ee51f96cb69d68cbf99985d45b +F ext/wasm/api/sqlite3-api-prologue.js f6ae0da8de61f8d550b0bb8e486e5edd38129005c2bb2a448f6bf30dbf8b723b F ext/wasm/api/sqlite3-api-worker1.js 7f4f46cb6b512a48572d7567233896e6a9c46570c44bdc3d13419730c7c221c8 F ext/wasm/api/sqlite3-license-version-header.js a661182fc93fc2cf212dfd0b987f8e138a3ac98f850b1112e29b5fbdaecc87c3 F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9 -F ext/wasm/api/sqlite3-wasm.c 4c131945ced4b08a694d287abcdb066b896d961ef79ee5241805ecc37e83d63a +F ext/wasm/api/sqlite3-wasm.c 84d410a2b9defdac85e6a421736307ff3a3eed3c1b0ae3b7b140edbc6ad81a8f F ext/wasm/batch-runner.html cf1a410c92bad50fcec2ddc71390b4e9df63a6ea1bef12a5163a66a0af4d78d9 F ext/wasm/batch-runner.js 5bae81684728b6be157d1f92b39824153f0fd019345b39f2ab8930f7ee2a57d8 F ext/wasm/common/SqliteTestUtil.js 647bf014bd30bdd870a7e9001e251d12fc1c9ec9ce176a1004b838a4b33c5c05 @@ -504,13 +503,13 @@ F ext/wasm/demo-123.html 7c239c9951d1b113f9f532969ac039294cf1dcfee2b3ae0a2c1ed2b F ext/wasm/demo-123.js e0cbeb3495e14103763d5c49794a24d67cf3d78e0ed5b82843be70c0c2ee4b3b F ext/wasm/demo-kvvfs1.html 7d4f28873de67f51ac18c584b7d920825139866a96049a49c424d6f5a0ea5e7f F ext/wasm/demo-kvvfs1.js 105596bd2ccd0b1deb5fde8e99b536e8242d4bb5932fac0c8403ff3a6bc547e8 -F ext/wasm/dist.make 1d59fafdfcf6fc5ee0f3351b21199585dba21afcf0518241789fd5d37a1c011d -F ext/wasm/fiddle.make b609dfde299b4523d7123b7e0cecaa1a0aff0dd984e62cea653aae91f5063c90 +F ext/wasm/dist.make 2015746f6cd37ed17fadb14dba45d41ac6db727917d04f9b9aa431a816c5e54d +F ext/wasm/fiddle.make a87250f6f973d9632818b9d2396c59e6542da180f8f10b164665a6fc04d239bc F ext/wasm/fiddle/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f F ext/wasm/fiddle/fiddle-worker.js 531859a471924a0ea48afa218e6877f0c164ca324d51e15843ed6ecc1c65c7ee F ext/wasm/fiddle/fiddle.html 5daf54e8f3d7777cbb1ca4f93affe28858dbfff25841cb4ab81d694efed28ec2 F ext/wasm/fiddle/fiddle.js 974b995119ac443685d7d94d3b3c58c6a36540e9eb3fed7069d5653284071715 -F ext/wasm/index.html d75b516236c6869568ff691b9b7ff61307d6436e059b5657dadc473b6f41e581 +F ext/wasm/index.html 47fd8be5f76b7e1123edb301b604bc751ba387498a597d8dc48bce24d1007c57 F ext/wasm/jaccwabyt/jaccwabyt.js 0d7f32817456a0f3937fcfd934afeb32154ca33580ab264dab6c285e6dbbd215 F ext/wasm/jaccwabyt/jaccwabyt.md 9aa6951b529a8b29f578ec8f0355713c39584c92cf1708f63ba0cf917cb5b68e F ext/wasm/scratchpad-wasmfs-main.html 20cf6f1a8f368e70d01e8c17200e3eaa90f1c8e1029186d836d14b83845fbe06 @@ -524,7 +523,7 @@ F ext/wasm/sql/000-mandelbrot.sql 775337a4b80938ac8146aedf88808282f04d02d983d826 F ext/wasm/sql/001-sudoku.sql 35b7cb7239ba5d5f193bc05ec379bcf66891bce6f2a5b3879f2f78d0917299b5 F ext/wasm/sqlite3-opfs-async-proxy.js 206ce6bbc3c30ad51a37d9c25e3a2712e70b586e0f9a2cf8cb0b9619017c2671 F ext/wasm/sqlite3-worker1-promiser.js 307d7837420ca6a9d3780dfc81194f1c0715637e6d9540e935514086b96913d8 -F ext/wasm/sqlite3-worker1.js 466e9bd39409ab03f3e00999887aaffc11e95b416e2689596e3d7f1516673fdf +F ext/wasm/sqlite3-worker1.js 25b29ff23958883e0a772bc835f4f4eb7e1714d7310385ed27106525930c2530 F ext/wasm/test-opfs-vfs.html eb69dda21eb414b8f5e3f7c1cc0f774103cc9c0f87b2d28a33419e778abfbab5 F ext/wasm/test-opfs-vfs.js 56c3d725044c668fa7910451e96c1195d25ad95825f9ac79f747a7759d1973d0 F ext/wasm/tester1-worker.html 0af7a22025ff1da72a84765d64f8f221844a57c6e6e314acf3a30f176101fd3f @@ -532,11 +531,10 @@ F ext/wasm/tester1.html fde0e0bdeaaa2c39877c749dc86a8c1c306f771c3d75b89a6289a5ed F ext/wasm/tester1.js 8161dcc4b21902dadec2d3a5dc5700cab9c1641db0603e2ea56ea2a8de6cbab3 F ext/wasm/testing-worker1-promiser.html 6eaec6e04a56cf24cf4fa8ef49d78ce8905dde1354235c9125dca6885f7ce893 F ext/wasm/testing-worker1-promiser.js bd788e33c1807e0a6dda9c9a9d784bd3350ca49c9dd8ae2cc8719b506b6e013e -F ext/wasm/testing1.html 50575755e43232dbe4c2f97c9086b3118eb91ec2ee1fae931e6d7669fb17fcae F ext/wasm/testing2.html a66951c38137ff1d687df79466351f3c734fa9c6d9cce71d3cf97c291b2167e3 F ext/wasm/testing2.js 88f40ef3cd8201bdadd120a711c36bbf0ce56cc0eab1d5e7debb71fed7822494 F ext/wasm/version-info.c 5fa356d38859d71a0369b5c37e1935def7413fcc8a4e349a39d9052c1d0479f4 -F ext/wasm/wasmfs.make 9a51480d0a5ef33dd1c06c305379775302b735cb27737c2490ea449575ca5e25 +F ext/wasm/wasmfs.make ee0004813e16c283ff633e08b482008d56adf9b7d42f6c5612f7ab002b924f69 F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8 F magic.txt 8273bf49ba3b0c8559cb2774495390c31fd61c60 @@ -2037,8 +2035,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 740a2eb0928d54fdf735a8e573c6a61a34dbd295b46e5b6ef39e957fd2623293 -R f3423b9e5fdd1b3c8749326c161b8bbf +P 2156f0744acfe425457430a0f6a7e02de907de85edba81a6d4eef40293e561c8 +R ee0ece99cec342c109cdb62c53280a5b U stephan -Z 8ed4b03e8c6243f1d25f4dc2d31715c7 +Z 86621ae22c81858679965e272da6ace1 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 965ccd2da..38a86ebeb 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -2156f0744acfe425457430a0f6a7e02de907de85edba81a6d4eef40293e561c8
\ No newline at end of file +5b23e0675efdd2f1ea7b4f5836a579e8d6aa8a25b3f1a6a950520ad845ff01bb
\ No newline at end of file |