]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
wasm: expose sqlite3_de/serialize(), sqlite3_malloc/free() and friends, noting that...
authorstephan <stephan@noemail.net>
Fri, 30 Sep 2022 10:55:28 +0000 (10:55 +0000)
committerstephan <stephan@noemail.net>
Fri, 30 Sep 2022 10:55:28 +0000 (10:55 +0000)
FossilOrigin-Name: fbc0edb5d31aa0dea92460e853f15f08c642451a7878994116b530cf172325cc

ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api
ext/wasm/api/sqlite3-api-glue.js
ext/wasm/api/sqlite3-api-prologue.js
ext/wasm/api/sqlite3-wasm.c
manifest
manifest.uuid

index c15599df4124df127e9ea97d3fbd149a7df0d726..6acbec788a861a08cd12059dc16b0db5429d25a4 100644 (file)
@@ -27,6 +27,7 @@ _sqlite3_data_count
 _sqlite3_db_filename
 _sqlite3_db_handle
 _sqlite3_db_name
+_sqlite3_deserialize
 _sqlite3_errmsg
 _sqlite3_error_offset
 _sqlite3_errstr
@@ -36,14 +37,19 @@ _sqlite3_extended_errcode
 _sqlite3_extended_result_codes
 _sqlite3_file_control
 _sqlite3_finalize
+_sqlite3_free
 _sqlite3_initialize
 _sqlite3_interrupt
 _sqlite3_libversion
 _sqlite3_libversion_number
+_sqlite3_malloc
+_sqlite3_malloc64
 _sqlite3_open
 _sqlite3_open_v2
 _sqlite3_prepare_v2
 _sqlite3_prepare_v3
+_sqlite3_realloc
+_sqlite3_realloc64
 _sqlite3_reset
 _sqlite3_result_blob
 _sqlite3_result_double
@@ -54,6 +60,7 @@ _sqlite3_result_error_toobig
 _sqlite3_result_int
 _sqlite3_result_null
 _sqlite3_result_text
+_sqlite3_serialize
 _sqlite3_shutdown
 _sqlite3_sourceid
 _sqlite3_sql
