Skip to content

Commit e0a626b

Browse files
chore: remove bindgen, replace with hand-rolled FFI bindings
Replace the bindgen-generated bindings.rs with a hand-written lib.rs. The bindgen build dependency is removed. The hand-rolled bindings are verified against bindgen output and match the types. Layout assertions enforce ABI correctness for three structs passed by value across the FFI boundary at compile time. Unnecessary derives (Debug, Copy, Clone) are removed from all types. Cargo-minimal.lock and Cargo-recent.lock have been updated to remove bindgen dependency. libbitcoinkernel-sys/CHANGELOG.md updated to reflect bindgen removal.
1 parent cdae20b commit e0a626b

6 files changed

Lines changed: 760 additions & 309 deletions

File tree

Cargo-minimal.lock

Lines changed: 28 additions & 173 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ version = 3
44

55
[[package]]
66
name = "aho-corasick"
7-
version = "0.7.18"
7+
version = "0.7.6"
88
source = "registry+https://github.com/rust-lang/crates.io-index"
9-
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
9+
checksum = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d"
1010
dependencies = [
1111
"memchr",
1212
]
@@ -86,26 +86,6 @@ version = "0.6.0"
8686
source = "registry+https://github.com/rust-lang/crates.io-index"
8787
checksum = "f92b72b8f03128773278bf74418b9205f3d2a12c39a61f92395f47af390c32bf"
8888

89-
[[package]]
90-
name = "bindgen"
91-
version = "0.72.0"
92-
source = "registry+https://github.com/rust-lang/crates.io-index"
93-
checksum = "4f72209734318d0b619a5e0f5129918b848c416e122a3c4ce054e03cb87b726f"
94-
dependencies = [
95-
"bitflags",
96-
"cexpr",
97-
"clang-sys",
98-
"itertools",
99-
"log",
100-
"prettyplease",
101-
"proc-macro2",
102-
"quote 1.0.25",
103-
"regex",
104-
"rustc-hash",
105-
"shlex",
106-
"syn 2.0.16",
107-
]
108-
10989
[[package]]
11090
name = "bitcoin"
11191
version = "0.31.0"
@@ -161,12 +141,6 @@ dependencies = [
161141
"log",
162142
]
163143

164-
[[package]]
165-
name = "bitflags"
166-
version = "2.2.1"
167-
source = "registry+https://github.com/rust-lang/crates.io-index"
168-
checksum = "24a6904aef64d73cf10ab17ebace7befb918b82164785cb89907993be7f83813"
169-
170144
[[package]]
171145
name = "cc"
172146
version = "1.2.0"
@@ -176,32 +150,12 @@ dependencies = [
176150
"shlex",
177151
]
178152

179-
[[package]]
180-
name = "cexpr"
181-
version = "0.6.0"
182-
source = "registry+https://github.com/rust-lang/crates.io-index"
183-
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
184-
dependencies = [
185-
"nom",
186-
]
187-
188153
[[package]]
189154
name = "cfg-if"
190155
version = "0.1.2"
191156
source = "registry+https://github.com/rust-lang/crates.io-index"
192157
checksum = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de"
193158

194-
[[package]]
195-
name = "clang-sys"
196-
version = "1.1.0"
197-
source = "registry+https://github.com/rust-lang/crates.io-index"
198-
checksum = "5cb92721cb37482245ed88428f72253ce422b3b4ee169c70a0642521bb5db4cc"
199-
dependencies = [
200-
"glob",
201-
"libc",
202-
"libloading",
203-
]
204-
205159
[[package]]
206160
name = "colorchoice"
207161
version = "1.0.0"
@@ -215,7 +169,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
215169
checksum = "df89dd0d075dea5cc5fdd6d5df6b8a61172a710b3efac1d6bdb9dd8b78f82c1a"
216170
dependencies = [
217171
"proc-macro2",
218-
"quote 1.0.25",
172+
"quote 1.0.0",
219173
"syn 1.0.0",
220174
]
221175

@@ -225,12 +179,6 @@ version = "0.4.0"
225179
source = "registry+https://github.com/rust-lang/crates.io-index"
226180
checksum = "5edd69c67b2f8e0911629b7e6b8a34cb3956613cd7c6e6414966dee349c2db4f"
227181

228-
[[package]]
229-
name = "either"
230-
version = "1.0.0"
231-
source = "registry+https://github.com/rust-lang/crates.io-index"
232-
checksum = "5845bf77d497f79416df39462df26d4a8b71dd6440246848ee63709476dbb9a6"
233-
234182
[[package]]
235183
name = "env_filter"
236184
version = "0.1.0"
@@ -266,12 +214,6 @@ dependencies = [
266214
"silentpayments",
267215
]
268216

