From: stephan Date: Sun, 21 Sep 2025 00:59:23 +0000 (+0000) Subject: Resolve the non-functional 64-bit JS vtabs and VFSes. All wasm tests now pass on... X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=51127416a4f8cd15ee71437194eafcb2a781fcdd;p=thirdparty%2Fsqlite.git Resolve the non-functional 64-bit JS vtabs and VFSes. All wasm tests now pass on a 64-bit build. Investigation of the fiddle failure on a second db import is still pending. FossilOrigin-Name: 7c44b48b628d3d93b13031e9fd08ed39fec35c661aca9e813a89348d6c415663 --- diff --git a/ext/wasm/GNUmakefile b/ext/wasm/GNUmakefile index 326cb1bf67..8d189c44c8 100644 --- a/ext/wasm/GNUmakefile +++ b/ext/wasm/GNUmakefile @@ -475,7 +475,6 @@ emcc.MEMORY64 ?= 1 ######################################################################## ifneq (0,$(emcc.MEMORY64)) - $(info WARNING: MEMORY64 mode is known to not work) emcc.WASM_BIGINT = 1 # -sMEMORY64=1+ assumes -sWASM_BIGINT=1, so we'll make it explicit # SQLITE.CALL.C-PP.FILTER.global += -DsMEMORY64=$(emcc.MEMORY64) diff --git a/ext/wasm/api/sqlite3-api-glue.c-pp.js b/ext/wasm/api/sqlite3-api-glue.c-pp.js index cbc3d9d39d..0f8c295ed7 100644 --- a/ext/wasm/api/sqlite3-api-glue.c-pp.js +++ b/ext/wasm/api/sqlite3-api-glue.c-pp.js @@ -1891,7 +1891,7 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){ if(this.ondispose.__removeFuncList){ this.ondispose.__removeFuncList.forEach( (v,ndx)=>{ - if('number'===typeof v){ + if(wasm.isPtr(v)){ try{wasm.uninstallFunction(v)} catch(e){/*ignore*/} } @@ -1921,7 +1921,7 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){ } tgt[memKey] = fProxy; }else{ - const pFunc = wasm.installFunction(fProxy, tgt.memberSignature(name, true)); + const pFunc = wasm.installFunction(fProxy, tgt.memberSignature(name, false)); tgt[memKey] = pFunc; if(!tgt.ondispose || !tgt.ondispose.__removeFuncList){ tgt.addOnDispose('ondispose.__removeFuncList handler', diff --git a/ext/wasm/api/sqlite3-vfs-opfs-sahpool.c-pp.js b/ext/wasm/api/sqlite3-vfs-opfs-sahpool.c-pp.js index 73426f2039..c987458a11 100644 --- a/ext/wasm/api/sqlite3-vfs-opfs-sahpool.c-pp.js +++ b/ext/wasm/api/sqlite3-vfs-opfs-sahpool.c-pp.js @@ -232,11 +232,11 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){ pool.log(`xRead ${file.path} ${n} @ ${offset64}`); try { const nRead = file.sah.read( - wasm.heap8u().subarray(pDest, pDest+n), + wasm.heap8u().subarray(Number(pDest), Number(pDest)+n), {at: HEADER_OFFSET_DATA + Number(offset64)} ); if(nRead < n){ - wasm.heap8u().fill(0, pDest + nRead, pDest + n); + wasm.heap8u().fill(0, Number(pDest) + nRead, Number(pDest) + n); return capi.SQLITE_IOERR_SHORT_READ; } return 0; @@ -287,7 +287,7 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){ pool.log(`xWrite ${file.path} ${n} ${offset64}`); try{ const nBytes = file.sah.write( - wasm.heap8u().subarray(pSrc, pSrc+n), + wasm.heap8u().subarray(Number(pSrc), Number(pSrc)+n), { at: HEADER_OFFSET_DATA + Number(offset64) } ); return n===nBytes ? 0 : toss("Unknown write() failure."); @@ -452,7 +452,8 @@ globalThis.sqlite3ApiBootstrap.initializers.push(function(sqlite3){ vfsMethods.xRandomness = function(pVfs, nOut, pOut){ const heap = wasm.heap8u(); let i = 0; - for(; i < nOut; ++i) heap[pOut + i] = (Math.random()*255000) & 0xFF; + const npOut = Number(pOut); + for(; i < nOut; ++i) heap[npOut + i] = (Math.random()*255000) & 0xFF; return i; }; } diff --git a/ext/wasm/api/sqlite3-vfs-opfs.c-pp.js b/ext/wasm/api/sqlite3-vfs-opfs.c-pp.js index 3f7e81cc95..dc74dc13b7 100644 --- a/ext/wasm/api/sqlite3-vfs-opfs.c-pp.js +++ b/ext/wasm/api/sqlite3-vfs-opfs.c-pp.js @@ -805,7 +805,7 @@ const installOpfsVfs = function callee(options){ Because the heap is _not_ a SharedArrayBuffer, we have to copy the results. TypedArray.set() seems to be the fastest way to copy this. */ - wasm.heap8u().set(f.sabView.subarray(0, n), pDest); + wasm.heap8u().set(f.sabView.subarray(0, n), Number(pDest)); } }catch(e){ error("xRead(",arguments,") failed:",e,f); diff --git a/ext/wasm/common/whwasmutil.js b/ext/wasm/common/whwasmutil.js index 79f393d03f..3933d8b5d4 100644 --- a/ext/wasm/common/whwasmutil.js +++ b/ext/wasm/common/whwasmutil.js @@ -483,7 +483,7 @@ globalThis.WhWasmUtilInstaller = function(target){ Supported letters: - `i` = int32 - - `p` = int32 ("pointer") + - `p` = int32 or int64 ("pointer") - `j` = int64 - `f` = float32 - `d` = float64 @@ -521,7 +521,7 @@ globalThis.WhWasmUtilInstaller = function(target){ /** Encodes n, which must be <2^14 (16384), into target array tgt, as a little-endian value, using the given method ('push' or 'unshift'). */ - uleb128Encode: function(tgt, method, n){ + uleb128Encode: (tgt, method, n)=>{ if(n<128) tgt[method](n); else tgt[method]( (n % 128) | 128, n>>7); }, @@ -532,13 +532,15 @@ globalThis.WhWasmUtilInstaller = function(target){ rxJSig: /^(\w)\((\w*)\)$/, /** Returns the parameter-value part of the given signature string. */ - sigParams: function(sig){ + sigParams: (sig)=>{ const m = f._.rxJSig.exec(sig); return m ? m[2] : sig.substr(1); }, /** Returns the IR value for the given letter or throws if the letter is invalid. */ + letterType: (x)=>f._.sigTypes[x] || toss("Invalid signature letter:",x), + /** Returns an object describing the result type and parameter type(s) of the given function signature, or throws if the signature is invalid. */ @@ -555,6 +557,7 @@ globalThis.WhWasmUtilInstaller = function(target){ /** Pushes the WASM data type code for the given signature letter to the given target array. Throws if letter is invalid. */ + pushSigType: (dest, letter)=>dest.push(f._.typeCodes[f._.letterType(letter)]) }; }/*static init*/ @@ -563,16 +566,17 @@ globalThis.WhWasmUtilInstaller = function(target){ sig = func; func = x; } - const sigParams = f._.sigParams(sig); + const _ = f._; + const sigParams = _.sigParams(sig); const wasmCode = [0x01/*count: 1*/, 0x60/*function*/]; - f._.uleb128Encode(wasmCode, 'push', sigParams.length); - for(const x of sigParams) f._.pushSigType(wasmCode, x); + _.uleb128Encode(wasmCode, 'push', sigParams.length); + for(const x of sigParams) _.pushSigType(wasmCode, x); if('v'===sig[0]) wasmCode.push(0); else{ wasmCode.push(1); - f._.pushSigType(wasmCode, sig[0]); + _.pushSigType(wasmCode, sig[0]); } - f._.uleb128Encode(wasmCode, 'unshift', wasmCode.length)/* type section length */; + _.uleb128Encode(wasmCode, 'unshift', wasmCode.length)/* type section length */; wasmCode.unshift( 0x00, 0x61, 0x73, 0x6d, /* magic: "\0asm" */ 0x01, 0x00, 0x00, 0x00, /* version: 1 */ @@ -625,7 +629,7 @@ globalThis.WhWasmUtilInstaller = function(target){ } } if(!ptr){ - ptr = oldLen; + ptr = __asPtrType(oldLen); ft.grow(__asPtrType(1)); } try{ diff --git a/ext/wasm/fiddle/fiddle-worker.js b/ext/wasm/fiddle/fiddle-worker.js index 2a13653d8e..7907fbec8d 100644 --- a/ext/wasm/fiddle/fiddle-worker.js +++ b/ext/wasm/fiddle/fiddle-worker.js @@ -201,9 +201,9 @@ }else if(sql){ if(Array.isArray(sql)) sql = sql.join(''); f._running = true; - //stdout("calling _()",sql); + stdout("calling native exec:",sql); f._(sql); - //stdout("returned _()",sql); + stdout("returned from native exec",sql); } }finally{ delete f._running; @@ -288,7 +288,7 @@ buffer.set([1,1], 18)/*force db out of WAL mode*/; const fn = ( opt.filename - ? opt.filename.split(/[/\\]/).pop().replace(/["']/g,'_') + ? opt.filename.split(/[/\\]/).pop().replace(/["'\s]/g,'_') : ("db-"+((Math.random() * 10000000) | 0)+ "-"+((Math.random() * 10000000) | 0)+".sqlite3") ); @@ -307,7 +307,7 @@ fiddleModule.FS.unlink(fnAbs); } fiddleModule.FS.createDataFile("/", fn, buffer, true, true); - Sqlite3Shell.exec('.open "'+fnAbs+'"'); + Sqlite3Shell.exec('.open '+fnAbs); if(oldName && oldName!==fnAbs){ try{fiddleModule.fsUnlink(oldName)} catch(e){/*ignored*/} diff --git a/ext/wasm/jaccwabyt/jaccwabyt.js b/ext/wasm/jaccwabyt/jaccwabyt.js index 906f3fdcb7..bdfc57a40e 100644 --- a/ext/wasm/jaccwabyt/jaccwabyt.js +++ b/ext/wasm/jaccwabyt/jaccwabyt.js @@ -553,7 +553,8 @@ globalThis.Jaccwabyt = function StructBinderFactory(config){ }); const isNumericValue = (v)=>{ - return Number.isFinite(v) || (v instanceof Number) + return (v instanceof Number) + || Number.isFinite(v) || (bigIntEnabled ? ('bigint'===typeof v /*does not work: v instanceof BigInt*/) : false); diff --git a/ext/wasm/tester1.c-pp.js b/ext/wasm/tester1.c-pp.js index 68bf754f51..5d9f7dfd9d 100644 --- a/ext/wasm/tester1.c-pp.js +++ b/ext/wasm/tester1.c-pp.js @@ -2354,7 +2354,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule; name: 'virtual table #1: eponymous w/ manual exception handling', predicate: (sqlite3)=>(!!sqlite3.capi.sqlite3_vtab || "Missing vtab support"), test: function(sqlite3){ - if( skipIn64BitBuild('virtual table #1') ) return; + //if( skipIn64BitBuild('virtual table #1') ) return; const VT = sqlite3.vtab; const tmplCols = Object.assign(Object.create(null),{ A: 0, B: 1 @@ -2366,6 +2366,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule; const tmplMod = new sqlite3.capi.sqlite3_module(); T.assert(!tmplMod.$xUpdate); const dbg = 1 ? ()=>{} : sqlite3.config.debug; + //tmplMod.debugFlags(0x03); tmplMod.setupModule({ catchExceptions: false, methods: { @@ -2563,7 +2564,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule; name: 'virtual table #2: non-eponymous w/ automated exception wrapping', predicate: (sqlite3)=>!!sqlite3.capi.sqlite3_vtab || "Missing vtab support", test: function(sqlite3){ - if( skipIn64BitBuild('virtual table #2') ) return; + //if( skipIn64BitBuild('virtual table #2') ) return; const VT = sqlite3.vtab; const tmplCols = Object.assign(Object.create(null),{ A: 0, B: 1 @@ -3192,7 +3193,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule; .t({ name: 'OPFS db sanity checks', test: async function(sqlite3){ - if( skipIn64BitBuild('"opfs" vfs') ) return; + //if( skipIn64BitBuild('"opfs" vfs') ) return; T.assert(capi.sqlite3_vfs_find('opfs')); const opfs = sqlite3.opfs; const filename = this.opfsDbFile = '/dir/sqlite3-tester1.db'; @@ -3201,7 +3202,6 @@ globalThis.sqlite3InitModule = sqlite3InitModule; 'create table p(a);', 'insert into p(a) values(1),(2),(3)' ]; - wasm.xWrap.debug = true; let db = new sqlite3.oo1.OpfsDb(fileUri); try { db.exec(initSql); @@ -3230,7 +3230,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule; .t({ name: 'OPFS import', test: async function(sqlite3){ - if( skipIn64BitBuild('"opfs" vfs import') ) return; + //if( skipIn64BitBuild('"opfs" vfs import') ) return; let db; const filename = this.opfsDbFile; try { @@ -3268,7 +3268,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule; .t({ name: '(Internal-use) OPFS utility APIs', test: async function(sqlite3){ - if( skipIn64BitBuild('"opfs" internal APIs') ) return; + //if( skipIn64BitBuild('"opfs" internal APIs') ) return; const filename = this.opfsDbFile; const unlink = this.opfsUnlink; T.assert(filename && !!unlink); @@ -3321,7 +3321,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule; .t({ name: 'SAH sanity checks', test: async function(sqlite3){ - if( skipIn64BitBuild('"opfs-sahpool" vfs') ) return; + //if( skipIn64BitBuild('"opfs-sahpool" vfs') ) return; T.assert(!sqlite3.capi.sqlite3_vfs_find(sahPoolConfig.name)) .assert(sqlite3.capi.sqlite3_js_vfs_list().indexOf(sahPoolConfig.name) < 0) const inst = sqlite3.installOpfsSAHPoolVfs, @@ -3394,13 +3394,13 @@ globalThis.sqlite3InitModule = sqlite3InitModule; db.close(); T.assert( u2===u2.pauseVfs() ) .assert( u2.isPaused() ) - .assert( 0===capi.sqlite3_vfs_find(u2.vfsName) ) + .assert( !capi.sqlite3_vfs_find(u2.vfsName) ) .mustThrowMatching(()=>new u2.OpfsSAHPoolDb(dbName), /.+no such vfs: .+/, "VFS is not available") .assert( u2===await u2.unpauseVfs() ) .assert( u2===await u1.unpauseVfs(), "unpause is a no-op if the VFS is not paused" ) - .assert( 0!==capi.sqlite3_vfs_find(u2.vfsName) ); + .assert( !!capi.sqlite3_vfs_find(u2.vfsName) ); const fileNames = u1.getFileNames(); T.assert(1 === fileNames.length) .assert(dbName === fileNames[0]) @@ -3682,7 +3682,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule; predicate: ()=>hasOpfs() || "Requires OPFS to reproduce", //predicate: ()=>false, test: async function(sqlite3){ - if( skipIn64BitBuild('pending repair of opfs') ) return; + //if( skipIn64BitBuild('pending repair of opfs') ) return; /* https://sqlite.org/forum/forumpost/cf37d5ff1182c31081 The "opfs" VFS (but not SAHPool) was formerly misbehaving @@ -3854,6 +3854,7 @@ globalThis.sqlite3InitModule = sqlite3InitModule; }else{ logClass('warning',"BigInt/int64 support is disabled."); } + log("WASM pointer size:",wasm.pointerSizeof,"bytes"); if(haveWasmCTests()){ log("sqlite3__wasm_test_...() APIs are available."); }else{ diff --git a/manifest b/manifest index da818fd1d6..653852c7fe 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Determine\sthe\sWASM\senvironment's\spointer\ssize\sat\sruntime\sinstead\sof\sbaking\sit\sin\sat\sbuild-time\svia\sthe\spreprocessor. -D 2025-09-20T23:21:24.945 +C Resolve\sthe\snon-functional\s64-bit\sJS\svtabs\sand\sVFSes.\sAll\swasm\stests\snow\spass\son\sa\s64-bit\sbuild.\sInvestigation\sof\sthe\sfiddle\sfailure\son\sa\ssecond\sdb\simport\sis\sstill\spending. +D 2025-09-21T00:59:23.932 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -578,7 +578,7 @@ F ext/session/sqlite3session.c 9cd47bfefb23c114b7a5d9ee5822d941398902f30516bf0dd F ext/session/sqlite3session.h 7404723606074fcb2afdc6b72c206072cdb2b7d8ba097ca1559174a80bc26f7a F ext/session/test_session.c 8766b5973a6323934cb51248f621c3dc87ad2a98f023c3cc280d79e7d78d36fb F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c -F ext/wasm/GNUmakefile c63ea7b7375f7490314c58bb2223b98cc9324ce22b50c7b2d947964044a6388b +F ext/wasm/GNUmakefile f6eca9e8cd48cf0d51c6d3f3cd2b89a0da832d23d532765c61e3ccf9fe3a9c8a F ext/wasm/README-dist.txt f01081a850ce38a56706af6b481e3a7878e24e42b314cfcd4b129f0f8427066a F ext/wasm/README.md 66ace67ae98a45e4116f2ca5425b716887bcee4d64febee804ff6398e1ae9ec7 F ext/wasm/SQLTester/GNUmakefile e0794f676d55819951bbfae45cc5e8d7818dc460492dc317ce7f0d2eca15caff @@ -597,15 +597,15 @@ F ext/wasm/api/post-js-footer.js 365405929f41ca0e6d389ed8a8da3f3c93e11d3ef43a90a F ext/wasm/api/post-js-header.js 53740d824e5d9027eb1e6fd59e216abbd2136740ce260ea5f0699ff2acb0a701 F ext/wasm/api/pre-js.c-pp.js 58f823de197e2c10d76179aa05410a593b7ae03e1ece983bb42ffd818e8857e1 F ext/wasm/api/sqlite3-api-cleanup.js 0e27cacbde6a97f5b91cdb52d4486e4eba25669b986af10eceaa1d6b617586e3 -F ext/wasm/api/sqlite3-api-glue.c-pp.js b78113054fa3e80f0b45622a598e30f881bf3ef488177773a8f00921ce92190a +F ext/wasm/api/sqlite3-api-glue.c-pp.js 4334fa642cc654f3ce4834dca45fc91ebe9816e31ca964402e364b89f251d3dd F ext/wasm/api/sqlite3-api-oo1.c-pp.js 3224395cfba23cd630f538fef4a57191c658b0791bacb76a4d7dead6f975ee84 F ext/wasm/api/sqlite3-api-prologue.js 98b0cbe1fecfe037ef66330e7f40be44492b0e75dc4de7559886bd60181b54f1 F ext/wasm/api/sqlite3-api-worker1.c-pp.js 760191cd13416e6f5adfd9fcc8a97fed5645c9e0a5fbac213a2d4ce2d79a4334 F ext/wasm/api/sqlite3-license-version-header.js 0c807a421f0187e778dc1078f10d2994b915123c1223fe752b60afdcd1263f89 F ext/wasm/api/sqlite3-opfs-async-proxy.js 9654b565b346dc609b75d15337f20acfa7af7d9d558da1afeb9b6d8eaa404966 F ext/wasm/api/sqlite3-vfs-helper.c-pp.js 3f828cc66758acb40e9c5b4dcfd87fd478a14c8fb7f0630264e6c7fa0e57515d -F ext/wasm/api/sqlite3-vfs-opfs-sahpool.c-pp.js 0f68a64e508598910e7c01214ae27d603dfc8baec6a184506fafac603a901931 -F ext/wasm/api/sqlite3-vfs-opfs.c-pp.js c4927aed1ed6e814ea16a8cd37fb45f68c199ebc6c8c6ba26a6c98177afdce85 +F ext/wasm/api/sqlite3-vfs-opfs-sahpool.c-pp.js e6389ff91cdb3c17354211bea226f67c2374f23fc0f51691e7c8de66cd2a678d +F ext/wasm/api/sqlite3-vfs-opfs.c-pp.js 7071a9519dacb643a7fe2fd6b9f33f7c69e63d2929e907a5ef846bb5b1b7dec8 F ext/wasm/api/sqlite3-vtab-helper.c-pp.js 729131e48d5c0a757970da167d667ce87e49042e0cc7016da5e95d8af70088b9 F ext/wasm/api/sqlite3-wasm.c ff2dc011e17b06186b8b35e408626d7ace69a362b92c197a34d78bef25c7105a F ext/wasm/api/sqlite3-worker1-promiser.c-pp.js 4ad256b4ff7f839ad18931ed35d46cced544207bd2209665ec552e193f7f4544 @@ -618,7 +618,7 @@ F ext/wasm/c-pp.c cca55c5b55ebd8d29916adbedb0e40baa12caa9a2e8429f812683c308f9b0e F ext/wasm/common/SqliteTestUtil.js 7adaeffef757d8708418dc9190f72df22367b531831775804b31598b44f6aa51 F ext/wasm/common/emscripten.css 11bd104b6c0d597c67d40cc8ecc0a60dae2b965151e3b6a37fa5708bac3acd15 F ext/wasm/common/testing.css e97549bab24126c24e0daabfe2de9bb478fb0a69fdb2ddd0a73a992c091aad6f -F ext/wasm/common/whwasmutil.js b06a7770c32dd7a847f30cd6f76e5b1818c862ec4d28245ad2aac1f42d800bcf +F ext/wasm/common/whwasmutil.js 17cfd90fc524a69d92fa6e9c6040d576f2707fdcf4a1a2b84e59e004b8ca8236 F ext/wasm/config.make.in c424ae1cc3c89274520ad312509d36c4daa34a3fce5d0c688e5f8f4365e1049a F ext/wasm/demo-123-worker.html a0b58d9caef098a626a1a1db567076fca4245e8d60ba94557ede8684350a81ed F ext/wasm/demo-123.html 8c70a412ce386bd3796534257935eb1e3ea5c581e5d5aea0490b8232e570a508 @@ -632,12 +632,12 @@ F ext/wasm/demo-worker1.js 08720227e98fa5b44761cf6e219269cee3e9dd0421d8d91459535 F ext/wasm/dist.make 57f5da2f0de5a297b5a0bc39ffec736380050578240ab24d864c2ff1b3634a3b F ext/wasm/example_extra_init.c 2347cd69d19d839ef4e5e77b7855103a7fe3ef2af86f2e8c95839afd8b05862f F ext/wasm/fiddle.make 732b5ba2d5c164080f7918eb4a82447a0039254867d775ba7603bd8bce2b6ac3 -F ext/wasm/fiddle/fiddle-worker.js eaacb0c35cfc364414ebd247877cdf79415b8a8e3ffc542ba2bd3be049810b5e +F ext/wasm/fiddle/fiddle-worker.js 2f17397ac95f88e0319adf69bf902f0311c7ed8220c9ae813baed0a4984958c9 F ext/wasm/fiddle/fiddle.js f0b96f978c7c77fea8d092aa79c77849ce111d7b1ba60ffba07675009682184e F ext/wasm/fiddle/index.html 17c7d6b21f40fbf462162c4311b63d760b065e419d9f5a96534963b0e52af940 F ext/wasm/index-dist.html 56132399702b15d70c474c3f1952541e25cb0922942868f70daf188f024b3730 F ext/wasm/index.html bcaa00eca521b372a6a62c7e7b17a870b0fcdf3e418a5921df1fd61e5344080d -F ext/wasm/jaccwabyt/jaccwabyt.js 9a8b8097161164284249fbd3c08bf4aa86f917a0862ae9a01b7bc4ef7d921c29 +F ext/wasm/jaccwabyt/jaccwabyt.js 76b3bf89faa588c90f49d77f5a7de149003717eeef482b1767a2268ea9c97824 F ext/wasm/jaccwabyt/jaccwabyt.md 1128e3563e7eff90b5a373395251fc76cb32386fad1fea6075b0f34a8f1b9bdf F ext/wasm/mkwasmbuilds.c b722a3a44edc1498575d935939dfcbe23172f98b0f40d068998e0950707e749d F ext/wasm/module-symbols.html dc476b403369b26a1a23773e13b80f41b9a49f0825e81435fe3600a7cfbbe337 @@ -655,7 +655,7 @@ F ext/wasm/test-opfs-vfs.html 1f2d672f3f3fce810dfd48a8d56914aba22e45c6834e262555 F ext/wasm/test-opfs-vfs.js 1618670e466f424aa289859fe0ec8ded223e42e9e69b5c851f809baaaca1a00c F ext/wasm/tester1-worker.html ebc4b820a128963afce328ecf63ab200bd923309eb939f4110510ab449e9814c F ext/wasm/tester1.c-pp.html 1c1bc78b858af2019e663b1a31e76657b73dc24bede28ca92fbe917c3a972af2 -F ext/wasm/tester1.c-pp.js 91b848e0de21c13d689e64d1b42ac1277b2c1c9649261ef082bb5fd3fbb3ea9c +F ext/wasm/tester1.c-pp.js f601700ef1f7e14a1861fb006b8e33a4299ba25a09a064a10e2355d51eb7ec33 F ext/wasm/tests/opfs/concurrency/index.html 657578a6e9ce1e9b8be951549ed93a6a471f4520a99e5b545928668f4285fb5e F ext/wasm/tests/opfs/concurrency/test.js d08889a5bb6e61937d0b8cbb78c9efbefbf65ad09f510589c779b7cc6a803a88 F ext/wasm/tests/opfs/concurrency/worker.js 0a8c1a3e6ebb38aabbee24f122693f1fb29d599948915c76906681bb7da1d3d2 @@ -2175,8 +2175,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P dccfa7098975d8c09eb6e7d30cd2ae30bc8234ef9a24f4a2ad5e9ffd29df72c2 -R ba35bc57d45a894279895a77db592f5a +P 21ac6aaa03517841b637924720354b9800d6e8b7bd5f6ee54a99f5f45b2ccdec +R 46432ea2dae11ae6027fa3cb7708e7b5 U stephan -Z be4e2fae51e9bcb7be55e5070917f51b +Z b02c0a25f2b69a3ae3c761b92075b9e4 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index b89e8c4a67..772810ca9d 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -21ac6aaa03517841b637924720354b9800d6e8b7bd5f6ee54a99f5f45b2ccdec +7c44b48b628d3d93b13031e9fd08ed39fec35c661aca9e813a89348d6c415663