1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

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
This commit is contained in:
stephan
2022-10-19 01:07:30 +00:00
parent b5e2e6fcd3
commit 71de8e0241
14 changed files with 185 additions and 197 deletions

View File

@ -1,15 +0,0 @@
FS
addFunction
allocateUTF8OnStack
ccall
cwrap
getValue
intArrayFromString
lengthBytesUTF8
removeFunction
setValue
stackAlloc
stackRestore
stackSave
stringToUTF8Array
wasmMemory

View File

@ -1,4 +1,4 @@
######################################################################## #######################################################################
# This GNU makefile drives the build of the sqlite3 WASM # This GNU makefile drives the build of the sqlite3 WASM
# components. It is not part of the canonical build process. # components. It is not part of the canonical build process.
# #
@ -22,8 +22,10 @@
######################################################################## ########################################################################
SHELL := $(shell which bash 2>/dev/null) SHELL := $(shell which bash 2>/dev/null)
MAKEFILE := $(lastword $(MAKEFILE_LIST)) MAKEFILE := $(lastword $(MAKEFILE_LIST))
CLEAN_FILES :=
DISTCLEAN_FILES := ./--dummy--
default: all default: all
release: default release: oz
# Emscripten SDK home dir and related binaries... # Emscripten SDK home dir and related binaries...
EMSDK_HOME ?= $(word 1,$(wildcard $(HOME)/src/emsdk $(HOME)/emsdk)) EMSDK_HOME ?= $(word 1,$(wildcard $(HOME)/src/emsdk $(HOME)/emsdk))
@ -58,15 +60,50 @@ else
endif endif
dir.top := ../.. dir.top := ../..
# Reminder: some Emscripten flags require absolute paths # Reminder: some Emscripten flags require absolute paths but we want
dir.wasm := $(patsubst %/,%,$(dir $(abspath $(MAKEFILE)))) # 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.api := api
dir.jacc := jaccwabyt dir.jacc := jaccwabyt
dir.common := common dir.common := common
dir.fiddle := fiddle dir.fiddle := fiddle
dir.tool := $(dir.top)/tool 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 emcc_enable_bigint ?= 1
sqlite3.c := $(dir.top)/sqlite3.c sqlite3.c := $(dir.top)/sqlite3.c
sqlite3.h := $(dir.top)/sqlite3.h sqlite3.h := $(dir.top)/sqlite3.h
@ -149,6 +186,8 @@ else
endif endif
version-info := $(dir.wasm)/version-info 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) $(version-info): $(dir.wasm)/version-info.c $(sqlite3.h) $(MAKEFILE)
$(CC) -O0 -I$(dir.top) -o $@ $< $(CC) -O0 -I$(dir.top) -o $@ $<
DISTCLEAN_FILES += $(version-info) DISTCLEAN_FILES += $(version-info)
@ -158,15 +197,16 @@ $(stripccomments): $(stripccomments).c $(MAKEFILE)
$(CC) -o $@ $< $(CC) -o $@ $<
DISTCLEAN_FILES += $(stripccomments) DISTCLEAN_FILES += $(stripccomments)
EXPORTED_FUNCTIONS.api.in := $(dir.api)/EXPORTED_FUNCTIONS.sqlite3-api 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) $(EXPORTED_FUNCTIONS.api): $(EXPORTED_FUNCTIONS.api.in) $(MAKEFILE)
cat $(EXPORTED_FUNCTIONS.api.in) > $@ 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-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 := $(sqlite3-license-version.js)
sqlite3-api.jses += $(dir.api)/sqlite3-api-prologue.js sqlite3-api.jses += $(dir.api)/sqlite3-api-prologue.js
sqlite3-api.jses += $(dir.common)/whwasmutil.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-opfs.js
sqlite3-api.jses += $(dir.api)/sqlite3-api-cleanup.js sqlite3-api.jses += $(dir.api)/sqlite3-api-cleanup.js
sqlite3-api.js := sqlite3-api.js sqlite3-api.js := $(dir.tmp)/sqlite3-api.js
CLEAN_FILES += $(sqlite3-api.js)
CLEAN_FILES += $(sqlite3-license-version.js)
CLEAN_FILES += $(sqlite3-api-build-version.js)
$(sqlite3-api.js): $(sqlite3-api.jses) $(MAKEFILE) $(sqlite3-api.js): $(sqlite3-api.jses) $(MAKEFILE)
@echo "Making $@..." @echo "Making $@..."
@for i in $(sqlite3-api.jses); do \ @for i in $(sqlite3-api.jses); do \
@ -190,7 +227,7 @@ $(sqlite3-api.js): $(sqlite3-api.jses) $(MAKEFILE)
echo "/* END FILE: $$i */"; \ echo "/* END FILE: $$i */"; \
done > $@ done > $@
$(sqlite3-api-build-version.js): $(version-info) $(sqlite3-api-build-version.js): $(version-info) $(MAKEFILE)
@echo "Making $@..." @echo "Making $@..."
@{ \ @{ \
echo 'self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){'; \ 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 # --post-js and --pre-js are emcc flags we use to append/prepend JS to
# the generated emscripten module file. # the generated emscripten module file.
pre-js.js := $(dir.api)/pre-js.js pre-js.js := $(dir.api)/pre-js.js
post-js.js := post-js.js post-js.js := $(dir.tmp)/post-js.js
CLEAN_FILES += $(post-js.js)
post-jses := \ post-jses := \
$(dir.api)/post-js-header.js \ $(dir.api)/post-js-header.js \
$(sqlite3-api.js) \ $(sqlite3-api.js) \
@ -222,7 +258,7 @@ extern-pre-js.js := $(dir.api)/extern-pre-js.js
pre-post-common.flags := \ pre-post-common.flags := \
--post-js=$(post-js.js) \ --post-js=$(post-js.js) \
--extern-post-js=$(extern-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) \ pre-post-jses.deps := $(post-js.js) \
$(extern-post-js.js) $(extern-pre-js.js) $(sqlite3-license-version.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) $(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 += -sSTRICT_JS
emcc.jsflags += -sDYNAMIC_EXECUTION=0 emcc.jsflags += -sDYNAMIC_EXECUTION=0
emcc.jsflags += -sNO_POLYFILL emcc.jsflags += -sNO_POLYFILL
emcc.jsflags += -sEXPORTED_FUNCTIONS=@$(dir.wasm)/EXPORTED_FUNCTIONS.api emcc.jsflags += -sEXPORTED_FUNCTIONS=@$(EXPORTED_FUNCTIONS.api)
emcc.exportedRuntimeMethods := \ emcc.exportedRuntimeMethods := \
-sEXPORTED_RUNTIME_METHODS=FS,wasmMemory,allocateUTF8OnStack -sEXPORTED_RUNTIME_METHODS=FS,wasmMemory
# FS ==> stdio/POSIX I/O proxies # FS ==> stdio/POSIX I/O proxies
# wasmMemory ==> required by our code for use with -sIMPORTED_MEMORY # wasmMemory ==> required by our code for use with -sIMPORTED_MEMORY
# allocateUTF8OnStack => for kvvfs internals
emcc.jsflags += $(emcc.exportedRuntimeMethods) emcc.jsflags += $(emcc.exportedRuntimeMethods)
emcc.jsflags += -sUSE_CLOSURE_COMPILER=0 emcc.jsflags += -sUSE_CLOSURE_COMPILER=0
emcc.jsflags += -sIMPORTED_MEMORY emcc.jsflags += -sIMPORTED_MEMORY
@ -312,7 +347,7 @@ emcc.jsflags += -Wno-limited-postlink-optimizations
emcc.jsflags += -sERROR_ON_UNDEFINED_SYMBOLS=0 emcc.jsflags += -sERROR_ON_UNDEFINED_SYMBOLS=0
emcc.jsflags += -sLLD_REPORT_UNDEFINED emcc.jsflags += -sLLD_REPORT_UNDEFINED
#emcc.jsflags += --allow-undefined #emcc.jsflags += --allow-undefined
emcc.jsflags += --import-undefined #emcc.jsflags += --import-undefined
#emcc.jsflags += --unresolved-symbols=import-dynamic --experimental-pic #emcc.jsflags += --unresolved-symbols=import-dynamic --experimental-pic
#emcc.jsflags += --experimental-pic --unresolved-symbols=ingore-all --import-undefined #emcc.jsflags += --experimental-pic --unresolved-symbols=ingore-all --import-undefined
#emcc.jsflags += --unresolved-symbols=ignore-all #emcc.jsflags += --unresolved-symbols=ignore-all
@ -340,36 +375,22 @@ emcc.jsflags += -sWASM_BIGINT=$(emcc_enable_bigint)
# debugging info, _huge_. # debugging info, _huge_.
######################################################################## ########################################################################
######################################################################## sqlite3.js := $(dir.dout)/sqlite3.js
# Maintenance reminder: the output .js and .wasm files of emcc must be sqlite3.wasm := $(dir.dout)/sqlite3.wasm
# 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-wasm.c := $(dir.api)/sqlite3-wasm.c sqlite3-wasm.c := $(dir.api)/sqlite3-wasm.c
######################################################################## # sqlite3-wasm.o vs sqlite3-wasm.c: building against the latter
# call-wasm-c-compile sets up build rules # (predictably) results in a slightly faster binary, but we're close
# for $1.o. $1 must be the name of a C file (with extension). # enough to the target speed requirements that the 500ms makes a
define call-wasm-c-compile # difference. Thus we build all binaries against sqlite3-wasm.c
$(1).o := $$(subst .c,.o,$(1)) # instead of building a shared copy of sqlite3-wasm.o.
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))))
$(eval $(call call-make-pre-js,sqlite3)) $(eval $(call call-make-pre-js,sqlite3))
$(sqlite3.js): $(MAKEFILE) $(sqlite3.wasm.obj) \ $(sqlite3.js): $(MAKEFILE) $(sqlite3.wasm.obj) \
EXPORTED_FUNCTIONS.api \ $(EXPORTED_FUNCTIONS.api) \
$(pre-post-sqlite3.deps) $(pre-post-sqlite3.deps)
@echo "Building $@ ..." @echo "Building $@ ..."
$(emcc.bin) -o $@ $(emcc_opt_full) $(emcc.flags) \ $(emcc.bin) -o $@ $(emcc_opt_full) $(emcc.flags) \
$(emcc.jsflags) $(pre-post-common.flags) $(pre-post-sqlite3.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) chmod -x $(sqlite3.wasm)
$(maybe-wasm-strip) $(sqlite3.wasm) $(maybe-wasm-strip) $(sqlite3.wasm)
@ls -la $@ $(sqlite3.wasm) @ls -la $@ $(sqlite3.wasm)
@ -417,7 +438,8 @@ speedtest1-common.eflags += -sINITIAL_MEMORY=128450560
speedtest1-common.eflags += -sSTRICT_JS speedtest1-common.eflags += -sSTRICT_JS
speedtest1-common.eflags += -sMODULARIZE speedtest1-common.eflags += -sMODULARIZE
speedtest1-common.eflags += -Wno-limited-postlink-optimizations 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 += $(emcc.exportedRuntimeMethods)
speedtest1-common.eflags += -sALLOW_TABLE_GROWTH speedtest1-common.eflags += -sALLOW_TABLE_GROWTH
speedtest1-common.eflags += -sDYNAMIC_EXECUTION=0 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 # -sEXIT_RUNTIME=1 but we need EXIT_RUNTIME=0 for the worker-based app
# which runs speedtest1 multiple times. # which runs speedtest1 multiple times.
EXPORTED_FUNCTIONS.speedtest1: EXPORTED_FUNCTIONS.api $(EXPORTED_FUNCTIONS.speedtest1): $(EXPORTED_FUNCTIONS.api)
{ echo _wasm_main; cat EXPORTED_FUNCTIONS.api; } > $@ @echo "Making $@ ..."
CLEAN_FILES += EXPORTED_FUNCTIONS.speedtest1 @{ echo _wasm_main; cat $(EXPORTED_FUNCTIONS.api); } > $@
speedtest1.js := speedtest1.js speedtest1.js := $(dir.dout)/speedtest1.js
speedtest1.wasm := $(subst .js,.wasm,$(speedtest1.js)) speedtest1.wasm := $(subst .js,.wasm,$(speedtest1.js))
speedtest1.cflags := \ speedtest1.cflags := $(cflags.common) -DSQLITE_SPEEDTEST1_WASM
-I. -I.. -I$(dir.top) \ speedtest1.cses := $(speedtest1.c) $(sqlite3-wasm.c)
-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.
$(eval $(call call-make-pre-js,speedtest1)) $(eval $(call call-make-pre-js,speedtest1))
$(speedtest1.js): $(MAKEFILE) $(speedtest1.cs) \ $(speedtest1.js): $(MAKEFILE) $(speedtest1.cses) \
$(pre-post-speedtest1.deps) \ $(pre-post-speedtest1.deps) \
EXPORTED_FUNCTIONS.speedtest1 $(EXPORTED_FUNCTIONS.speedtest1)
@echo "Building $@ ..." @echo "Building $@ ..."
$(emcc.bin) \ $(emcc.bin) \
$(speedtest1.eflags) $(speedtest1-common.eflags) $(speedtest1.cflags) \ $(speedtest1.eflags) $(speedtest1-common.eflags) $(speedtest1.cflags) \
$(pre-post-speedtest1.flags) \ $(pre-post-speedtest1.flags) \
$(SQLITE_OPT) \ $(SQLITE_OPT) \
$(speedtest1.exit-runtime0) \ $(speedtest1.exit-runtime0) \
-o $@ $(speedtest1.cs) -lm -o $@ $(speedtest1.cses) -lm
$(maybe-wasm-strip) $(speedtest1.wasm) $(maybe-wasm-strip) $(speedtest1.wasm)
ls -la $@ $(speedtest1.wasm) ls -la $@ $(speedtest1.wasm)
@ -531,6 +546,13 @@ oz: clean
include fiddle.make 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 # 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 # of them. As such platforms are discovered, add their (uname -m) name
@ -544,9 +566,12 @@ else
HAVE_WASMFS := 1 HAVE_WASMFS := 1
include wasmfs.make include wasmfs.make
endif endif
endif
# /wasmfs
########################################################################
######################################################################## ########################################################################
# Create deliverables: TODO # Create deliverables:
ifneq (,$(filter dist,$(MAKECMDGOALS))) ifneq (,$(filter dist,$(MAKECMDGOALS)))
include dist.make include dist.make
endif endif