269-
[[package]]
270-
name = "glob"
271-
version = "0.3.0"
272-
source = "registry+https://github.com/rust-lang/crates.io-index"
273-
checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
274-
275217
[[package]]
276218
name = "hex"
277219
version = "0.4.0"
@@ -296,35 +238,25 @@ version = "2.0.0"
296238
source = "registry+https://github.com/rust-lang/crates.io-index"
297239
checksum = "b9b6c53306532d3c8e8087b44e6580e10db51a023cf9b433cea2ac38066b92da"
298240

299-
[[package]]
300-
name = "itertools"
301-
version = "0.10.0"
302-
source = "registry+https://github.com/rust-lang/crates.io-index"
303-
checksum = "37d572918e350e82412fe766d24b15e6682fb2ed2bbe018280caa810397cb319"
304-
dependencies = [
305-
"either",
306-
]
307-
308241
[[package]]
309242
name = "itoa"
310243
version = "0.3.0"
311244
source = "registry+https://github.com/rust-lang/crates.io-index"
312245
checksum = "91fd9dc2c587067de817fec4ad355e3818c3d893a78cab32a0a474c7a15bb8d5"
313246

247+
[[package]]
248+
name = "lazy_static"
249+
version = "1.0.0"
250+
source = "registry+https://github.com/rust-lang/crates.io-index"
251+
checksum = "c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d"
252+
314253
[[package]]
315254
name = "libbitcoinkernel-sys"
316255
version = "0.2.0"
317256
dependencies = [
318-
"bindgen",
319257
"cc",
320258
]
321259

322-
[[package]]
323-
name = "libc"
324-
version = "0.2.39"
325-
source = "registry+https://github.com/rust-lang/crates.io-index"
326-
checksum = "f54263ad99207254cf58b5f701ecb432c717445ea2ee8af387334bdd1a03fdff"
327-
328260
[[package]]
329261
name = "libfuzzer-sys"
330262
version = "0.4.0"
@@ -335,15 +267,6 @@ dependencies = [
335267
"cc",
336268
]
337269

