router
router copied to clipboard
chore(deps): update cargo pre-1.0 packages (minor)
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| criterion (source) | dev-dependencies | minor | 0.3 -> 0.4 |
| lru | dependencies | minor | 0.7.8 -> 0.8.1 |
| prost | dependencies | minor | 0.9.0 -> 0.11.0 |
| prost-types | dependencies | minor | 0.9.0 -> 0.11.1 |
| serde_yaml | dependencies | minor | 0.8.26 -> 0.9.13 |
| tonic | dependencies | minor | 0.6.2 -> 0.8.2 |
| tonic-build | build-dependencies | minor | 0.6.2 -> 0.8.2 |
Release Notes
bheisler/criterion.rs
v0.4.0
Removed
- The
Criterion::can_plotfunction has been removed. - The
Criterion::bench_function_over_inputsfunction has been removed. - The
Criterion::bench_functionsfunction has been removed. - The
Criterion::benchfunction has been removed.
Changed
- HTML report hidden behind non-default feature flag: 'html_reports'
- Standalone support (ie without cargo-criterion) feature flag: 'cargo_bench_support'
- MSRV bumped to 1.57
rayonandplottersare optional (and default) dependencies.- Status messages ('warming up', 'analyzing', etc) are printed to stderr, benchmark results are printed to stdout.
- Accept subsecond durations for
--warm-up-time,--measurement-timeand--profile-time. - Replaced serde_cbor with ciborium because the former is no longer maintained.
- Upgrade clap to v3 and regex to v1.5.
Added
- A
--discard-baselineflag for discarding rather than saving benchmark results. - Formal support for benchmarking code compiled to web-assembly.
- A
--quietflag for printing just a single line per benchmark. - A
Throughput::BytesDecimaloption for measuring throughput in bytes but printing them using decimal units like kilobytes instead of binary units like kibibytes.
Fixed
- When using
bench_with_input, the input parameter will now be passed throughblack_boxbefore passing it to the benchmark.
v0.3.6
Changed
- MSRV bumped to 1.49
- Symbol for microseconds changed from ASCII 'us' to unicode 'Β΅s'
- Documentation fixes
- Clippy fixes
v0.3.5
Fixed
- Corrected
Criterion.tomlin the book. - Corrected configuration typo in the book.
Changed
- Bump plotters dependency to always include a bug-fix.
- MSRV bumped to 1.46.
v0.3.4
Added
- Added support for benchmarking async functions
- Added
with_output_colorfor enabling or disabling CLI output coloring programmatically.
Fixed
- Criterion.rs will now give a clear error message in case of benchmarks that take zero time.
- Added some extra code to ensure that every sample has at least one iteration.
- Added a notice to the
--helpoutput regarding "unrecognized option" errors. - Increased opacity on violin charts.
- Fixed violin chart X axis not starting at zero in the plotters backend.
- Criterion.rs will now automatically detect the right output directory.
Deprecated
Criterion::can_plotis no longer useful and is deprecated pending deletion in 0.4.0.BenchmarkandParameterizedBenchmarkwere already hidden from documentation, but are now formally deprecated pending deletion in 0.4.0. Callers should useBenchmarkGroupinstead.Criterion::bench_function_over_inputs,Criterion::bench_functions, andCriterion::benchwere already hidden from documentation, but are now formally deprecated pending deletion in 0.4.0. Callers should useBenchmarkGroupinstead.- Three new optional features have been added; "html_reports", "csv_output" and
"cargo_bench_support". These features currently do nothing except disable a warning message at
runtime, but in version 0.4.0 they will be used to enable HTML report generation, CSV file
generation, and the ability to run in cargo-bench (as opposed to cargo-criterion).
"cargo_bench_support" is enabled by default, but "html_reports" and "csv_output"
are not. If you use Criterion.rs' HTML reports, it is recommended to switch to cargo-criterion.
If you use CSV output, it is recommended to switch to cargo-criterion and use the
--message-format=jsonoption for machine-readable output instead. A warning message will be printed at the start of benchmark runs which do not have "html_reports" or "cargo_bench_support" enabled, but because CSV output is not widely used it has no warning.
v0.3.3
Added
- Added
CRITERION_HOMEenvironment variable to set the directory for Criterion to store its results and charts in. - Added support for [cargo-criterion]. The long-term goal here is to remove code from Criterion-rs
itself to improve compile times, as well as to add features to
cargo-criterionthat are difficult to implement in Criterion-rs. - Add sampling mode option for benchmarks. This allows the user to change how Criterion.rs chooses the iteration counts in each sample. By default, nothing will change for most benchmarks, but very slow benchmarks will now run fewer iterations to fit in the desired number of samples. This affects the statistics and plots generated.
Changed
- The serialization format for some of the files has changed. This may cause your first benchmark run after updating to produce errors, but they're harmless and will go away after running the benchmarks once.
Fixed
- Fixed a bug where the current measurement was not shown on the relative regression plot.
- Fixed rare panic in the plotters backend.
- Panic with a clear error message (rather than panicking messily later on) when the user sets the group or function name to the empty string.
- Escape single quotes in benchmark names when generating Gnuplot scripts.
v0.3.2
Added
- Added
?Sizedbound to benchmark parameter types, which allows dynamically sized types like&strand&[T]to be used as benchmark parameters. - Added the
--output-format <format>command-line option. If--output-format bencheris passed, Criterion.rs will print its measurements in a format similar to that used by thebenchercrate or unstablelibtestbenchmarks, and using similar statistical measurements as well. Though this provides less information than the default format, it may be useful for supporting tools which parse this output format. - Added
--nocaptureargument. This argument does nothing, but prevents Criterion.rs from exiting when running tests or benchmarks and allowing stdout output from other tests.
Fixed
- Fixed panic when environment variables contains non-UTF8 characters.
- Fixed panic when
CRITERION_DEBUGorCRITERION_TARGET_DIRenvironment variables contain non-UTF8 characters.
v0.3.1
Added
- Added new plotting backend using the
plotterscrate. Implementation generously provided by Hao Hou, author of theplotterscrate. - Added
--plotting-backendcommand-line option to select the plotting backend. The existing gnuplot backend will be used by default when available, and the plotters backend will be used when gnuplot is not available or when requested. - Added
Criterion::plotting_backend()function to configure the plotting backend in code. - Added
--load-baselinecommand-line option to load a baseline for comparison rather than measuring the current code - Benchmark filters can now be regular expressions.
Fixed
- Fixed
fibonaccifunctions. - Fixed
#[criterion]benchmarks ignoring the command-line options. - Fixed incorrect scaling of the violin plots.
- Don't print the recommended sample count if it's the same as the configured sample count.
- Fix potential panic when
nresamplesis set too low. Also added a warning against settingnresamplestoo low. - Fixed issue where a slow outer closure would cause Criterion.rs to calculate the wrong estimated time and number of iterations in the warm-up phase.
jeromefroe/lru-rs
v0.8.1
- Add "caching" and "no-std" to list of categories.
v0.8.0
- Use
NonZeroUsizefor LRU capacity instead of usize. - Add
get_or_insert_mutmethod which is similiar toget_or_insertbut returns a mutable reference instead of an immutable reference. - Add
LruCache::promoteandLruCache::demoteAPI to manipulate LRU order of the entry directly.
tokio-rs/prost
v0.11.0
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
Relase 0.11 brings a few breaking changes and changes to how prost sources protoc.
prost-buildnow requiresprotocto be available in the path or set via thePROTOCenv var.prost-typesnow contains newTimestamp/DurationFromStrimplementations.- MSRV bump to
1.56and all crates have been moved to edition 2021
Notible changes that are not breaking:
prost-buildnow has acleanup-markdownfeature for cleaining up code blocks from protobuf files so that they work under rustdoc tests.prost-buildnow generatesas_str_namefor message types.
v0.10.4
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
Small fix for compiling protoc from source to speed up compile times.
v0.10.3
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
This release reverts #β605 and contains some typo fixes.
(this release is actually the v0.10.2 release but prost-build had to be yanked because of a local publish issue)
v0.10.2
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
This release reverts #β605 and contains some typo fixes.
(this release was yanked due to missing third-party source, v0.10.3 is now the active release for this)
v0.10.1
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
This minor release brings no new code changes but symlinks license files in all the crates.
v0.10.0
PROST! is a Protocol Buffers implementation for the Rust Language. prost generates simple, idiomatic Rust code from proto2 and proto3 files.
Release 0.10 brings a few new ....
protocis no longer bundled but is now compiled from bundled source- Minor performance improvements
- Methods exposed to allow third party protobuf generation libraries
dtolnay/serde-yaml
v0.9.13
- Recognize
True,TRUE,False,FALSEas booleans,Null,NULLas null (#β330)
v0.9.12
-
Support deserializing tagged literal scalar into primitive (#β327)
"foo": !!int |- 7200
v0.9.11
- Serialize strings on a single line when they do not already contain a newline character, regardless of string length (#β321, #β322)
v0.9.10
- Make
DisplayforNumberproduce the same representation as serializing (#β316)
v0.9.9
v0.9.8
- Fix serialization of
TaggedValuewhen used withto_value(#β313)
v0.9.7
- Allow an empty plain scalar to deserialize as an empty map or seq (#β304)
v0.9.6
- Fix tag not getting serialized in certain map values (#β302)
v0.9.5
- Implement
Displaytrait forserde_yaml::value::Tag(#β307, thanks @βmasinc)
v0.9.4
- Add
serde_yaml::with::singleton_mapfor serialization of enums as a 1-entry map (#β300) - Reject duplicate keys when deserializing
MappingorValue(#β301)
v0.9.3
- Add categories to crates.io metadata
- Add keywords to crates.io metadata
v0.9.2
- Improve
Debugrepresentation ofserde_yaml::Error
v0.9.1
- Fix panic on some documents containing syntax error (#β293)
- Improve error messages that used to contain duplicative line/column information (#β294)
v0.9.0
API documentation: https://docs.rs/serde_yaml/0.9
Highlights
-
The
serde_yaml::Valueenum gains aTaggedvariant which represents the deserialization of YAML's!Tagsyntax. Tagged scalars, sequences, and mappings are all supported. -
An empty YAML input (or document containing only comments) will deserialize successfully to an empty map, empty sequence, or Serde struct as long as the struct has only optional fields. Previously this would error.
-
A new
.apply_merge()method onValueimplements YAML's<<merge key convention. -
The
Debugrepresentation ofserde_yaml::Valuehas gotten vastly better (https://github.com/dtolnay/serde-yaml/pull/287). -
Deserialization of borrowed strings now works.
#[derive(Deserialize, Debug)] struct Struct<'a> { borrowed: &'a str, } let yaml = "borrowed: 'kΓΆlcsΓΆnzΓΆtt'\n"; let value: Struct = serde_yaml::from_str(yaml)?; println!("{:#?}", value); -
Value's andMapping's methodsgetandget_muthave been generalized to support a &str argument, as opposed to requiring you to allocate and construct aValue::Stringfor indexing into another existingValue. -
Mappingexposes more APIs that have become conventional on map data structures, such as.keys(),.values(),.into_keys(),.into_values(),.values_mut(), and.retain(|k, v| β¦).
Breaking changes
-
Serialization no longer produces leading
---\non the serialized output. You can prepend this yourself if your use case demands it. -
Serialization of enum variants is now based on YAML's
!Tagsyntax, rather than JSON-style singleton maps.#[derive(Serialize, Deserialize)] enum Enum { Newtype(usize), Tuple(usize, usize, usize), Struct { x: f64, y: f64 }, }- !Newtype 1 - !Tuple [0, 0, 0] - !Struct {x: 1.0, y: 2.0} -
A bunch of non-base-10 edge cases in number parsing have been resolved. For example
0x+1and++0x1are now parsed as strings, whereas they used to be incorrectly treated as numbers. -
Deserializers obtained through iteration can no longer be iterated further:
let deserializer = serde_yaml::Deserializer::from_str(multiple_documents); for de in deserializer { // correct: let myvalue = T::deserialize(de)?; // incorrect: used to produce some questionable result, now produces 0 sub-documents for questionable in de { let wat = T::deserialize(questionable)?; } } -
The abandoned yaml-rust crate is no longer used as the YAML backend. The new libyaml-based backend surely has different edge cases and quirks than yaml-rust.
-
Some excessive
PartialEqimpls have been eliminated. -
The
serde_yaml::to_vecfunction has been removed. Useserde_yaml::to_writerfor doing I/O, or useserde_yaml::to_string+.into_bytes()on the resulting String. -
The
serde_yaml::seedmodule has been removed. Now that aserde_yaml::Deserializeris publicly available, the same use cases can be addressed viaseed.deserialize(Deserializer::from_str(β¦))instead.
Bugfixes
-
Empty values in a mapping are supported, and deserialize to empty string when the corresponding struct field is of type string. Previously they would deserialize to "~" which makes no sense.
-
128-bit integer deserialization now supports hex and octal input.
-
Serde_yaml now includes a mitigation against a "billion laughs" attack in which malicious input involving YAML anchors and aliases is used to consume an amount of processing or memory that is exponential in the size of the input document. Serde_yaml will quickly produce an error in this situation instead.
hyperium/tonic
v0.8.2
Bug Fixes
Features
- tonic: add
Result<T>type alias forstd::result::Result<T, tonic::Status>(#β1085) (56ff45d) - build: add
cleanup-markdownfeature flag (#β1086) (c1b08df) - tonic: impl
CloneforStatususingArc(#β1076) (ee3d0df) - transport: Expose hyper's H2 adaptive window on server (#β1071) (919d28b)
v0.8.1
Features
- transport: Expose hyper's H2 adaptive window on server (#β1071) (919d28b)
- Reduce the amount of monomorphized code.
- Expose
Extensions::into_httpandStatus::from_error. - health: Remove
build.rsand commit generated code.
v0.8.0
Features
- Add
Grpc::with_originfor clients (#β1017) (10f6d2f) - build: Add option to emit rerun-if-changed instructions (#β1021) (1d2083a)
- build: Better support for custom codecs (#β999) (de2e4ac)
- Decouple
NamedServicefrom thetransportfeature (#β969) (feae96c) - reflection: Export server types.
- reflection: Add
with_service_name.
BREAKING CHANGES
- build:
CODEC_PATHmoved from const to fn - tonic Remove codegen depedency on
compressionfeature. - tonic Remove
compressionfeature in favor ofgzipfeature.
v0.7.2
Bug Fixes
- build: Reduce
Defaultbound requirement (#β974) (4533a6e) - don't enable default features in tower (#β972) (b4f9634)
- transport: Emit
HttpsUriWithoutTlsSupportonly with tls feature enabled (#β996) (1dd5ad2)
Features
v0.7.1
Features
v0.7.0
Breaking Changes
- Update prost to 0.10 (#β948) (c78274e)
- build: use prettyplease to format output (#β890) (#β904) (d6c0fc1)
- tls: upgrade to tokio-rustls 0.23 (rustls 0.20) (#β859) (4548997)
- transport: port router to axum (#β830) (6dfc20e)
- build: add must_use to gzip methods (#β892) (a337f13)
- codec: Remove
Defaultbound onCodec(#β894) (d574cfd) - tonic: Expose h2 error instead of reason (#β883) (a33e15a)
- transport: connect w/ connector infailable (#β922) (a197c20)
- transport: Endpoint returns transport error (#β920) (ee6e726)
- Handle interceptor errors as responses (#β840) (#β842) (bf44940)
Bug Fixes
- codec: Return None after poll_data error (#β921) (d7cae70)
- health: Correctly implement spec for overall health (#β897) (2b0ffee)
- tonic: Preserve HTTP method in interceptor (#β912) (e623562)
- transport: Make
Server::layer()support more than one layer (#β932) (e30bb7e) - transport: Make server builder more consistent (#β901) (6763d19)
- Return error on non https uri instead of panic (#β838) (ef6e245)
Features
- build: Expose Prost generation plugin (#β947) (d4bd475)
- build: add constructor
from_arcfor gRPC servers (#β875) (7179f7a) - health: Expose
HealthServicepublically (#β930) (097e7e8) - transport: add unix socket support in server (#β861) (dee2ab5)
- transport: support customizing
Channel's async executor (#β935) (0859d82) - Implement hash for
Code(#β917) (6bc7dab)
Configuration
π Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
π¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
β» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
π» Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- [ ] If you want to rebase/retry this PR, click this checkbox.
This PR has been generated by Mend Renovate. View repository job log here.
@renovate[bot] your pull request is missing a changelog!
Deploy Preview for apollo-router-docs ready!
| Name | Link |
|---|---|
| Latest commit | 41d1be2fc531b6fe7800e9c4c715f4aedbd7e7bb |
| Latest deploy log | https://app.netlify.com/sites/apollo-router-docs/deploys/62bc8d9b4bff4d000714cadd |
| Deploy Preview | https://deploy-preview-702--apollo-router-docs.netlify.app |
| Preview on mobile | Toggle QR Code...Use your smartphone camera to open QR code link. |
To edit notification comments on pull requests, go to your Netlify site settings.
Quoting https://github.com/apollographql/router/pull/702#pullrequestreview-981585053:
prostandtonicupdates should wait for the nextopentelemetry-otlprelease, otherwise we'll end up again with both 0.9 and 0.10 versions ofprost
Hoping that this (still!) outstanding bit gets resolved in the next week or so by virtue of the v0.18.0 release of opentelemetry-otlp finally getting published. Seems like some recent traction here: https://github.com/open-telemetry/opentelemetry-rust/pull/779 and https://github.com/open-telemetry/opentelemetry-rust/issues/860.
In the future, we may want to declare our versions to hold back specific packages in our Renovate configuration (similar to my just-opened #1509) so we can still bring other packages forward to their latest versions through automation without them piling up on this issue. Alternatively, we can ungroup the dependencies in Renovate (something we've specifically opted into), but I think just declaring our intentions is the most important thing (the grouping is nice for noise reasons).
@renovate[bot], please add a /NEXT_CHANGELOG.md entry for this PR to the appropriate section!
@renovate[bot], please consider creating a changeset entry in /.changesets/. These instructions describe the process and tooling.
Idk. This PR seems out of control. I'm going to close it and let it re-open.