View File

@ -4,23 +4,21 @@ Main project page: https://sqlite.org
TODO: link to main WASM/JS docs, once they are online 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 jswasm directory contains both the main deliverables and small
the standard sqlite3 WASM/JS build. demonstration and test apps. Browsers will not serve WASM files from
file:// URLs, so the demo/test apps require a web server and that
- ./wasmfs contains a build of those files which includes the server must include the following headers in its response when serving
Emscripten WASMFS[^1]. It offers an alternative approach the files:
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:
Cross-Origin-Opener-Policy: same-origin Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp 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.

View File

@ -43,3 +43,11 @@
self.sqlite3InitModule.ready = originalInit.ready; self.sqlite3InitModule.ready = originalInit.ready;
//console.warn("Replaced sqlite3InitModule()"); //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);
}
}

View File

@ -1158,7 +1158,6 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
*/ */
capi.sqlite3_web_db_export = function(pDb){ capi.sqlite3_web_db_export = function(pDb){
if(!pDb) toss('Invalid sqlite3* argument.'); if(!pDb) toss('Invalid sqlite3* argument.');
const wasm = wasm;
if(!wasm.bigIntEnabled) toss('BigInt64 support is not enabled.'); if(!wasm.bigIntEnabled) toss('BigInt64 support is not enabled.');
const stack = wasm.pstack.pointer; const stack = wasm.pstack.pointer;
let pOut; let pOut;

View File

@ -1007,7 +1007,7 @@ int sqlite3_wasm_init_wasmfs(const char *zMountPoint){
hypothetically suffice for the transient wasm-based virtual hypothetically suffice for the transient wasm-based virtual
filesystem we're currently running in. */ filesystem we're currently running in. */
const int rc = wasmfs_create_directory(zMountPoint, 0777, pOpfs); 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; if(rc) return SQLITE_IOERR;
} }
return pOpfs ? 0 : SQLITE_NOMEM; return pOpfs ? 0 : SQLITE_NOMEM;

View File

@ -9,10 +9,6 @@
####################################################################### #######################################################################
MAKEFILE.dist := $(lastword $(MAKEFILE_LIST)) 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 # 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 # 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 #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 # 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 # 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 # 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 # 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 # than both -O3 and -Os (the o3 and os targets) in all tests run to
# date. # date.
dist-opt ?= oz dist-build ?= oz
demo-123.html := $(dir.wasm)/demo-123.html demo-123.html := $(dir.wasm)/demo-123.html
demo-123-worker.html := $(dir.wasm)/demo-123-worker.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) \ demo-files := $(demo-123.js) $(demo-123.html) $(demo-123-worker.html) \
tester1.html tester1.js tester1-worker.html tester1.html tester1.js tester1-worker.html
README-dist := $(dir.wasm)/README-dist.txt README-dist := $(dir.wasm)/README-dist.txt
dist-dir-main := $(dist-name)/main dist-dir-main := $(dist-name)/jswasm
dist-dir-wasmfs := $(dist-name)/wasmfs dist.main.extras := \
sqlite3-opfs-async-proxy.js \
sqlite3-worker1.js \
sqlite3-worker1-promiser.js
######################################################################## ########################################################################
# $(dist-archive): create the end-user deliverable archive. # $(dist-archive): create the end-user deliverable archive.
# #
# Maintenance reminder: because $(dist-archive) depends on # 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 # on $(dist-archive) which themselves may be cleaned up by the clean
# target will lead to grief in parallel builds (-j #). Thus # target will lead to grief in parallel builds (-j #). Thus
# $(dist-target)'s deps must be trimmed to non-generated files or # $(dist-target)'s deps must be trimmed to non-generated files or
# files which are _not_ cleaned up by the clean target. # files which are _not_ cleaned up by the clean target.
$(dist-archive): \ $(dist-archive): \
$(stripccomments) $(version-info) \ $(stripccomments) $(version-info) \
$(dist-opt) \ $(dist-build) \
$(MAKEFILE) $(MAKEFILE.dist) $(MAKEFILE) $(MAKEFILE.dist)
@echo "Making end-user deliverables..." @echo "Making end-user deliverables..."
@rm -fr $(dist-name) @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 $(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) \ @$(stripccomments) -k -k < $(sqlite3.js) \
> $(dist-dir-main)/$(notdir $(sqlite3.js)) > $(dist-dir-main)/$(notdir $(sqlite3.js))
@cp -p $(demo-files) $(dist-dir-main) @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); \ @vnum=$$($(version-info) --version-number); \
vdir=sqlite-wasm-$$vnum; \ vdir=sqlite-wasm-$$vnum; \
arc=$$vdir.zip; \ arc=$$vdir.zip; \