338-
[[package]]
339-
name = "libloading"
340-
version = "0.6.0"
341-
source = "registry+https://github.com/rust-lang/crates.io-index"
342-
checksum = "2c979a19ffb457f0273965c333053f3d586bf759bf7b683fbebc37f9a9ebedc4"
343-
dependencies = [
344-
"winapi",
345-
]
346-
347270
[[package]]
348271
name = "log"
349272
version = "0.4.8"
@@ -355,50 +278,23 @@ dependencies = [
355278

356279
[[package]]
357280
name = "memchr"
358-
version = "2.4.0"
359-
source = "registry+https://github.com/rust-lang/crates.io-index"
360-
checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc"
361-
362-
[[package]]
363-
name = "minimal-lexical"
364-
version = "0.1.2"
281+
version = "2.2.1"
365282
source = "registry+https://github.com/rust-lang/crates.io-index"
366-
checksum = "6595bb28ed34f43c3fe088e48f6cfb2e033cab45f25a5384d5fdf564fbc8c4b2"
367-
368-
[[package]]
369-
name = "nom"
370-
version = "7.0.0"
371-
source = "registry+https://github.com/rust-lang/crates.io-index"
372-
checksum = "7ffd9d26838a953b4af82cbeb9f1592c6798916983959be223a7124e992742c1"
373-
dependencies = [
374-
"memchr",
375-
"minimal-lexical",
376-
"version_check",
377-
]
283+
checksum = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e"
378284

379285
[[package]]
380286
name = "num-traits"
381287
version = "0.1.32"
382288
source = "registry+https://github.com/rust-lang/crates.io-index"
383289
checksum = "51eab148f171aefad295f8cece636fc488b9b392ef544da31ea4b8ef6b9e9c39"
384290

385-
[[package]]
386-
name = "prettyplease"
387-
version = "0.2.7"
388-
source = "registry+https://github.com/rust-lang/crates.io-index"
389-
checksum = "43ded2b5b204571f065ab8540367d738dfe1b3606ab9eb669dcfb5e7a3a07501"
390-
dependencies = [
391-
"proc-macro2",
392-
"syn 2.0.16",
393-
]
394-
395291
[[package]]
396292
name = "proc-macro2"
397-
version = "1.0.80"
293+
version = "1.0.0"
398294
source = "registry+https://github.com/rust-lang/crates.io-index"
399-
checksum = "a56dea16b0a29e94408b9aa5e2940a4eedbd128a1ba20e8f7ae60fd3d465af0e"
295+
checksum = "19f287c234c9b2d0308d692dee5c449c1a171167a6f8150f7cf2a49d8fd96967"
400296
dependencies = [
401-
"unicode-ident",
297+
"unicode-xid 0.2.0",
402298
]
403299

404300
[[package]]
@@ -409,9 +305,9 @@ checksum = "9f0fc799e40f2a2c2be239825b30b686f1bd1d2e0e3d5e943b14c1380db49acf"
409305

410306
[[package]]
411307
name = "quote"
412-
version = "1.0.25"
308+
version = "1.0.0"
413309
source = "registry+https://github.com/rust-lang/crates.io-index"
414-
checksum = "5308e8208729c3e1504a6cfad0d5daacc4614c9a2e65d1ea312a34b5cb00fe84"
310+
checksum = "7ab938ebe6f1c82426b5fb82eaf10c3e3028c53deaa3fbe38f5904b37cf4d767"
415311
dependencies = [
416312
"proc-macro2",
417313
]
@@ -433,20 +329,21 @@ checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7"
433329

434330
[[package]]
435331
name = "regex"
436-
version = "1.5.3"
332+
version = "1.3.0"
437333
source = "registry+https://github.com/rust-lang/crates.io-index"
438-
checksum = "ce5f1ceb7f74abbce32601642fcf8e8508a8a8991e0621c7d750295b9095702b"
334+
checksum = "fc98360d9e6ad383647702acc90f80b0582eac3ea577ab47d96325d3575de908"
439335
dependencies = [
440336
"aho-corasick",
441337
"memchr",
442338
"regex-syntax",
339+
"thread_local",
443340
]
444341

445342
[[package]]
446343
name = "regex-syntax"
447-
version = "0.6.25"
344+
version = "0.6.12"
448345
source = "registry+https://github.com/rust-lang/crates.io-index"
449-
checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
346+
checksum = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716"
450347

451348
[[package]]
452349
name = "rust-bitcoinkernel-fuzz"
@@ -457,12 +354,6 @@ dependencies = [
457354
"libfuzzer-sys",
458355
]
459356

460-
[[package]]
461-
name = "rustc-hash"
462-
version = "2.1.0"
463-
source = "registry+https://github.com/rust-lang/crates.io-index"
464-
checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497"
465-
466357
[[package]]
467358
name = "secp256k1"
468359
version = "0.28.1"
@@ -564,21 +455,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
564455
checksum = "9f8c8eab7d9f493cd89d4068085651d81ac7d39c56eb64f7158ea514b156e280"
565456
dependencies = [
566457
"proc-macro2",
567-
"quote 1.0.25",
458+
"quote 1.0.0",
568459
"unicode-xid 0.2.0",
569460
]
570461

571-
[[package]]
572-
name = "syn"
573-
version = "2.0.16"
574-
source = "registry+https://github.com/rust-lang/crates.io-index"
575-
checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01"
576-
dependencies = [
577-
"proc-macro2",
578-
"quote 1.0.25",
579-
"unicode-ident",
580-
]
581-
582462
[[package]]
583463
name = "synom"
584464
version = "0.11.0"
@@ -589,10 +469,13 @@ dependencies = [
589469
]
590470

591471
[[package]]
592-
name = "unicode-ident"
593-
version = "1.0.0"
472+
name = "thread_local"
473+
version = "0.3.6"
594474
source = "registry+https://github.com/rust-lang/crates.io-index"
595-
checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"
475+
checksum = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
476+
dependencies = [
477+
"lazy_static",
478+
]
596479

597480
[[package]]
598481
name = "unicode-xid"
@@ -612,34 +495,6 @@ version = "0.2.1"
612495
source = "registry+https://github.com/rust-lang/crates.io-index"
613496
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
614497

615-
[[package]]
616-
name = "version_check"
617-
version = "0.9.0"
618-
source = "registry+https://github.com/rust-lang/crates.io-index"
619-
checksum = "45d3d553fd9413fffe7147a20171d640eda0ad4c070acd7d0c885a21bcd2e8b7"
620-
621-
[[package]]
622-
name = "winapi"
623-
version = "0.3.0"
624-
source = "registry+https://github.com/rust-lang/crates.io-index"
625-
checksum = "b3ad91d846a4a5342c1fb7008d26124ee6cf94a3953751618577295373b32117"
626-
dependencies = [
627-
"winapi-i686-pc-windows-gnu",
628-
"winapi-x86_64-pc-windows-gnu",
629-
]
630-
631-
[[package]]
632-
name = "winapi-i686-pc-windows-gnu"
633-
version = "0.3.0"
634-
source = "registry+https://github.com/rust-lang/crates.io-index"
635-
checksum = "a16a8e2ebfc883e2b1771c6482b1fb3c6831eab289ba391619a2d93a7356220f"
636-
637-
[[package]]
638-
name = "winapi-x86_64-pc-windows-gnu"
639-
version = "0.3.0"
640-
source = "registry+https://github.com/rust-lang/crates.io-index"
641-
checksum = "8ca29cb03c8ceaf20f8224a18a530938305e9872b1478ea24ff44b4f503a1d1d"
642-
643498
[[package]]
644499
name = "windows-sys"
645500
version = "0.48.0"

0 commit comments

Comments
 (0)