Skip to content

Commit 2f93a8e

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.
1 parent 6ea5b90 commit 2f93a8e

5 files changed

Lines changed: 742 additions & 325 deletions

File tree

Cargo-minimal.lock

Lines changed: 33 additions & 172 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 2.2.1",
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"
@@ -168,12 +148,6 @@ version = "1.0.0"
168148
source = "registry+https://github.com/rust-lang/crates.io-index"
169149
checksum = "f5cde24d1b2e2216a726368b2363a273739c91f4e3eb4e0dd12d672d396ad989"
170150

171-
[[package]]
172-
name = "bitflags"
173-
version = "2.2.1"
174-
source = "registry+https://github.com/rust-lang/crates.io-index"
175-
checksum = "24a6904aef64d73cf10ab17ebace7befb918b82164785cb89907993be7f83813"
176-
177151
[[package]]
178152
name = "cc"
179153
version = "1.2.0"
@@ -183,32 +157,12 @@ dependencies = [
183157
"shlex",
184158
]
185159

186-
[[package]]
187-
name = "cexpr"
188-
version = "0.6.0"
189-
source = "registry+https://github.com/rust-lang/crates.io-index"
190-
checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
191-
dependencies = [
192-
"nom",
193-
]
194-
195160
[[package]]
196161
name = "cfg-if"
197162
version = "0.1.2"
198163
source = "registry+https://github.com/rust-lang/crates.io-index"
199164
checksum = "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de"
200165

201-
[[package]]
202-
name = "clang-sys"
203-
version = "1.1.0"
204-
source = "registry+https://github.com/rust-lang/crates.io-index"
205-
checksum = "5cb92721cb37482245ed88428f72253ce422b3b4ee169c70a0642521bb5db4cc"
206-
dependencies = [
207-
"glob",
208-
"libc",
209-
"libloading",
210-
]
211-
212166
[[package]]
213167
name = "colorchoice"
214168
version = "1.0.0"
@@ -222,7 +176,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
222176
checksum = "df89dd0d075dea5cc5fdd6d5df6b8a61172a710b3efac1d6bdb9dd8b78f82c1a"
223177
dependencies = [
224178
"proc-macro2",
225-
"quote 1.0.25",
179+
"quote 1.0.0",
226180
"syn 1.0.0",
227181
]
228182

@@ -232,12 +186,6 @@ version = "0.4.0"
232186
source = "registry+https://github.com/rust-lang/crates.io-index"
233187
checksum = "5edd69c67b2f8e0911629b7e6b8a34cb3956613cd7c6e6414966dee349c2db4f"
234188

235-
[[package]]
236-
name = "either"
237-
version = "1.0.0"
238-
source = "registry+https://github.com/rust-lang/crates.io-index"
239-
checksum = "5845bf77d497f79416df39462df26d4a8b71dd6440246848ee63709476dbb9a6"
240-
241189
[[package]]
242190
name = "env_filter"
243191
version = "0.1.0"
@@ -279,7 +227,7 @@ version = "0.3.1"
279227
source = "registry+https://github.com/rust-lang/crates.io-index"
280228
checksum = "3b5365afd01fdf916e775a224e844f80b3b9710d0f4f00903e219e859474d7ae"
281229
dependencies = [
282-
"bitflags 1.0.0",
230+
"bitflags",
283231
"fuchsia-zircon-sys",
284232
]
285233

@@ -289,12 +237,6 @@ version = "0.3.1"
289237
source = "registry+https://github.com/rust-lang/crates.io-index"
290238
checksum = "069def9a0e5feb7e9120635f6ebad24d853a6affbb077fec84d0888316cf9ae6"
291239

292-
[[package]]
293-
name = "glob"
294-
version = "0.3.0"
295-
source = "registry+https://github.com/rust-lang/crates.io-index"
296-
checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
297-
298240
[[package]]
299241
name = "hex"
300242
version = "0.4.0"
@@ -319,15 +261,6 @@ version = "2.0.0"
319261
source = "registry+https://github.com/rust-lang/crates.io-index"
320262
checksum = "b9b6c53306532d3c8e8087b44e6580e10db51a023cf9b433cea2ac38066b92da"
321263

322-
[[package]]
323-
name = "itertools"
324-
version = "0.10.0"
325-
source = "registry+https://github.com/rust-lang/crates.io-index"
326-
checksum = "37d572918e350e82412fe766d24b15e6682fb2ed2bbe018280caa810397cb319"
327-
dependencies = [
328-
"either",
329-
]
330-
331264
[[package]]
332265
name = "itoa"
333266
version = "0.3.0"
@@ -340,23 +273,28 @@ version = "0.2.0"
340273
source = "registry+https://github.com/rust-lang/crates.io-index"
341274
checksum = "ad1ca084b49bfd975182288e1a5f1d27ea34ff2d6ae084ae5e66e1652427eada"
342275
dependencies = [
343-
"winapi 0.2.4",
276+
"winapi",
344277
"winapi-build",
345278
]
346279