View File

@ -23,6 +23,7 @@ $(dir.top)/shell.c: $(SHELL_SRC) $(dir.top)/tool/mkshellc.tcl
# /shell.c # /shell.c
######################################################################## ########################################################################
EXPORTED_FUNCTIONS.fiddle := $(dir.tmp)/EXPORTED_FUNCTIONS.fiddle
fiddle.emcc-flags = \ fiddle.emcc-flags = \
$(emcc.cflags) $(emcc_opt_full) \ $(emcc.cflags) $(emcc_opt_full) \
--minify 0 \ --minify 0 \
@ -35,17 +36,17 @@ fiddle.emcc-flags = \
-sWASM_BIGINT=$(emcc_enable_bigint) \ -sWASM_BIGINT=$(emcc_enable_bigint) \
-sEXPORT_NAME=$(sqlite3.js.init-func) \ -sEXPORT_NAME=$(sqlite3.js.init-func) \
$(sqlite3.js.flags.--post-js) \ $(sqlite3.js.flags.--post-js) \
-sEXPORTED_RUNTIME_METHODS=@$(dir.wasm)/EXPORTED_RUNTIME_METHODS.fiddle \ $(emcc.exportedRuntimeMethods) \
-sEXPORTED_FUNCTIONS=@$(dir.wasm)/EXPORTED_FUNCTIONS.fiddle \ -sEXPORTED_FUNCTIONS=@$(abspath $(EXPORTED_FUNCTIONS.fiddle)) \
$(SQLITE_OPT) $(SHELL_OPT) \ $(SQLITE_OPT) $(SHELL_OPT) \
-DSQLITE_SHELL_FIDDLE -DSQLITE_SHELL_FIDDLE
# -D_POSIX_C_SOURCE is needed for strdup() with emcc # -D_POSIX_C_SOURCE is needed for strdup() with emcc
fiddle.EXPORTED_FUNCTIONS.in := \ fiddle.EXPORTED_FUNCTIONS.in := \
EXPORTED_FUNCTIONS.fiddle.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) > $@ sort -u $(fiddle.EXPORTED_FUNCTIONS.in) > $@
fiddle-module.js := $(dir.fiddle)/fiddle-module.js 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)) $(eval $(call call-make-pre-js,fiddle-module))
$(fiddle-module.js): $(MAKEFILE) $(MAKEFILE.fiddle) \ $(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) $(fiddle.cses) $(pre-post-fiddle-module.deps) $(dir.fiddle)/$(SOAP.js)
$(emcc.bin) -o $@ $(fiddle.emcc-flags) \ $(emcc.bin) -o $@ $(fiddle.emcc-flags) \
$(pre-post-common.flags) $(pre-post-fiddle-module.flags) \ $(pre-post-common.flags) $(pre-post-fiddle-module.flags) \

