pyturso 0.4.4rc1__tar.gz → 0.4.4rc2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/Cargo.lock +50 -47
  2. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/Cargo.toml +12 -12
  3. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/PKG-INFO +1 -1
  4. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/Cargo.toml +1 -1
  5. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/lib.rs +1 -0
  6. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/mvcc/database/checkpoint_state_machine.rs +71 -2
  7. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/mvcc/database/mod.rs +13 -1
  8. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/storage/pager.rs +63 -8
  9. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/storage/wal.rs +63 -96
  10. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vdbe/bloom_filter.rs +3 -2
  11. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vdbe/execute.rs +2 -0
  12. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/Cargo.toml +0 -0
  13. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/README.md +0 -0
  14. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/build.rs +0 -0
  15. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/example.py +0 -0
  16. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/py-bindings-db-aio.mdx +0 -0
  17. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/py-bindings-db.mdx +0 -0
  18. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/py-bindings-sync-aio.mdx +0 -0
  19. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/py-bindings-sync.mdx +0 -0
  20. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/py-bindings-tests-aio.mdx +0 -0
  21. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/py-bindings-tests.mdx +0 -0
  22. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/requirements-dev.txt +0 -0
  23. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/requirements.txt +0 -0
  24. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/src/lib.rs +0 -0
  25. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/src/turso.rs +0 -0
  26. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/src/turso_sync.rs +0 -0
  27. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/tests/__init__.py +0 -0
  28. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/tests/test_database.py +0 -0
  29. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/tests/test_database_aio.py +0 -0
  30. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/tests/test_database_sync.py +0 -0
  31. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/tests/test_database_sync_aio.py +0 -0
  32. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/tests/utils.py +0 -0
  33. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/turso/__init__.py +0 -0
  34. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/turso/aio/__init__.py +0 -0
  35. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/turso/aio/sync/__init__.py +0 -0
  36. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/turso/lib.py +0 -0
  37. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/turso/lib_aio.py +0 -0
  38. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/turso/lib_sync.py +0 -0
  39. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/turso/lib_sync_aio.py +0 -0
  40. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/turso/py.typed +0 -0
  41. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/turso/sync/__init__.py +0 -0
  42. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/bindings/python/turso/worker.py +0 -0
  43. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/assert.rs +0 -0
  44. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/benches/benchmark.rs +0 -0
  45. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/benches/json_benchmark.rs +0 -0
  46. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/benches/mvcc_benchmark.rs +0 -0
  47. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/benches/tpc_h_benchmark.rs +0 -0
  48. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/build.rs +0 -0
  49. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/busy.rs +0 -0
  50. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/error.rs +0 -0
  51. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/ext/dynamic.rs +0 -0
  52. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/ext/mod.rs +0 -0
  53. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/ext/vtab_xconnect.rs +0 -0
  54. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/fast_lock.rs +0 -0
  55. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/function.rs +0 -0
  56. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/functions/datetime.rs +0 -0
  57. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/functions/mod.rs +0 -0
  58. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/functions/printf.rs +0 -0
  59. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/functions/strftime.rs +0 -0
  60. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/incremental/aggregate_operator.rs +0 -0
  61. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/incremental/compiler.rs +0 -0
  62. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/incremental/cursor.rs +0 -0
  63. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/incremental/dbsp.rs +0 -0
  64. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/incremental/expr_compiler.rs +0 -0
  65. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/incremental/filter_operator.rs +0 -0
  66. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/incremental/input_operator.rs +0 -0
  67. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/incremental/join_operator.rs +0 -0
  68. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/incremental/merge_operator.rs +0 -0
  69. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/incremental/mod.rs +0 -0
  70. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/incremental/operator.rs +0 -0
  71. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/incremental/persistence.rs +0 -0
  72. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/incremental/project_operator.rs +0 -0
  73. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/incremental/view.rs +0 -0
  74. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/index_method/backing_btree.rs +0 -0
  75. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/index_method/mod.rs +0 -0
  76. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/index_method/toy_vector_sparse_ivf.rs +0 -0
  77. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/info.rs +0 -0
  78. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/io/clock.rs +0 -0
  79. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/io/common.rs +0 -0
  80. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/io/completions.rs +0 -0
  81. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/io/generic.rs +0 -0
  82. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/io/io_uring.rs +0 -0
  83. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/io/memory.rs +0 -0
  84. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/io/mod.rs +0 -0
  85. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/io/unix.rs +0 -0
  86. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/io/vfs.rs +0 -0
  87. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/io/windows.rs +0 -0
  88. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/json/cache.rs +0 -0
  89. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/json/error.rs +0 -0
  90. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/json/jsonb.rs +0 -0
  91. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/json/mod.rs +0 -0
  92. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/json/ops.rs +0 -0
  93. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/json/path.rs +0 -0
  94. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/json/vtab.rs +0 -0
  95. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/mvcc/clock.rs +0 -0
  96. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/mvcc/cursor.rs +0 -0
  97. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/mvcc/database/tests.rs +0 -0
  98. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/mvcc/mod.rs +0 -0
  99. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/mvcc/persistent_storage/logical_log.rs +0 -0
  100. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/mvcc/persistent_storage/mod.rs +0 -0
  101. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/numeric/mod.rs +0 -0
  102. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/numeric/nonnan.rs +0 -0
  103. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/parameters.rs +0 -0
  104. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/pragma.rs +0 -0
  105. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/pseudo.rs +0 -0
  106. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/schema.rs +0 -0
  107. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/series.rs +0 -0
  108. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/state_machine.rs +0 -0
  109. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/statement.rs +0 -0
  110. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/stats.rs +0 -0
  111. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/storage/btree.rs +0 -0
  112. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/storage/buffer_pool.rs +0 -0
  113. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/storage/checksum.rs +0 -0
  114. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/storage/database.rs +0 -0
  115. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/storage/encryption.rs +0 -0
  116. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/storage/journal_mode.rs +0 -0
  117. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/storage/mod.rs +0 -0
  118. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/storage/page_cache.rs +0 -0
  119. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/storage/slot_bitmap.rs +0 -0
  120. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/storage/sqlite3_ondisk.rs +0 -0
  121. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/storage/state_machines.rs +0 -0
  122. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/storage/subjournal.rs +0 -0
  123. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/time/internal.rs +0 -0
  124. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/time/mod.rs +0 -0
  125. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/aggregation.rs +0 -0
  126. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/alter.rs +0 -0
  127. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/analyze.rs +0 -0
  128. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/attach.rs +0 -0
  129. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/collate.rs +0 -0
  130. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/compound_select.rs +0 -0
  131. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/delete.rs +0 -0
  132. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/display.rs +0 -0
  133. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/emitter.rs +0 -0
  134. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/expr.rs +0 -0
  135. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/expression_index.rs +0 -0
  136. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/fkeys.rs +0 -0
  137. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/group_by.rs +0 -0
  138. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/index.rs +0 -0
  139. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/insert.rs +0 -0
  140. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/integrity_check.rs +0 -0
  141. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/logical.rs +0 -0
  142. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/main_loop.rs +0 -0
  143. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/mod.rs +0 -0
  144. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/optimizer/OPTIMIZER.md +0 -0
  145. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/optimizer/access_method.rs +0 -0
  146. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/optimizer/constraints.rs +0 -0
  147. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/optimizer/cost.rs +0 -0
  148. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/optimizer/join.rs +0 -0
  149. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/optimizer/lift_common_subexpressions.rs +0 -0
  150. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/optimizer/mod.rs +0 -0
  151. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/optimizer/order.rs +0 -0
  152. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/order_by.rs +0 -0
  153. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/plan.rs +0 -0
  154. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/planner.rs +0 -0
  155. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/pragma.rs +0 -0
  156. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/result_row.rs +0 -0
  157. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/rollback.rs +0 -0
  158. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/schema.rs +0 -0
  159. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/select.rs +0 -0
  160. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/subquery.rs +0 -0
  161. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/transaction.rs +0 -0
  162. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/trigger.rs +0 -0
  163. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/trigger_exec.rs +0 -0
  164. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/update.rs +0 -0
  165. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/upsert.rs +0 -0
  166. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/values.rs +0 -0
  167. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/view.rs +0 -0
  168. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/translate/window.rs +0 -0
  169. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/types.rs +0 -0
  170. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/util.rs +0 -0
  171. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/uuid.rs +0 -0
  172. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vdbe/affinity.rs +0 -0
  173. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vdbe/builder.rs +0 -0
  174. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vdbe/explain.rs +0 -0
  175. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vdbe/hash_table.rs +0 -0
  176. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vdbe/insn.rs +0 -0
  177. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vdbe/likeop.rs +0 -0
  178. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vdbe/metrics.rs +0 -0
  179. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vdbe/mod.rs +0 -0
  180. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vdbe/rowset.rs +0 -0
  181. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vdbe/sorter.rs +0 -0
  182. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vdbe/value.rs +0 -0
  183. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vector/mod.rs +0 -0
  184. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vector/operations/concat.rs +0 -0
  185. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vector/operations/convert.rs +0 -0
  186. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vector/operations/distance_cos.rs +0 -0
  187. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vector/operations/distance_dot.rs +0 -0
  188. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vector/operations/distance_l2.rs +0 -0
  189. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vector/operations/jaccard.rs +0 -0
  190. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vector/operations/mod.rs +0 -0
  191. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vector/operations/serialize.rs +0 -0
  192. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vector/operations/slice.rs +0 -0
  193. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vector/operations/text.rs +0 -0
  194. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vector/vector_types.rs +0 -0
  195. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/core/vtab.rs +0 -0
  196. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/extensions/core/Cargo.toml +0 -0
  197. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/extensions/core/README.md +0 -0
  198. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/extensions/core/build.rs +0 -0
  199. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/extensions/core/src/functions.rs +0 -0
  200. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/extensions/core/src/lib.rs +0 -0
  201. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/extensions/core/src/types.rs +0 -0
  202. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/extensions/core/src/vfs_modules.rs +0 -0
  203. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/extensions/core/src/vtabs.rs +0 -0
  204. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/macros/Cargo.toml +0 -0
  205. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/macros/src/atomic_enum.rs +0 -0
  206. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/macros/src/ext/agg_derive.rs +0 -0
  207. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/macros/src/ext/match_ignore_ascii_case.rs +0 -0
  208. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/macros/src/ext/mod.rs +0 -0
  209. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/macros/src/ext/scalars.rs +0 -0
  210. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/macros/src/ext/vfs_derive.rs +0 -0
  211. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/macros/src/ext/vtab_derive.rs +0 -0
  212. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/macros/src/lib.rs +0 -0
  213. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/macros/src/test.rs +0 -0
  214. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/parser/Cargo.toml +0 -0
  215. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/parser/README.md +0 -0
  216. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/parser/benches/parser_benchmark.rs +0 -0
  217. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/parser/src/ast/check.rs +0 -0
  218. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/parser/src/ast/fmt.rs +0 -0
  219. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/parser/src/ast.rs +0 -0
  220. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/parser/src/error.rs +0 -0
  221. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/parser/src/lexer.rs +0 -0
  222. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/parser/src/lib.rs +0 -0
  223. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/parser/src/parser.rs +0 -0
  224. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/parser/src/token.rs +0 -0
  225. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/pyproject.toml +0 -0
  226. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sdk-kit/Cargo.toml +0 -0
  227. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sdk-kit/README.md +0 -0
  228. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sdk-kit/bindgen.sh +0 -0
  229. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sdk-kit/readme-sdk-kit.mdx +0 -0
  230. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sdk-kit/src/bindings.rs +0 -0
  231. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sdk-kit/src/capi.rs +0 -0
  232. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sdk-kit/src/lib.rs +0 -0
  233. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sdk-kit/src/rsapi.rs +0 -0
  234. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sdk-kit/turso.h +0 -0
  235. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sdk-kit-macros/Cargo.toml +0 -0
  236. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sdk-kit-macros/src/lib.rs +0 -0
  237. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/.gitignore +0 -0
  238. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/Cargo.toml +0 -0
  239. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/src/database_replay_generator.rs +0 -0
  240. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/src/database_sync_engine.rs +0 -0
  241. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/src/database_sync_engine_io.rs +0 -0
  242. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/src/database_sync_lazy_storage.rs +0 -0
  243. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/src/database_sync_operations.rs +0 -0
  244. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/src/database_tape.rs +0 -0
  245. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/src/errors.rs +0 -0
  246. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/src/io_operations.rs +0 -0
  247. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/src/lib.rs +0 -0
  248. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/src/server_proto.rs +0 -0
  249. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/src/sparse_io.rs +0 -0
  250. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/src/types.rs +0 -0
  251. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/engine/src/wal_session.rs +0 -0
  252. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/sdk-kit/Cargo.toml +0 -0
  253. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/sdk-kit/bindgen.sh +0 -0
  254. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/sdk-kit/src/bindings.rs +0 -0
  255. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/sdk-kit/src/capi.rs +0 -0
  256. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/sdk-kit/src/lib.rs +0 -0
  257. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/sdk-kit/src/rsapi.rs +0 -0
  258. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/sdk-kit/src/sync_engine_io.rs +0 -0
  259. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/sdk-kit/src/turso_async_operation.rs +0 -0
  260. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/sync/sdk-kit/turso_sync.h +0 -0
  261. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/turso/__init__.py +0 -0
  262. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/turso/aio/__init__.py +0 -0
  263. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/turso/aio/sync/__init__.py +0 -0
  264. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/turso/lib.py +0 -0
  265. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/turso/lib_aio.py +0 -0
  266. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/turso/lib_sync.py +0 -0
  267. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/turso/lib_sync_aio.py +0 -0
  268. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/turso/py.typed +0 -0
  269. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/turso/sync/__init__.py +0 -0
  270. {pyturso-0.4.4rc1 → pyturso-0.4.4rc2}/turso/worker.py +0 -0