280+
[[package]]
281+
name = "lazy_static"
282+
version = "1.0.0"
283+
source = "registry+https://github.com/rust-lang/crates.io-index"
284+
checksum = "c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d"
285+
347286
[[package]]
348287
name = "libbitcoinkernel-sys"
349288
version = "0.2.0"
350289
dependencies = [
351-
"bindgen",
352290
"cc",
353291
]
354292

355293
[[package]]
356294
name = "libc"
357-
version = "0.2.39"
295+
version = "0.2.0"
358296
source = "registry+https://github.com/rust-lang/crates.io-index"
359-
checksum = "f54263ad99207254cf58b5f701ecb432c717445ea2ee8af387334bdd1a03fdff"
297+
checksum = "fd386f0746b2a12a14f1256fa1ee9a31c584aadcdd0b72b15a4cb59381e60b2d"
360298

361299
[[package]]
362300
name = "libfuzzer-sys"
@@ -368,15 +306,6 @@ dependencies = [
368306
"cc",
369307
]
370308

371-
[[package]]
372-
name = "libloading"
373-
version = "0.6.0"
374-
source = "registry+https://github.com/rust-lang/crates.io-index"
375-
checksum = "2c979a19ffb457f0273965c333053f3d586bf759bf7b683fbebc37f9a9ebedc4"
376-
dependencies = [
377-
"winapi 0.3.0",
378-
]
379-
380309
[[package]]
381310
name = "log"
382311
version = "0.4.8"
@@ -388,50 +317,23 @@ dependencies = [
388317

389318
[[package]]
390319
name = "memchr"
391-
version = "2.4.0"
392-
source = "registry+https://github.com/rust-lang/crates.io-index"
393-
checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc"
394-
395-
[[package]]
396-
name = "minimal-lexical"
397-
version = "0.1.2"
320+
version = "2.2.1"
398321
source = "registry+https://github.com/rust-lang/crates.io-index"
399-
checksum = "6595bb28ed34f43c3fe088e48f6cfb2e033cab45f25a5384d5fdf564fbc8c4b2"
400-
401-
[[package]]
402-
name = "nom"
403-
version = "7.0.0"
404-
source = "registry+https://github.com/rust-lang/crates.io-index"
405-
checksum = "7ffd9d26838a953b4af82cbeb9f1592c6798916983959be223a7124e992742c1"
406-
dependencies = [
407-
"memchr",
408-
"minimal-lexical",
409-
"version_check",
410-
]
322+
checksum = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e"
411323

412324
[[package]]
413325
name = "num-traits"
414326
version = "0.1.32"
415327
source = "registry+https://github.com/rust-lang/crates.io-index"
416328
checksum = "51eab148f171aefad295f8cece636fc488b9b392ef544da31ea4b8ef6b9e9c39"
417329

418-
[[package]]
419-
name = "prettyplease"
420-
version = "0.2.7"
421-
source = "registry+https://github.com/rust-lang/crates.io-index"
422-
checksum = "43ded2b5b204571f065ab8540367d738dfe1b3606ab9eb669dcfb5e7a3a07501"
423-
dependencies = [
424-
"proc-macro2",
425-
"syn 2.0.16",
426-
]
427-
428330
[[package]]
429331
name = "proc-macro2"
430-
version = "1.0.80"
332+
version = "1.0.0"
431333
source = "registry+https://github.com/rust-lang/crates.io-index"
432-
checksum = "a56dea16b0a29e94408b9aa5e2940a4eedbd128a1ba20e8f7ae60fd3d465af0e"
334+
checksum = "19f287c234c9b2d0308d692dee5c449c1a171167a6f8150f7cf2a49d8fd96967"
433335
dependencies = [
434-
"unicode-ident",
336+
"unicode-xid 0.2.0",
435337
]
436338

437339
[[package]]
@@ -442,9 +344,9 @@ checksum = "9f0fc799e40f2a2c2be239825b30b686f1bd1d2e0e3d5e943b14c1380db49acf"
442344

443345
[[package]]
444346
name = "quote"
445-
version = "1.0.25"
347+
version = "1.0.0"
446348
source = "registry+https://github.com/rust-lang/crates.io-index"
447-
checksum = "5308e8208729c3e1504a6cfad0d5daacc4614c9a2e65d1ea312a34b5cb00fe84"
349+
checksum = "7ab938ebe6f1c82426b5fb82eaf10c3e3028c53deaa3fbe38f5904b37cf4d767"
448350
dependencies = [
449351
"proc-macro2",
450352
]
@@ -476,20 +378,21 @@ checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7"
476378

477379
[[package]]
478380
name = "regex"
479-
version = "1.5.3"
381+
version = "1.3.0"
480382
source = "registry+https://github.com/rust-lang/crates.io-index"
481-
checksum = "ce5f1ceb7f74abbce32601642fcf8e8508a8a8991e0621c7d750295b9095702b"
383+
checksum = "fc98360d9e6ad383647702acc90f80b0582eac3ea577ab47d96325d3575de908"
482384
dependencies = [
483385
"aho-corasick",
484386
"memchr",
485387
"regex-syntax",
388+
"thread_local",
486389
]
487390

488391
[[package]]
489392
name = "regex-syntax"
490-
version = "0.6.25"
393+
version = "0.6.12"
491394
source = "registry+https://github.com/rust-lang/crates.io-index"
492-
checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
395+
checksum = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716"
493396

494397
[[package]]
495398
name = "remove_dir_all"
@@ -498,7 +401,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
498401
checksum = "b5d2f806b0fcdabd98acd380dc8daef485e22bcb7cddc811d1337967f2528cf5"
499402
dependencies = [
500403
"kernel32-sys",
501-
"winapi 0.2.4",
404+
"winapi",
502405
]
503406

504407
[[package]]
@@ -510,12 +413,6 @@ dependencies = [
510413
"libfuzzer-sys",
511414
]
512415

513-
[[package]]
514-
name = "rustc-hash"
515-
version = "2.1.0"
516-
source = "registry+https://github.com/rust-lang/crates.io-index"
517-
checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497"
518-
519416
[[package]]
520417
name = "secp256k1"
521418
version = "0.28.1"
@@ -617,21 +514,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
617514
checksum = "9f8c8eab7d9f493cd89d4068085651d81ac7d39c56eb64f7158ea514b156e280"
618515
dependencies = [
619516
"proc-macro2",
620-
"quote 1.0.25",
517+
"quote 1.0.0",
621518
"unicode-xid 0.2.0",
622519
]
623520

624-
[[package]]
625-
name = "syn"
626-
version = "2.0.16"
627-
source = "registry+https://github.com/rust-lang/crates.io-index"
628-
checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01"
629-
dependencies = [
630-
"proc-macro2",
631-
"quote 1.0.25",
632-
"unicode-ident",
633-
]
634-
635521
[[package]]
636522
name = "synom"
637523
version = "0.11.0"
@@ -652,10 +538,13 @@ dependencies = [
652538
]
653539

654540
[[package]]
655-
name = "unicode-ident"
656-
version = "1.0.0"
541+
name = "thread_local"
542+
version = "0.3.6"
657543
source = "registry+https://github.com/rust-lang/crates.io-index"
658-
checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"
544+
checksum = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
545+
dependencies = [
546+
"lazy_static",
547+
]
659548

660549
[[package]]
661550
name = "unicode-xid"
@@ -675,46 +564,18 @@ version = "0.2.1"
675564
source = "registry+https://github.com/rust-lang/crates.io-index"
676565
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
677566

678-
[[package]]
679-
name = "version_check"
680-
version = "0.9.0"
681-
source = "registry+https://github.com/rust-lang/crates.io-index"
682-
checksum = "45d3d553fd9413fffe7147a20171d640eda0ad4c070acd7d0c885a21bcd2e8b7"
683-
684567
[[package]]
685568
name = "winapi"
686569
version = "0.2.4"
687570
source = "registry+https://github.com/rust-lang/crates.io-index"
688571
checksum = "5350e40d908c7e8b9e5c9edb541ca47cc617c6229d3575a46da6f550f36c96fd"
689572

690-
[[package]]
691-
name = "winapi"
692-
version = "0.3.0"
693-
source = "registry+https://github.com/rust-lang/crates.io-index"
694-
checksum = "b3ad91d846a4a5342c1fb7008d26124ee6cf94a3953751618577295373b32117"
695-
dependencies = [
696-
"winapi-i686-pc-windows-gnu",
697-
"winapi-x86_64-pc-windows-gnu",
698-
]
699-
700573
[[package]]
701574
name = "winapi-build"
702575
version = "0.1.1"
703576
source = "registry+https://github.com/rust-lang/crates.io-index"
704577
checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
705578

706-
[[package]]
707-
name = "winapi-i686-pc-windows-gnu"
708-
version = "0.3.0"
709-
source = "registry+https://github.com/rust-lang/crates.io-index"
710-
checksum = "a16a8e2ebfc883e2b1771c6482b1fb3c6831eab289ba391619a2d93a7356220f"
711-
712-
[[package]]
713-
name = "winapi-x86_64-pc-windows-gnu"
714-
version = "0.3.0"
715-
source = "registry+https://github.com/rust-lang/crates.io-index"
716-
checksum = "8ca29cb03c8ceaf20f8224a18a530938305e9872b1478ea24ff44b4f503a1d1d"
717-
718579
[[package]]
719580
name = "windows-sys"
720581
version = "0.48.0"

0 commit comments

Comments
 (0)