From 0364bb12a106d256be0d1066d04ccbd21dc7cdd7 Mon Sep 17 00:00:00 2001 From: Hiroaki Tagawa Date: Fri, 14 Aug 2026 01:18:55 +0900 Subject: [PATCH 1/5] Update workspace dependencies Pin all workspace dependencies to their latest versions, notably: - annotate-snippets 0.11 -> 0.12: port diagnostics.rs to the new Group/Element API (Level enum variants became consts with a lifetime parameter, Snippet::origin() became path(), title/footer composition now goes through Group). Snippets set fold(false) to keep showing unannotated source lines as before. - libloading 0.8 -> 0.9: no code changes needed; the dyngen template already passes &OsStr to Library::new (58131981), which satisfies libloading 0.9's AsFilename bound. The generated dynamic_loading_* expectations compile against 0.9 unchanged. - env_logger 0.10 -> 0.11, similar 2 -> 3: no code changes needed. cargo test results are unchanged from before this commit: the two failing expectation tests (issue-544-stylo-creduce-2, nsbasehashtable) also fail on the unmodified tree with libclang 21 and are unrelated. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01TwjQ7wD6uxpJMX6jzPRj9K --- Cargo.lock | 496 +++++++++++++++++++++-------------------- Cargo.toml | 44 ++-- bindgen/codegen/mod.rs | 12 +- bindgen/diagnostics.rs | 50 ++--- bindgen/ir/context.rs | 4 +- bindgen/ir/var.rs | 4 +- bindgen/lib.rs | 4 +- bindgen/regex_set.rs | 14 +- 8 files changed, 322 insertions(+), 306 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0e102e0aea..470993585e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,28 +4,29 @@ version = 3 [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" dependencies = [ "memchr", ] [[package]] name = "annotate-snippets" -version = "0.11.5" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "710e8eae58854cdc1790fcb56cca04d712a17be849eeb81da2a724bf4bae2bc4" +checksum = "f211a51805bc641f3ad5b7664c77d2547af685cc33b4cd8d31964027a46f13f1" dependencies = [ "anstyle", + "memchr", "unicode-width", ] [[package]] name = "anstream" -version = "0.6.19" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" dependencies = [ "anstyle", "anstyle-parse", @@ -38,33 +39,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] name = "anstyle-parse" -version = "0.2.7" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ "windows-sys", ] [[package]] name = "anstyle-wincon" -version = "3.0.9" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", @@ -76,7 +77,7 @@ name = "bindgen" version = "0.72.0" dependencies = [ "annotate-snippets", - "bitflags", + "bitflags 2.13.1", "cexpr", "clang-sys", "clap", @@ -96,7 +97,7 @@ name = "bindgen-cli" version = "0.72.0" dependencies = [ "bindgen", - "env_logger 0.10.2", + "env_logger", "log", "proc-macro2", "shlex", @@ -127,9 +128,15 @@ dependencies = [ [[package]] name = "bitflags" -version = "2.9.1" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "block" @@ -137,11 +144,21 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" +[[package]] +name = "bstr" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb31b46c14244e20ee9984b11bf5c992b91fb6939fea616e3512c8baecdbe5f" +dependencies = [ + "memchr", + "serde_core", +] + [[package]] name = "cc" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5add81bb678e6cb321aff7fa0dc7689ad82b112dbc032cea19f91d6b8e3582b9" +checksum = "5d262e149917187838d5b42777c8253bcb64500067342904e7d429499a6f277e" dependencies = [ "find-msvc-tools", "shlex", @@ -158,26 +175,26 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "clang-sys" -version = "1.8.1" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a" dependencies = [ "glob", "libc", - "libloading", + "libloading 0.8.9", ] [[package]] name = "clap" -version = "4.4.18" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" +checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" dependencies = [ "clap_builder", "clap_derive", @@ -185,9 +202,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.18" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" +checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" dependencies = [ "anstream", "anstyle", @@ -197,42 +214,73 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.4.10" +version = "4.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb745187d7f4d76267b37485a65e0149edd0e91a4cfcdd3f27524ad86cee9f3" +checksum = "3be2ad0423bdbbb0e25bc89add796f3559706d4a95e1bc98e4d9662a957b6a19" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.104", + "syn 3.0.3", ] [[package]] name = "clap_lex" -version = "0.6.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" [[package]] name = "colorchoice" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] -name = "env_logger" -version = "0.8.4" +name = "defmt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" +dependencies = [ + "defmt-parser", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror", +] + +[[package]] +name = "env_filter" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900d271a03799a1ee8d1ca9b19893b48ca674a9284fefcfb85f05e74ed314217" dependencies = [ "log", "regex", @@ -240,22 +288,22 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.10.2" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +checksum = "de671bd27a75a797dc9ae289ba1e77276e75e2026408aab65185384e2d5cd3f6" dependencies = [ - "humantime", - "is-terminal", + "anstream", + "anstyle", + "env_filter", + "jiff", "log", - "regex", - "termcolor", ] [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", "windows-sys", @@ -263,94 +311,106 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "26b73573e6edcd2af0cdf47bd6cb58f0b3839491263c314eaad1ccf24430e1de" [[package]] name = "getrandom" -version = "0.2.16" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.1+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "rand_core", ] [[package]] name = "glob" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] -name = "hermit-abi" -version = "0.5.2" +name = "is_terminal_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] -name = "humantime" -version = "2.2.0" +name = "jiff" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" +checksum = "668b7183bd07af9a4885f5c35b0cc5c83c4607a913c16b7e17291832910d2dcc" +dependencies = [ + "defmt", + "jiff-core", + "jiff-static", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", +] [[package]] -name = "is-terminal" -version = "0.4.16" +name = "jiff-core" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" +checksum = "7feca88439efe53da3754500c1851dedf3cb36c524dd5cf8225cc0794de95d09" dependencies = [ - "hermit-abi", - "libc", - "windows-sys", + "defmt", ] [[package]] -name = "is_terminal_polyfill" -version = "1.70.1" +name = "jiff-static" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "3a69dcb3a21cfb32ce1cd056169337ca284af0766dd766e7878819b251a49204" +dependencies = [ + "jiff-core", + "proc-macro2", + "quote", + "syn 2.0.119", +] [[package]] name = "libc" -version = "0.2.186" +version = "0.2.189" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" + +[[package]] +name = "libloading" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] [[package]] name = "libloading" -version = "0.8.8" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "754ca22de805bb5744484a5b151a9e1a8e837d5dc232c2d7d8c2e3492edc8b60" dependencies = [ "cfg-if", - "windows-targets", + "windows-link", ] [[package]] @@ -361,9 +421,9 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "log" -version = "0.4.27" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "malloc_buf" @@ -376,9 +436,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "minimal-lexical" @@ -407,21 +467,36 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "owo-colors" -version = "4.2.2" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e" +checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" + +[[package]] +name = "portable-atomic" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" + +[[package]] +name = "portable-atomic-util" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" +dependencies = [ + "portable-atomic", +] [[package]] name = "prettyplease" @@ -435,20 +510,20 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] [[package]] name = "quickcheck" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "588f6378e4dd99458b60ec275b4477add41ce4fa9f64dcba6f15adccb19b50d6" +checksum = "95c589f335db0f6aaa168a7cd27b1fc6920f5e1470c804f814d9cd6e62a0f70b" dependencies = [ - "env_logger 0.8.4", + "env_logger", "log", "rand", ] @@ -464,42 +539,40 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.40" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] [[package]] name = "r-efi" -version = "5.3.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] name = "rand" -version = "0.8.7" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ + "getrandom", "rand_core", ] [[package]] name = "rand_core" -version = "0.6.4" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom 0.2.16", -] +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "regex" -version = "1.11.1" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -509,9 +582,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" dependencies = [ "aho-corasick", "memchr", @@ -520,15 +593,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustix" @@ -536,13 +609,33 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags", + "bitflags 2.13.1", "errno", "libc", "linux-raw-sys", "windows-sys", ] +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + [[package]] name = "shlex" version = "2.0.1" @@ -551,21 +644,24 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "similar" -version = "2.7.0" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" +checksum = "85ee016af5d736b69fc89e19254540fa4b5f5492853fb5503920f084011c78b6" +dependencies = [ + "bstr", +] [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.104" +version = "2.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" dependencies = [ "proc-macro2", "quote", @@ -590,150 +686,70 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom", "once_cell", "rustix", "windows-sys", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - [[package]] name = "tests_expectations" version = "0.0.0" dependencies = [ "block", - "libloading", + "libloading 0.9.0", "objc", ] [[package]] -name = "unicode-ident" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" - -[[package]] -name = "unicode-width" -version = "0.2.1" +name = "thiserror" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" - -[[package]] -name = "utf8parse" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" -dependencies = [ - "wit-bindgen-rt", -] - -[[package]] -name = "winapi-util" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" dependencies = [ - "windows-sys", + "thiserror-impl", ] [[package]] -name = "windows-sys" -version = "0.59.0" +name = "thiserror-impl" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "proc-macro2", + "quote", + "syn 3.0.3", ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" +name = "unicode-ident" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" +name = "unicode-width" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" +name = "utf8parse" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" +name = "windows-link" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "windows-sys" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "bitflags", + "windows-link", ] diff --git a/Cargo.toml b/Cargo.toml index 0bc505ce73..f7ebc0b3f3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,29 +21,29 @@ edition = "2021" # All dependency version management is centralized here [workspace.dependencies] -annotate-snippets = "0.11.4" +annotate-snippets = "0.12.16" bindgen = { version = "0.72.0", path = "./bindgen", default-features = false } -bitflags = "2.2.1" -block = "0.1" -cc = "1.0" -cexpr = "0.6" -clang-sys = "1" -clap = "4" -clap_complete = "4" -env_logger = "0.10.0" -libloading = "0.8" -log = "0.4" -objc = "0.2" -owo-colors = "4.1.0" -prettyplease = "0.3" -proc-macro2 = "1.0.80" -quickcheck = "1.0" -quote = { version = "1", default-features = false } -regex = { version = "1.5.3", default-features = false } -rustc-hash = "2.1.0" -shlex = "2" -similar = "2.2.1" -syn = "3.0" +bitflags = "2.13.1" +block = "0.1.6" +cc = "1.4.2" +cexpr = "0.6.0" +clang-sys = "1.9.1" +clap = "4.6.6" +clap_complete = "4.6.9" +env_logger = "0.11.11" +libloading = "0.9.0" +log = "0.4.33" +objc = "0.2.7" +owo-colors = "4.3.0" +prettyplease = "0.3.0" +proc-macro2 = "1.0.107" +quickcheck = "1.1.0" +quote = { version = "1.0.47", default-features = false } +regex = { version = "1.13.1", default-features = false } +rustc-hash = "2.1.3" +shlex = "2.0.1" +similar = "3.1.2" +syn = "3.0.3" tempfile = "3.27.0" [workspace.lints.rust] diff --git a/bindgen/codegen/mod.rs b/bindgen/codegen/mod.rs index d61f87c901..36f6faa91e 100644 --- a/bindgen/codegen/mod.rs +++ b/bindgen/codegen/mod.rs @@ -4981,18 +4981,18 @@ fn unsupported_abi_diagnostic( "Skipping {}function `{fn_name}` because the {error}", if variadic { "variadic " } else { "" }, ), - Level::Warning, + Level::WARNING, ) .add_annotation( "No code will be generated for this function.", - Level::Warning, + Level::WARNING, ) .add_annotation( format!( "The configured Rust version is {}.", ctx.options().rust_target ), - Level::Note, + Level::NOTE, ); if let Some(loc) = location { @@ -5028,9 +5028,9 @@ fn variadic_fn_diagnostic( let mut diag = Diagnostic::default(); - diag.with_title(format!("Cannot generate wrapper for the static function `{fn_name}`."), Level::Warning) - .add_annotation("The `--wrap-static-fns` feature does not support variadic functions.", Level::Note) - .add_annotation("No code will be generated for this function.", Level::Note); + diag.with_title(format!("Cannot generate wrapper for the static function `{fn_name}`."), Level::WARNING) + .add_annotation("The `--wrap-static-fns` feature does not support variadic functions.", Level::NOTE) + .add_annotation("No code will be generated for this function.", Level::NOTE); if let Some(loc) = _location { let (file, line, col, _) = loc.location(); diff --git a/bindgen/diagnostics.rs b/bindgen/diagnostics.rs index f22402ac0e..5656fc5f25 100644 --- a/bindgen/diagnostics.rs +++ b/bindgen/diagnostics.rs @@ -6,16 +6,16 @@ use std::fmt::Write; use std::io::{self, BufRead, BufReader}; use std::{borrow::Cow, fs::File}; -use annotate_snippets::{Renderer, Snippet}; +use annotate_snippets::{Annotation, Group, Renderer, Snippet}; pub(crate) use annotate_snippets::Level; /// A `bindgen` diagnostic. #[derive(Default)] pub(crate) struct Diagnostic<'a> { - title: Option<(Cow<'a, str>, Level)>, + title: Option<(Cow<'a, str>, Level<'a>)>, slices: Vec>, - footer: Vec<(Cow<'a, str>, Level)>, + footer: Vec<(Cow<'a, str>, Level<'a>)>, } impl<'a> Diagnostic<'a> { @@ -23,7 +23,7 @@ impl<'a> Diagnostic<'a> { pub(crate) fn with_title( &mut self, title: impl Into>, - level: Level, + level: Level<'a>, ) -> &mut Self { self.title = Some((title.into(), level)); self @@ -39,7 +39,7 @@ impl<'a> Diagnostic<'a> { pub(crate) fn add_annotation( &mut self, msg: impl Into>, - level: Level, + level: Level<'a>, ) -> &mut Self { self.footer.push((msg.into(), level)); self @@ -54,37 +54,37 @@ impl<'a> Diagnostic<'a> { static INVOKED_BY_BUILD_SCRIPT: bool = std::env::var_os("CARGO_CFG_TARGET_ARCH").is_some(); } - let mut footer = vec![]; - let mut slices = vec![]; - let snippet = if let Some((msg, level)) = &self.title { - (*level).title(msg) - } else { + let Some((msg, level)) = &self.title else { return; }; - - for (msg, level) in &self.footer { - footer.push((*level).title(msg)); - } - - // add additional info that this is generated by bindgen - // so as to not confuse with rustc warnings - footer.push( - Level::Info.title("This diagnostic was generated by bindgen."), - ); + let mut group = + Group::with_title(level.clone().primary_title(msg.as_ref())); for slice in &self.slices { if let Some(source) = &slice.source { - let mut snippet = Snippet::source(source) - .line_start(slice.line.unwrap_or_default()); + let mut snippet: Snippet<'_, Annotation<'_>> = + Snippet::source(source.as_ref()) + .line_start(slice.line.unwrap_or_default()) + .fold(false); if let Some(origin) = &slice.filename { - snippet = snippet.origin(origin); + snippet = snippet.path(origin.as_str()); } - slices.push(snippet); + group = group.element(snippet); } } + for (msg, level) in &self.footer { + group = group.element(level.clone().message(msg.as_ref())); + } + + // add additional info that this is generated by bindgen + // so as to not confuse with rustc warnings + group = group.element( + Level::INFO.message("This diagnostic was generated by bindgen."), + ); + let renderer = Renderer::styled(); - let dl = renderer.render(snippet.snippets(slices).footers(footer)); + let dl = renderer.render(&[group]); if INVOKED_BY_BUILD_SCRIPT.with(Clone::clone) { // This is just a hack which hides the `warning:` added by cargo at the beginning of diff --git a/bindgen/ir/context.rs b/bindgen/ir/context.rs index b5b6b4a000..9f3a549506 100644 --- a/bindgen/ir/context.rs +++ b/bindgen/ir/context.rs @@ -3107,11 +3107,11 @@ fn unused_regex_diagnostic(item: &str, name: &str, _ctx: &BindgenContext) { Diagnostic::default() .with_title( format!("Unused regular expression: `{item}`."), - Level::Warning, + Level::WARNING, ) .add_annotation( format!("This regular expression was passed to `{name}`."), - Level::Note, + Level::NOTE, ) .display(); } diff --git a/bindgen/ir/var.rs b/bindgen/ir/var.rs index 9d72dcf06e..27ab444551 100644 --- a/bindgen/ir/var.rs +++ b/bindgen/ir/var.rs @@ -515,9 +515,9 @@ fn duplicated_macro_diagnostic( slice.with_source(source); Diagnostic::default() - .with_title("Duplicated macro definition.", Level::Warning) + .with_title("Duplicated macro definition.", Level::WARNING) .add_slice(slice) - .add_annotation("This macro had a duplicate.", Level::Note) + .add_annotation("This macro had a duplicate.", Level::NOTE) .display(); } } diff --git a/bindgen/lib.rs b/bindgen/lib.rs index 88e07a41ef..a4c76e48a5 100644 --- a/bindgen/lib.rs +++ b/bindgen/lib.rs @@ -1091,10 +1091,10 @@ fn rustfmt_non_fatal_error_diagnostic(msg: &str, _options: &BindgenOptions) { use crate::diagnostics::{Diagnostic, Level}; Diagnostic::default() - .with_title(msg, Level::Warning) + .with_title(msg, Level::WARNING) .add_annotation( "The bindings will be generated but not formatted.", - Level::Note, + Level::NOTE, ) .display(); } diff --git a/bindgen/regex_set.rs b/bindgen/regex_set.rs index 32279557b5..2122ede3f0 100644 --- a/bindgen/regex_set.rs +++ b/bindgen/regex_set.rs @@ -164,9 +164,9 @@ fn invalid_regex_warning( let error = "error: "; if line.starts_with(error) { let (_, msg) = line.split_at(error.len()); - diagnostic.add_annotation(msg.to_owned(), Level::Error); + diagnostic.add_annotation(msg.to_owned(), Level::ERROR); } else { - diagnostic.add_annotation(line.to_owned(), Level::Info); + diagnostic.add_annotation(line.to_owned(), Level::INFO); } } let mut slice = Slice::default(); @@ -175,25 +175,25 @@ fn invalid_regex_warning( diagnostic.with_title( "Error while parsing a regular expression.", - Level::Warning, + Level::WARNING, ); } else { - diagnostic.with_title(string, Level::Warning); + diagnostic.with_title(string, Level::WARNING); } } err => { let err = err.to_string(); - diagnostic.with_title(err, Level::Warning); + diagnostic.with_title(err, Level::WARNING); } } diagnostic.add_annotation( format!("This regular expression was passed via `{name}`."), - Level::Note, + Level::NOTE, ); if set.items.iter().any(|item| item.as_ref() == "*") { - diagnostic.add_annotation("Wildcard patterns \"*\" are no longer considered valid. Use \".*\" instead.", Level::Help); + diagnostic.add_annotation("Wildcard patterns \"*\" are no longer considered valid. Use \".*\" instead.", Level::HELP); } diagnostic.display(); } From cb3650d78524e0ab8574426e2959904f5fbd0a4d Mon Sep 17 00:00:00 2001 From: Hiroaki Tagawa Date: Fri, 14 Aug 2026 01:22:36 +0900 Subject: [PATCH 2/5] Fix warnings surfaced by dependency updates - diagnostics.rs: annotate-snippets 0.12's render() returns String directly, so the to_string() call became an implicit clone (clippy::implicit_clone); iterate over the String's lines directly. - quickchecking: quickcheck 1.1 deprecated QuickCheck::gen in favor of QuickCheck::rng. - regex_set.rs: add missing backticks in a doc comment (clippy::doc_markdown). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01TwjQ7wD6uxpJMX6jzPRj9K --- bindgen-tests/tests/quickchecking/src/lib.rs | 2 +- bindgen/diagnostics.rs | 3 +-- bindgen/regex_set.rs | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/bindgen-tests/tests/quickchecking/src/lib.rs b/bindgen-tests/tests/quickchecking/src/lib.rs index 7567a3bea6..5088f0d748 100644 --- a/bindgen-tests/tests/quickchecking/src/lib.rs +++ b/bindgen-tests/tests/quickchecking/src/lib.rs @@ -103,6 +103,6 @@ pub fn test_bindgen( QuickCheck::new() .tests(tests) - .gen(Gen::new(generate_range)) + .rng(Gen::new(generate_range)) .quickcheck(bindgen_prop as fn(fuzzers::HeaderC) -> TestResult); } diff --git a/bindgen/diagnostics.rs b/bindgen/diagnostics.rs index 5656fc5f25..b771f070aa 100644 --- a/bindgen/diagnostics.rs +++ b/bindgen/diagnostics.rs @@ -91,8 +91,7 @@ impl<'a> Diagnostic<'a> { // every line. This should be fine as our diagnostics already have a colorful title. // FIXME (pvdrz): Could it be that this doesn't work in other languages? let hide_warning = "\r \r"; - let string = dl.to_string(); - for line in string.lines() { + for line in dl.lines() { println!("cargo:warning={hide_warning}{line}"); } } else { diff --git a/bindgen/regex_set.rs b/bindgen/regex_set.rs index 2122ede3f0..da46ebac05 100644 --- a/bindgen/regex_set.rs +++ b/bindgen/regex_set.rs @@ -75,7 +75,7 @@ impl RegexSet { } #[cfg(all(not(feature = "__cli"), feature = "experimental"))] - /// Construct a RegexSet from the set of entries we've accumulated and emit diagnostics if the + /// Construct a `RegexSet` from the set of entries we've accumulated and emit diagnostics if the /// name of the regex set is passed to it. /// /// Must be called before calling `matches()`, or it will always return From 47ef1ef1c18bcc121167af7093158ced2e6113ae Mon Sep 17 00:00:00 2001 From: Hiroaki Tagawa Date: Sat, 29 Aug 2026 22:27:28 +0900 Subject: [PATCH 3/5] Keep libloading at 0.8 (0.9 requires Rust 1.88) libloading 0.9.0 declares rust-version = 1.88, which is above the MSRV this branch moves to. The crate is only used by the expectations test crate, and the generated dyngen code (58131981) is compatible with both 0.8 and 0.9, so nothing is lost by staying on 0.8.9. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01PwZopBunmYL9qDWkaUNHQW --- Cargo.lock | 16 +++------------- Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 470993585e..6f1aa1ecac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "aho-corasick" @@ -187,7 +187,7 @@ checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a" dependencies = [ "glob", "libc", - "libloading 0.8.9", + "libloading", ] [[package]] @@ -403,16 +403,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "libloading" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754ca22de805bb5744484a5b151a9e1a8e837d5dc232c2d7d8c2e3492edc8b60" -dependencies = [ - "cfg-if", - "windows-link", -] - [[package]] name = "linux-raw-sys" version = "0.12.1" @@ -697,7 +687,7 @@ name = "tests_expectations" version = "0.0.0" dependencies = [ "block", - "libloading 0.9.0", + "libloading", "objc", ] diff --git a/Cargo.toml b/Cargo.toml index f7ebc0b3f3..8a12a9a560 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ clang-sys = "1.9.1" clap = "4.6.6" clap_complete = "4.6.9" env_logger = "0.11.11" -libloading = "0.9.0" +libloading = "0.8.9" log = "0.4.33" objc = "0.2.7" owo-colors = "4.3.0" From 78be298c16b0cc2ff396fa5369eff25af715023b Mon Sep 17 00:00:00 2001 From: Hiroaki Tagawa Date: Sat, 29 Aug 2026 22:29:48 +0900 Subject: [PATCH 4/5] Bump MSRV to 1.85 The updated workspace dependencies (annotate-snippets 0.12, clap 4.6, quickcheck 1.1, similar 3, owo-colors 4.3, rustc-hash 2.1.3, ...) require rustc 1.77 to 1.85, so the msrv CI job fails against 1.71. Raise rust-version to 1.85 and document it in README and CHANGELOG. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01PwZopBunmYL9qDWkaUNHQW --- CHANGELOG.md | 2 ++ Cargo.toml | 2 +- README.md | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 74ff973751..9070178da1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -228,6 +228,8 @@ # Unreleased ## Added ## Changed +- Workspace dependencies have been updated (annotate-snippets 0.12, clap 4.6, + env_logger 0.11, quickcheck 1.1, similar 3, ...), new msrv is 1.85. ## Removed - Removed support for generating code for rustc versions < 1.51. ## Fixed diff --git a/Cargo.toml b/Cargo.toml index 8a12a9a560..c7d8f5cc59 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ default-members = [ [workspace.package] # If you change this, also update README.md -rust-version = "1.71.0" +rust-version = "1.85.0" edition = "2021" # All dependency version management is centralized here diff --git a/README.md b/README.md index 9c8b7b2872..ba51598f52 100644 --- a/README.md +++ b/README.md @@ -39,9 +39,9 @@ extern "C" { ## MSRV -The `bindgen` minimum supported Rust version is **1.71.0**. +The `bindgen` minimum supported Rust version is **1.85.0**. -The `bindgen-cli` minimum supported Rust version is **1.71.0**. +The `bindgen-cli` minimum supported Rust version is **1.85.0**. No MSRV bump policy has been established yet, so MSRV may increase in any release. From 556e34797f95cae422d4b5c8e20ff2c9e4ddd3a7 Mon Sep 17 00:00:00 2001 From: Hiroaki Tagawa Date: Sat, 29 Aug 2026 22:29:48 +0900 Subject: [PATCH 5/5] Fix clippy lints enabled by the MSRV bump Clippy gates several lints on rust-version; raising it to 1.85 turns these on under the CI's -D warnings: - ref_as_ptr: use `&raw const` / `&raw mut` instead of coercing references to raw pointers - io_other_error: `io::Error::other(..)` instead of `io::Error::new(io::ErrorKind::Other, ..)` - unnecessary_map_or: `Option::is_none_or` instead of `map_or(true, ..)` Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01PwZopBunmYL9qDWkaUNHQW --- bindgen-tests/tests/tests.rs | 24 +++++++++------------- bindgen/clang.rs | 10 +++++++-- bindgen/codegen/bitfield_unit_tests.rs | 17 +++++++++------- bindgen/codegen/mod.rs | 2 +- bindgen/ir/comp.rs | 2 +- bindgen/ir/enum_ty.rs | 2 +- bindgen/lib.rs | 28 +++++++++----------------- bindgen/options/cli.rs | 6 +++--- 8 files changed, 42 insertions(+), 49 deletions(-) diff --git a/bindgen-tests/tests/tests.rs b/bindgen-tests/tests/tests.rs index ad103eb592..1d77afe6bb 100644 --- a/bindgen-tests/tests/tests.rs +++ b/bindgen-tests/tests/tests.rs @@ -4,7 +4,7 @@ use similar::{ChangeTag, TextDiff}; use std::env; use std::fmt; use std::fs; -use std::io::{BufRead, BufReader, Error, ErrorKind, Read, Write}; +use std::io::{BufRead, BufReader, Error, Read, Write}; use std::path::{Path, PathBuf}; use bindgen::builder_from_flags; @@ -70,7 +70,7 @@ fn error_diff_mismatch( .output()?; } - Err(Error::new(ErrorKind::Other, "Header and binding differ! Run with BINDGEN_OVERWRITE_EXPECTED=1 in the environment to automatically overwrite the expectation or with BINDGEN_TESTS_DIFFTOOL=meld to do this manually.")) + Err(Error::other("Header and binding differ! Run with BINDGEN_OVERWRITE_EXPECTED=1 in the environment to automatically overwrite the expectation or with BINDGEN_TESTS_DIFFTOOL=meld to do this manually.")) } struct Line(Option); @@ -125,7 +125,7 @@ fn compare_generated_header( check_roundtrip: bool, ) -> Result<(), Error> { let file_name = header.file_name().ok_or_else(|| { - Error::new(ErrorKind::Other, "compare_generated_header expects a file") + Error::other("compare_generated_header expects a file") })?; let mut expectation = PathBuf::from(header); @@ -193,19 +193,13 @@ fn compare_generated_header( // We skip the generate() error here so we get a full diff below let actual = match builder.generate() { Ok(bindings) => format_code(bindings.to_string()).map_err(|err| { - Error::new( - ErrorKind::Other, - format!("Cannot parse the generated bindings: {err}"), - ) + Error::other(format!("Cannot parse the generated bindings: {err}")) })?, Err(_) => "/* error generating bindings */\n".into(), }; if actual.is_empty() { - return Err(Error::new( - ErrorKind::Other, - "Something's gone really wrong!", - )); + return Err(Error::other("Something's gone really wrong!")); } if actual != expected { return error_diff_mismatch( @@ -220,7 +214,7 @@ fn compare_generated_header( if let Err(e) = compare_generated_header(header, roundtrip_builder, false) { - return Err(Error::new(ErrorKind::Other, format!("Checking CLI flags roundtrip errored! You probably need to fix Builder::command_line_flags. {e}"))); + return Err(Error::other(format!("Checking CLI flags roundtrip errored! You probably need to fix Builder::command_line_flags. {e}"))); } } @@ -315,9 +309,9 @@ fn create_bindgen_builder(header: &Path) -> Result { // - add header filename as 1st element // - prepend raw lines so they're in the right order for expected output // - append the test header's bindgen flags - let header_str = header.to_str().ok_or_else(|| { - Error::new(ErrorKind::Other, "Invalid header file name") - })?; + let header_str = header + .to_str() + .ok_or_else(|| Error::other("Invalid header file name"))?; let prepend = [ "bindgen", diff --git a/bindgen/clang.rs b/bindgen/clang.rs index 9e614da9f8..68fe457f91 100644 --- a/bindgen/clang.rs +++ b/bindgen/clang.rs @@ -989,7 +989,9 @@ impl<'a> RawTokens<'a> { let mut token_count = 0; let range = cursor.extent(); let tu = unsafe { clang_Cursor_getTranslationUnit(cursor.x) }; - unsafe { clang_tokenize(tu, range, &mut tokens, &mut token_count) }; + unsafe { + clang_tokenize(tu, range, &raw mut tokens, &raw mut token_count); + } Self { cursor, tu, @@ -1619,7 +1621,11 @@ impl SourceLocation { let mut col = 0; let mut off = 0; clang_getFileLocation( - self.x, &mut file, &mut line, &mut col, &mut off, + self.x, + &raw mut file, + &raw mut line, + &raw mut col, + &raw mut off, ); (File { x: file }, line as usize, col as usize, off as usize) } diff --git a/bindgen/codegen/bitfield_unit_tests.rs b/bindgen/codegen/bitfield_unit_tests.rs index baa5c938a5..661d16424f 100644 --- a/bindgen/codegen/bitfield_unit_tests.rs +++ b/bindgen/codegen/bitfield_unit_tests.rs @@ -342,15 +342,15 @@ fn bitfield_unit_raw_const_methods() { // Test raw_get_const unsafe { assert_eq!( - __BindgenBitfieldUnit::raw_get_const::<0, 8>(&unit), + __BindgenBitfieldUnit::raw_get_const::<0, 8>(&raw const unit), unit.get(0, 8) ); assert_eq!( - __BindgenBitfieldUnit::raw_get_const::<4, 8>(&unit), + __BindgenBitfieldUnit::raw_get_const::<4, 8>(&raw const unit), unit.get(4, 8) ); assert_eq!( - __BindgenBitfieldUnit::raw_get_const::<0, 16>(&unit), + __BindgenBitfieldUnit::raw_get_const::<0, 16>(&raw const unit), unit.get(0, 16) ); } @@ -360,7 +360,10 @@ fn bitfield_unit_raw_const_methods() { let mut unit_runtime = __BindgenBitfieldUnit::<[u8; 2]>::new([0; 2]); unsafe { - __BindgenBitfieldUnit::raw_set_const::<3, 5>(&mut unit_const, 0b11111); + __BindgenBitfieldUnit::raw_set_const::<3, 5>( + &raw mut unit_const, + 0b11111, + ); } unit_runtime.set(3, 5, 0b11111); @@ -385,7 +388,7 @@ fn bitfield_unit_const_full_word_width() { unsafe { assert_eq!( - __BindgenBitfieldUnit::raw_get_const::<0, 64>(&unit), + __BindgenBitfieldUnit::raw_get_const::<0, 64>(&raw const unit), unit.get(0, 64), ); } @@ -400,7 +403,7 @@ fn bitfield_unit_const_full_word_width() { let mut unit_raw = __BindgenBitfieldUnit::<[u8; 8]>::new([0; 8]); unsafe { - __BindgenBitfieldUnit::raw_set_const::<0, 64>(&mut unit_raw, value); + __BindgenBitfieldUnit::raw_set_const::<0, 64>(&raw mut unit_raw, value); } assert_eq!(unit_raw.get(0, 64), value); @@ -427,7 +430,7 @@ fn bitfield_unit_const_full_word_width() { __BindgenBitfieldUnit::<[u8; 9]>::new([0xAA; 9]); unsafe { __BindgenBitfieldUnit::raw_set_const::<1, 63>( - &mut unit_shifted_raw, + &raw mut unit_shifted_raw, value & ((1u64 << 63) - 1), ); } diff --git a/bindgen/codegen/mod.rs b/bindgen/codegen/mod.rs index 36f6faa91e..1d41bef7e8 100644 --- a/bindgen/codegen/mod.rs +++ b/bindgen/codegen/mod.rs @@ -2423,7 +2423,7 @@ impl CodeGenerator for CompInfo { // couldn't determine the layout of the blob. layout.is_none() } else { - layout.map_or(true, |l| l.size != 0) + layout.is_none_or(|l| l.size != 0) }; if has_address { diff --git a/bindgen/ir/comp.rs b/bindgen/ir/comp.rs index 2760775cea..3925cf98fa 100644 --- a/bindgen/ir/comp.rs +++ b/bindgen/ir/comp.rs @@ -1329,7 +1329,7 @@ impl CompInfo { let mut ci = CompInfo::new(kind); ci.is_forward_declaration = - location.map_or(true, |cur| match cur.kind() { + location.is_none_or(|cur| match cur.kind() { CXCursor_ParmDecl => true, CXCursor_StructDecl | CXCursor_UnionDecl | CXCursor_ClassDecl => !cur.is_definition(), diff --git a/bindgen/ir/enum_ty.rs b/bindgen/ir/enum_ty.rs index 8566622100..7e4a315f4c 100644 --- a/bindgen/ir/enum_ty.rs +++ b/bindgen/ir/enum_ty.rs @@ -79,7 +79,7 @@ impl Enum { let is_bool = variant_ty.is_some_and(Type::is_bool); // Assume signedness since the default type by the C standard is an int. - let is_signed = variant_ty.map_or(true, |ty| match *ty.kind() { + let is_signed = variant_ty.is_none_or(|ty| match *ty.kind() { TypeKind::Int(ref int_kind) => int_kind.is_signed(), ref other => { panic!("Since when enums can be non-integers? {other:?}") diff --git a/bindgen/lib.rs b/bindgen/lib.rs index a4c76e48a5..1606872352 100644 --- a/bindgen/lib.rs +++ b/bindgen/lib.rs @@ -386,13 +386,8 @@ impl Builder { /// issues. The resulting file will be named something like `__bindgen.i` or /// `__bindgen.ii` pub fn dump_preprocessed_input(&self) -> io::Result<()> { - let clang = - clang_sys::support::Clang::find(None, &[]).ok_or_else(|| { - io::Error::new( - io::ErrorKind::Other, - "Cannot find clang executable", - ) - })?; + let clang = clang_sys::support::Clang::find(None, &[]) + .ok_or_else(|| io::Error::other("Cannot find clang executable"))?; // The contents of a wrapper file that includes all the input header // files. @@ -461,10 +456,7 @@ impl Builder { if child.wait()?.success() { Ok(()) } else { - Err(io::Error::new( - io::ErrorKind::Other, - "clang exited with non-zero status", - )) + Err(io::Error::other("clang exited with non-zero status")) } } } @@ -1062,10 +1054,9 @@ impl Bindings { match String::from_utf8(output) { Ok(bindings) => match status.code() { Some(0) => Ok(bindings), - Some(2) => Err(io::Error::new( - io::ErrorKind::Other, - "Rustfmt parsing errors.".to_string(), - )), + Some(2) => { + Err(io::Error::other("Rustfmt parsing errors.".to_string())) + } Some(3) => { rustfmt_non_fatal_error_diagnostic( "Rustfmt could not format some lines", @@ -1073,10 +1064,9 @@ impl Bindings { ); Ok(bindings) } - _ => Err(io::Error::new( - io::ErrorKind::Other, - "Internal rustfmt error".to_string(), - )), + _ => { + Err(io::Error::other("Internal rustfmt error".to_string())) + } }, _ => Ok(source), } diff --git a/bindgen/options/cli.rs b/bindgen/options/cli.rs index 18b16cfcba..41f5e19938 100644 --- a/bindgen/options/cli.rs +++ b/bindgen/options/cli.rs @@ -745,7 +745,7 @@ where } if header.is_none() { - return Err(io::Error::new(io::ErrorKind::Other, "Header not found")); + return Err(io::Error::other("Header not found")); } let mut builder = builder(); @@ -797,7 +797,7 @@ where } fn add_derives(&self, info: &DeriveInfo<'_>) -> Vec { - if self.kind.map_or(true, |kind| kind == info.kind) && + if self.kind.is_none_or(|kind| kind == info.kind) && self.regex_set.matches(info.name) { return self.derives.clone(); @@ -837,7 +837,7 @@ where } fn add_attributes(&self, info: &AttributeInfo<'_>) -> Vec { - if self.kind.map_or(true, |kind| kind == info.kind) && + if self.kind.is_none_or(|kind| kind == info.kind) && self.regex_set.matches(info.name) { return self.attributes.clone();