View File

@ -34,8 +34,7 @@
</li> </li>
<li>Whether or not WASMFS/OPFS support is enabled on any given <li>Whether or not WASMFS/OPFS support is enabled on any given
page may depend on build-time options which are <em>off by page may depend on build-time options which are <em>off by
default</em> because they currently (as of 2022-09-08) break default</em>.
with Worker-based pages.
</li> </li>
</ul> </ul>
</div> </div>
@ -68,7 +67,8 @@
<li>speedtest1 ports (sqlite3's primary benchmarking tool)... <li>speedtest1 ports (sqlite3's primary benchmarking tool)...
<ul> <ul>
<li><a href='speedtest1.html'>speedtest1</a>: a main-thread WASM build of speedtest1.</li> <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.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?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 <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>: <li><a href='testing-worker1-promiser.html'>testing-worker1-promiser</a>:
tests for the Promise-based wrapper of the Worker-based API.</li> 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='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 experimenting with WASMFS/OPFS-based persistence. Maintenance
reminder: we cannot currently (2022-09-15) load WASMFS in a 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> <li><a href='test-opfs-vfs.html'>test-opfs-vfs</a>
(<a href='test-opfs-vfs.html?opfs-sanity-check&opfs-verbose'>same (<a href='test-opfs-vfs.html?opfs-sanity-check&opfs-verbose'>same
with verbose output and sanity-checking tests</a>) is an with verbose output and sanity-checking tests</a>) is an