index 258c08250a600dcfde3442b7d9c2028909d56660..004262e2574bccef656312d7177abd1e1ea9a145 100644 (file)
@@ -177,7 +177,8 @@ self.sqlite3ApiBootstrap.initializers.push(function(sqlite3){
     for(const t of ['access', 'blobFinalizers', 'dataTypes',
                     'encodings', 'fcntl', 'flock', 'ioCap',
                     'openFlags', 'prepareFlags', 'resultCodes',
-                    'syncFlags', 'udfFlags', 'version'
+                    'serialize', 'syncFlags', 'udfFlags',
+                    'version'
                    ]){
       for(const e of Object.entries(wasm.ctype[t])){
         // ^^^ [k,v] there triggers a buggy code transormation via one
index c14756eaa93092a2c2aa950d45c805ca7fdeda66..ddefc53bd8437ea8fb2f2ae6ff957f973f1e64b1 100644 (file)
@@ -368,7 +368,10 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
     */
     util:{
       isInt32, isTypedArray, isBindableTypedArray, isSQLableTypedArray,
-      affirmBindableTypedArray, typedArrayToString
+      affirmBindableTypedArray, typedArrayToString,
+      isMainWindow: ()=>{
+        return self.window===self && self.document;
+      }
     },
     
     /**
@@ -603,6 +606,11 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
     ["sqlite3_db_filename", "string", "sqlite3*", "string"],
     ["sqlite3_db_handle", "sqlite3*", "sqlite3_stmt*"],
     ["sqlite3_db_name", "string", "sqlite3*", "int"],
+    ["sqlite3_deserialize", "int", "sqlite3*", "string", "*", "i64", "i64", "int"]
+    /* Careful! Short version: de/serialize() are problematic because they
+       might use a different allocator that the user for managing the
+       deserialized block. de/serialize() are ONLY safe to use with
+       sqlite3_malloc(), sqlite3_free(), and its 64-bit variants. */,
     ["sqlite3_errmsg", "string", "sqlite3*"],
     ["sqlite3_error_offset", "int", "sqlite3*"],
     ["sqlite3_errstr", "string", "int"],
@@ -615,6 +623,7 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
     ["sqlite3_extended_result_codes", "int", "sqlite3*", "int"],
     ["sqlite3_file_control", "int", "sqlite3*", "string", "int", "*"],
     ["sqlite3_finalize", "int", "sqlite3_stmt*"],
+    ["sqlite3_free", undefined,"*"],
     ["sqlite3_initialize", undefined],
     ["sqlite3_interrupt", undefined, "sqlite3*"
      /* ^^^ we cannot actually currently support this because JS is
@@ -622,11 +631,13 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
         from 2 SharedWorkers concurrently. */],
     ["sqlite3_libversion", "string"],
     ["sqlite3_libversion_number", "int"],
+    ["sqlite3_malloc", "*","int"],
     ["sqlite3_open", "int", "string", "*"],
     ["sqlite3_open_v2", "int", "string", "*", "int", "string"],
     /* sqlite3_prepare_v2() and sqlite3_prepare_v3() are handled
        separately due to us requiring two different sets of semantics
        for those, depending on how their SQL argument is provided. */
+    ["sqlite3_realloc", "*","*","int"],
     ["sqlite3_reset", "int", "sqlite3_stmt*"],
     ["sqlite3_result_blob",undefined, "*", "*", "int", "*"],
     ["sqlite3_result_double",undefined, "*", "f64"],
@@ -637,6 +648,7 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
     ["sqlite3_result_int",undefined, "*", "int"],
     ["sqlite3_result_null",undefined, "*"],
     ["sqlite3_result_text",undefined, "*", "string", "int", "*"],
+    ["sqlite3_serialize","*", "sqlite3*", "string", "*", "int"],
     ["sqlite3_shutdown", undefined],
     ["sqlite3_sourceid", "string"],
     ["sqlite3_sql", "string", "sqlite3_stmt*"],
@@ -672,6 +684,8 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
     ["sqlite3_bind_int64","int", ["sqlite3_stmt*", "int", "i64"]],
     ["sqlite3_changes64","i64", ["sqlite3*"]],
     ["sqlite3_column_int64","i64", ["sqlite3_stmt*", "int"]],
+    ["sqlite3_malloc64", "*","i64"],
+    ["sqlite3_realloc64", "*","*", "i64"],
     ["sqlite3_total_changes64", "i64", ["sqlite3*"]],
     ["sqlite3_uri_int64", "i64", ["string", "string", "i64"]]
   ];
@@ -817,7 +831,7 @@ self.sqlite3ApiBootstrap = function sqlite3ApiBootstrap(
     return rc;
   };
 
-  if( self.window===self ){
+  if( capi.util.isMainWindow() ){
     /* Features specific to the main window thread... */
 
     /**
index b5b8825d29cc079e7e3d5ce90d023dfe7721b227..da8f5c32e7cf28178fed45d89fb9d64e6e029cc4 100644 (file)
 ** emcc -o sqlite3.wasm ... -I/path/to/sqlite3-c-and-h sqlite3-wasm.c
 */
 
+/*
+** Threading and file locking: JS is single-threaded. Each Worker
+** thread is a separate instance of the JS engine so can never access
+** the same db handle as another thread, thus multi-threading support
+** is unnecessary in the library. Because the filesystems are virtual
+** and local to a given wasm runtime instance, two Workers can never
+** access the same db file at once, with the exception of OPFS. As of
+** this writing (2022-09-30), OPFS exclusively locks a file when
+** opening it, so two Workers can never open the same OPFS-backed file
+** at once. That situation will change if and when lower-level locking
+** features are added to OPFS (as is currently planned, per folks
+** involved with its development).
+**
+** Summary: except for the case of future OPFS, which supports
+** locking, and any similar future filesystems, threading and file
+** locking support are unnecessary in the wasm build.
+*/
+#undef SQLITE_OMIT_DESERIALIZE
 #ifndef SQLITE_DEFAULT_UNIX_VFS
 # define SQLITE_DEFAULT_UNIX_VFS "unix-none"
 #endif
@@ -144,10 +162,137 @@ const char * sqlite3_wasm_enum_json(void){
   outf("%s\"%s\": \"%s\"", (n++ ? ", " : ""), #KEY, KEY)
 #define _DefGroup CloseBrace(1)
 
-  DefGroup(version) {
-    DefInt(SQLITE_VERSION_NUMBER);
-    DefStr(SQLITE_VERSION);
-    DefStr(SQLITE_SOURCE_ID);
+  /* The following groups are sorted alphabetic by group name. */
+  DefGroup(access){
+    DefInt(SQLITE_ACCESS_EXISTS);
+    DefInt(SQLITE_ACCESS_READWRITE);
+    DefInt(SQLITE_ACCESS_READ)/*docs say this is unused*/;
+  } _DefGroup;
+
+  DefGroup(blobFinalizers) {
+    /* SQLITE_STATIC/TRANSIENT need to be handled explicitly as
+    ** integers to avoid casting-related warnings. */
+    out("\"SQLITE_STATIC\":0, \"SQLITE_TRANSIENT\":-1");
+  } _DefGroup;
+
+  DefGroup(dataTypes) {
+    DefInt(SQLITE_INTEGER);
+    DefInt(SQLITE_FLOAT);
+    DefInt(SQLITE_TEXT);
+    DefInt(SQLITE_BLOB);
+    DefInt(SQLITE_NULL);
+  } _DefGroup;
+
+  DefGroup(encodings) {
+    /* Noting that the wasm binding only aims to support UTF-8. */
+    DefInt(SQLITE_UTF8);
+    DefInt(SQLITE_UTF16LE);
+    DefInt(SQLITE_UTF16BE);
+    DefInt(SQLITE_UTF16);
+    /*deprecated DefInt(SQLITE_ANY); */
+    DefInt(SQLITE_UTF16_ALIGNED);
+  } _DefGroup;
+
+  DefGroup(fcntl) {
+    DefInt(SQLITE_FCNTL_LOCKSTATE);
+    DefInt(SQLITE_FCNTL_GET_LOCKPROXYFILE);
+    DefInt(SQLITE_FCNTL_SET_LOCKPROXYFILE);
+    DefInt(SQLITE_FCNTL_LAST_ERRNO);
+    DefInt(SQLITE_FCNTL_SIZE_HINT);
+    DefInt(SQLITE_FCNTL_CHUNK_SIZE);
+    DefInt(SQLITE_FCNTL_FILE_POINTER);
+    DefInt(SQLITE_FCNTL_SYNC_OMITTED);
+    DefInt(SQLITE_FCNTL_WIN32_AV_RETRY);
+    DefInt(SQLITE_FCNTL_PERSIST_WAL);
+    DefInt(SQLITE_FCNTL_OVERWRITE);
+    DefInt(SQLITE_FCNTL_VFSNAME);
+    DefInt(SQLITE_FCNTL_POWERSAFE_OVERWRITE);
+    DefInt(SQLITE_FCNTL_PRAGMA);
+    DefInt(SQLITE_FCNTL_BUSYHANDLER);
+    DefInt(SQLITE_FCNTL_TEMPFILENAME);
+    DefInt(SQLITE_FCNTL_MMAP_SIZE);
+    DefInt(SQLITE_FCNTL_TRACE);
+    DefInt(SQLITE_FCNTL_HAS_MOVED);
+    DefInt(SQLITE_FCNTL_SYNC);
+    DefInt(SQLITE_FCNTL_COMMIT_PHASETWO);
+    DefInt(SQLITE_FCNTL_WIN32_SET_HANDLE);
+    DefInt(SQLITE_FCNTL_WAL_BLOCK);
+    DefInt(SQLITE_FCNTL_ZIPVFS);
+    DefInt(SQLITE_FCNTL_RBU);
+    DefInt(SQLITE_FCNTL_VFS_POINTER);
+    DefInt(SQLITE_FCNTL_JOURNAL_POINTER);
+    DefInt(SQLITE_FCNTL_WIN32_GET_HANDLE);
+    DefInt(SQLITE_FCNTL_PDB);
+    DefInt(SQLITE_FCNTL_BEGIN_ATOMIC_WRITE);
+    DefInt(SQLITE_FCNTL_COMMIT_ATOMIC_WRITE);
+    DefInt(SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE);
+    DefInt(SQLITE_FCNTL_LOCK_TIMEOUT);
+    DefInt(SQLITE_FCNTL_DATA_VERSION);
+    DefInt(SQLITE_FCNTL_SIZE_LIMIT);
+    DefInt(SQLITE_FCNTL_CKPT_DONE);
+    DefInt(SQLITE_FCNTL_RESERVE_BYTES);
+    DefInt(SQLITE_FCNTL_CKPT_START);
+    DefInt(SQLITE_FCNTL_EXTERNAL_READER);
+    DefInt(SQLITE_FCNTL_CKSM_FILE);
+  } _DefGroup;
+
+  DefGroup(flock) {
+    DefInt(SQLITE_LOCK_NONE);
+    DefInt(SQLITE_LOCK_SHARED);
+    DefInt(SQLITE_LOCK_RESERVED);
+    DefInt(SQLITE_LOCK_PENDING);
+    DefInt(SQLITE_LOCK_EXCLUSIVE);
+  } _DefGroup;
+
+  DefGroup(ioCap) {
+    DefInt(SQLITE_IOCAP_ATOMIC);
+    DefInt(SQLITE_IOCAP_ATOMIC512);
+    DefInt(SQLITE_IOCAP_ATOMIC1K);
+    DefInt(SQLITE_IOCAP_ATOMIC2K);
+    DefInt(SQLITE_IOCAP_ATOMIC4K);
+    DefInt(SQLITE_IOCAP_ATOMIC8K);
+    DefInt(SQLITE_IOCAP_ATOMIC16K);
+    DefInt(SQLITE_IOCAP_ATOMIC32K);
+    DefInt(SQLITE_IOCAP_ATOMIC64K);
+    DefInt(SQLITE_IOCAP_SAFE_APPEND);
+    DefInt(SQLITE_IOCAP_SEQUENTIAL);
+    DefInt(SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN);
+    DefInt(SQLITE_IOCAP_POWERSAFE_OVERWRITE);
+    DefInt(SQLITE_IOCAP_IMMUTABLE);
+    DefInt(SQLITE_IOCAP_BATCH_ATOMIC);
+  } _DefGroup;
+
+  DefGroup(openFlags) {
+    /* Noting that not all of these will have any effect in
+    ** WASM-space. */
+    DefInt(SQLITE_OPEN_READONLY);
+    DefInt(SQLITE_OPEN_READWRITE);
+    DefInt(SQLITE_OPEN_CREATE);
+    DefInt(SQLITE_OPEN_URI);
+    DefInt(SQLITE_OPEN_MEMORY);
+    DefInt(SQLITE_OPEN_NOMUTEX);
+    DefInt(SQLITE_OPEN_FULLMUTEX);
+    DefInt(SQLITE_OPEN_SHAREDCACHE);
+    DefInt(SQLITE_OPEN_PRIVATECACHE);
+    DefInt(SQLITE_OPEN_EXRESCODE);
+    DefInt(SQLITE_OPEN_NOFOLLOW);
+    /* OPEN flags for use with VFSes... */
+    DefInt(SQLITE_OPEN_MAIN_DB);
+    DefInt(SQLITE_OPEN_MAIN_JOURNAL);
+    DefInt(SQLITE_OPEN_TEMP_DB);
+    DefInt(SQLITE_OPEN_TEMP_JOURNAL);
+    DefInt(SQLITE_OPEN_TRANSIENT_DB);
+    DefInt(SQLITE_OPEN_SUBJOURNAL);
+    DefInt(SQLITE_OPEN_SUPER_JOURNAL);
+    DefInt(SQLITE_OPEN_WAL);
+    DefInt(SQLITE_OPEN_DELETEONCLOSE);
+    DefInt(SQLITE_OPEN_EXCLUSIVE);
+  } _DefGroup;
+
+  DefGroup(prepareFlags) {
+    DefInt(SQLITE_PREPARE_PERSISTENT);
+    DefInt(SQLITE_PREPARE_NORMALIZE);
+    DefInt(SQLITE_PREPARE_NO_VTAB);
   } _DefGroup;
 
   DefGroup(resultCodes) {
@@ -182,7 +327,6 @@ const char * sqlite3_wasm_enum_json(void){
     DefInt(SQLITE_WARNING);
     DefInt(SQLITE_ROW);
     DefInt(SQLITE_DONE);
-
     // Extended Result Codes
     DefInt(SQLITE_ERROR_MISSING_COLLSEQ);
     DefInt(SQLITE_ERROR_RETRY);
@@ -261,61 +405,10 @@ const char * sqlite3_wasm_enum_json(void){
     //DefInt(SQLITE_OK_SYMLINK) /* internal use only */;
   } _DefGroup;
 
-  DefGroup(dataTypes) {
-    DefInt(SQLITE_INTEGER);
-    DefInt(SQLITE_FLOAT);
-    DefInt(SQLITE_TEXT);
-    DefInt(SQLITE_BLOB);
-    DefInt(SQLITE_NULL);
-  } _DefGroup;
-
-  DefGroup(encodings) {
-    /* Noting that the wasm binding only aims to support UTF-8. */
-    DefInt(SQLITE_UTF8);
-    DefInt(SQLITE_UTF16LE);
-    DefInt(SQLITE_UTF16BE);
-    DefInt(SQLITE_UTF16);
-    /*deprecated DefInt(SQLITE_ANY); */
-    DefInt(SQLITE_UTF16_ALIGNED);
-  } _DefGroup;
-
-  DefGroup(blobFinalizers) {
-    /* SQLITE_STATIC/TRANSIENT need to be handled explicitly as
-    ** integers to avoid casting-related warnings. */
-    out("\"SQLITE_STATIC\":0, \"SQLITE_TRANSIENT\":-1");
-  } _DefGroup;
-
-  DefGroup(udfFlags) {
-    DefInt(SQLITE_DETERMINISTIC);
-    DefInt(SQLITE_DIRECTONLY);
-    DefInt(SQLITE_INNOCUOUS);
-  } _DefGroup;
-
-  DefGroup(openFlags) {
-    /* Noting that not all of these will have any effect in
-    ** WASM-space. */
-    DefInt(SQLITE_OPEN_READONLY);
-    DefInt(SQLITE_OPEN_READWRITE);
-    DefInt(SQLITE_OPEN_CREATE);
-    DefInt(SQLITE_OPEN_URI);
-    DefInt(SQLITE_OPEN_MEMORY);
-    DefInt(SQLITE_OPEN_NOMUTEX);
-    DefInt(SQLITE_OPEN_FULLMUTEX);
-    DefInt(SQLITE_OPEN_SHAREDCACHE);
-    DefInt(SQLITE_OPEN_PRIVATECACHE);
-    DefInt(SQLITE_OPEN_EXRESCODE);
-    DefInt(SQLITE_OPEN_NOFOLLOW);
-    /* OPEN flags for use with VFSes... */
-    DefInt(SQLITE_OPEN_MAIN_DB);
-    DefInt(SQLITE_OPEN_MAIN_JOURNAL);
-    DefInt(SQLITE_OPEN_TEMP_DB);
-    DefInt(SQLITE_OPEN_TEMP_JOURNAL);
-    DefInt(SQLITE_OPEN_TRANSIENT_DB);
-    DefInt(SQLITE_OPEN_SUBJOURNAL);
-    DefInt(SQLITE_OPEN_SUPER_JOURNAL);
-    DefInt(SQLITE_OPEN_WAL);
-    DefInt(SQLITE_OPEN_DELETEONCLOSE);
-    DefInt(SQLITE_OPEN_EXCLUSIVE);
+  DefGroup(serialize){
+    DefInt(SQLITE_DESERIALIZE_FREEONCLOSE);
+    DefInt(SQLITE_DESERIALIZE_READONLY);
+    DefInt(SQLITE_DESERIALIZE_RESIZEABLE);
   } _DefGroup;
 
   DefGroup(syncFlags) {
@@ -324,85 +417,16 @@ const char * sqlite3_wasm_enum_json(void){
     DefInt(SQLITE_SYNC_DATAONLY);
   } _DefGroup;
 
-  DefGroup(prepareFlags) {
-    DefInt(SQLITE_PREPARE_PERSISTENT);
-    DefInt(SQLITE_PREPARE_NORMALIZE);
-    DefInt(SQLITE_PREPARE_NO_VTAB);
-  } _DefGroup;
-
-  DefGroup(flock) {
-    DefInt(SQLITE_LOCK_NONE);
-    DefInt(SQLITE_LOCK_SHARED);
-    DefInt(SQLITE_LOCK_RESERVED);
-    DefInt(SQLITE_LOCK_PENDING);
-    DefInt(SQLITE_LOCK_EXCLUSIVE);
-  } _DefGroup;
-
-  DefGroup(ioCap) {
-    DefInt(SQLITE_IOCAP_ATOMIC);
-    DefInt(SQLITE_IOCAP_ATOMIC512);
-    DefInt(SQLITE_IOCAP_ATOMIC1K);
-    DefInt(SQLITE_IOCAP_ATOMIC2K);
-    DefInt(SQLITE_IOCAP_ATOMIC4K);
-    DefInt(SQLITE_IOCAP_ATOMIC8K);
-    DefInt(SQLITE_IOCAP_ATOMIC16K);
-    DefInt(SQLITE_IOCAP_ATOMIC32K);
-    DefInt(SQLITE_IOCAP_ATOMIC64K);
-    DefInt(SQLITE_IOCAP_SAFE_APPEND);
-    DefInt(SQLITE_IOCAP_SEQUENTIAL);
-    DefInt(SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN);
-    DefInt(SQLITE_IOCAP_POWERSAFE_OVERWRITE);
-    DefInt(SQLITE_IOCAP_IMMUTABLE);
-    DefInt(SQLITE_IOCAP_BATCH_ATOMIC);
-  } _DefGroup;
-
-  DefGroup(fcntl) {
-    DefInt(SQLITE_FCNTL_LOCKSTATE);
-    DefInt(SQLITE_FCNTL_GET_LOCKPROXYFILE);
-    DefInt(SQLITE_FCNTL_SET_LOCKPROXYFILE);
-    DefInt(SQLITE_FCNTL_LAST_ERRNO);
-    DefInt(SQLITE_FCNTL_SIZE_HINT);
-    DefInt(SQLITE_FCNTL_CHUNK_SIZE);
-    DefInt(SQLITE_FCNTL_FILE_POINTER);
-    DefInt(SQLITE_FCNTL_SYNC_OMITTED);
-    DefInt(SQLITE_FCNTL_WIN32_AV_RETRY);
-    DefInt(SQLITE_FCNTL_PERSIST_WAL);
-    DefInt(SQLITE_FCNTL_OVERWRITE);
-    DefInt(SQLITE_FCNTL_VFSNAME);
-    DefInt(SQLITE_FCNTL_POWERSAFE_OVERWRITE);
-    DefInt(SQLITE_FCNTL_PRAGMA);
-    DefInt(SQLITE_FCNTL_BUSYHANDLER);
-    DefInt(SQLITE_FCNTL_TEMPFILENAME);
-    DefInt(SQLITE_FCNTL_MMAP_SIZE);
-    DefInt(SQLITE_FCNTL_TRACE);
-    DefInt(SQLITE_FCNTL_HAS_MOVED);
-    DefInt(SQLITE_FCNTL_SYNC);
-    DefInt(SQLITE_FCNTL_COMMIT_PHASETWO);
-    DefInt(SQLITE_FCNTL_WIN32_SET_HANDLE);
-    DefInt(SQLITE_FCNTL_WAL_BLOCK);
-    DefInt(SQLITE_FCNTL_ZIPVFS);
-    DefInt(SQLITE_FCNTL_RBU);
-    DefInt(SQLITE_FCNTL_VFS_POINTER);
-    DefInt(SQLITE_FCNTL_JOURNAL_POINTER);
-    DefInt(SQLITE_FCNTL_WIN32_GET_HANDLE);
-    DefInt(SQLITE_FCNTL_PDB);
-    DefInt(SQLITE_FCNTL_BEGIN_ATOMIC_WRITE);
-    DefInt(SQLITE_FCNTL_COMMIT_ATOMIC_WRITE);
-    DefInt(SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE);
-    DefInt(SQLITE_FCNTL_LOCK_TIMEOUT);
-    DefInt(SQLITE_FCNTL_DATA_VERSION);
-    DefInt(SQLITE_FCNTL_SIZE_LIMIT);
-    DefInt(SQLITE_FCNTL_CKPT_DONE);
-    DefInt(SQLITE_FCNTL_RESERVE_BYTES);
-    DefInt(SQLITE_FCNTL_CKPT_START);
-    DefInt(SQLITE_FCNTL_EXTERNAL_READER);
-    DefInt(SQLITE_FCNTL_CKSM_FILE);
+  DefGroup(udfFlags) {
+    DefInt(SQLITE_DETERMINISTIC);
+    DefInt(SQLITE_DIRECTONLY);
+    DefInt(SQLITE_INNOCUOUS);
   } _DefGroup;
 
-  DefGroup(access){
-    DefInt(SQLITE_ACCESS_EXISTS);
-    DefInt(SQLITE_ACCESS_READWRITE);
-    DefInt(SQLITE_ACCESS_READ)/*docs say this is unused*/;
+  DefGroup(version) {
+    DefInt(SQLITE_VERSION_NUMBER);
+    DefStr(SQLITE_VERSION);
+    DefStr(SQLITE_SOURCE_ID);
   } _DefGroup;
   
 #undef DefGroup
index 603810bdefb1203b31e917ed39ed1b53f4e0dca2..6e07dec0b6773c2f03ce0b21acea431e028e6dde 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sJS\sinfrastructure\sto\sostensibly\sallow\sus\sto\scustomize\sthe\swasm\simports,\swhich\swill\shypothetically\sallow\sus\sto\seliminate\sthe\sdependency\son\sEM_JS(),\sbut\sthe\scorresponding\sEmscripten\sglue-level\sfeature\scurrently\sbreaks\sfatally\swith\sWASMFS\sbuilds\sso\sit's\sdisabled.
-D 2022-09-29T22:08:22.784
+C wasm:\sexpose\ssqlite3_de/serialize(),\ssqlite3_malloc/free()\sand\sfriends,\snoting\sthat\sthe\sformer\sexplicitly\slies\son\suse\sof\sthe\slatter\sfor\smemory\smanagement\sso\sis\snot\sgenerically\ssafe\sfor\suse\sin\swasm.
+D 2022-09-30T10:55:28.630
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -476,7 +476,7 @@ F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34ce
 F ext/wasm/EXPORTED_RUNTIME_METHODS.fiddle 0e88c8cfc3719e4b7e74980d9da664c709e68acf863e48386cda376edfd3bfb0
 F ext/wasm/GNUmakefile b313a82060c733c990b91afa981e10f5e21a0b33a483f33b739ce932ed6bc725
 F ext/wasm/README.md 1e5b28158b74ab3ffc9d54fcbc020f0bbeb82c2ff8bbd904214c86c70e8a3066
-F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api 77a5ee8bd209b5e75dd0e822bc3f6e7319dc9b36431463d4175c775170f92126
+F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api 8b7f9344964880421721b5cc7daf2d6c420e4a15d3e02d431cb042a79fe9264e
 F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de2470b0e9e7fbf7a5b41261c367cf4f1b7287
 F ext/wasm/api/README.md f54102d74cfde01ebe242fa1411e126a9cda8f19b3ac378afd1103b21abfad05
 F ext/wasm/api/extern-post-js.js b0df294159c290bec06cd67cce1a882d61944959ffe66a2f4ccbcb337e357781
@@ -485,13 +485,13 @@ F ext/wasm/api/post-js-footer.js b64319261d920211b8700004d08b956a6c285f3b0bba814
 F ext/wasm/api/post-js-header.js 2e5c886398013ba2af88028ecbced1e4b22dc96a86467f1ecc5ba9e64ef90a8b
 F ext/wasm/api/pre-js.js 04cb47eeeb421b7c41481f131bfa395ce9afa7f05c680f697269ea9d9f582518
 F ext/wasm/api/sqlite3-api-cleanup.js 98905936119a555659b5cf43844211809ab9f436c52a569004e5585d2842b5c2
-F ext/wasm/api/sqlite3-api-glue.js 3b164f0ef690a838da8613a2aaec4fc49d29ad5e8fe39c8cdc0f5281f08f9d0b
+F ext/wasm/api/sqlite3-api-glue.js 81b06946223181727b9a1d731b4f3c2ba97a33ae43bc0bbda7e8fa02400a207e
 F ext/wasm/api/sqlite3-api-oo1.js 97a786b366fcac442e1557c3eedef3afa96877411bd6239094d4db5fd5b3c353
 F ext/wasm/api/sqlite3-api-opfs.js af65e056b9f5bc6182499f7e7767e3d01abc3772a62c8abbcc04e4c7bb0affc6
-F ext/wasm/api/sqlite3-api-prologue.js 97b6073ec313ec4bcbf5d9aeac3ede548485642e56b3e1573beef198f38cc565
+F ext/wasm/api/sqlite3-api-prologue.js dfc9065bd9d300fd712db2e6c69d19d51eaa43613cb6edb4612fc3a588ccc2df
 F ext/wasm/api/sqlite3-api-worker1.js d5d5b7fac4c4731c38c7e03f4f404b2a95c388a2a1d8bcf361caada572f107e0
 F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9
-F ext/wasm/api/sqlite3-wasm.c b756b9c1fee9d0598f715e6df6bf089b750da24aa91bb7ef9277a037d81e7612
+F ext/wasm/api/sqlite3-wasm.c 336389b23c9b83763177499e49a0967949c392b2f7d84fbbb52ad6678e159f18
 F ext/wasm/batch-runner.html c363032aba7a525920f61f8be112a29459f73f07e46f0ba3b7730081a617826e
 F ext/wasm/batch-runner.js a94dd0005b34cb4e654a799fbe6357a66070510bbbe5d116cf1a8d4f9901bd80
 F ext/wasm/common/SqliteTestUtil.js 647bf014bd30bdd870a7e9001e251d12fc1c9ec9ce176a1004b838a4b33c5c05
@@ -2029,8 +2029,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 27d24d5d270e272af07d96cf07bdbe79ba07a9c69ba3c70beb76ebf4f90fc97a
-R e715779808f61e9926a53ef0cba366ca
+P 88d9253b0db5494bf1c9b6d24f22524eeec856b89e64a66ffb30d945f0df21d3
+R 4c948bf2f5f40778abbc8384f6bd98eb
 U stephan
-Z ef9d6a37e9ad2048fe7dc4931182a2c4
+Z cb568b9e06886e80ca2b65ac2606f3dd
 # Remove this line to create a well-formed Fossil manifest.
index 351fdb16a868e40979f633c07140b4a6ae7821ff..b1613cc99e9058e9008924e9a27f408d25fd95f0 100644 (file)
@@ -1 +1 @@
-88d9253b0db5494bf1c9b6d24f22524eeec856b89e64a66ffb30d945f0df21d3
\ No newline at end of file
+fbc0edb5d31aa0dea92460e853f15f08c642451a7878994116b530cf172325cc
\ No newline at end of file