@@ -418,12 +418,6 @@ dependencies = [
418
418
  "which",
419
419
  ]
420
420
 
421
- [[package]]
422
- name = "bit-vec"
423
- version = "0.4.4"
424
- source = "registry+https://github.com/rust-lang/crates.io-index"
425
- checksum = "02b4ff8b16e6076c3e14220b39fbc1fabb6737522281a388998046859400895f"
426
-
427
421
  [[package]]
428
422
  name = "bitflags"
429
423
  version = "1.3.2"
@@ -467,15 +461,6 @@ dependencies = [
467
461
  "generic-array",
468
462
  ]
469
463
 
470
- [[package]]
471
- name = "bloom"
472
- version = "0.3.2"
473
- source = "registry+https://github.com/rust-lang/crates.io-index"
474
- checksum = "d00ac8e5056d6d65376a3c1aa5c7c34850d6949ace17f0266953a254eb3d6fe8"
475
- dependencies = [
476
- "bit-vec",
477
- ]
478
-
479
464
  [[package]]
480
465
  name = "branches"
481
466
  version = "0.4.3"
@@ -896,7 +881,7 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
896
881
 
897
882
  [[package]]
898
883
  name = "core_tester"
899
- version = "0.4.4-pre.1"
884
+ version = "0.4.4-pre.2"
900
885
  dependencies = [
901
886
  "anyhow",
902
887
  "assert_cmd",
@@ -1592,6 +1577,18 @@ version = "0.1.9"
1592
1577
  source = "registry+https://github.com/rust-lang/crates.io-index"
1593
1578
  checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
1594
1579
 
1580
+ [[package]]
1581
+ name = "fastbloom"
1582
+ version = "0.14.1"
1583
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1584
+ checksum = "4e7f34442dbe69c60fe8eaf58a8cafff81a1f278816d8ab4db255b3bef4ac3c4"
1585
+ dependencies = [
1586
+ "getrandom 0.3.2",
1587
+ "libm",
1588
+ "rand 0.9.2",
1589
+ "siphasher",
1590
+ ]
1591
+
1595
1592
  [[package]]
1596
1593
  name = "fastrand"
1597
1594
  version = "2.3.0"
@@ -2729,7 +2726,7 @@ dependencies = [
2729
2726
 
2730
2727
  [[package]]
2731
2728
  name = "limbo_completion"
2732
- version = "0.4.4-pre.1"
2729
+ version = "0.4.4-pre.2"
2733
2730
  dependencies = [
2734
2731
  "mimalloc",
2735
2732
  "turso_ext",
@@ -2737,7 +2734,7 @@ dependencies = [
2737
2734
 
2738
2735
  [[package]]
2739
2736
  name = "limbo_crypto"
2740
- version = "0.4.4-pre.1"
2737
+ version = "0.4.4-pre.2"
2741
2738
  dependencies = [
2742
2739
  "blake3",
2743
2740
  "data-encoding",
@@ -2750,7 +2747,7 @@ dependencies = [
2750
2747
 
2751
2748
  [[package]]
2752
2749
  name = "limbo_csv"
2753
- version = "0.4.4-pre.1"
2750
+ version = "0.4.4-pre.2"
2754
2751
  dependencies = [
2755
2752
  "csv",
2756
2753
  "mimalloc",
@@ -2760,7 +2757,7 @@ dependencies = [
2760
2757
 
2761
2758
  [[package]]
2762
2759
  name = "limbo_fuzzy"
2763
- version = "0.4.4-pre.1"
2760
+ version = "0.4.4-pre.2"
2764
2761
  dependencies = [
2765
2762
  "mimalloc",
2766
2763
  "turso_ext",
@@ -2768,7 +2765,7 @@ dependencies = [
2768
2765
 
2769
2766
  [[package]]
2770
2767
  name = "limbo_ipaddr"
2771
- version = "0.4.4-pre.1"
2768
+ version = "0.4.4-pre.2"
2772
2769
  dependencies = [
2773
2770
  "ipnetwork",
2774
2771
  "mimalloc",
@@ -2777,7 +2774,7 @@ dependencies = [
2777
2774
 
2778
2775
  [[package]]
2779
2776
  name = "limbo_percentile"
2780
- version = "0.4.4-pre.1"
2777
+ version = "0.4.4-pre.2"
2781
2778
  dependencies = [
2782
2779
  "mimalloc",
2783
2780
  "turso_ext",
@@ -2785,7 +2782,7 @@ dependencies = [
2785
2782
 
2786
2783
  [[package]]
2787
2784
  name = "limbo_regexp"
2788
- version = "0.4.4-pre.1"
2785
+ version = "0.4.4-pre.2"
2789
2786
  dependencies = [
2790
2787
  "mimalloc",
2791
2788
  "regex",
@@ -2794,7 +2791,7 @@ dependencies = [
2794
2791
 
2795
2792
  [[package]]
2796
2793
  name = "limbo_sim"
2797
- version = "0.4.4-pre.1"
2794
+ version = "0.4.4-pre.2"
2798
2795
  dependencies = [
2799
2796
  "anyhow",
2800
2797
  "bitflags 2.9.4",
@@ -2831,7 +2828,7 @@ dependencies = [
2831
2828
 
2832
2829
  [[package]]
2833
2830
  name = "limbo_sqlite_test_ext"
2834
- version = "0.4.4-pre.1"
2831
+ version = "0.4.4-pre.2"
2835
2832
  dependencies = [
2836
2833
  "cc",
2837
2834
  ]
@@ -3718,7 +3715,7 @@ dependencies = [
3718
3715
 
3719
3716
  [[package]]
3720
3717
  name = "py-turso"
3721
- version = "0.4.4-pre.1"
3718
+ version = "0.4.4-pre.2"
3722
3719
  dependencies = [
3723
3720
  "anyhow",
3724
3721
  "pyo3",
@@ -4543,6 +4540,12 @@ dependencies = [
4543
4540
  "cc",
4544
4541
  ]
4545
4542
 
4543
+ [[package]]
4544
+ name = "siphasher"
4545
+ version = "1.0.1"
4546
+ source = "registry+https://github.com/rust-lang/crates.io-index"
4547
+ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
4548
+
4546
4549
  [[package]]
4547
4550
  name = "slab"
4548
4551
  version = "0.4.9"
@@ -4595,7 +4598,7 @@ checksum = "d372029cb5195f9ab4e4b9aef550787dce78b124fcaee8d82519925defcd6f0d"
4595
4598
 
4596
4599
  [[package]]
4597
4600
  name = "sql_generation"
4598
- version = "0.4.4-pre.1"
4601
+ version = "0.4.4-pre.2"
4599
4602
  dependencies = [
4600
4603
  "anarchist-readable-name-generator-lib",
4601
4604
  "anyhow",
@@ -5299,7 +5302,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
5299
5302
 
5300
5303
  [[package]]
5301
5304
  name = "turso"
5302
- version = "0.4.4-pre.1"
5305
+ version = "0.4.4-pre.2"
5303
5306
  dependencies = [
5304
5307
  "anyhow",
5305
5308
  "bytes",
@@ -5323,14 +5326,14 @@ dependencies = [
5323
5326
 
5324
5327
  [[package]]
5325
5328
  name = "turso-dotnet"
5326
- version = "0.4.4-pre.1"
5329
+ version = "0.4.4-pre.2"
5327
5330
  dependencies = [
5328
5331
  "turso_core",
5329
5332
  ]
5330
5333
 
5331
5334
  [[package]]
5332
5335
  name = "turso-java"
5333
- version = "0.4.4-pre.1"
5336
+ version = "0.4.4-pre.2"
5334
5337
  dependencies = [
5335
5338
  "jni",
5336
5339
  "thiserror 2.0.16",
@@ -5339,7 +5342,7 @@ dependencies = [
5339
5342
 
5340
5343
  [[package]]
5341
5344
  name = "turso_cli"
5342
- version = "0.4.4-pre.1"
5345
+ version = "0.4.4-pre.2"
5343
5346
  dependencies = [
5344
5347
  "anyhow",
5345
5348
  "bytes",
@@ -5380,7 +5383,7 @@ dependencies = [
5380
5383
 
5381
5384
  [[package]]
5382
5385
  name = "turso_core"
5383
- version = "0.4.4-pre.1"
5386
+ version = "0.4.4-pre.2"
5384
5387
  dependencies = [
5385
5388
  "aegis",
5386
5389
  "aes",
@@ -5388,7 +5391,6 @@ dependencies = [
5388
5391
  "antithesis_sdk",
5389
5392
  "arc-swap",
5390
5393
  "bitflags 2.9.4",
5391
- "bloom",
5392
5394
  "branches",
5393
5395
  "built",
5394
5396
  "bumpalo",
@@ -5400,6 +5402,7 @@ dependencies = [
5400
5402
  "either",
5401
5403
  "env_logger 0.11.7",
5402
5404
  "fallible-iterator",
5405
+ "fastbloom",
5403
5406
  "hex",
5404
5407
  "intrusive-collections",
5405
5408
  "io-uring",
@@ -5447,7 +5450,7 @@ dependencies = [
5447
5450
 
5448
5451
  [[package]]
5449
5452
  name = "turso_dart"
5450
- version = "0.4.4-pre.1"
5453
+ version = "0.4.4-pre.2"
5451
5454
  dependencies = [
5452
5455
  "flutter_rust_bridge",
5453
5456
  "turso_core",
@@ -5455,7 +5458,7 @@ dependencies = [
5455
5458
 
5456
5459
  [[package]]
5457
5460
  name = "turso_ext"
5458
- version = "0.4.4-pre.1"
5461
+ version = "0.4.4-pre.2"
5459
5462
  dependencies = [
5460
5463
  "chrono",
5461
5464
  "getrandom 0.3.2",
@@ -5464,7 +5467,7 @@ dependencies = [
5464
5467
 
5465
5468
  [[package]]
5466
5469
  name = "turso_ext_tests"
5467
- version = "0.4.4-pre.1"
5470
+ version = "0.4.4-pre.2"
5468
5471
  dependencies = [
5469
5472
  "env_logger 0.11.7",
5470
5473
  "lazy_static",
@@ -5475,7 +5478,7 @@ dependencies = [
5475
5478
 
5476
5479
  [[package]]
5477
5480
  name = "turso_macros"
5478
- version = "0.4.4-pre.1"
5481
+ version = "0.4.4-pre.2"
5479
5482
  dependencies = [
5480
5483
  "proc-macro2",
5481
5484
  "quote",
@@ -5484,7 +5487,7 @@ dependencies = [
5484
5487
 
5485
5488
  [[package]]
5486
5489
  name = "turso_node"
5487
- version = "0.4.4-pre.1"
5490
+ version = "0.4.4-pre.2"
5488
5491
  dependencies = [
5489
5492
  "chrono",
5490
5493
  "napi",
@@ -5497,7 +5500,7 @@ dependencies = [
5497
5500
 
5498
5501
  [[package]]
5499
5502
  name = "turso_parser"
5500
- version = "0.4.4-pre.1"
5503
+ version = "0.4.4-pre.2"
5501
5504
  dependencies = [
5502
5505
  "bitflags 2.9.4",
5503
5506
  "criterion",
@@ -5514,7 +5517,7 @@ dependencies = [
5514
5517
 
5515
5518
  [[package]]
5516
5519
  name = "turso_sdk_kit"
5517
- version = "0.4.4-pre.1"
5520
+ version = "0.4.4-pre.2"
5518
5521
  dependencies = [
5519
5522
  "bindgen",
5520
5523
  "env_logger 0.11.7",
@@ -5527,7 +5530,7 @@ dependencies = [
5527
5530
 
5528
5531
  [[package]]
5529
5532
  name = "turso_sdk_kit_macros"
5530
- version = "0.4.4-pre.1"
5533
+ version = "0.4.4-pre.2"
5531
5534
  dependencies = [
5532
5535
  "proc-macro2",
5533
5536
  "quote",
@@ -5536,7 +5539,7 @@ dependencies = [
5536
5539
 
5537
5540
  [[package]]
5538
5541
  name = "turso_sqlite3"
5539
- version = "0.4.4-pre.1"
5542
+ version = "0.4.4-pre.2"
5540
5543
  dependencies = [
5541
5544
  "env_logger 0.11.7",
5542
5545
  "libc",
@@ -5549,7 +5552,7 @@ dependencies = [
5549
5552
 
5550
5553
  [[package]]
5551
5554
  name = "turso_stress"
5552
- version = "0.4.4-pre.1"
5555
+ version = "0.4.4-pre.2"
5553
5556
  dependencies = [
5554
5557
  "antithesis_sdk",
5555
5558
  "clap",
@@ -5565,7 +5568,7 @@ dependencies = [
5565
5568
 
5566
5569
  [[package]]
5567
5570
  name = "turso_sync_engine"
5568
- version = "0.4.4-pre.1"
5571
+ version = "0.4.4-pre.2"
5569
5572
  dependencies = [
5570
5573
  "base64 0.22.1",
5571
5574
  "bytes",
@@ -5592,7 +5595,7 @@ dependencies = [
5592
5595
 
5593
5596
  [[package]]
5594
5597
  name = "turso_sync_js"
5595
- version = "0.4.4-pre.1"
5598
+ version = "0.4.4-pre.2"
5596
5599
  dependencies = [
5597
5600
  "genawaiter",
5598
5601
  "napi",
@@ -5607,7 +5610,7 @@ dependencies = [
5607
5610
 
5608
5611
  [[package]]
5609
5612
  name = "turso_sync_sdk_kit"
5610
- version = "0.4.4-pre.1"
5613
+ version = "0.4.4-pre.2"
5611
5614
  dependencies = [
5612
5615
  "bindgen",
5613
5616
  "env_logger 0.11.7",
@@ -5624,7 +5627,7 @@ dependencies = [
5624
5627
 
5625
5628
  [[package]]
5626
5629
  name = "turso_whopper"
5627
- version = "0.4.4-pre.1"
5630
+ version = "0.4.4-pre.2"
5628
5631
  dependencies = [
5629
5632
  "anyhow",
5630
5633
  "clap",
@@ -6,24 +6,24 @@ members = ["bindings/python"]
6
6
  exclude = ["perf/latency/limbo", "turso-test-runner"]
7
7
 
8
8
  [workspace.package]
9
- version = "0.4.4-pre.1"
9
+ version = "0.4.4-pre.2"
10
10
  authors = ["the Limbo authors"]
11
11
  edition = "2021"
12
12
  license = "MIT"
13
13
  repository = "https://github.com/tursodatabase/turso"
14
14
 
15
15
  [workspace.dependencies]
16
- turso = { path = "bindings/rust", version = "0.4.4-pre.1" }
17
- turso_node = { path = "bindings/javascript", version = "0.4.4-pre.1" }
18
- turso_sdk_kit = { path = "sdk-kit", version = "0.4.4-pre.1" }
19
- turso_sdk_kit_macros = { path = "sdk-kit-macros", version = "0.4.4-pre.1" }
20
- turso_sync_sdk_kit = { path = "sync/sdk-kit", version = "0.4.4-pre.1" }
21
- limbo_completion = { path = "extensions/completion", version = "0.4.4-pre.1" }
22
- turso_core = { path = "core", version = "0.4.4-pre.1" }
23
- turso_sync_engine = { path = "sync/engine", version = "0.4.4-pre.1" }
24
- turso_ext = { path = "extensions/core", version = "0.4.4-pre.1" }
25
- turso_macros = { path = "macros", version = "0.4.4-pre.1" }
26
- turso_parser = { path = "parser", version = "0.4.4-pre.1" }
16
+ turso = { path = "bindings/rust", version = "0.4.4-pre.2" }
17
+ turso_node = { path = "bindings/javascript", version = "0.4.4-pre.2" }
18
+ turso_sdk_kit = { path = "sdk-kit", version = "0.4.4-pre.2" }
19
+ turso_sdk_kit_macros = { path = "sdk-kit-macros", version = "0.4.4-pre.2" }
20
+ turso_sync_sdk_kit = { path = "sync/sdk-kit", version = "0.4.4-pre.2" }
21
+ limbo_completion = { path = "extensions/completion", version = "0.4.4-pre.2" }
22
+ turso_core = { path = "core", version = "0.4.4-pre.2" }
23
+ turso_sync_engine = { path = "sync/engine", version = "0.4.4-pre.2" }
24
+ turso_ext = { path = "extensions/core", version = "0.4.4-pre.2" }
25
+ turso_macros = { path = "macros", version = "0.4.4-pre.2" }
26
+ turso_parser = { path = "parser", version = "0.4.4-pre.2" }
27
27
  sql_generation = { path = "sql_generation" }
28
28
  strum = { version = "0.26", features = ["derive"] }
29
29
  strum_macros = "0.26"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyturso
3
- Version: 0.4.4rc1
3
+ Version: 0.4.4rc2
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Programming Language :: Python
6
6
  Classifier: Programming Language :: Python :: 3
@@ -86,13 +86,13 @@ intrusive-collections = "0.9.7"
86
86
  roaring = "0.11.2"
87
87
  simsimd = "6.5.3"
88
88
  arc-swap = "1.7"
89
- bloom = "0.3.2"
90
89
  rustc-hash = "2.0"
91
90
  either = { workspace = true }
92
91
  tracing-subscriber.workspace = true
93
92
  rapidhash = "4.1.1"
94
93
  branches = { version = "0.4.3", default-features = false }
95
94
  bumpalo = { version = "3", features = ["collections"] }
95
+ fastbloom = "0.14.1"
96
96
 
97
97
  # Use pure-rust for Android to avoid C cross-compilation issues
98
98
  [target.'cfg(target_os = "android")'.dependencies]
@@ -2006,6 +2006,7 @@ impl Connection {
2006
2006
  mv_store.clone(),
2007
2007
  self.clone(),
2008
2008
  true,
2009
+ self.get_sync_mode(),
2009
2010
  ));
2010
2011
  io.as_ref().block(|| ckpt_sm.step(&()))
2011
2012
  } else {
@@ -10,8 +10,8 @@ use crate::storage::pager::CreateBTreeFlags;
10
10
  use crate::storage::wal::{CheckpointMode, TursoRwLock};
11
11
  use crate::types::{IOCompletions, IOResult, ImmutableRecord, RecordCursor};
12
12
  use crate::{
13
- CheckpointResult, Completion, Connection, IOExt, LimboError, Pager, Result, TransactionState,
14
- Value, ValueRef,
13
+ CheckpointResult, Completion, Connection, IOExt, LimboError, Pager, Result, SyncMode,
14
+ TransactionState, Value, ValueRef,
15
15
  };
16
16
  use parking_lot::RwLock;
17
17
  use std::collections::{HashMap, HashSet};
@@ -47,6 +47,12 @@ pub enum CheckpointState {
47
47
  TruncateLogicalLog,
48
48
  FsyncLogicalLog,
49
49
  CheckpointWal,
50
+ /// Fsync the database file after checkpoint, before truncating WAL.
51
+ /// This ensures durability: if we crash after WAL truncation but before DB fsync,
52
+ /// the data would be lost.
53
+ SyncDbFile,
54
+ /// Truncate the WAL file after DB file is safely synced (for TRUNCATE checkpoint mode)
55
+ TruncateWal,
50
56
  Finalize,
51
57
  }
52
58
 
@@ -114,6 +120,8 @@ pub struct CheckpointStateMachine<Clock: LogicalClock> {
114
120
  /// process in a transaction we don't want to change the state as we assume we are already on a
115
121
  /// write transaction and any failure will be cleared on vdbe error handling.
116
122
  update_transaction_state: bool,
123
+ /// The synchronous mode for fsync operations. When set to Off, fsync is skipped.
124
+ sync_mode: SyncMode,
117
125
  }
118
126
 
119
127
  #[derive(Debug, PartialEq, Eq, Clone, Copy)]
@@ -146,6 +154,7 @@ impl<Clock: LogicalClock> CheckpointStateMachine<Clock> {
146
154
  mvstore: Arc<MvStore<Clock>>,
147
155
  connection: Arc<Connection>,
148
156
  update_transaction_state: bool,
157
+ sync_mode: SyncMode,
149
158
  ) -> Self {
150
159
  let checkpoint_lock = mvstore.blocking_checkpoint_lock.clone();
151
160
  let index_id_to_index = connection
@@ -187,6 +196,7 @@ impl<Clock: LogicalClock> CheckpointStateMachine<Clock> {
187
196
  index_id_to_index,
188
197
  checkpoint_result: None,
189
198
  update_transaction_state,
199
+ sync_mode,
190
200
  }
191
201
  }
192
202
 
@@ -1071,6 +1081,12 @@ impl<Clock: LogicalClock> CheckpointStateMachine<Clock> {
1071
1081
  }
1072
1082
 
1073
1083
  CheckpointState::FsyncLogicalLog => {
1084
+ // Skip fsync when synchronous mode is off
1085
+ if self.sync_mode == SyncMode::Off {
1086
+ tracing::debug!("Skipping fsync of logical log file (synchronous=off)");
1087
+ self.state = CheckpointState::CheckpointWal;
1088
+ return Ok(TransitionResult::Continue);
1089
+ }
1074
1090
  tracing::debug!("Fsyncing logical log file");
1075
1091
  let c = self.fsync_logical_log()?;
1076
1092
  self.state = CheckpointState::CheckpointWal;
@@ -1087,6 +1103,59 @@ impl<Clock: LogicalClock> CheckpointStateMachine<Clock> {
1087
1103
  match self.checkpoint_wal()? {
1088
1104
  IOResult::Done(result) => {
1089
1105
  self.checkpoint_result = Some(result);
1106
+ self.state = CheckpointState::SyncDbFile;
1107
+ Ok(TransitionResult::Continue)
1108
+ }
1109
+ IOResult::IO(io) => Ok(TransitionResult::Io(io)),
1110
+ }
1111
+ }
1112
+
1113
+ CheckpointState::SyncDbFile => {
1114
+ // Fsync database file before truncating WAL.
1115
+ // This ensures durability: if we crash after WAL truncation but before DB fsync,
1116
+ // the checkpointed data would be lost.
1117
+ if self.sync_mode == SyncMode::Off {
1118
+ tracing::debug!("Skipping fsync of database file (synchronous=off)");
1119
+ self.state = CheckpointState::TruncateWal;
1120
+ return Ok(TransitionResult::Continue);
1121
+ }
1122
+
1123
+ let checkpoint_result = self
1124
+ .checkpoint_result
1125
+ .as_mut()
1126
+ .expect("checkpoint_result should be set");
1127
+
1128
+ // Only sync if we actually backfilled any frames
1129
+ if checkpoint_result.num_backfilled == 0 {
1130
+ self.state = CheckpointState::TruncateWal;
1131
+ return Ok(TransitionResult::Continue);
1132
+ }
1133
+
1134
+ // Check if we already sent the sync
1135
+ if checkpoint_result.db_sync_sent {
1136
+ self.state = CheckpointState::TruncateWal;
1137
+ return Ok(TransitionResult::Continue);
1138
+ }
1139
+
1140
+ tracing::debug!("Fsyncing database file before WAL truncation");
1141
+ let c = self.pager.db_file.sync(Completion::new_sync(|_| {}))?;
1142
+ checkpoint_result.db_sync_sent = true;
1143
+ Ok(TransitionResult::Io(IOCompletions::Single(c)))
1144
+ }
1145
+
1146
+ CheckpointState::TruncateWal => {
1147
+ // Truncate WAL file after DB file is safely synced.
1148
+ // This must be done explicitly because MVCC calls wal.checkpoint() directly,
1149
+ // bypassing the pager's TruncateWalFile phase.
1150
+ let Some(wal) = &self.pager.wal else {
1151
+ panic!("No WAL to truncate");
1152
+ };
1153
+ let checkpoint_result = self
1154
+ .checkpoint_result
1155
+ .as_mut()
1156
+ .expect("checkpoint_result should be set");
1157
+ match wal.truncate_wal(checkpoint_result)? {
1158
+ IOResult::Done(()) => {
1090
1159
  self.state = CheckpointState::Finalize;
1091
1160
  Ok(TransitionResult::Continue)
1092
1161
  }
@@ -27,7 +27,7 @@ use crate::IOExt;
27
27
  use crate::LimboError;
28
28
  use crate::Result;
29
29
  use crate::ValueRef;
30
- use crate::{Connection, Pager};
30
+ use crate::{Connection, Pager, SyncMode};
31
31
  use crossbeam_skiplist::map::Entry;
32
32
  use crossbeam_skiplist::{SkipMap, SkipSet};
33
33
  use parking_lot::{Mutex, RwLock};
@@ -510,6 +510,8 @@ pub struct CommitStateMachine<Clock: LogicalClock> {
510
510
  commit_coordinator: Arc<CommitCoordinator>,
511
511
  header: Arc<RwLock<Option<DatabaseHeader>>>,
512
512
  pager: Arc<Pager>,
513
+ /// The synchronous mode for fsync operations. When set to Off, fsync is skipped.
514
+ sync_mode: SyncMode,
513
515
  _phantom: PhantomData<Clock>,
514
516
  }
515
517
 
@@ -552,6 +554,7 @@ impl<Clock: LogicalClock> CommitStateMachine<Clock> {
552
554
  connection: Arc<Connection>,
553
555
  commit_coordinator: Arc<CommitCoordinator>,
554
556
  header: Arc<RwLock<Option<DatabaseHeader>>>,
557
+ sync_mode: SyncMode,
555
558
  ) -> Self {
556
559
  let pager = connection.pager.load().clone();
557
560
  Self {
@@ -564,6 +567,7 @@ impl<Clock: LogicalClock> CommitStateMachine<Clock> {
564
567
  commit_coordinator,
565
568
  pager,
566
569
  header,
570
+ sync_mode,
567
571
  _phantom: PhantomData,
568
572
  }
569
573
  }
@@ -825,6 +829,12 @@ impl<Clock: LogicalClock> StateTransition for CommitStateMachine<Clock> {
825
829
  }
826
830
 
827
831
  CommitState::SyncLogicalLog { end_ts } => {
832
+ // Skip fsync when synchronous mode is off
833
+ if self.sync_mode == SyncMode::Off {
834
+ tracing::debug!("Skipping fsync of logical log (synchronous=off)");
835
+ self.state = CommitState::EndCommitLogicalLog { end_ts: *end_ts };
836
+ return Ok(TransitionResult::Continue);
837
+ }
828
838
  let c = mvcc_store.storage.sync()?;
829
839
  self.state = CommitState::EndCommitLogicalLog { end_ts: *end_ts };
830
840
  // if Completion Completed without errors we can continue
@@ -894,6 +904,7 @@ impl<Clock: LogicalClock> StateTransition for CommitStateMachine<Clock> {
894
904
  mvcc_store.clone(),
895
905
  self.connection.clone(),
896
906
  false,
907
+ self.connection.get_sync_mode(),
897
908
  ));
898
909
  let state_machine = Mutex::new(state_machine);
899
910
  self.state = CommitState::Checkpoint { state_machine };
@@ -2216,6 +2227,7 @@ impl<Clock: LogicalClock> MvStore<Clock> {
2216
2227
  connection.clone(),
2217
2228
  self.commit_coordinator.clone(),
2218
2229
  self.global_header.clone(),
2230
+ connection.get_sync_mode(),
2219
2231
  ));
2220
2232
  Ok(state_machine)
2221
2233
  }