Update CXX to v1.0.192

This commit is contained in:
Oliver Hamlet
2026-01-01 14:20:11 +00:00
parent bde0ff65e3
commit b9bde27938
9 changed files with 165 additions and 151 deletions
Generated
+23 -23
View File
@@ -99,9 +99,9 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6"
[[package]]
name = "codespan-reporting"
version = "0.12.0"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81"
checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681"
dependencies = [
"serde",
"termcolor",
@@ -195,23 +195,24 @@ checksum = "4f211af61d8efdd104f96e57adf5e426ba1bc3ed7a4ead616e15e5881fd79c4d"
[[package]]
name = "cxx"
version = "1.0.161"
version = "1.0.192"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3523cc02ad831111491dd64b27ad999f1ae189986728e477604e61b81f828df"
checksum = "bbda285ba6e5866529faf76352bdf73801d9b44a6308d7cd58ca2379f378e994"
dependencies = [
"cc",
"cxx-build",
"cxxbridge-cmd",
"cxxbridge-flags",
"cxxbridge-macro",
"foldhash",
"foldhash 0.2.0",
"link-cplusplus",
]
[[package]]
name = "cxx-build"
version = "1.0.161"
version = "1.0.192"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "212b754247a6f07b10fa626628c157593f0abf640a3dd04cce2760eca970f909"
checksum = "af9efde466c5d532d57efd92f861da3bdb7f61e369128ce8b4c3fe0c9de4fa4d"
dependencies = [
"cc",
"codespan-reporting",
@@ -224,9 +225,9 @@ dependencies = [
[[package]]
name = "cxxbridge-cmd"
version = "1.0.161"
version = "1.0.192"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f426a20413ec2e742520ba6837c9324b55ffac24ead47491a6e29f933c5b135a"
checksum = "3efb93799095bccd4f763ca07997dc39a69e5e61ab52d2c407d4988d21ce144d"
dependencies = [
"clap",
"codespan-reporting",
@@ -238,20 +239,19 @@ dependencies = [
[[package]]
name = "cxxbridge-flags"
version = "1.0.161"
version = "1.0.192"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a258b6069020b4e5da6415df94a50ee4f586a6c38b037a180e940a43d06a070d"
checksum = "3092010228026e143b32a4463ed9fa8f86dca266af4bf5f3b2a26e113dbe4e45"
[[package]]
name = "cxxbridge-macro"
version = "1.0.161"
version = "1.0.192"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8dec184b52be5008d6eaf7e62fc1802caf1ad1227d11b3b7df2c409c7ffc3f4"
checksum = "31d72ebfcd351ae404fb00ff378dfc9571827a00722c9e735c9181aec320ba0a"
dependencies = [
"indexmap",
"proc-macro2",
"quote",
"rustversion",
"syn",
]
@@ -372,6 +372,12 @@ version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
[[package]]
name = "foldhash"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
[[package]]
name = "getrandom"
version = "0.2.15"
@@ -409,7 +415,7 @@ checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
dependencies = [
"allocator-api2",
"equivalent",
"foldhash",
"foldhash 0.1.5",
]
[[package]]
@@ -553,9 +559,9 @@ dependencies = [
[[package]]
name = "link-cplusplus"
version = "1.0.10"
version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4a6f6da007f968f9def0d65a05b187e2960183de70c160204ecfccf0ee330212"
checksum = "7f78c730aaa7d0b9336a299029ea49f9ee53b0ed06e9202e8cb7db9bae7b8c82"
dependencies = [
"cc",
]
@@ -937,12 +943,6 @@ dependencies = [
"windows-sys",
]
[[package]]
name = "rustversion"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2"
[[package]]
name = "saphyr"
version = "0.0.6"
+14 -17
View File
@@ -164,7 +164,7 @@ loot::Vertex convert(const loot::rust::Vertex& vertex) {
std::string(file.GetName()),
file.GetDisplayName(),
file.GetCondition(),
::rust::Slice(convert<loot::rust::MessageContent>(file.GetDetail())),
convert<loot::rust::MessageContent>(file.GetDetail()),
file.GetConstraint());
} catch (const ::rust::Error& e) {
std::rethrow_exception(mapError(e));
@@ -194,8 +194,7 @@ loot::rust::MessageType convert(loot::MessageType messageType) {
try {
return loot::rust::multilingual_message(
convert(message.GetType()),
::rust::Slice(
convert<loot::rust::MessageContent>(message.GetContent())),
convert<loot::rust::MessageContent>(message.GetContent()),
message.GetCondition());
} catch (const ::rust::Error& e) {
std::rethrow_exception(mapError(e));
@@ -219,7 +218,7 @@ loot::rust::MessageType convert(loot::MessageType messageType) {
return loot::rust::new_plugin_cleaning_data(
data.GetCRC(),
data.GetCleaningUtility(),
::rust::Slice(convert<loot::rust::MessageContent>(data.GetDetail())),
convert<loot::rust::MessageContent>(data.GetDetail()),
data.GetITMCount(),
data.GetDeletedReferenceCount(),
data.GetDeletedNavmeshCount());
@@ -242,21 +241,19 @@ loot::rust::MessageType convert(loot::MessageType messageType) {
}
output->set_load_after_files(
::rust::Slice(convert<loot::rust::File>(metadata.GetLoadAfterFiles())));
convert<loot::rust::File>(metadata.GetLoadAfterFiles()));
output->set_requirements(
::rust::Slice(convert<loot::rust::File>(metadata.GetRequirements())));
output->set_incompatibilities(::rust::Slice(
convert<loot::rust::File>(metadata.GetIncompatibilities())));
output->set_messages(
::rust::Slice(convert<loot::rust::Message>(metadata.GetMessages())));
output->set_tags(
::rust::Slice(convert<loot::rust::Tag>(metadata.GetTags())));
output->set_dirty_info(::rust::Slice(
convert<loot::rust::PluginCleaningData>(metadata.GetDirtyInfo())));
output->set_clean_info(::rust::Slice(
convert<loot::rust::PluginCleaningData>(metadata.GetCleanInfo())));
convert<loot::rust::File>(metadata.GetRequirements()));
output->set_incompatibilities(
convert<loot::rust::File>(metadata.GetIncompatibilities()));
output->set_messages(convert<loot::rust::Message>(metadata.GetMessages()));
output->set_tags(convert<loot::rust::Tag>(metadata.GetTags()));
output->set_dirty_info(
convert<loot::rust::PluginCleaningData>(metadata.GetDirtyInfo()));
output->set_clean_info(
convert<loot::rust::PluginCleaningData>(metadata.GetCleanInfo()));
output->set_locations(
::rust::Slice(convert<loot::rust::Location>(metadata.GetLocations())));
convert<loot::rust::Location>(metadata.GetLocations()));
return output;
} catch (const ::rust::Error& e) {
+7 -2
View File
@@ -83,8 +83,13 @@ std::vector<T> convert(const ::rust::Vec<U>& vec) {
}
template<typename T, typename U>
const std::vector<::rust::Box<T>> convert(const std::vector<U>& vec) {
return convert<::rust::Box<T>, U>(::rust::Slice(vec));
const ::rust::Vec<::rust::Box<T>> convert(const std::vector<U>& vec) {
::rust::Vec<::rust::Box<T>> output;
for (const auto& element : vec) {
output.push_back(convert(element));
}
return output;
}
}
+1 -2
View File
@@ -87,8 +87,7 @@ std::vector<Group> Database::GetUserGroups() const {
void Database::SetUserGroups(const std::vector<Group>& groups) {
try {
database_->set_user_groups(
::rust::Slice(convert<loot::rust::Group>(groups)));
database_->set_user_groups(convert<loot::rust::Group>(groups));
} catch (const ::rust::Error& e) {
std::rethrow_exception(mapError(e));
}
+5 -2
View File
@@ -138,8 +138,11 @@ impl Database {
.collect())
}
// This is ugly, but Group can't be held as a value in C++ and CXX doesn't support Vec<Box<Group>> as a parameter, so this can't take ownership of the input groups.
pub fn set_user_groups(&self, groups: &[Box<Group>]) -> Result<(), VerboseError> {
#[expect(
clippy::vec_box,
reason = "Group is an opaque type to C++ so needs to be held in a Box."
)]
pub fn set_user_groups(&self, groups: Vec<Box<Group>>) -> Result<(), VerboseError> {
let groups = to_vec_of_unwrapped(groups);
self.0
.write()
+13 -12
View File
@@ -118,6 +118,7 @@ impl TryFrom<ffi::LogLevel> for libloot::LogLevel {
clippy::allow_attributes,
clippy::multiple_unsafe_ops_per_block,
clippy::needless_lifetimes,
clippy::vec_box,
reason = "Required by CXX. clippy::allow_attributes is because CXX doesn't support #[expect(...)]"
)]
#[cxx::bridge(namespace = "loot::rust")]
@@ -273,7 +274,7 @@ mod ffi {
pub fn user_groups(&self) -> Result<Vec<Group>>;
pub fn set_user_groups(&self, groups: &[Box<Group>]) -> Result<()>;
pub fn set_user_groups(&self, groups: Vec<Box<Group>>) -> Result<()>;
pub fn groups_path(
&self,
@@ -315,7 +316,7 @@ mod ffi {
pub fn multilingual_message(
message_type: MessageType,
contents: &[Box<MessageContent>],
contents: Vec<Box<MessageContent>>,
condition: &str,
) -> Result<Box<Message>>;
@@ -466,21 +467,21 @@ mod ffi {
pub fn unset_group(&mut self);
pub fn set_load_after_files(&mut self, files: &[Box<File>]);
pub fn set_load_after_files(&mut self, files: Vec<Box<File>>);
pub fn set_requirements(&mut self, files: &[Box<File>]);
pub fn set_requirements(&mut self, files: Vec<Box<File>>);
pub fn set_incompatibilities(&mut self, files: &[Box<File>]);
pub fn set_incompatibilities(&mut self, files: Vec<Box<File>>);
pub fn set_messages(&mut self, messages: &[Box<Message>]);
pub fn set_messages(&mut self, messages: Vec<Box<Message>>);
pub fn set_tags(&mut self, tags: &[Box<Tag>]);
pub fn set_tags(&mut self, tags: Vec<Box<Tag>>);
pub fn set_dirty_info(&mut self, info: &[Box<PluginCleaningData>]);
pub fn set_dirty_info(&mut self, info: Vec<Box<PluginCleaningData>>);
pub fn set_clean_info(&mut self, info: &[Box<PluginCleaningData>]);
pub fn set_clean_info(&mut self, info: Vec<Box<PluginCleaningData>>);
pub fn set_locations(&mut self, locations: &[Box<Location>]);
pub fn set_locations(&mut self, locations: Vec<Box<Location>>);
pub fn merge_metadata(&mut self, plugin: &PluginMetadata);
@@ -502,7 +503,7 @@ mod ffi {
name: String,
display_name: &str,
condition: &str,
detail: &[Box<MessageContent>],
detail: Vec<Box<MessageContent>>,
constraint: &str,
) -> Result<Box<File>>;
@@ -565,7 +566,7 @@ mod ffi {
pub fn new_plugin_cleaning_data(
crc: u32,
cleaning_utility: String,
detail: &[Box<MessageContent>],
detail: Vec<Box<MessageContent>>,
itm_count: u32,
deleted_reference_count: u32,
deleted_navmesh_count: u32,
+57 -13
View File
@@ -141,9 +141,13 @@ pub fn new_message(
Ok(Box::new(Message(message)))
}
#[expect(
clippy::vec_box,
reason = "MessageContent is an opaque type to C++ so needs to be held in a Box."
)]
pub fn multilingual_message(
message_type: MessageType,
contents: &[Box<MessageContent>],
contents: Vec<Box<MessageContent>>,
condition: &str,
) -> Result<Box<Message>, VerboseError> {
let contents = to_vec_of_unwrapped(contents);
@@ -306,35 +310,67 @@ impl PluginMetadata {
Location::wrap_slice(self.0.locations())
}
pub fn set_load_after_files(&mut self, files: &[Box<File>]) {
#[expect(
clippy::vec_box,
reason = "File is an opaque type to C++ so needs to be held in a Box."
)]
pub fn set_load_after_files(&mut self, files: Vec<Box<File>>) {
self.0.set_load_after_files(to_vec_of_unwrapped(files));
}
pub fn set_requirements(&mut self, files: &[Box<File>]) {
#[expect(
clippy::vec_box,
reason = "File is an opaque type to C++ so needs to be held in a Box."
)]
pub fn set_requirements(&mut self, files: Vec<Box<File>>) {
self.0.set_requirements(to_vec_of_unwrapped(files));
}
pub fn set_incompatibilities(&mut self, files: &[Box<File>]) {
#[expect(
clippy::vec_box,
reason = "File is an opaque type to C++ so needs to be held in a Box."
)]
pub fn set_incompatibilities(&mut self, files: Vec<Box<File>>) {
self.0.set_incompatibilities(to_vec_of_unwrapped(files));
}
pub fn set_messages(&mut self, messages: &[Box<Message>]) {
#[expect(
clippy::vec_box,
reason = "Message is an opaque type to C++ so needs to be held in a Box."
)]
pub fn set_messages(&mut self, messages: Vec<Box<Message>>) {
self.0.set_messages(to_vec_of_unwrapped(messages));
}
pub fn set_tags(&mut self, tags: &[Box<Tag>]) {
#[expect(
clippy::vec_box,
reason = "Tag is an opaque type to C++ so needs to be held in a Box."
)]
pub fn set_tags(&mut self, tags: Vec<Box<Tag>>) {
self.0.set_tags(to_vec_of_unwrapped(tags));
}
pub fn set_dirty_info(&mut self, info: &[Box<PluginCleaningData>]) {
#[expect(
clippy::vec_box,
reason = "PluginCleaningData is an opaque type to C++ so needs to be held in a Box."
)]
pub fn set_dirty_info(&mut self, info: Vec<Box<PluginCleaningData>>) {
self.0.set_dirty_info(to_vec_of_unwrapped(info));
}
pub fn set_clean_info(&mut self, info: &[Box<PluginCleaningData>]) {
#[expect(
clippy::vec_box,
reason = "PluginCleaningData is an opaque type to C++ so needs to be held in a Box."
)]
pub fn set_clean_info(&mut self, info: Vec<Box<PluginCleaningData>>) {
self.0.set_clean_info(to_vec_of_unwrapped(info));
}
pub fn set_locations(&mut self, locations: &[Box<Location>]) {
#[expect(
clippy::vec_box,
reason = "Location is an opaque type to C++ so needs to be held in a Box."
)]
pub fn set_locations(&mut self, locations: Vec<Box<Location>>) {
self.0.set_locations(to_vec_of_unwrapped(locations));
}
@@ -381,11 +417,15 @@ impl From<Box<PluginMetadata>> for libloot::metadata::PluginMetadata {
#[repr(transparent)]
pub struct File(libloot::metadata::File);
#[expect(
clippy::vec_box,
reason = "File is an opaque type to C++ so needs to be held in a Box."
)]
pub fn new_file(
name: String,
display_name: &str,
condition: &str,
detail: &[Box<MessageContent>],
detail: Vec<Box<MessageContent>>,
constraint: &str,
) -> Result<Box<File>, VerboseError> {
let mut file = libloot::metadata::File::new(name);
@@ -534,10 +574,14 @@ impl TryFrom<TagSuggestion> for libloot::metadata::TagSuggestion {
#[repr(transparent)]
pub struct PluginCleaningData(libloot::metadata::PluginCleaningData);
#[expect(
clippy::vec_box,
reason = "PluginCleaningData is an opaque type to C++ so needs to be held in a Box."
)]
pub fn new_plugin_cleaning_data(
crc: u32,
cleaning_utility: String,
detail: &[Box<MessageContent>],
detail: Vec<Box<MessageContent>>,
itm_count: u32,
deleted_reference_count: u32,
deleted_navmesh_count: u32,
@@ -630,6 +674,6 @@ impl From<Box<Location>> for libloot::metadata::Location {
}
}
pub fn to_vec_of_unwrapped<T: Clone, U: From<Box<T>>>(slice: &[Box<T>]) -> Vec<U> {
slice.iter().cloned().map(Into::into).collect()
pub fn to_vec_of_unwrapped<T: Clone, U: From<Box<T>>>(vec: Vec<Box<T>>) -> Vec<U> {
vec.into_iter().map(Into::into).collect()
}
+30
View File
@@ -1,6 +1,31 @@
# cargo-vet audits file
[[audits.codespan-reporting]]
who = "Oliver Hamlet <git@ortham.net>"
criteria = "safe-to-deploy"
delta = "0.12.0 -> 0.13.1"
[[audits.cxx]]
who = "Oliver Hamlet <git@ortham.net>"
criteria = "safe-to-deploy"
delta = "1.0.161 -> 1.0.192"
[[audits.cxx-build]]
who = "Oliver Hamlet <git@ortham.net>"
criteria = "safe-to-deploy"
delta = "1.0.161 -> 1.0.192"
[[audits.cxxbridge-flags]]
who = "Oliver Hamlet <git@ortham.net>"
criteria = "safe-to-deploy"
delta = "1.0.161 -> 1.0.192"
[[audits.cxxbridge-macro]]
who = "Oliver Hamlet <git@ortham.net>"
criteria = "safe-to-deploy"
delta = "1.0.161 -> 1.0.192"
[[audits.libloading]]
who = "Oliver Hamlet <git@ortham.net>"
criteria = "safe-to-deploy"
@@ -13,6 +38,11 @@ criteria = "safe-to-deploy"
version = "18.5.1"
notes = "This is my own crate published using Trusted Publishing, but I can't mark it as trusted by cargo-vet because it doesn't support Trusted Publishing and just sees that the publisher is unknown."
[[audits.link-cplusplus]]
who = "Oliver Hamlet <git@ortham.net>"
criteria = "safe-to-deploy"
delta = "1.0.10 -> 1.0.12"
[[audits.loot-condition-interpreter]]
who = "Oliver Hamlet <git@ortham.net>"
criteria = "safe-to-deploy"
+15 -80
View File
@@ -97,6 +97,15 @@ criteria = "safe-to-deploy"
delta = "2.1.1 -> 2.3.0"
notes = "Minor refactoring, nothing new."
[[audits.bytecode-alliance.audits.foldhash]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
version = "0.1.3"
notes = """
Only a minor amount of `unsafe` code in this crate related to global per-process
initialization which looks correct to me.
"""
[[audits.bytecode-alliance.audits.hashbrown]]
who = "Chris Fallin <chris@cfallin.org>"
criteria = "safe-to-deploy"
@@ -267,18 +276,6 @@ that the RNG here is not cryptographically secure.
"""
aggregated-from = "https://chromium.googlesource.com/chromiumos/third_party/rust_crates/+/refs/heads/main/cargo-vet/audits.toml?format=TEXT"
[[audits.google.audits.foldhash]]
who = "Lukasz Anforowicz <lukasza@chromium.org>"
criteria = "safe-to-deploy"
version = "0.1.3"
notes = """
`ub-risk-2` review notes can be found in https://crrev.com/c/6071306/5/third_party/rust/chromium_crates_io/vendor/foldhash-0.1.3/src/seed.rs
`does-not-implement-crypto` based on `README.md` which explicitly says that
\"Foldhash is **not appropriate for any cryptographic purpose**.\"
"""
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.foldhash]]
who = "Adrian Taylor <adetaylor@chromium.org>"
criteria = "safe-to-deploy"
@@ -432,74 +429,6 @@ version = "0.8.5"
notes = "Contains no unsafe"
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.rustversion]]
who = "Lukasz Anforowicz <lukasza@chromium.org>"
criteria = "safe-to-deploy"
version = "1.0.14"
notes = """
Grepped for `-i cipher`, `-i crypto`, `'\bfs\b'``, `'\bnet\b'``, `'\bunsafe\b'``
and there were no hits except for:
* Using trivially-safe `unsafe` in test code:
```
tests/test_const.rs:unsafe fn _unsafe() {}
tests/test_const.rs:const _UNSAFE: () = unsafe { _unsafe() };
```
* Using `unsafe` in a string:
```
src/constfn.rs: \"unsafe\" => Qualifiers::Unsafe,
```
* Using `std::fs` in `build/build.rs` to write `${OUT_DIR}/version.expr`
which is later read back via `include!` used in `src/lib.rs`.
Version `1.0.6` of this crate has been added to Chromium in
https://source.chromium.org/chromium/chromium/src/+/28841c33c77833cc30b286f9ae24c97e7a8f4057
"""
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.rustversion]]
who = "Adrian Taylor <adetaylor@chromium.org>"
criteria = "safe-to-deploy"
delta = "1.0.14 -> 1.0.15"
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.rustversion]]
who = "danakj <danakj@chromium.org>"
criteria = "safe-to-deploy"
delta = "1.0.15 -> 1.0.16"
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.rustversion]]
who = "Dustin J. Mitchell <djmitche@chromium.org>"
criteria = "safe-to-deploy"
delta = "1.0.16 -> 1.0.17"
notes = "Just updates windows compat"
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.rustversion]]
who = "Liza Burakova <liza@chromium.org>"
criteria = "safe-to-deploy"
delta = "1.0.17 -> 1.0.18"
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.rustversion]]
who = "Dustin J. Mitchell <djmitche@chromium.org>"
criteria = "safe-to-deploy"
delta = "1.0.18 -> 1.0.19"
notes = "No unsafe, just doc changes"
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.rustversion]]
who = "Daniel Cheng <dcheng@chromium.org>"
criteria = "safe-to-deploy"
delta = "1.0.19 -> 1.0.20"
notes = "Only minor updates to documentation and the mock today used for testing."
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.serde]]
who = "Lukasz Anforowicz <lukasza@chromium.org>"
criteria = "safe-to-deploy"
@@ -927,6 +856,12 @@ delta = "2.1.0 -> 2.1.1"
notes = "Fairly trivial changes, no chance of security regression."
aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml"
[[audits.mozilla.audits.foldhash]]
who = "Erich Gubler <erichdongubler@gmail.com>"
criteria = "safe-to-deploy"
delta = "0.1.5 -> 0.2.0"
aggregated-from = "https://hg.mozilla.org/mozilla-central/raw-file/tip/supply-chain/audits.toml"
[[audits.mozilla.audits.getrandom]]
who = "Chris Martin <cmartin@mozilla.com>"
criteria = "safe-to-deploy"