View File

@ -25,13 +25,29 @@
Worker-specific API needs to pass _this_ file (or equivalent) to the Worker-specific API needs to pass _this_ file (or equivalent) to the
Worker constructor and then listen for an event in the form shown Worker constructor and then listen for an event in the form shown
above in order to know when the module has completed initialization. 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"; "use strict";
(()=>{ (()=>{
const urlParams = new URL(self.location.href).searchParams; const urlParams = new URL(self.location.href).searchParams;
importScripts(urlParams.has('wasmfs') let theJs;
? 'sqlite3-wasmfs.js' if(urlParams.has('sqlite3.js')){
: '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)=>{ sqlite3InitModule().then((sqlite3)=>{
sqlite3.capi.sqlite3_wasmfs_opfs_dir(); sqlite3.capi.sqlite3_wasmfs_opfs_dir();
sqlite3.initWorker1API(); sqlite3.initWorker1API();

View File

@ -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>

View File

@ -7,23 +7,24 @@
######################################################################## ########################################################################
MAKEFILE.wasmfs := $(lastword $(MAKEFILE_LIST)) MAKEFILE.wasmfs := $(lastword $(MAKEFILE_LIST))
sqlite3-wasmfs.js := sqlite3-wasmfs.js # Maintenance reminder: these particular files cannot be built into a
sqlite3-wasmfs.wasm := sqlite3-wasmfs.wasm # 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) \ CLEAN_FILES += $(sqlite3-wasmfs.js) $(sqlite3-wasmfs.wasm) \
$(subst .js,.worker.js,$(sqlite3-wasmfs.js)) $(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. # emcc flags for .c/.o.
sqlite3-wasmfs.cflags := sqlite3-wasmfs.cflags :=
sqlite3-wasmfs.cflags += -std=c99 -fPIC sqlite3-wasmfs.cflags += -std=c99 -fPIC
sqlite3-wasmfs.cflags += -pthread 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 sqlite3-wasmfs.cflags += $(SQLITE_OPT) -DSQLITE_WASM_WASMFS
######################################################################## ########################################################################
@ -35,7 +36,7 @@ sqlite3-wasmfs.jsflags += -sMODULARIZE
sqlite3-wasmfs.jsflags += -sSTRICT_JS sqlite3-wasmfs.jsflags += -sSTRICT_JS
sqlite3-wasmfs.jsflags += -sDYNAMIC_EXECUTION=0 sqlite3-wasmfs.jsflags += -sDYNAMIC_EXECUTION=0
sqlite3-wasmfs.jsflags += -sNO_POLYFILL 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 sqlite3-wasmfs.jsflags += -sEXPORTED_RUNTIME_METHODS=FS,wasmMemory,allocateUTF8OnStack
# wasmMemory ==> for -sIMPORTED_MEMORY # wasmMemory ==> for -sIMPORTED_MEMORY
# allocateUTF8OnStack ==> wasmfs internals # allocateUTF8OnStack ==> wasmfs internals
@ -67,7 +68,7 @@ sqlite3-wasmfs.jsflags += -sWASM_BIGINT=$(emcc_enable_bigint)
$(eval $(call call-make-pre-js,sqlite3-wasmfs)) $(eval $(call call-make-pre-js,sqlite3-wasmfs))
sqlite3-wasmfs.jsflags += $(pre-post-common.flags) $(pre-post-sqlite3-wasmfs.flags) sqlite3-wasmfs.jsflags += $(pre-post-common.flags) $(pre-post-sqlite3-wasmfs.flags)
$(sqlite3-wasmfs.js): $(sqlite3-wasm.c) \ $(sqlite3-wasmfs.js): $(sqlite3-wasm.c) \
EXPORTED_FUNCTIONS.api $(MAKEFILE) $(MAKEFILE.wasmfs) \ $(EXPORTED_FUNCTIONS.api) $(MAKEFILE) $(MAKEFILE.wasmfs) \
$(pre-post-sqlite3-wasmfs.deps) $(pre-post-sqlite3-wasmfs.deps)
@echo "Building $@ ..." @echo "Building $@ ..."
$(emcc.bin) -o $@ $(emcc_opt_full) $(emcc.flags) \ $(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: # speedtest1 for wasmfs. Re. sqlite3-wasm.o vs sqlite3-wasm.c:
# building against the latter (predictably) results in a slightly # building against the latter (predictably) results in a slightly
# faster binary. # 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.wasm := $(subst .js,.wasm,$(speedtest1-wasmfs.js))
speedtest1-wasmfs.eflags := $(sqlite3-wasmfs.fsflags) speedtest1-wasmfs.eflags := $(sqlite3-wasmfs.fsflags)
speedtest1-wasmfs.eflags += $(SQLITE_OPT) -DSQLITE_WASM_WASMFS speedtest1-wasmfs.eflags += $(SQLITE_OPT) -DSQLITE_WASM_WASMFS
$(eval $(call call-make-pre-js,speedtest1-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) \ $(MAKEFILE) $(MAKEFILE.wasmfs) \
$(pre-post-speedtest1-wasmfs.deps) \ $(pre-post-speedtest1-wasmfs.deps) \
EXPORTED_FUNCTIONS.speedtest1 $(EXPORTED_FUNCTIONS.speedtest1)
@echo "Building $@ ..." @echo "Building $@ ..."
$(emcc.bin) \ $(emcc.bin) \
$(speedtest1-wasmfs.eflags) $(speedtest1-common.eflags) \ $(speedtest1-wasmfs.eflags) $(speedtest1-common.eflags) \
$(pre-post-speedtest1-wasmfs.flags) \ $(pre-post-speedtest1-wasmfs.flags) \
$(speedtest1.cflags) \ $(speedtest1.cflags) \
$(sqlite3-wasmfs.cflags) \ $(sqlite3-wasmfs.cflags) \
-o $@ $(speedtest1.cs) -lm -o $@ $(speedtest1.cses) -lm
$(maybe-wasm-strip) $(speedtest1-wasmfs.wasm) $(maybe-wasm-strip) $(speedtest1-wasmfs.wasm)
ls -la $@ $(speedtest1-wasmfs.wasm) ls -la $@ $(speedtest1-wasmfs.wasm)

View File

@ -1,5 +1,5 @@
C More\swork\son\sthe\sJS\send-user\sdeliverables.\sAdd\stool/stripccomments.c\sto\ssupport\sthat. 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-18T20:36:50.562 D 2022-10-19T01:07:30.150
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@ -472,14 +472,13 @@ F ext/userauth/sqlite3userauth.h 7f3ea8c4686db8e40b0a0e7a8e0b00fac13aa7a3
F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04 F ext/userauth/user-auth.txt e6641021a9210364665fe625d067617d03f27b04
F ext/userauth/userauth.c 7f00cded7dcaa5d47f54539b290a43d2e59f4b1eb5f447545fa865f002fc80cb F ext/userauth/userauth.c 7f00cded7dcaa5d47f54539b290a43d2e59f4b1eb5f447545fa865f002fc80cb
F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c
F ext/wasm/EXPORTED_RUNTIME_METHODS.fiddle 0e88c8cfc3719e4b7e74980d9da664c709e68acf863e48386cda376edfd3bfb0 F ext/wasm/GNUmakefile d5a39121aeb316562895889c6b27f9ec11e9cae2f844b23d5c7d04479a3bec2a
F ext/wasm/GNUmakefile 279fd4589ba602e24d8e66ca795ec5a2275a0e329405e4e984e8ea0579339bae F ext/wasm/README-dist.txt 13438bafe5fab1eca223be91459e757e6e67248fc959b9ae0ffb5808fd0a1610
F ext/wasm/README-dist.txt 170be2d47b4b52504ef09088ca2f143aab657de0f9ac04d3a68e366f40929c3d
F ext/wasm/README.md 1e5b28158b74ab3ffc9d54fcbc020f0bbeb82c2ff8bbd904214c86c70e8a3066 F ext/wasm/README.md 1e5b28158b74ab3ffc9d54fcbc020f0bbeb82c2ff8bbd904214c86c70e8a3066
F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api 89983a8d122c35a90c65ec667844b95a78bcd04f3198a99c1e0c8368c1a0b03a F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api 89983a8d122c35a90c65ec667844b95a78bcd04f3198a99c1e0c8368c1a0b03a
F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de2470b0e9e7fbf7a5b41261c367cf4f1b7287 F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de2470b0e9e7fbf7a5b41261c367cf4f1b7287
F ext/wasm/api/README.md 946398dd80bfd673f098b9d6ca3564e1fc77b03e660274d132f267c407b8703c 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/extern-pre-js.js cc61c09c7a24a07dbecb4c352453c3985170cec12b4e7e7e7a4d11d43c5c8f41
F ext/wasm/api/post-js-footer.js cd0a8ec768501d9bd45d325ab0442037fb0e33d1f3b4f08902f15c34720ee4a1 F ext/wasm/api/post-js-footer.js cd0a8ec768501d9bd45d325ab0442037fb0e33d1f3b4f08902f15c34720ee4a1
F ext/wasm/api/post-js-header.js 2e5c886398013ba2af88028ecbced1e4b22dc96a86467f1ecc5ba9e64ef90a8b 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-glue.js 05eb701460bb72edbe3bf923bd51262551614612c37802fc597eabb4c6b83232
F ext/wasm/api/sqlite3-api-oo1.js 9a5f0c00d476c504f16dcd456e1743dbc2826ca3d10645dfa62663a39e3ed0d8 F ext/wasm/api/sqlite3-api-oo1.js 9a5f0c00d476c504f16dcd456e1743dbc2826ca3d10645dfa62663a39e3ed0d8
F ext/wasm/api/sqlite3-api-opfs.js 5a8ab3b76880c8ada8710ca9ba1ca5b160872edfd8bd5322e4f179a7f41cc616 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-api-worker1.js 7f4f46cb6b512a48572d7567233896e6a9c46570c44bdc3d13419730c7c221c8
F ext/wasm/api/sqlite3-license-version-header.js a661182fc93fc2cf212dfd0b987f8e138a3ac98f850b1112e29b5fbdaecc87c3 F ext/wasm/api/sqlite3-license-version-header.js a661182fc93fc2cf212dfd0b987f8e138a3ac98f850b1112e29b5fbdaecc87c3
F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9 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.html cf1a410c92bad50fcec2ddc71390b4e9df63a6ea1bef12a5163a66a0af4d78d9
F ext/wasm/batch-runner.js 5bae81684728b6be157d1f92b39824153f0fd019345b39f2ab8930f7ee2a57d8 F ext/wasm/batch-runner.js 5bae81684728b6be157d1f92b39824153f0fd019345b39f2ab8930f7ee2a57d8
F ext/wasm/common/SqliteTestUtil.js 647bf014bd30bdd870a7e9001e251d12fc1c9ec9ce176a1004b838a4b33c5c05 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-123.js e0cbeb3495e14103763d5c49794a24d67cf3d78e0ed5b82843be70c0c2ee4b3b
F ext/wasm/demo-kvvfs1.html 7d4f28873de67f51ac18c584b7d920825139866a96049a49c424d6f5a0ea5e7f F ext/wasm/demo-kvvfs1.html 7d4f28873de67f51ac18c584b7d920825139866a96049a49c424d6f5a0ea5e7f
F ext/wasm/demo-kvvfs1.js 105596bd2ccd0b1deb5fde8e99b536e8242d4bb5932fac0c8403ff3a6bc547e8 F ext/wasm/demo-kvvfs1.js 105596bd2ccd0b1deb5fde8e99b536e8242d4bb5932fac0c8403ff3a6bc547e8
F ext/wasm/dist.make 1d59fafdfcf6fc5ee0f3351b21199585dba21afcf0518241789fd5d37a1c011d F ext/wasm/dist.make 2015746f6cd37ed17fadb14dba45d41ac6db727917d04f9b9aa431a816c5e54d
F ext/wasm/fiddle.make b609dfde299b4523d7123b7e0cecaa1a0aff0dd984e62cea653aae91f5063c90 F ext/wasm/fiddle.make a87250f6f973d9632818b9d2396c59e6542da180f8f10b164665a6fc04d239bc
F ext/wasm/fiddle/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f F ext/wasm/fiddle/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f
F ext/wasm/fiddle/fiddle-worker.js 531859a471924a0ea48afa218e6877f0c164ca324d51e15843ed6ecc1c65c7ee F ext/wasm/fiddle/fiddle-worker.js 531859a471924a0ea48afa218e6877f0c164ca324d51e15843ed6ecc1c65c7ee
F ext/wasm/fiddle/fiddle.html 5daf54e8f3d7777cbb1ca4f93affe28858dbfff25841cb4ab81d694efed28ec2 F ext/wasm/fiddle/fiddle.html 5daf54e8f3d7777cbb1ca4f93affe28858dbfff25841cb4ab81d694efed28ec2
F ext/wasm/fiddle/fiddle.js 974b995119ac443685d7d94d3b3c58c6a36540e9eb3fed7069d5653284071715 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.js 0d7f32817456a0f3937fcfd934afeb32154ca33580ab264dab6c285e6dbbd215
F ext/wasm/jaccwabyt/jaccwabyt.md 9aa6951b529a8b29f578ec8f0355713c39584c92cf1708f63ba0cf917cb5b68e F ext/wasm/jaccwabyt/jaccwabyt.md 9aa6951b529a8b29f578ec8f0355713c39584c92cf1708f63ba0cf917cb5b68e
F ext/wasm/scratchpad-wasmfs-main.html 20cf6f1a8f368e70d01e8c17200e3eaa90f1c8e1029186d836d14b83845fbe06 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/sql/001-sudoku.sql 35b7cb7239ba5d5f193bc05ec379bcf66891bce6f2a5b3879f2f78d0917299b5
F ext/wasm/sqlite3-opfs-async-proxy.js 206ce6bbc3c30ad51a37d9c25e3a2712e70b586e0f9a2cf8cb0b9619017c2671 F ext/wasm/sqlite3-opfs-async-proxy.js 206ce6bbc3c30ad51a37d9c25e3a2712e70b586e0f9a2cf8cb0b9619017c2671
F ext/wasm/sqlite3-worker1-promiser.js 307d7837420ca6a9d3780dfc81194f1c0715637e6d9540e935514086b96913d8 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.html eb69dda21eb414b8f5e3f7c1cc0f774103cc9c0f87b2d28a33419e778abfbab5
F ext/wasm/test-opfs-vfs.js 56c3d725044c668fa7910451e96c1195d25ad95825f9ac79f747a7759d1973d0 F ext/wasm/test-opfs-vfs.js 56c3d725044c668fa7910451e96c1195d25ad95825f9ac79f747a7759d1973d0
F ext/wasm/tester1-worker.html 0af7a22025ff1da72a84765d64f8f221844a57c6e6e314acf3a30f176101fd3f 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/tester1.js 8161dcc4b21902dadec2d3a5dc5700cab9c1641db0603e2ea56ea2a8de6cbab3
F ext/wasm/testing-worker1-promiser.html 6eaec6e04a56cf24cf4fa8ef49d78ce8905dde1354235c9125dca6885f7ce893 F ext/wasm/testing-worker1-promiser.html 6eaec6e04a56cf24cf4fa8ef49d78ce8905dde1354235c9125dca6885f7ce893
F ext/wasm/testing-worker1-promiser.js bd788e33c1807e0a6dda9c9a9d784bd3350ca49c9dd8ae2cc8719b506b6e013e F ext/wasm/testing-worker1-promiser.js bd788e33c1807e0a6dda9c9a9d784bd3350ca49c9dd8ae2cc8719b506b6e013e
F ext/wasm/testing1.html 50575755e43232dbe4c2f97c9086b3118eb91ec2ee1fae931e6d7669fb17fcae
F ext/wasm/testing2.html a66951c38137ff1d687df79466351f3c734fa9c6d9cce71d3cf97c291b2167e3 F ext/wasm/testing2.html a66951c38137ff1d687df79466351f3c734fa9c6d9cce71d3cf97c291b2167e3
F ext/wasm/testing2.js 88f40ef3cd8201bdadd120a711c36bbf0ce56cc0eab1d5e7debb71fed7822494 F ext/wasm/testing2.js 88f40ef3cd8201bdadd120a711c36bbf0ce56cc0eab1d5e7debb71fed7822494
F ext/wasm/version-info.c 5fa356d38859d71a0369b5c37e1935def7413fcc8a4e349a39d9052c1d0479f4 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 install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8 F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
F magic.txt 8273bf49ba3b0c8559cb2774495390c31fd61c60 F magic.txt 8273bf49ba3b0c8559cb2774495390c31fd61c60
@ -2037,8 +2035,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
P 740a2eb0928d54fdf735a8e573c6a61a34dbd295b46e5b6ef39e957fd2623293 P 2156f0744acfe425457430a0f6a7e02de907de85edba81a6d4eef40293e561c8
R f3423b9e5fdd1b3c8749326c161b8bbf R ee0ece99cec342c109cdb62c53280a5b
U stephan U stephan
Z 8ed4b03e8c6243f1d25f4dc2d31715c7 Z 86621ae22c81858679965e272da6ace1
# Remove this line to create a well-formed Fossil manifest. # Remove this line to create a well-formed Fossil manifest.

View File

@ -1 +1 @@
2156f0744acfe425457430a0f6a7e02de907de85edba81a6d4eef40293e561c8 5b23e0675efdd2f1ea7b4f5836a579e8d6aa8a25b3f1a6a950520ad845ff01bb