From 4e8ca4d8733f43b40a827c3b15e94af857dc6be5 Mon Sep 17 00:00:00 2001 From: Erich Gubler Date: Thu, 17 Apr 2025 17:50:35 +0000 Subject: [PATCH] =?UTF-8?q?Bug=201961024=20-=20build(rust):=20shim-upgrade?= =?UTF-8?q?=20`ron`=200.9.0=20=E2=86=92=200.10.1=20r=3Dsupply-chain-review?= =?UTF-8?q?ers,glandium?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Differential Revision: https://phabricator.services.mozilla.com/D245811 --- Cargo.lock | 15 +++-- Cargo.toml | 3 + build/rust/ron/Cargo.toml | 17 ++++++ build/rust/ron/lib.rs | 5 ++ gfx/wr/Cargo.lock | 4 +- gfx/wr/webrender/Cargo.toml | 2 +- supply-chain/audits.toml | 5 ++ third_party/rust/ron/.cargo-checksum.json | 2 +- third_party/rust/ron/CHANGELOG.md | 7 +++ third_party/rust/ron/Cargo.lock | 10 ++-- third_party/rust/ron/Cargo.toml | 6 +- third_party/rust/ron/README.md | 2 + third_party/rust/ron/examples/encode_file.rs | 60 ++++++++++++++++++++ third_party/rust/ron/src/lib.rs | 2 +- third_party/rust/ron/src/options.rs | 57 +++++++++++++++++++ third_party/rust/ron/src/value/number.rs | 42 +++++++++++++- 16 files changed, 223 insertions(+), 16 deletions(-) create mode 100644 build/rust/ron/Cargo.toml create mode 100644 build/rust/ron/lib.rs create mode 100644 third_party/rust/ron/examples/encode_file.rs diff --git a/Cargo.lock b/Cargo.lock index fb4db867c7ca..db81c781290b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5603,9 +5603,16 @@ dependencies = [ [[package]] name = "ron" -version = "0.9.0" +version = "0.9.999" +dependencies = [ + "ron 0.10.1", +] + +[[package]] +name = "ron" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63f3aa105dea217ef30d89581b65a4d527a19afc95ef5750be3890e8d3c5b837" +checksum = "beceb6f7bf81c73e73aeef6dd1356d9a1b2b4909e1f0fc3e59b034f9572d7b7f" dependencies = [ "base64 0.22.1", "bitflags 2.9.0", @@ -7347,7 +7354,7 @@ dependencies = [ "peek-poke", "plane-split", "rayon", - "ron", + "ron 0.10.1", "serde", "smallvec", "svg_fmt", @@ -7457,7 +7464,7 @@ dependencies = [ "once_cell", "parking_lot", "profiling", - "ron", + "ron 0.9.999", "rustc-hash 1.999.999", "serde", "smallvec", diff --git a/Cargo.toml b/Cargo.toml index d92dd0187ea7..332071b951fb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -213,6 +213,9 @@ half = { path = "build/rust/half" } # Upgrade `rusqlite` 0.31 to 0.33. rusqlite = { path = "build/rust/rusqlite" } +# Patch `ron` 0.9.* to 0.10. +ron = { path = "build/rust/ron" } + # Overrides to allow easier use of common internal crates. moz_asserts = { path = "mozglue/static/rust/moz_asserts" } diff --git a/build/rust/ron/Cargo.toml b/build/rust/ron/Cargo.toml new file mode 100644 index 000000000000..e1ba760c764b --- /dev/null +++ b/build/rust/ron/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "ron" +version = "0.9.999" +edition = "2018" +license = "MIT OR Apache-2.0" + +[lib] +path = "lib.rs" + +[dependencies.ron] +version = "0.10.0" +default-features = false + +[features] +default = ["ron/default"] +indexmap = ["ron/indexmap"] +integer128 = ["ron/integer128"] diff --git a/build/rust/ron/lib.rs b/build/rust/ron/lib.rs new file mode 100644 index 000000000000..2ad8b45f3c7b --- /dev/null +++ b/build/rust/ron/lib.rs @@ -0,0 +1,5 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +pub use ron::*; diff --git a/gfx/wr/Cargo.lock b/gfx/wr/Cargo.lock index 37a89488c33a..5a6906fe77c7 100644 --- a/gfx/wr/Cargo.lock +++ b/gfx/wr/Cargo.lock @@ -2333,9 +2333,9 @@ dependencies = [ [[package]] name = "ron" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63f3aa105dea217ef30d89581b65a4d527a19afc95ef5750be3890e8d3c5b837" +checksum = "beceb6f7bf81c73e73aeef6dd1356d9a1b2b4909e1f0fc3e59b034f9572d7b7f" dependencies = [ "base64", "bitflags 2.4.2", diff --git a/gfx/wr/webrender/Cargo.toml b/gfx/wr/webrender/Cargo.toml index 07f65d9752c3..69eb3b06ef7d 100644 --- a/gfx/wr/webrender/Cargo.toml +++ b/gfx/wr/webrender/Cargo.toml @@ -40,7 +40,7 @@ num-traits = "0.2" plane-split = "0.18" png = { optional = true, version = "0.16" } rayon = "1" -ron = { optional = true, version = "0.9.0" } +ron = { optional = true, version = "0.10.0" } serde = { optional = true, version = "1.0", features = ["serde_derive"] } smallvec = "1" time = "0.1" diff --git a/supply-chain/audits.toml b/supply-chain/audits.toml index 6f007ea441d2..bcd27f942c71 100644 --- a/supply-chain/audits.toml +++ b/supply-chain/audits.toml @@ -4533,6 +4533,11 @@ who = "Erich Gubler " criteria = "safe-to-deploy" delta = "0.8.1 -> 0.9.0" +[[audits.ron]] +who = "Erich Gubler " +criteria = "safe-to-deploy" +delta = "0.9.0 -> 0.10.1" + [[audits.rure]] who = "Nika Layzell " criteria = "safe-to-deploy" diff --git a/third_party/rust/ron/.cargo-checksum.json b/third_party/rust/ron/.cargo-checksum.json index 8fa2d029a20c..64304e0b534c 100644 --- a/third_party/rust/ron/.cargo-checksum.json +++ b/third_party/rust/ron/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"CHANGELOG.md":"69a39656a3c8c30ffd5a2e9193493a3631e1d414ca242b46dc6888434d735716","Cargo.lock":"2aac2bf17f890b208b2774ddae9be249c49cdc843131c50b0287e7491c21a2b9","Cargo.toml":"e2b6993ef291ea4aa4330841dfb67bb91362a3ae71236652a92c3d60d0644b79","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"fa0598d520497731445a5bc89a2b3d47896d95568bd2be255b7bc43d771b9994","README.md":"91b5bc0315a5f19e39313a048fb89aa1a5eda716fb6123f887731cc085b712d5","clippy.toml":"873fc9b7842395d9c61c2265ea4ad391c1de35bb25fd94347f72b4c7fc528329","docs/extensions.md":"b01d8c32d6adf1ece115957bc63400873aad6106a0f5b80e107e57bada605e5b","docs/grammar.md":"3c1f8423e197d234782724f5bf2cde5d6ed03e77ce63ddda7241717846739f81","examples/base64.rs":"a157559fe9932a834c0c42b726fa483ca648a7ceaf762639746410e84d019901","examples/decode.rs":"b8e2db901f0a25070daa0294794da7c95f9a7d61934e9b5b1cbcb131ca70a7d7","examples/decode_file.rs":"92920fc94e22c2aa83f6864e68e16932425655139d21ed3bdca4e5b4e86428e1","examples/encode.rs":"cfded2357414e2ea68580bf8f2333a62c1ae9d9fa70775c56a23dfe158e297be","examples/example.ron":"aebd2baff31a62c3aed1ba568b7a7c1165b197d526a1e2c9eb7adb211de8292e","examples/transcode.rs":"7a1e281684243b263d28f90f2836d6098239ae8ab2a0cb9d97ee0b7521ba960e","rustfmt.toml":"10f292ebd4c21ef67c36b6edb79eed7fada8f021c527948dfbeb3a54a5591e59","src/de/id.rs":"ed5be2ef39ad3490dcdebf99bd692299a20dbc66f2a2b67b0db1eb6dab5fd68b","src/de/mod.rs":"08cd27fd8d3f9f755ff3f1031f8a22dcdab6a2a5baefadd63991d3b98af2b458","src/de/tag.rs":"aeabf1a8378f2f4f8dc51861f0a92eb3f7eaefe3ce7924317fb923654a109153","src/de/tests.rs":"5af19a3ff8dc2d29f6d8d8f6953227454f47a9c6497f360b60d9f40d5b2e44c2","src/de/value.rs":"8de9194406494579988b27359d31aad7896903379c975787f20ec08064833d7e","src/error.rs":"4f244e7a14c89c5977814cea1c05946c88b2db1f0036e4e0d6ead97def0cd3df","src/extensions.rs":"e37b7658ab1fb7adbb09e5c6be4a44f28ee2dae6bc90f3adb66ee68283b768ef","src/lib.rs":"2a30dadcdb6a1f53e539c0f6bc7fea405df8317f7eee5431fcae5330c55c670d","src/options.rs":"22eed959d26dd6a101a998c423234dd2d62e746ef1e156f741bbd1126fd5ca27","src/parse.rs":"a6e8944c74ef17d963c795e614d32014d1eda098965a599e1b4539312c522fb0","src/ser/mod.rs":"cd7eeff262566d36179faca7d4b2351aabc49553f7c953ea79d94241cbe68164","src/ser/path_meta.rs":"fb74b63bdb8ed570f071670e4ca68886ae1c25611a0cd68fdc540d652680b08c","src/ser/raw.rs":"ae5369904a4db31a36eb966204d96592fde92ab2dfb18165f010a9cf13b8b0dd","src/ser/tests.rs":"61aa2d6d18be8040b305e4962d0c80e5b402101f23204139f8e4a76e958c6c4d","src/ser/value.rs":"476f186322ba027219b0d01b5a1bcdaa33ccbeeb24ab062a477e6128816a6177","src/value/map.rs":"09de618c465e4291b59162ba61b1dc0f689f87910ba86b46fdc362396616c954","src/value/mod.rs":"c1fccd91db3024038d0e37f2925cbc2a831a5714bce8706290c4b6151253b1c8","src/value/number.rs":"2cde441d57ac43f21b12e3e8465830b0d01429e9727cb6a8af750cc8a7b9dae3","src/value/raw.rs":"22127a25e79750c0108f6b801665d5dc731683ad6538154b04ed9e2e5518c090","tests/115_minimal_flattening.rs":"3bc62fa93ddc6abf5ea504090cdf09b6fd65e1e2bff27c42454054c732f732f5","tests/117_untagged_tuple_variant.rs":"dc69fb057595cc72b379994e76217315761484a455c7ba45aceb445af9c36403","tests/123_enum_representation.rs":"c296885ed5dcd3a7b5230d639aa7632c1c6291460e73dd394b0cd9e69219de31","tests/129_indexmap.rs":"a55ed888407dce347035893afa6a5e60d3e2f92672287c93cf5e21bb19218a40","tests/147_empty_sets_serialisation.rs":"102daa5648f4aaa461d3dc79a9124ff57c92d6c361c2aa20a3f966a0c0908823","tests/152_bitflags.rs":"e93d135e4da6c591f697be7d3b4c116d9151ab52111fe39fda94926f384ad563","tests/203_error_positions.rs":"9c5654a7dbde482040dc11521dd7db0f71dc42e5782d1df9908911c42ce4ff7e","tests/207_adjacently_tagged_enum.rs":"f2ebdf4268eeb6be95fd249c10930e4ea8f4fd4e3452d1ae8799334db2a3b96e","tests/217_nested_untagged_enums.rs":"91f7f0d344b256c707091a8985a1a15e799796ed757901077e3fe5a230c4ecae","tests/238_array.rs":"b0cae4bbe6303da34a58f8c28484856eebccc1728e21847cc2651a30dfd7346d","tests/240_array_pretty.rs":"7cedc29d8bdd9bf40941f3e28a8f1200e72c5211d5e52376e5d5be9076286e36","tests/250_variant_newtypes.rs":"be8eb265ead0386319f17d9340c6897f6ee7945177e541874e60d00d63a9a9a1","tests/254_typetag.rs":"e20c1464eaf2db561444c27fbdf4d73bc6e312e0c57915b7611b06f74a0dc654","tests/256_comma_error.rs":"dd9dc3440c779b45cbcc9cdc39937d1b7045530cdea7255025aaf5a1f1fe023d","tests/289_enumerate_arrays.rs":"0e1e9bd624b756714c6d79b79c388972c4b443c331d08098d585a85cba519bb5","tests/301_struct_name_mismatch.rs":"b980a004edadc4829479e96f897290de25c34c4efb364e5a7d8bd695fdfb78c0","tests/307_stack_overflow.rs":"b8affab09acdb6594242e7142e2fc9f6cd0f3bf36337129dc42b11f8d72060f5","tests/321_unicode_ident.rs":"b32560400d21a633734b366c743a13d972afc12c1d73552485f93a397d8b349a","tests/322_escape_idents.rs":"4f8912aeb24655a378049919ffc8b270519849abcb34ef9d7c34af5be1ec72f3","tests/337_value_float_roundtrip.rs":"e1d2b0ab6ded31fae940b1a937166c385711e68c1f9c716aead7abbeaf17ea01","tests/357_untagged_enum_roundtrip.rs":"193e1804f79bb20b93a9a80203fa64952d811bda6676d808947ac33ec27c2a90","tests/359_deserialize_seed.rs":"be8d0ce834f68496cc90d05b2a0688c105c51883318e3eb362ce7c646d4dc5fe","tests/367_implicit_some.rs":"0c4ebdb13872079954b83ea1a89e0d1fb4714b406fd9dcac976754534e9e36d5","tests/370_float_parsing.rs":"ddb7c92cf6ec9cc5048c97d6199ecc6e32bb68daa5521f381cfad1b841eac106","tests/393_serde_errors.rs":"0f9471ea1f5117df6916d0100f3cdb1073c7e9e0ba2da28caa7dfe7e1c63ab13","tests/401_raw_identifier.rs":"7512950a2db5c527525c145c746297375780e5e6da7db900b1caf58b595e093f","tests/407_raw_value.rs":"7b3107498cb384ad9a8cf7803c521933e4571dc297fe2c78118f8280f69bb4f3","tests/410_trailing_comma.rs":"c8755b2805f26f0d9b748f4277a8d8eea85227af06788ae533cf7b96a8b9e724","tests/423_de_borrowed_identifier.rs":"b3adbdf97d7082d7fea2b2649bb6d50e3e7b320049671dad6d803c003a15586f","tests/425_escape_strings.rs":"d30a63591d5f517b33ac3aaac927a10e1f22d673083497847d0d08b243d2e6b5","tests/436_untagged_bytes.rs":"88fe49032243fd62b5b004c62b369cef25f0d38c4fc2679899f6f0a70b5ff303","tests/438_rusty_byte_strings.rs":"13833d174938d249c2e999eb4e1503d7744ca1504dfa397091127d25e87ab724","tests/447_compact_maps_structs.rs":"cff3aa89e123e8c8098e49e4b1c4f2725f94c8eb1d2ed2abd7cff46695e1df29","tests/449_tagged_enum.rs":"bf21e40e14ea1d39460396af510ca8a1378d7bee489e369fb3dcc3f2fc96f617","tests/462_bytes.rs":"b58b44538525a560c19bb84d64236b9fc61e6a09c117e5c4581f8fe39a8251a3","tests/465_implicit_some_stack.rs":"05621c22436766e7f38d675137aedeb94efbb2c15a761952701cd1a8fe6fb120","tests/465_no_comment_char_value.rs":"bf1b7aae4b4c5e982511e13cddc1fd2eca9c52173d747ce8f829c3e9d99ba55e","tests/465_r_name_value.rs":"17e87a47b5a22d0f068698d557bd46e5d64c3083b1906c8a0fede56529a06d19","tests/465_ser_backslash_string.rs":"871629c618ce378ae0ce27c49c44fd3b95add29b01fde02eb452fa11fc35a575","tests/465_unwrap_some_newtype_variant_value.rs":"6a8ffe1939894d7dedfeafbf73cfe19ca1c665beb892deaadd25bfe1fabb923c","tests/465_validate_ser_identifiers.rs":"84d407d71666312538a6ccd3b350ad025e6199a65c48364705dfd5a2ad16930a","tests/481_number_underscores_suffixes.rs":"16ebad0c50f88c8750bd770d405b88ea00914f210230f4aaeca2a873207084b8","tests/492_enum_in_untagged_enum.rs":"ecf9a5e190317ecdc5f4688b82de0266a6d15712f5d8f19599dff35efa3d4b15","tests/502_known_bugs.rs":"34d2d723c2eeecad0316a17056d7d48d7c4e48660065697f90110301bbcda945","tests/508_value_adjacently_tagged_bug.rs":"3460ecf769a04e73f8adcc97f6548657c337466c23cb69a111f892e10667a582","tests/511_deserialize_any_map_string_key.rs":"45cf9624ce56eb64616c951291a322abfdc65f41ced7105cc74b754a386ad35b","tests/522_explicit_struct_names.rs":"c1405f6e31157d042e7cb4ea61c15127bc15b5c785b3ca7121b0ec1f8ef6e24c","tests/526_flatten.rs":"96ad9a3934a83266b662c06cb6b71425999d8ff9751bed9250dd8a10def2f3b7","tests/530_untagged_union.rs":"13623c4dc2deb98bc05537daa0a557568314e98bba86c4059d60b0fc2db10354","tests/544_path_meta.rs":"3ad38d27ac802e2edc2268093503940a0ecb40d54d96cc91d49376b0e1807832","tests/big_struct.rs":"9c7b41233ae7d0c4fec0727aabd4cea1cd95844c85c0beb5e688b3c79eb43c14","tests/borrowed_str.rs":"24390ee6076ce3896b7cf1b2e202cb3a705c61129a4f62f6c39a2412ca68405f","tests/comments.rs":"251f623fb151b24d874c7c08118b22d4579fcfc8831c0c1c97ab11b8f0edeeb7","tests/depth_limit.rs":"817c0a61576c3133a66bb8c705675a125290f0ccfb92dba8a8aa46a141ad30ce","tests/escape.rs":"4ad32604687f67c64cf7f4757fdded9e1131fb4c65bd5daa8079b1b1c60db7b7","tests/extensions.rs":"4058b5da64c3f9591026790e044d19cf30c744a30cd3e9af79acd70f76ec0d40","tests/floats.rs":"367a22cca7d3a3ce6bdffc30df8712aae348ad29a1adbe9a47bc98e0a51b614d","tests/large_number.rs":"1f823b826e086f35329849d5bd9aac87266933a07988ef380348b406dea32835","tests/min_max.rs":"4529513a4cf1e5c25f7697ba258fdbae258617cf8f3374080843aef048c2bde3","tests/non_identifier_identifier.rs":"b00d2a4994242212f2e3f2c847da3a3634b950060d88b74a7004d704e847f2df","tests/non_string_tag.rs":"4ea293cb6110b3776a103000a50a7276f50acc5aa15aa65f651a2e27a441dbba","tests/numbers.rs":"d28656afd5123df5cec3b8fe01cda8f14b6b3065900b7adbf352776a164dd29b","tests/options.rs":"15d0ebd3ac481aa18b56bc40ef5e28a5e36577f7054632bb26334b0167f2872f","tests/preserve_sequence.rs":"cda4aa098e579cf68837101b8e6b12f5b26e11272cc17d260fa232379c5008bf","tests/preserve_sequence_ex1.ron":"47bdf8da637b6e99701b5a4b8c100b4c9d45440c357aef8d368a406a05394ea9","tests/preserve_sequence_ex2.ron":"9ba759300324f8978469ce616f20eb0cfc134f0a8a1afff884fff5315b32e0d0","tests/roundtrip.rs":"4af0accc1129850537f2e04fcf9c9c1d4ecf25fdd05e79179de8fb7f8596a910","tests/struct_integers.rs":"005ff6238fdd953b822fa0ad87c013370da646bd63f880a476a2d9bbe3da7b57","tests/to_string_pretty.rs":"96b3aaba638f90b66a16693714139ef57ecd8daefd8f87b771ae2bf37b15e985","tests/unicode.rs":"7bb3d2e06d7656fabd1f8940a5abd92af6ffa8652b2f2fa7b0f2b86ce009a3c6","tests/value.rs":"22c53deb9c7b64f6d34fd345dcf5fadcca7e2508714a696b967d42d464fe671b"},"package":"63f3aa105dea217ef30d89581b65a4d527a19afc95ef5750be3890e8d3c5b837"} \ No newline at end of file +{"files":{"CHANGELOG.md":"6dc6d2c276227e8c74bdde75e04e543f42e2a4df39b33f3ac6bdd42de1f53db4","Cargo.lock":"b42af02e62bef286f6c9bd5054b3f6bf04434962560967a0702c88652abc29f9","Cargo.toml":"a9b4b90a20f5bbfd04a0798ebd8d4756bd7221ce4391d0a38692cc56f2e0c9aa","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"fa0598d520497731445a5bc89a2b3d47896d95568bd2be255b7bc43d771b9994","README.md":"70649b85004fc155375a09cfa425646eb861891b36c09729b0aefdb7b1180b06","clippy.toml":"873fc9b7842395d9c61c2265ea4ad391c1de35bb25fd94347f72b4c7fc528329","docs/extensions.md":"b01d8c32d6adf1ece115957bc63400873aad6106a0f5b80e107e57bada605e5b","docs/grammar.md":"3c1f8423e197d234782724f5bf2cde5d6ed03e77ce63ddda7241717846739f81","examples/base64.rs":"a157559fe9932a834c0c42b726fa483ca648a7ceaf762639746410e84d019901","examples/decode.rs":"b8e2db901f0a25070daa0294794da7c95f9a7d61934e9b5b1cbcb131ca70a7d7","examples/decode_file.rs":"92920fc94e22c2aa83f6864e68e16932425655139d21ed3bdca4e5b4e86428e1","examples/encode.rs":"cfded2357414e2ea68580bf8f2333a62c1ae9d9fa70775c56a23dfe158e297be","examples/encode_file.rs":"b055eed27e7f9d8903bbd43e9d559c97578534cf3888635768aac587743c8508","examples/example.ron":"aebd2baff31a62c3aed1ba568b7a7c1165b197d526a1e2c9eb7adb211de8292e","examples/transcode.rs":"7a1e281684243b263d28f90f2836d6098239ae8ab2a0cb9d97ee0b7521ba960e","rustfmt.toml":"10f292ebd4c21ef67c36b6edb79eed7fada8f021c527948dfbeb3a54a5591e59","src/de/id.rs":"ed5be2ef39ad3490dcdebf99bd692299a20dbc66f2a2b67b0db1eb6dab5fd68b","src/de/mod.rs":"08cd27fd8d3f9f755ff3f1031f8a22dcdab6a2a5baefadd63991d3b98af2b458","src/de/tag.rs":"aeabf1a8378f2f4f8dc51861f0a92eb3f7eaefe3ce7924317fb923654a109153","src/de/tests.rs":"5af19a3ff8dc2d29f6d8d8f6953227454f47a9c6497f360b60d9f40d5b2e44c2","src/de/value.rs":"8de9194406494579988b27359d31aad7896903379c975787f20ec08064833d7e","src/error.rs":"4f244e7a14c89c5977814cea1c05946c88b2db1f0036e4e0d6ead97def0cd3df","src/extensions.rs":"e37b7658ab1fb7adbb09e5c6be4a44f28ee2dae6bc90f3adb66ee68283b768ef","src/lib.rs":"4938899ae50859914ba933bc3bce5778654b427d27a77da65009b85ff0d14f9b","src/options.rs":"041c172cab30d09b4a7b5f8737c5c12c32bb44131cf5963b4c9cdef3ddc8679f","src/parse.rs":"a6e8944c74ef17d963c795e614d32014d1eda098965a599e1b4539312c522fb0","src/ser/mod.rs":"cd7eeff262566d36179faca7d4b2351aabc49553f7c953ea79d94241cbe68164","src/ser/path_meta.rs":"fb74b63bdb8ed570f071670e4ca68886ae1c25611a0cd68fdc540d652680b08c","src/ser/raw.rs":"ae5369904a4db31a36eb966204d96592fde92ab2dfb18165f010a9cf13b8b0dd","src/ser/tests.rs":"61aa2d6d18be8040b305e4962d0c80e5b402101f23204139f8e4a76e958c6c4d","src/ser/value.rs":"476f186322ba027219b0d01b5a1bcdaa33ccbeeb24ab062a477e6128816a6177","src/value/map.rs":"09de618c465e4291b59162ba61b1dc0f689f87910ba86b46fdc362396616c954","src/value/mod.rs":"c1fccd91db3024038d0e37f2925cbc2a831a5714bce8706290c4b6151253b1c8","src/value/number.rs":"3bcba7b23ab9f8b4e1cc172e9543af99cd645c67894389f660279264e043f803","src/value/raw.rs":"22127a25e79750c0108f6b801665d5dc731683ad6538154b04ed9e2e5518c090","tests/115_minimal_flattening.rs":"3bc62fa93ddc6abf5ea504090cdf09b6fd65e1e2bff27c42454054c732f732f5","tests/117_untagged_tuple_variant.rs":"dc69fb057595cc72b379994e76217315761484a455c7ba45aceb445af9c36403","tests/123_enum_representation.rs":"c296885ed5dcd3a7b5230d639aa7632c1c6291460e73dd394b0cd9e69219de31","tests/129_indexmap.rs":"a55ed888407dce347035893afa6a5e60d3e2f92672287c93cf5e21bb19218a40","tests/147_empty_sets_serialisation.rs":"102daa5648f4aaa461d3dc79a9124ff57c92d6c361c2aa20a3f966a0c0908823","tests/152_bitflags.rs":"e93d135e4da6c591f697be7d3b4c116d9151ab52111fe39fda94926f384ad563","tests/203_error_positions.rs":"9c5654a7dbde482040dc11521dd7db0f71dc42e5782d1df9908911c42ce4ff7e","tests/207_adjacently_tagged_enum.rs":"f2ebdf4268eeb6be95fd249c10930e4ea8f4fd4e3452d1ae8799334db2a3b96e","tests/217_nested_untagged_enums.rs":"91f7f0d344b256c707091a8985a1a15e799796ed757901077e3fe5a230c4ecae","tests/238_array.rs":"b0cae4bbe6303da34a58f8c28484856eebccc1728e21847cc2651a30dfd7346d","tests/240_array_pretty.rs":"7cedc29d8bdd9bf40941f3e28a8f1200e72c5211d5e52376e5d5be9076286e36","tests/250_variant_newtypes.rs":"be8eb265ead0386319f17d9340c6897f6ee7945177e541874e60d00d63a9a9a1","tests/254_typetag.rs":"e20c1464eaf2db561444c27fbdf4d73bc6e312e0c57915b7611b06f74a0dc654","tests/256_comma_error.rs":"dd9dc3440c779b45cbcc9cdc39937d1b7045530cdea7255025aaf5a1f1fe023d","tests/289_enumerate_arrays.rs":"0e1e9bd624b756714c6d79b79c388972c4b443c331d08098d585a85cba519bb5","tests/301_struct_name_mismatch.rs":"b980a004edadc4829479e96f897290de25c34c4efb364e5a7d8bd695fdfb78c0","tests/307_stack_overflow.rs":"b8affab09acdb6594242e7142e2fc9f6cd0f3bf36337129dc42b11f8d72060f5","tests/321_unicode_ident.rs":"b32560400d21a633734b366c743a13d972afc12c1d73552485f93a397d8b349a","tests/322_escape_idents.rs":"4f8912aeb24655a378049919ffc8b270519849abcb34ef9d7c34af5be1ec72f3","tests/337_value_float_roundtrip.rs":"e1d2b0ab6ded31fae940b1a937166c385711e68c1f9c716aead7abbeaf17ea01","tests/357_untagged_enum_roundtrip.rs":"193e1804f79bb20b93a9a80203fa64952d811bda6676d808947ac33ec27c2a90","tests/359_deserialize_seed.rs":"be8d0ce834f68496cc90d05b2a0688c105c51883318e3eb362ce7c646d4dc5fe","tests/367_implicit_some.rs":"0c4ebdb13872079954b83ea1a89e0d1fb4714b406fd9dcac976754534e9e36d5","tests/370_float_parsing.rs":"ddb7c92cf6ec9cc5048c97d6199ecc6e32bb68daa5521f381cfad1b841eac106","tests/393_serde_errors.rs":"0f9471ea1f5117df6916d0100f3cdb1073c7e9e0ba2da28caa7dfe7e1c63ab13","tests/401_raw_identifier.rs":"7512950a2db5c527525c145c746297375780e5e6da7db900b1caf58b595e093f","tests/407_raw_value.rs":"7b3107498cb384ad9a8cf7803c521933e4571dc297fe2c78118f8280f69bb4f3","tests/410_trailing_comma.rs":"c8755b2805f26f0d9b748f4277a8d8eea85227af06788ae533cf7b96a8b9e724","tests/423_de_borrowed_identifier.rs":"b3adbdf97d7082d7fea2b2649bb6d50e3e7b320049671dad6d803c003a15586f","tests/425_escape_strings.rs":"d30a63591d5f517b33ac3aaac927a10e1f22d673083497847d0d08b243d2e6b5","tests/436_untagged_bytes.rs":"88fe49032243fd62b5b004c62b369cef25f0d38c4fc2679899f6f0a70b5ff303","tests/438_rusty_byte_strings.rs":"13833d174938d249c2e999eb4e1503d7744ca1504dfa397091127d25e87ab724","tests/447_compact_maps_structs.rs":"cff3aa89e123e8c8098e49e4b1c4f2725f94c8eb1d2ed2abd7cff46695e1df29","tests/449_tagged_enum.rs":"bf21e40e14ea1d39460396af510ca8a1378d7bee489e369fb3dcc3f2fc96f617","tests/462_bytes.rs":"b58b44538525a560c19bb84d64236b9fc61e6a09c117e5c4581f8fe39a8251a3","tests/465_implicit_some_stack.rs":"05621c22436766e7f38d675137aedeb94efbb2c15a761952701cd1a8fe6fb120","tests/465_no_comment_char_value.rs":"bf1b7aae4b4c5e982511e13cddc1fd2eca9c52173d747ce8f829c3e9d99ba55e","tests/465_r_name_value.rs":"17e87a47b5a22d0f068698d557bd46e5d64c3083b1906c8a0fede56529a06d19","tests/465_ser_backslash_string.rs":"871629c618ce378ae0ce27c49c44fd3b95add29b01fde02eb452fa11fc35a575","tests/465_unwrap_some_newtype_variant_value.rs":"6a8ffe1939894d7dedfeafbf73cfe19ca1c665beb892deaadd25bfe1fabb923c","tests/465_validate_ser_identifiers.rs":"84d407d71666312538a6ccd3b350ad025e6199a65c48364705dfd5a2ad16930a","tests/481_number_underscores_suffixes.rs":"16ebad0c50f88c8750bd770d405b88ea00914f210230f4aaeca2a873207084b8","tests/492_enum_in_untagged_enum.rs":"ecf9a5e190317ecdc5f4688b82de0266a6d15712f5d8f19599dff35efa3d4b15","tests/502_known_bugs.rs":"34d2d723c2eeecad0316a17056d7d48d7c4e48660065697f90110301bbcda945","tests/508_value_adjacently_tagged_bug.rs":"3460ecf769a04e73f8adcc97f6548657c337466c23cb69a111f892e10667a582","tests/511_deserialize_any_map_string_key.rs":"45cf9624ce56eb64616c951291a322abfdc65f41ced7105cc74b754a386ad35b","tests/522_explicit_struct_names.rs":"c1405f6e31157d042e7cb4ea61c15127bc15b5c785b3ca7121b0ec1f8ef6e24c","tests/526_flatten.rs":"96ad9a3934a83266b662c06cb6b71425999d8ff9751bed9250dd8a10def2f3b7","tests/530_untagged_union.rs":"13623c4dc2deb98bc05537daa0a557568314e98bba86c4059d60b0fc2db10354","tests/544_path_meta.rs":"3ad38d27ac802e2edc2268093503940a0ecb40d54d96cc91d49376b0e1807832","tests/big_struct.rs":"9c7b41233ae7d0c4fec0727aabd4cea1cd95844c85c0beb5e688b3c79eb43c14","tests/borrowed_str.rs":"24390ee6076ce3896b7cf1b2e202cb3a705c61129a4f62f6c39a2412ca68405f","tests/comments.rs":"251f623fb151b24d874c7c08118b22d4579fcfc8831c0c1c97ab11b8f0edeeb7","tests/depth_limit.rs":"817c0a61576c3133a66bb8c705675a125290f0ccfb92dba8a8aa46a141ad30ce","tests/escape.rs":"4ad32604687f67c64cf7f4757fdded9e1131fb4c65bd5daa8079b1b1c60db7b7","tests/extensions.rs":"4058b5da64c3f9591026790e044d19cf30c744a30cd3e9af79acd70f76ec0d40","tests/floats.rs":"367a22cca7d3a3ce6bdffc30df8712aae348ad29a1adbe9a47bc98e0a51b614d","tests/large_number.rs":"1f823b826e086f35329849d5bd9aac87266933a07988ef380348b406dea32835","tests/min_max.rs":"4529513a4cf1e5c25f7697ba258fdbae258617cf8f3374080843aef048c2bde3","tests/non_identifier_identifier.rs":"b00d2a4994242212f2e3f2c847da3a3634b950060d88b74a7004d704e847f2df","tests/non_string_tag.rs":"4ea293cb6110b3776a103000a50a7276f50acc5aa15aa65f651a2e27a441dbba","tests/numbers.rs":"d28656afd5123df5cec3b8fe01cda8f14b6b3065900b7adbf352776a164dd29b","tests/options.rs":"15d0ebd3ac481aa18b56bc40ef5e28a5e36577f7054632bb26334b0167f2872f","tests/preserve_sequence.rs":"cda4aa098e579cf68837101b8e6b12f5b26e11272cc17d260fa232379c5008bf","tests/preserve_sequence_ex1.ron":"47bdf8da637b6e99701b5a4b8c100b4c9d45440c357aef8d368a406a05394ea9","tests/preserve_sequence_ex2.ron":"9ba759300324f8978469ce616f20eb0cfc134f0a8a1afff884fff5315b32e0d0","tests/roundtrip.rs":"4af0accc1129850537f2e04fcf9c9c1d4ecf25fdd05e79179de8fb7f8596a910","tests/struct_integers.rs":"005ff6238fdd953b822fa0ad87c013370da646bd63f880a476a2d9bbe3da7b57","tests/to_string_pretty.rs":"96b3aaba638f90b66a16693714139ef57ecd8daefd8f87b771ae2bf37b15e985","tests/unicode.rs":"7bb3d2e06d7656fabd1f8940a5abd92af6ffa8652b2f2fa7b0f2b86ce009a3c6","tests/value.rs":"22c53deb9c7b64f6d34fd345dcf5fadcca7e2508714a696b967d42d464fe671b"},"package":"beceb6f7bf81c73e73aeef6dd1356d9a1b2b4909e1f0fc3e59b034f9572d7b7f"} \ No newline at end of file diff --git a/third_party/rust/ron/CHANGELOG.md b/third_party/rust/ron/CHANGELOG.md index a50ad8f3bc15..85a5e907f587 100644 --- a/third_party/rust/ron/CHANGELOG.md +++ b/third_party/rust/ron/CHANGELOG.md @@ -6,6 +6,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +## [0.10.1] - 2025-04-08 + +### API Changes + +- Add `ron::Options::to_io_writer` and `ron::Options::to_io_writer_pretty` to allow writing into an `io::Writer` ([#561](https://github.com/ron-rs/ron/pull/561)) +- Breaking: `ron::value::Number` is now non-exhaustive, to avoid breaking `match`es when feature unification enables more of its variants than expected ([#564](https://github.com/ron-rs/ron/pull/564)) + ## [0.9.0] - 2025-03-18 ### API Changes diff --git a/third_party/rust/ron/Cargo.lock b/third_party/rust/ron/Cargo.lock index 38b8436af83f..475db444ad2e 100644 --- a/third_party/rust/ron/Cargo.lock +++ b/third_party/rust/ron/Cargo.lock @@ -56,9 +56,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "indexmap" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3954d50fe15b02142bf25d3b8bdadb634ec3948f103d04ffe3031bc8fe9d7058" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", "hashbrown", @@ -88,9 +88,9 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "once_cell" -version = "1.21.1" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "option_set" @@ -122,7 +122,7 @@ dependencies = [ [[package]] name = "ron" -version = "0.9.0" +version = "0.10.1" dependencies = [ "base64", "bitflags", diff --git a/third_party/rust/ron/Cargo.toml b/third_party/rust/ron/Cargo.toml index 9060d4478d64..b301b2288966 100644 --- a/third_party/rust/ron/Cargo.toml +++ b/third_party/rust/ron/Cargo.toml @@ -13,7 +13,7 @@ edition = "2021" rust-version = "1.64.0" name = "ron" -version = "0.9.0" +version = "0.10.1" authors = [ "Christopher Durham ", "Dzmitry Malyshau ", @@ -70,6 +70,10 @@ path = "examples/decode_file.rs" name = "encode" path = "examples/encode.rs" +[[example]] +name = "encode_file" +path = "examples/encode_file.rs" + [[example]] name = "transcode" path = "examples/transcode.rs" diff --git a/third_party/rust/ron/README.md b/third_party/rust/ron/README.md index 9646e8cdf454..17031273ef3d 100644 --- a/third_party/rust/ron/README.md +++ b/third_party/rust/ron/README.md @@ -176,6 +176,8 @@ fn main() { ## Limitations +RON requires struct, enum, and variant names to be valid Rust identifiers and will reject invalid ones created by `#[serde(rename = "...")]` at serialization / deserialization time. + RON is not designed to be a fully self-describing format (unlike JSON) and is thus not guaranteed to work when [`deserialize_any`](https://docs.rs/serde/latest/serde/trait.Deserializer.html#tymethod.deserialize_any) is used instead of its typed alternatives. In particular, the following Serde attributes only have limited support: - `#[serde(tag = "tag")]`, i.e. internally tagged enums [^serde-enum-hack] diff --git a/third_party/rust/ron/examples/encode_file.rs b/third_party/rust/ron/examples/encode_file.rs new file mode 100644 index 000000000000..570df676c5b2 --- /dev/null +++ b/third_party/rust/ron/examples/encode_file.rs @@ -0,0 +1,60 @@ +#![allow(dead_code)] + +use std::{collections::HashMap, fs::File}; + +use serde::Serialize; + +#[derive(Debug, Serialize)] +struct Config { + boolean: bool, + float: f32, + map: HashMap, + nested: Nested, + tuple: (u32, u32), + vec: Vec, +} + +#[derive(Debug, Serialize)] +struct Nested { + a: String, + b: char, +} + +fn main() { + let config = Config { + boolean: true, + float: 8.2, + map: [(1, '1'), (2, '4'), (3, '9'), (4, '1'), (5, '2'), (6, '3')] + .into_iter() + .collect(), + nested: Nested { + a: String::from("Decode me!"), + b: 'z', + }, + tuple: (3, 7), + vec: vec![ + Nested { + a: String::from("Nested 1"), + b: 'x', + }, + Nested { + a: String::from("Nested 2"), + b: 'y', + }, + Nested { + a: String::from("Nested 3"), + b: 'z', + }, + ], + }; + + let f = File::options() + .create(true) + .write(true) + .open("example-out.ron") + .expect("Failed opening file"); + + ron::Options::default() + .to_io_writer_pretty(f, &config, ron::ser::PrettyConfig::new()) + .expect("Failed to write to file"); +} diff --git a/third_party/rust/ron/src/lib.rs b/third_party/rust/ron/src/lib.rs index cb50da52afc0..58c72d1afacf 100644 --- a/third_party/rust/ron/src/lib.rs +++ b/third_party/rust/ron/src/lib.rs @@ -13,7 +13,7 @@ #![deny(unsafe_code)] #![allow(clippy::missing_errors_doc)] // FIXME #![doc = include_str!("../README.md")] -#![doc(html_root_url = "https://docs.rs/ron/0.9.0")] +#![doc(html_root_url = "https://docs.rs/ron/0.10.1")] pub mod de; pub mod ser; diff --git a/third_party/rust/ron/src/options.rs b/third_party/rust/ron/src/options.rs index c7bf4429ea63..05c875a3050b 100644 --- a/third_party/rust/ron/src/options.rs +++ b/third_party/rust/ron/src/options.rs @@ -211,6 +211,45 @@ impl Options { value.serialize(&mut s) } + /// Serializes `value` into `writer`. + /// + /// This function does not generate any newlines or nice formatting; + /// if you want that, you can use + /// [`to_io_writer_pretty`][Self::to_io_writer_pretty] instead. + pub fn to_io_writer(&self, writer: W, value: &T) -> Result<()> + where + W: io::Write, + T: ?Sized + ser::Serialize, + { + let mut adapter = Adapter { + writer, + error: Ok(()), + }; + let result = self.to_writer(&mut adapter, value); + adapter.error?; + result + } + + /// Serializes `value` into `writer` in a pretty way. + pub fn to_io_writer_pretty( + &self, + writer: W, + value: &T, + config: PrettyConfig, + ) -> Result<()> + where + W: io::Write, + T: ?Sized + ser::Serialize, + { + let mut adapter = Adapter { + writer, + error: Ok(()), + }; + let result = self.to_writer_pretty(&mut adapter, value, config); + adapter.error?; + result + } + /// Serializes `value` and returns it as string. /// /// This function does not generate any newlines or nice formatting; @@ -237,3 +276,21 @@ impl Options { Ok(output) } } + +// Adapter from io::Write to fmt::Write that keeps the error +struct Adapter { + writer: W, + error: io::Result<()>, +} + +impl fmt::Write for Adapter { + fn write_str(&mut self, s: &str) -> fmt::Result { + match self.writer.write_all(s.as_bytes()) { + Ok(()) => Ok(()), + Err(e) => { + self.error = Err(e); + Err(fmt::Error) + } + } + } +} diff --git a/third_party/rust/ron/src/value/number.rs b/third_party/rust/ron/src/value/number.rs index b38016b55285..3941eed23dfe 100644 --- a/third_party/rust/ron/src/value/number.rs +++ b/third_party/rust/ron/src/value/number.rs @@ -5,8 +5,34 @@ use std::{ use serde::{de::Visitor, Serialize, Serializer}; -/// A wrapper for any numeric primitive type in Rust +/// A wrapper for any numeric primitive type in Rust. +/// +/// Some varints of the `Number` enum are enabled by features: +/// - `Number::I128` and `Number::U128` by the `integer128` feature +/// +/// To ensure that feature unification does not break `match`ing over `Number`, +/// the `Number` enum is non-exhaustive. +/// +///
+/// Exhaustively matching on Number in tests +/// +/// If you want to ensure that you exhaustively handle every variant, you can +/// match on the hidden `Number::__NonExhaustive` variant. +/// +///
+/// Matching on this variant means that your code may break when RON is +/// upgraded or when feature unification enables further variants in the +/// Number enum than your code expects. +///
+/// +/// It is your responsibility to only *ever* match on `Number::__NonExhaustive` +/// inside tests, e.g. by using `#[cfg(test)]` on the particular match arm, to +/// ensure that only your tests break (e.g. in CI) when your code is not +/// exhaustively matching on every variant, e.g. after a version upgrade or +/// feature unification. +///
#[derive(Copy, Clone, Debug, PartialEq, PartialOrd, Eq, Hash, Ord)] +#[cfg_attr(doc, non_exhaustive)] pub enum Number { I8(i8), I16(i16), @@ -22,6 +48,14 @@ pub enum Number { U128(u128), F32(F32), F64(F64), + #[cfg(not(doc))] + #[allow(private_interfaces)] + __NonExhaustive(private::Never), +} + +mod private { + #[derive(Copy, Clone, Debug, PartialEq, PartialOrd, Eq, Hash, Ord)] + pub enum Never {} } impl Serialize for Number { @@ -41,6 +75,8 @@ impl Serialize for Number { Self::U128(v) => serializer.serialize_u128(*v), Self::F32(v) => serializer.serialize_f32(v.get()), Self::F64(v) => serializer.serialize_f64(v.get()), + #[cfg(not(doc))] + Self::__NonExhaustive(never) => match *never {}, } } } @@ -65,6 +101,8 @@ impl Number { Self::U128(v) => visitor.visit_u128(*v), Self::F32(v) => visitor.visit_f32(v.get()), Self::F64(v) => visitor.visit_f64(v.get()), + #[cfg(not(doc))] + Self::__NonExhaustive(never) => match *never {}, } } } @@ -216,6 +254,8 @@ impl Number { Number::U128(v) => v as f64, Number::F32(v) => f64::from(v.get()), Number::F64(v) => v.get(), + #[cfg(not(doc))] + Self::__NonExhaustive(never) => match never {}, } } }