Commitd2dd06a0Recorded1 Mar 2026Repositorysigil-sqlite

Integrate content-addressable store with build system

Message

Wire the store into the build pipeline so compiled modules are cached by content hash. Second builds of unchanged modules show CACHED instead of COMPILE. Adds --no-cache flag to bypass the store.

Key changes: - Add store field to build context, cache-aware compile-sigil-modules - Dynamic store loading in CLI with module-exists? guard - Register sigil store CLI subcommands (gc, stats) - Convert sigil-crypto and sigil-sqlite to define-native for bootstrap compatibility (boot binary lacks these natives) - Add compile-sigil-modules step to sigil-crypto package.sgl

Changed
 src/sigil/sqlite.sgl | 64 ++++++++++++++++++++++++++++++++--------------------------------
 1 file changed, 32 insertions(+), 32 deletions(-)
Diff
src/sigil/sqlite.sglmodified
@@ -69,8 +69,8 @@
69
;;; (sqlite-db? db) ; => #t
70
;;; (sqlite-db? "not a db") ; => #f
71
;;; ```
72
(%set-docstring! sqlite-db?)
73
(%set-spec! sqlite-db? '(any? -> boolean?))
+72
(define-native (sqlite-db? obj)
+73
(: any? -> boolean?))
74
75
;;; Check if a value is a SQLite prepared statement.
76
;;;
@@ -78,8 +78,8 @@
78
;;; (sqlite-stmt? stmt) ; => #t
79
;;; (sqlite-stmt? "not stmt") ; => #f
80
;;; ```
81
(%set-docstring! sqlite-stmt?)
82
(%set-spec! sqlite-stmt? '(any? -> boolean?))
+81
(define-native (sqlite-stmt? obj)
+82
(: any? -> boolean?))
83
84
;;; Open a SQLite database file.
85
;;;
@@ -91,8 +91,8 @@
91
;;; (sqlite-open "app.db") ; => #<sqlite-db>
92
;;; (sqlite-open ":memory:") ; => #<sqlite-db>
93
;;; ```
94
(%set-docstring! sqlite-open)
95
(%set-spec! sqlite-open '(string? -> (maybe sqlite-db?)))
+94
(define-native (sqlite-open path)
+95
(: string? -> (maybe sqlite-db?)))
96
97
;;; Close a SQLite database handle.
98
;;;
@@ -101,8 +101,8 @@
101
;;; ```scheme
102
;;; (sqlite-close db)
103
;;; ```
104
(%set-docstring! sqlite-close)
105
(%set-spec! sqlite-close '(sqlite-db? -> void?))
+104
(define-native (sqlite-close db)
+105
(: sqlite-db? -> void?))
106
107
;;; Execute a SQL string directly.
108
;;;
@@ -113,8 +113,8 @@
113
;;; (sqlite-exec db "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)")
114
;;; (sqlite-exec db "PRAGMA journal_mode=WAL")
115
;;; ```
116
(%set-docstring! sqlite-exec)
117
(%set-spec! sqlite-exec '(sqlite-db? string? -> boolean?))
+116
(define-native (sqlite-exec db sql)
+117
(: sqlite-db? string? -> boolean?))
118
119
;;; Prepare a SQL statement for execution.
120
;;;
@@ -124,8 +124,8 @@
124
;;; ```scheme
125
;;; (define stmt (sqlite-prepare db "SELECT * FROM users WHERE id = ?"))
126
;;; ```
127
(%set-docstring! sqlite-prepare)
128
(%set-spec! sqlite-prepare '(sqlite-db? string? -> (maybe sqlite-stmt?)))
+127
(define-native (sqlite-prepare db sql)
+128
(: sqlite-db? string? -> (maybe sqlite-stmt?)))
129
130
;;; Bind a value to a parameter in a prepared statement.
131
;;;
@@ -136,8 +136,8 @@
136
;;; (sqlite-bind stmt 1 "Alice")
137
;;; (sqlite-bind stmt 2 42)
138
;;; ```
139
(%set-docstring! sqlite-bind)
140
(%set-spec! sqlite-bind '(sqlite-stmt? integer? any? -> boolean?))
+139
(define-native (sqlite-bind stmt idx val)
+140
(: sqlite-stmt? integer? any? -> boolean?))
141
142
;;; Step through a prepared statement.
143
;;;
@@ -147,8 +147,8 @@
147
;;; ```scheme
148
;;; (sqlite-step stmt) ; => 'row, 'done, or #f
149
;;; ```
150
(%set-docstring! sqlite-step)
151
(%set-spec! sqlite-step '(sqlite-stmt? -> any?))
+150
(define-native (sqlite-step stmt)
+151
(: sqlite-stmt? -> any?))
152
153
;;; Reset a prepared statement to its initial state.
154
;;;
@@ -157,8 +157,8 @@
157
;;; ```scheme
158
;;; (sqlite-reset stmt)
159
;;; ```
160
(%set-docstring! sqlite-reset)
161
(%set-spec! sqlite-reset '(sqlite-stmt? -> void?))
+160
(define-native (sqlite-reset stmt)
+161
(: sqlite-stmt? -> void?))
162
163
;;; Finalize a prepared statement and release its resources.
164
;;;
@@ -167,16 +167,16 @@
167
;;; ```scheme
168
;;; (sqlite-finalize stmt)
169
;;; ```
170
(%set-docstring! sqlite-finalize)
171
(%set-spec! sqlite-finalize '(sqlite-stmt? -> void?))
+170
(define-native (sqlite-finalize stmt)
+171
(: sqlite-stmt? -> void?))
172
173
;;; Get the number of columns in a result set.
174
;;;
175
;;; ```scheme
176
;;; (sqlite-column-count stmt) ; => 3
177
;;; ```
178
(%set-docstring! sqlite-column-count)
179
(%set-spec! sqlite-column-count '(sqlite-stmt? -> integer?))
+178
(define-native (sqlite-column-count stmt)
+179
(: sqlite-stmt? -> integer?))
180
181
;;; Get the name of a result column by index.
182
;;;
@@ -186,8 +186,8 @@
186
;;; (sqlite-column-name stmt 0) ; => "id"
187
;;; (sqlite-column-name stmt 1) ; => "name"
188
;;; ```
189
(%set-docstring! sqlite-column-name)
190
(%set-spec! sqlite-column-name '(sqlite-stmt? integer? -> string?))
+189
(define-native (sqlite-column-name stmt idx)
+190
(: sqlite-stmt? integer? -> string?))
191
192
;;; Get the value of a result column by index.
193
;;;
@@ -198,8 +198,8 @@
198
;;; (sqlite-column stmt 0) ; => 1
199
;;; (sqlite-column stmt 1) ; => "Alice"
200
;;; ```
201
(%set-docstring! sqlite-column)
202
(%set-spec! sqlite-column '(sqlite-stmt? integer? -> any?))
+201
(define-native (sqlite-column stmt idx)
+202
(: sqlite-stmt? integer? -> any?))
203
204
;;; Get the rowid of the last inserted row.
205
;;;
@@ -207,8 +207,8 @@
207
;;; (sqlite-run db "INSERT INTO users (name) VALUES (?)" "Bob")
208
;;; (sqlite-last-insert-rowid db) ; => 5
209
;;; ```
210
(%set-docstring! sqlite-last-insert-rowid)
211
(%set-spec! sqlite-last-insert-rowid '(sqlite-db? -> integer?))
+210
(define-native (sqlite-last-insert-rowid db)
+211
(: sqlite-db? -> integer?))
212
213
;;; Get the number of rows changed by the last statement.
214
;;;
@@ -216,16 +216,16 @@
216
;;; (sqlite-run db "UPDATE users SET name = ? WHERE id = ?" "Robert" 1)
217
;;; (sqlite-changes db) ; => 1
218
;;; ```
219
(%set-docstring! sqlite-changes)
220
(%set-spec! sqlite-changes '(sqlite-db? -> integer?))
+219
(define-native (sqlite-changes db)
+220
(: sqlite-db? -> integer?))
221
222
;;; Get the last error message from the database.
223
;;;
224
;;; ```scheme
225
;;; (sqlite-errmsg db) ; => "not an error"
226
;;; ```
227
(%set-docstring! sqlite-errmsg)
228
(%set-spec! sqlite-errmsg '(sqlite-db? -> string?))
+227
(define-native (sqlite-errmsg db)
+228
(: sqlite-db? -> string?))
229
230
;; ========== High-Level API ==========
231