router
router copied to clipboard
chore(deps): update cargo pre-1.0 packages (minor)
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| axum | dev-dependencies | minor | 0.6.20 -> 0.7.0 |
| axum | dependencies | minor | 0.6.20 -> 0.7.0 |
| base64 | dependencies | minor | 0.21 -> 0.22 |
| base64 | dependencies | minor | 0.21.7 -> 0.22.0 |
| console-subscriber (source) | dependencies | minor | 0.2.0 -> 0.3.0 |
| env_logger | dependencies | minor | 0.9.0 -> 0.11.0 |
| env_logger | dependencies | minor | 0.10.2 -> 0.11.0 |
| graphql_client | dependencies | minor | 0.13.0 -> 0.14.0 |
| heck | dependencies | minor | 0.4.1 -> 0.5.0 |
| hyper-rustls | dependencies | minor | 0.24.2 -> 0.27.0 |
| itertools | dependencies | minor | 0.12.1 -> 0.13.0 |
| jsonpath-rust | dependencies | minor | 0.3.5 -> 0.6.0 |
| jsonschema | dependencies | minor | 0.17.1 -> 0.18.0 |
| mockall | dev-dependencies | minor | 0.11.4 -> 0.12.0 |
| mockall | dependencies | minor | 0.11.4 -> 0.12.0 |
| moka | dependencies | minor | 0.8.5 -> 0.12.0 |
| multimap | dependencies | minor | 0.9.1 -> 0.10.0 |
| nu-ansi-term | dependencies | minor | 0.49 -> 0.50 |
| reqwest | dependencies | minor | 0.11 -> 0.12 |
| reqwest | dev-dependencies | minor | 0.11.24 -> 0.12.0 |
| reqwest | workspace.dependencies | minor | 0.11.24 -> 0.12.0 |
| rustls | dependencies | minor | 0.21.11 -> 0.23.0 |
| rustls-native-certs | dependencies | minor | 0.6.3 -> 0.7.0 |
| serde_yaml | dependencies | minor | 0.8.26 -> 0.9.0 |
| strum_macros | dependencies | minor | 0.25.3 -> 0.26.0 |
| test-span | dev-dependencies | minor | 0.7 -> 0.8 |
| tokio-rustls | dependencies | minor | 0.24.1 -> 0.26.0 |
| tokio-tungstenite | dependencies | minor | 0.20.1 -> 0.23.0 |
| tonic | dependencies | minor | 0.9.2 -> 0.11.0 |
| tonic-build | build-dependencies | minor | 0.9.2 -> 0.11.0 |
| tower-http | dependencies | minor | 0.4.4 -> 0.5.0 |
| wiremock | dev-dependencies | minor | 0.5.22 -> 0.6.0 |
| wiremock | dependencies | minor | 0.5.22 -> 0.6.0 |
Release Notes
tokio-rs/axum (axum)
v0.7.5: axum - v0.7.5
- fixed: Fixed layers being cloned when calling
axum::servedirectly with aRouterorMethodRouter(#β2586) - fixed:
h2is no longer pulled as a dependency unless thehttp2feature is enabled (#β2605)
v0.7.4: axum - v0.7.4
- fixed: Fix performance regression present since axum 0.7.0 (#β2483)
- fixed: Improve
debug_handleron tuple response types (#β2201) - added: Add
must_useattribute toServeandWithGracefulShutdown(#β2484) - added: Re-export
axum_core::body::BodyDataStreamfrom axum
v0.7.3: axum - v0.7.3
- added:
BodyimplementsFrom<()>now (#β2411) - change: Update version of multer used internally for multipart (#β2433)
- change: Update tokio-tungstenite to 0.21 (#β2435)
- added: Enable
tracingfeature by default (#β2460) - added: Support graceful shutdown on
serve(#β2398) - added:
RouterIntoServiceimplementsClone(#β2456)
v0.7.2: axum - v0.7.2
- added: Add
axum::body::to_bytes(#β2373) - fixed: Gracefully handle accept errors in
serve(#β2400)
v0.7.1: axum - v0.7.1
- fix: Fix readme.
v0.7.0: axum - v0.7.0
- breaking: Update public dependencies. axum now requires
- breaking: axum now requires tower-http 0.5
- breaking: Remove deprecated
WebSocketUpgrade::max_send_queue - breaking: The following types/traits are no longer generic over the request body
(i.e. the
Btype param has been removed) (#β1751 and #β1789):FromRequestPartsFromRequestHandlerServiceHandlerWithoutStateExtHandlerLayeredFutureLayeredMethodRouterNextRequestExtRouteFutureRouteRouter
- breaking: axum no longer re-exports
hyper::Bodyas that type is removed in hyper 1.0. Instead axum has its own body type ataxum::body::Body(#β1751) - breaking:
extract::BodyStreamhas been removed asbody::BodyimplementsStreamandFromRequestdirectly (#β1751) - breaking: Change
sse::Event::json_datato useaxum_core::Erroras its error type (#β1762) - breaking: Rename
DefaultOnFailedUpdgradetoDefaultOnFailedUpgrade(#β1664) - breaking: Rename
OnFailedUpdgradetoOnFailedUpgrade(#β1664) - breaking:
TypedHeaderhas been move toaxum-extra(#β1850) - breaking: Removed re-exports of
EmptyandFull. Useaxum::body::Body::emptyandaxum::body::Body::fromrespectively (#β1789) - breaking: The response returned by
IntoResponse::into_responsemust useaxum::body::Bodyas the body type.axum::response::Responsedoes this (#β1789) - breaking: Removed the
BoxBodytype alias and itsbox_bodyconstructor. Useaxum::body::Body::newinstead (#β1789) - breaking: Remove
RawBodyextractor.axum::body::BodyimplementsFromRequestdirectly (#β1789) - breaking: The following types from
http-bodyno longer implementIntoResponse:Full, useBody::frominsteadEmpty, useBody::emptyinsteadBoxBody, useBody::newinsteadUnsyncBoxBody, useBody::newinsteadMapData, useBody::newinsteadMapErr, useBody::newinstead
- added: Add
axum::extract::Requesttype alias where the body isaxum::body::Body(#β1789) - added: Add
Router::as_serviceandRouter::into_serviceto workaround type inference issues when callingServiceExtmethods on aRouter(#β1835) - breaking: Removed
axum::Serveras it was removed in hyper 1.0. Instead useaxum::serve(listener, service)or hyper/hyper-util for more configuration options (#β1868) - breaking: Only inherit fallbacks for routers nested with
Router::nest. Routers nested withRouter::nest_servicewill no longer inherit fallbacks (#β1956) - fixed: Don't remove the
Sec-WebSocket-Keyheader inWebSocketUpgrade(#β1972) - added: Add
axum::extract::Query::try_from_uri(#β2058) - added: Implement
IntoResponseforBox<str>andBox<[u8]>([#β2035]) - breaking: Simplify
MethodFilter. It no longer uses bitflags (#β2073) - fixed: Fix bugs around merging routers with nested fallbacks (#β2096)
- fixed: Fix
.source()of composite rejections (#β2030) - fixed: Allow unreachable code in
#[debug_handler](#β2014) - change: axum's MSRV is now 1.66 (#β1882)
- added: Implement
IntoResponsefor(R,) where R: IntoResponse(#β2143) - changed: For SSE, add space between field and value for compatibility (#β2149)
- added: Add
NestedPathextractor (#β1924) - added: Add
handle_errorfunction to existingServiceExttrait (#β2235) - breaking:
impl<T> IntoResponse(Parts) for Extension<T>now requiresT: Clone, as that is required by the http crate (#β1882) - added: Add
axum::Json::from_bytes(#β2244) - added: Implement
FromRequestPartsforhttp::request::Parts(#β2328) - added: Implement
FromRequestPartsforhttp::Extensions(#β2328) - fixed: Clearly document applying
DefaultBodyLimitto individual routes (#β2157)
marshallpierce/rust-base64 (base64)
v0.22.1
- Correct the symbols used for the predefined
alphabet::BIN_HEX.
v0.22.0
DecodeSliceError::OutputSliceTooSmallis now conservative rather than precise. That is, the error will only occur if the decoded output cannot fit, meaning thatEngine::decode_slicecan now be used with exactly-sized output slices. As part of this,Engine::internal_decodenow returnsDecodeSliceErrorinstead ofDecodeError, but that is not expected to affect any external callers.DecodeError::InvalidLengthnow refers specifically to the number of valid symbols being invalid (i.e.len % 4 == 1), rather than just the number of input bytes. This avoids confusing scenarios when based on interpretation you could make a case for eitherInvalidLengthorInvalidBytebeing appropriate.- Decoding is somewhat faster (5-10%)
v0.21.7
- Support getting an alphabet's contents as a str via
Alphabet::as_str()
v0.21.6
- Improved introductory documentation and example
v0.21.5
- Add
DebugandCloneimpls for the general purpose Engine
v0.21.4
- Make
encoded_lenconst, allowing the creation of arrays sized to encode compile-time-known data lengths
v0.21.3
- Implement
sourceinstead ofcauseon Error types - Roll back MSRV to 1.48.0 so Debian can continue to live in a time warp
- Slightly faster chunked encoding for short inputs
- Decrease binary size
tokio-rs/console (console-subscriber)
v0.3.0
console-subscriber-v0.3.0 - (2024-06-10)
Breaking Changes
- Bump tonic to 0.11 (#β547) (ef6816c)
This is a breaking change for users ofconsole-apiandconsole-subscriber, as it changes the publictonicdependency to a semver-incompatible version. This breaks compatibility withtonic0.10.x.
Added
- Replace target column with kind column in tasks view (#β478) (903d9fa)
- Reduce retention period to fit in max message size (#β503) (bd3dd71)
- Support grpc-web and add
grpc-webfeature (#β498) (4150253)
Documented
Fixed
- Don't save poll_ops if no-one is receiving them (#β501) (1656c79)
- Ignore metadata that is not a span or event (#β554) (852a977)
Updated
rust-cli/env_logger (env_logger)
v0.11.3
Features
- Experimental support for key-value logging behind
unstable-kv
v0.11.2
v0.11.1
Fixes
- Allow styling with
Target::Pipe
v0.11.0
Migration Guide
env_logger::fmt::Style:
The bespoke styling API, behind color, was removed, in favor of accepting any
ANSI styled string and adapting it to the target stream's capabilities.
Possible styling libraries include:
- anstyle is a minimal, runtime string styling API and is re-exported as
env_logger::fmt::style - owo-colors is a feature rich runtime string styling API
- color-print for feature-rich compile-time styling API
custom_format.rs
uses anstyle via
Formatter::default_level_style
Breaking Change
- Removed bespoke styling API
env_logger::fmt::Formatter::styleenv_logger::fmt::Formatter::default_styled_levelenv_logger::fmt::Styleenv_logger::fmt::Colorenv_logger::fmt::StyledValue
- Removed
env_logger::filterin favor ofenv_filter
Compatibility
MSRV changed to 1.71
Features
- Automatically adapt ANSI escape codes in logged messages to the current terminal's capabilities
- Add support for
NO_COLORandCLICOLOR_FORCE, see https://bixense.com/clicolors/
Fixes
- Print colors when
is_test(true)
v0.10.2
Performance
- Avoid extra UTF-8 validation performed in some cases
Fixes
- Ensure custom pipes/stdout get flushed
- Don't panic on broken pipes when
coloris disabled
v0.10.1
Performance
- Avoid hashing directives and accessing RNG on startup
Documentation
- Tweak
RUST_LOGdocumentation
v0.10.0
MSRV changed to 1.60 to hide optional dependencies
Fixes
- Resolved soundness issue by switching from
attytois-terminal
Breaking Changes
To open room for changing dependencies:
- Renamed
termcolorfeature tocolor - Renamed
attyfeature toauto-color
graphql-rust/graphql-client (graphql_client)
v0.14.0
- Add support for GraphQLβs
extend typedirective - Add support for
graphqls://schema - Expose
generate_module_token_stream_from_stringto allow custom macro wrappers
withoutboats/heck (heck)
v0.5.0
- Add
no_stdsupport. - Remove non-additive
unicodefeature. The library now useschar::is_alphanumericinstead of theunicode-segmentationlibrary to determine word boundaries in all cases.
rust-itertools/itertools (itertools)
v0.13.0
Breaking
- Removed implementation of
DoubleEndedIteratorforConsTuples(#β853) - Made
MultiProductfused and fixed on an empty iterator (#β835, #β834) - Changed
iproduct!to return tuples for maxi one iterator too (#β870) - Changed
PutBack::put_backto return the old value (#β880) - Removed deprecated
repeat_call, Itertools::{foreach, step, map_results, fold_results}(#β878) - Removed
TakeWhileInclusive::new(#β912)
Added
- Added
Itertools::{smallest_by, smallest_by_key, largest, largest_by, largest_by_key}(#β654, #β885) - Added
Itertools::tail(#β899) - Implemented
DoubleEndedIteratorforProcessResults(#β910) - Implemented
DebugforFormatWith(#β931) - Added
Itertools::get(#β891)
Changed
- Deprecated
Itertools::group_by(renamedchunk_by) (#β866, #β879) - Deprecated
unfold(usestd::iter::from_fninstead) (#β871) - Optimized
GroupingMapBy(#β873, #β876) - Relaxed
Fnbounds toFnMutindiff_with, Itertools::into_group_map_by(#β886) - Relaxed
Debug/Clonebounds forMapInto(#β889) - Documented the
use_allocfeature (#β887) - Optimized
Itertools::set_from(#β888) - Removed badges in
README.md(#β890) - Added "no-std" categories in
Cargo.toml(#β894) - Fixed
Itertools::k_smalleston short unfused iterators (#β900) - Deprecated
Itertools::tree_fold1(renamedtree_reduce) (#β895) - Deprecated
GroupingMap::fold_first(renamedreduce) (#β902) - Fixed
Itertools::k_smallest(0)to consume the iterator, optimizedItertools::k_smallest(1)(#β909) - Specialized
Combinations::nth(#β914) - Specialized
MergeBy::fold(#β920) - Specialized
CombinationsWithReplacement::nth(#β923) - Specialized
FlattenOk::{fold, rfold}(#β927) - Specialized
Powerset::nth(#β924) - Documentation fixes (#β882, #β936)
- Fixed
assert_equalfor iterators longer thani32::MAX(#β932) - Updated the
must_usemessage of non-lazyKMergeByandTupleCombinations(#β939)
Notable Internal Changes
Stranger6667/jsonschema-rs (jsonschema)
v0.18.0
Added
- Custom keywords support. #β379
- Expose
JsonPointerNodethat can be converted intoJSONPointer. This is needed for the upcoming custom validators support.
Changed
- Bump
base64to0.22. - Bump
clapto4.5. - Bump
fancy-regexto0.13. - Bump
fractionto0.15. - Bump
memchrto2.7. - Bump
once_cellto1.19. - Bump
percent-encodingto2.3. - Bump
regexto1.10. - Bump
urlto2.5. - Build CLI only if the
clifeature is enabled. - BREAKING: Extend
CompilationOptionsto support more ways to define custom format checkers (for example in Python bindings). In turn it changesValidationErrorKind::Formatto contain aStringinstead of a&'static str.
Fixed
- Incorrect
schema_pathwhen multiple errors coming from the$refkeyword #β426
Performance
- Optimize building
JSONPointerfor validation errors by allocating the exact amount of memory needed. - Avoid cloning path segments during validation.
asomers/mockall (mockall)
v0.12.1
Fixed
-
Fixed using
#[mockall::concretize]on functions whose generic types contain trait bounds, yet are still object safe. (#β531) -
Fixed mocking methods that use raw identifiers for their names. This was a regression in 0.12.0. (#β534)
v0.12.0
Added
-
Added
#[mockall::concretize], which can be used to mock some generic methods that have non-'staticgeneric parameters. It works by turning the generic arguments into trait objects for the expectation. (#β408) -
When mocking functions with a non-default ABI (Like
extern "C"), the mock function will now use the same ABI as the original. Name mangling will also be disabled, so the mock function will be callable from external code. For example, from C functions. (#β504)
Changed
-
Raised predicates, which is reexported, to 3.0.0. This may affect backwards compatibility for users who make use of predicates's "color" feature. (#β467)
-
Raised MSRV to 1.64.0 because predicates-core and predicates-tree did. (#β430) (#β467)
-
Better "No matching expectation found" messages on stable. (#β425)
Fixed
-
Fixed mocking non-private inherent methods that have attributes with syn version 2.0.9 and later. (#β486)
-
Suppress
clippy::too_many_argumentswarnings in the generated code. This is most useful when mocking static functions with exactly 7 arguments. (#β487) -
Fixed
unused_attributeswarnings in the generated code when mocking FFI functions that use#[link_name]. (#β503) -
Fix a panic during Drop for static methods. One way to trigger it is by calling the method more times than is allowed by a
.times()constraint. Another way would be to explicitly panic during the.returningmethod. (#β516)
Removed
-
Removed syntax deprecated since 0.9.0: using
#[automock]directly on anextern "C"block, and usingtrait Foo {}syntax inside ofmock!. (#β476) -
Removed default features from
predicatesdependency. Reexports no longer includedifflib,normalize-line-endings,regexandfloat-cmpfeatures. (#β517)
moka-rs/moka (moka)
v0.12.7
Changed
- Ensure a single call to
run_pending_tasksto evict as many entries as possible from the cache ([#β417][gh-pull-0417]).
v0.12.6
Fixed
- Fixed a bug in
future::Cachethat pendingrun_pending_taskscalls may cause infinite busy loop in an internalschedule_write_opmethod ([#β412][gh-issue-0412]):- This bug was introduced in
v0.12.0when the background threads were removed fromfuture::Cache. - This bug can occur when
run_pending_taskmethod is called by user code while cache is receiving a very high number of concurrent cache write operations. (e.g.insert,get_with,invalidateetc.) - When it occurs, the
schedule_write_opmethod will be spinning in a busy loop forever, causing high CPU usage and all other async tasks to be starved.
- This bug was introduced in
Changed
- Upgraded
async-lockcrate used byfuture::Cachefromv2.4to the latestv3.3.
v0.12.5
Added
- Added support for a plain LRU (Least Recently Used) eviction policy
([#β390][gh-pull-0390]):
- The LRU policy is enabled by calling the
eviction_policymethod of the cache builder with a policy obtained byEvictionPolicy::lrufunction. - The default eviction policy remains the TinyLFU (Tiny, Least Frequently Used) as it maintains better hit rate than LRU for most use cases. TinyLFU combines LRU eviction policy and popularity-based admission policy. A probabilistic data structure is used to estimate historical popularity of both hit and missed keys. (not only the keys currently in the cache.)
- However, some use cases may prefer LRU policy over TinyLFU. An example is recency biased workload such as streaming data processing. LRU policy can be used for them to achieve better hit rate.
- Note that we are planning to add an adaptive eviction/admission policy called Window-TinyLFU in the future. It will adjust the balance between recency and frequency based on the current workload.
- The LRU policy is enabled by calling the
v0.12.4
Fixed
- Ensure
crossbeam-epochto run GC when dropping a cache ([#β384][gh-pull-0384]):crossbeam-epochcrate provides an epoch-based memory reclamation scheme for concurrent data structures. It is used by Moka cache to safely drop cached entries while they are still being accessed by other threads.crossbeam-epochdoes its best to reclaim memory (drop the entries evicted from the cache) when the epoch is advanced. However, it does not guarantee that memory will be reclaimed immediately after the epoch is advanced. This means that entries can remain in the memory for a while after the cache is dropped.- This fix ensures that, when a cache is dropped, the epoch is advanced and
crossbeam-epoch's thread local buffers are flushed, helping to reclaim memory immediately. - Note that there are still chances that some entries remain in the memory for a
while after a cache is dropped. We are looking for alternatives to
crossbeam-epochto improve this situation (e.g. [#β385][gh-issue-0385]).
Added
- Added an example for reinserting expired entries to the cache. ([#β382][gh-pull-0382])
v0.12.3
Added
- Added the upsert and compute methods for modifying a cached entry
([#β370][gh-pull-0370]):
- Now the
entryandentry_by_refAPIs have the following methods:and_upsert_withmethod to insert or update the entry.and_compute_withmethod to insert, update, remove or do nothing on the entry.and_try_compute_withmethod, which is similar to above but returnsResult.
- Now the
Fixed
- Raised the version requirement of the
quantafrom>=0.11.0, <0.12.0to>=0.12.2, <0.13.0to avoid under-measuring the elapsed time on Apple silicon Macs ([#β376][gh-pull-0376]).- Due to this under-measurement, cached entries on macOS arm64 can expire sightly later than expected.
v0.12.2
Fixed
- Prevent timing issues in writes that cause inconsistencies between the cache's
internal data structures ([#β348][gh-pull-0348]):
- One way to trigger the issue is that insert the same key twice quickly, once
when the cache is full and a second time when there is a room in the cache.
- When it occurs, the cache will not return the value inserted in the second
call (which is wrong), and the
entry_countmethod will keep returning a non zero value after calling theinvalidate_allmethod (which is also wrong).
- When it occurs, the cache will not return the value inserted in the second
call (which is wrong), and the
- One way to trigger the issue is that insert the same key twice quickly, once
when the cache is full and a second time when there is a room in the cache.
- Now the last access time of a cached entry is updated immediately after the entry
is read ([#β363][gh-pull-0363]):
- When the time-to-idle of a cache is set, the last access time of a cached entry is used to determine if the entry has been expired.
- Before this fix, the access time was updated (to the time when it was read) when pending tasks were processed. This delay caused issue that some entries become temporarily unavailable for reads even though they have been accessed recently. And then they will become available again after the pending tasks are processed.
- Now the last access time is updated immediately after the entry is read. The entry will remain valid until the time-to-idle has elapsed.
Note that both of [#β348][gh-pull-0348] and [#β363][gh-pull-0363] were already present
in v0.11.x and older versions. However they were less likely to occur because they
had background threads to periodically process pending tasks. So there were much
shorter time windows for these issues to occur.
Changed
- Updated the Rust edition from 2018 to 2021. ([#β339][gh-pull-0339], by
[@βnyurik][gh-nyurik])
- The MSRV remains at Rust 1.65.
- Changed to use inline format arguments throughout the code, including examples. ([#β340][gh-pull-0340], by [@βnyurik][gh-nyurik])
Added
- Added an example for cascading drop triggered by eviction ([#β350][gh-pull-0350], by [@βpeter-scholtens][gh-peter-scholtens])
v0.12.1
Fixed
- Fixed memory leak in
future::Cachethat occurred whenget_with(),entry().or_insert_with(), and similar methods were used ([#β329][gh-issue-0329]).- This bug was introduced in
v0.12.0. Versions prior tov0.12.0do not have this bug.
- This bug was introduced in
Changed
- (Performance) Micro-optimize
ValueInitializer([#β331][gh-pull-0331], by [@βSwatinem][gh-Swatinem]).
v0.12.0
Note
v0.12.0has major breaking changes on the API and internal behavior.
-
synccaches are no longer enabled by default: Please use a crate featuresyncto enable it. -
No more background threads: All cache types
future::Cache,sync::Cache, andsync::SegmentedCacheno longer spawn background threads.- The
scheduled-thread-poolcrate was removed from the dependency. - Because of this change, many private methods and some public methods under the
futuremodule were converted toasyncmethods. You may need to add.awaitto your code for those methods.
- The
-
Immediate notification delivery: The
notification::DeliveryModeenum for the eviction listener was removed. Now all cache types behave as if theImmediatedelivery mode is specified.
Please read the MIGRATION-GUIDE.md for more details.
Changed
- Removed the thread pool from
futurecache ([#β294][gh-pull-0294]) andsynccaches ([#β316][gh-pull-0316]). - Improved async cancellation safety of
future::Cache. ([#β309][gh-pull-0309])
Fixed
- Fixed a bug that an internal
do_insert_with_hashmethod gets the currentInstanttoo early when eviction listener is enabled. ([#β322][gh-issue-0322])
v0.11.3
Fixed
- Fixed a bug in
sync::Cacheandsync::SegmentedCachewhere memory usage kept increasing when the eviction listener was set with theImmediatedelivery mode. ([#β295][gh-pull-0295])
v0.11.2
Bumped the minimum supported Rust version (MSRV) to 1.65 (Nov 3, 2022). ([#β275][gh-pull-0275])
Removed
- Removed
num_cpuscrate from the dependency. ([#β277][gh-pull-0277])
Changed
- Refactored internal methods of the concurrent hash table to reduce compile times. ([#β265][gh-pull-0265], by [@βSwatinem][gh-Swatinem])
v0.11.1
Fixed
- Fixed occasional panic in internal
FrequencySketchin debug build. ([#β272][gh-pull-0272])
Added
- Added some example programs to the
examplesdirectory. ([#β268][gh-pull-0268], by [@βpeter-scholtens][gh-peter-scholtens])
v0.11.0
Added
- Added support for per-entry expiration ([#β248][gh-pull-0248]):
- In addition to the existing TTL and TTI (time-to-idle) expiration times that
apply to all entries in the cache, the
syncandfuturecaches can now allow different expiration times for individual entries.
- In addition to the existing TTL and TTI (time-to-idle) expiration times that
apply to all entries in the cache, the
- Added the
removemethod to thesyncandfuturecaches (#β255):- Like the
invalidatemethod, this method discards any cached value for the key, but returns a clone of the value.
- Like the
Fixed
- Fixed the caches mutating a deque node through a
NonNullpointer derived from a shared reference. ([#β259][gh-pull-0259])
Removed
- Removed
unsynccache that was marked as deprecated in v0.10.0.
v0.10.4
v0.10.3
v0.10.2
Bumped the minimum supported Rust version (MSRV) to 1.60 (Apr 7, 2022). ([#β252][gh-issue-0252])
Changed
- Upgraded
quantacrate to v0.11.0. ([#β251][gh-pull-0251])- This resolved "[RUSTSEC-2020-0168]:
machis unmaintained" ([#β243][gh-issue-0243]) by replacingmachwithmach2. quantav0.11.0's MSRV is 1.60, so we also bumped the MSRV of Moka to 1.60.
- This resolved "[RUSTSEC-2020-0168]:
v0.10.1
Fixed
- Fixed a bug that
futurecache'sblocking().invalidate(key)method does not trigger the eviction listener. ([#β242][gh-issue-0242])
Changed
- Now
syncandfuturecaches will not cache anything when the max capacity is set to zero ([#β230][gh-issue-0230]):- Previously, they would cache some entries for short time (< 0.5 secs) even though the max capacity is zero.
v0.10.0
Breaking Changes
- The following caches have been moved to a separate crate called
[Mini-Moka][mini-moka-crate]:
moka::unsync::Cacheβmini_moka::unsync::Cachemoka::dash::Cacheβmini_moka::sync::Cache
- The following methods have been removed from
syncandfuturecaches ([#β199][gh-pull-0199]). They were deprecated in v0.8.0:get_or_insert_with(Useget_withinstead)get_or_try_insert_with(Usetry_get_withinstead)
- The following methods of
syncandfuturecaches have been marked as deprecated ([#β193][gh-pull-0193]):get_with_if(UseentryAPI'sor_insert_with_ifinstead)
Added
- Add
entryandentry_by_refAPIs tosyncandfuturecaches ([#β193][gh-pull-0193]):- They allow users to perform more complex operations on a cache entry. At this
point, the following operations (methods) are provided:
or_defaultor_insertor_insert_withor_insert_with_ifor_optionally_insert_withor_try_insert_with
- The above methods return
Entrytype, which providesis_freshmethod to check if the value was freshly computed or already existed in the cache.
- They allow users to perform more complex operations on a cache entry. At this
point, the following operations (methods) are provided:
v0.9.9
v0.9.8
v0.9.7
Fixed
- Fix an issue that
get_withmethod offuturecache inflates future size by ~7x, sometimes causing stack overflow ([#β212][gh-issue-0212]):- This was caused by a known
rustcoptimization issue on async functions ([rust-lang/rust#62958][gh-rust-issue-62958]). - Added a workaround to our cache and now it will only inflate the size by ~2.5x.
- This was caused by a known
- Fix a bug that setting the number of segments of
synccache will disable notifications. ([#β207][gh-issue-0207])
Added
- Add examples for
build_with_hashermethod of cache builders. ([#β216][gh-pull-0216])
v0.9.6
Fixed
- Prevent race condition in
get_withfamily methods to avoid evaluatinginitclosure or future multiple times in concurrent calls. ([#β195][gh-pull-0195])
v0.9.5
Added
- Add
optionally_get_withmethod tosyncandfuturecaches ([#β187][gh-pull-0187], by [@βLMJW][gh-LMJW]):- It is similar to
try_get_withbut takes an init closure/future returning anOption<V>instead ofResult<V, E>.
- It is similar to
- Add
by_refversion of API forget_with,optionally_get_with, andtry_get_withofsyncandfuturecaches ([#β190][gh-pull-0190], by [@βLMJW][gh-LMJW]):- They are similar to the non-
by_refversions but take a reference of the key instead of an owned key. If the key does not exist in the cache, the key will be cloned to create new entry in the cache.
- They are similar to the non-
Changed
- Change the CI to run Linux AArch64 tests on real hardware using Cirrus CI. ([#β180][gh-pull-0180], by [@βClSlaid][gh-ClSlaid])
Fixed
- Fix a typo in the documentation. ([#β189][gh-pull-0189], by [@βSwatinem][gh-Swatinem])
v0.9.4
Fixed
- Fix memory leak after dropping a
syncorfuturecache ([#β177][gh-pull-0177]):- This leaked the value part of cache entries.
Added
- Add an experimental
jsfeature to makeunsyncandsynccaches to compile forwasm32-unknown-unknowntarget (#β173, by [@βaspect][gh-aspect]):- Note that we have not tested if these caches work correctly in wasm32 environment.
v0.9.3
Added
- Add an option to the cache builder of the following caches not to start and use the
global thread pools for housekeeping tasks ([#β165][gh-pull-0165]):
sync::Cachesync::SegmentedCache
Fixed
- Ensure that the following caches will drop the value of evicted entries immediately
after eviction ([#β169][gh-pull-0169]):
sync::Cachesync::SegmentedCachefuture::Cache
v0.9.2
Fixed
- Fix segmentation faults in
syncandfuturecaches under heavy loads on many-core machine ([#β34][gh-issue-0034]):- NOTE: Although this issue was found in our testing environment ten months ago (v0.5.1), no user reported that they had the same issue.
- NOTE: In v0.8.4, we added a mitigation to reduce the chance of the segfaults occurring.
Changed
- Upgrade crossbeam-epoch from v0.8.2 to v0.9.9 ([#β157][gh-pull-0157]):
- This will make GitHub Dependabot to stop alerting about a security advisory [CVE-2022-23639][ghsa-qc84-gqf4-9926] for crossbeam-utils versions < 0.8.7.
- Moka v0.9.1 or older was not vulnerable to the CVE:
- Although the older crossbeam-epoch v0.8.2 depends on an affected version of crossbeam-utils, epoch v0.8.2 does not use the affected functions of utils. ([#β162][gh-issue-0162])
v0.9.1
Fixed
- Relax a too restrictive requirement
Arc<K>: Borrow<Q>for the key&Qof thecontains_key,getandinvalidatemethods in the following caches (withKas the key type) ([#β167][gh-pull-0167]). The requirement is nowK: Borrow<Q>so these methods will accept&[u8]for the key&Qwhen the stored keyKisVec<u8>.sync::Cachesync::SegmentedCachefuture::Cache
v0.9.0
Added
- Add support for eviction listener to the following caches ([#β145][gh-pull-0145]).
Eviction listener is a callback function that will be called when an entry is
removed from the cache:
sync::Cachesync::SegmentedCachefuture::Cache
- Add a crate feature
syncfor enabling and disablingsynccaches. ([#β141][gh-pull-0141] by [@βMilo123459][gh-Milo123459], and [#β143][gh-pull-0143])- This feature is enabled by default.
- When using experimental
dashcache, opting out ofsyncwill reduce the number of dependencies.
- Add a crate feature
loggingto enable optional log crate dependency. ([#β159][gh-pull-0159])- Currently log will be emitted only when an eviction listener has panicked.
nushell/nu-ansi-term (nu-ansi-term)
v0.50.0
What's Changed
- Rename the LICENCE file to LICENSE by @βnewpavlov in https://github.com/nushell/nu-ansi-term/pull/51
- gnu_legacy: with GNU, write foreground first, else background first. by @βsylvestre in https://github.com/nushell/nu-ansi-term/pull/54
- Bump to 0.50 by @βkubouch in https://github.com/nushell/nu-ansi-term/pull/56
New Contributors
- @βnewpavlov made their first contribution in https://github.com/nushell/nu-ansi-term/pull/51
- @βsylvestre made their first contribution in https://github.com/nushell/nu-ansi-term/pull/54
- @βkubouch made their first contribution in https://github.com/nushell/nu-ansi-term/pull/56
Full Changelog: https://github.com/nushell/nu-ansi-term/compare/v0.49.0...v0.50.0
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, check this box
This PR has been generated by Mend Renovate. View repository job log here.
@renovate[bot], please consider creating a changeset entry in /.changesets/. These instructions describe the process and tooling.
CI performance tests
- [x] step - Basic stress test that steps up the number of users over time
- [ ] events_without_dedup - Stress test for events with a lot of users and deduplication DISABLED
- [ ] xlarge-request - Stress test with 10 MB request payload
- [ ] xxlarge-request - Stress test with 100 MB request payload
- [ ] events_big_cap_high_rate - Stress test for events with a lot of users, deduplication enabled and high rate event with a big queue capacity
- [x] const - Basic stress test that runs with a constant number of users
- [ ] reload - Reload test over a long period of time at a constant rate of users
- [ ] large-request - Stress test with a 1 MB request payload
- [ ] events - Stress test for events with a lot of users and deduplication ENABLED
- [ ] step-jemalloc-tuning - Clone of the basic stress test for jemalloc tuning
- [ ] no-graphos - Basic stress test, no GraphOS.
Some notes:
- The aws deps are all actually at 1.0 now, but all the actual breaking changes seemed to happen in pre-1.0 versions.
- The
serde_yamldoes some major breaking stuff in ways that might actually be problematic. tonicis beyond my abilities in updating, but I think it's tied into all the OpenTelemetry packages and it might be worth breaking out of these grouped PRs because I don't think it can ever be updated in these big PRs.
Some notes:
- The aws deps are all actually at 1.0 now, but all the actual breaking changes seemed to happen in pre-1.0 versions.
- The
serde_yamldoes some major breaking stuff in ways that might actually be problematic.tonicis beyond my abilities in updating, but I think it's tied into all the OpenTelemetry packages and it might be worth breaking out of these grouped PRs because I don't think it can ever be updated in these big PRs.
I recommend that we wait for the original author to fix up the AWS changes, since it will require spending time to understand AWS signing properly by whomever fixes this.
The tonic changes are blocked by otel, so maybe we should add tonic and tonic-build into the same group as the otel stuff in our Cargo.toml?
The tower-http changes seem problematic and I read somewhere on the internet (can't find the reference right now) that there is a "problem" with tower-http 0.5.0. Can't remember the details. We should either wait for 0.5.1 or stick on 0.4.4 for now.
β Artifact update problem
Renovate failed to update artifacts related to this branch. You probably do not want to merge this PR as-is.
β» Renovate will retry this branch, including artifacts, only when one of the following happens:
- any of the package files in this branch needs updating, or
- the branch becomes conflicted, or
- you click the rebase/retry checkbox if found above, or
- you rename this PR's title to start with "rebase!" to trigger it manually
The artifact failure details are included below:
File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path apollo-router/Cargo.toml --workspace
Updating crates.io index
error: failed to select a version for `reqwest`.
... required by package `apollo-router v1.46.0 (/tmp/renovate/repos/github/apollographql/router/apollo-router)`
... which satisfies path dependency `apollo-router` (locked to 1.46.0) of package `add-timestamp-header v0.1.0 (/tmp/renovate/repos/github/apollographql/router/examples/add-timestamp-header/rhai)`
versions that meet the requirements `^0.12.0` are: 0.12.4, 0.12.3, 0.12.2, 0.12.1, 0.12.0
the package `apollo-router` depends on `reqwest`, with features: `rustls-native-certs` but `reqwest` does not have these features.
It has an optional dependency with that name, but that dependency uses the "dep:" syntax in the features table, so it does not have an implicit feature with that name.
failed to select a version for `reqwest` which could resolve this conflict
File name: xtask/Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path xtask/Cargo.toml --package [email protected] --precise 0.22.1
Updating crates.io index
error: failed to select a version for the requirement `base64 = "^0.21"`
candidate versions found which didn't match: 0.22.1
location searched: crates.io index
required by package `reqwest v0.11.18`
... which satisfies dependency `reqwest-crate = "^0.11"` (locked to 0.11.18) of package `graphql_client v0.14.0`
... which satisfies dependency `graphql_client = "^0.14.0"` (locked to 0.14.0) of package `xtask v1.5.0 (/tmp/renovate/repos/github/apollographql/router/xtask)`
perhaps a crate was updated and forgotten to be re-vendored?
File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path apollo-router-scaffold/Cargo.toml --workspace
Updating crates.io index
error: failed to select a version for `reqwest`.
... required by package `apollo-router v1.46.0 (/tmp/renovate/repos/github/apollographql/router/apollo-router)`
... which satisfies path dependency `apollo-router` (locked to 1.46.0) of package `add-timestamp-header v0.1.0 (/tmp/renovate/repos/github/apollographql/router/examples/add-timestamp-header/rhai)`
versions that meet the requirements `^0.12.0` are: 0.12.4, 0.12.3, 0.12.2, 0.12.1, 0.12.0
the package `apollo-router` depends on `reqwest`, with features: `rustls-native-certs` but `reqwest` does not have these features.
It has an optional dependency with that name, but that dependency uses the "dep:" syntax in the features table, so it does not have an implicit feature with that name.
failed to select a version for `reqwest` which could resolve this conflict
File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path fuzz/Cargo.toml --workspace
Updating crates.io index
error: failed to select a version for `reqwest`.
... required by package `apollo-router v1.46.0 (/tmp/renovate/repos/github/apollographql/router/apollo-router)`
... which satisfies path dependency `apollo-router` (locked to 1.46.0) of package `add-timestamp-header v0.1.0 (/tmp/renovate/repos/github/apollographql/router/examples/add-timestamp-header/rhai)`
versions that meet the requirements `^0.12.0` are: 0.12.4, 0.12.3, 0.12.2, 0.12.1, 0.12.0
the package `apollo-router` depends on `reqwest`, with features: `rustls-native-certs` but `reqwest` does not have these features.
It has an optional dependency with that name, but that dependency uses the "dep:" syntax in the features table, so it does not have an implicit feature with that name.
failed to select a version for `reqwest` which could resolve this conflict
File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path Cargo.toml --workspace
Updating crates.io index
error: failed to select a version for `reqwest`.
... required by package `apollo-router v1.46.0 (/tmp/renovate/repos/github/apollographql/router/apollo-router)`
... which satisfies path dependency `apollo-router` (locked to 1.46.0) of package `add-timestamp-header v0.1.0 (/tmp/renovate/repos/github/apollographql/router/examples/add-timestamp-header/rhai)`
versions that meet the requirements `^0.12.0` are: 0.12.4, 0.12.3, 0.12.2, 0.12.1, 0.12.0
the package `apollo-router` depends on `reqwest`, with features: `rustls-native-certs` but `reqwest` does not have these features.
It has an optional dependency with that name, but that dependency uses the "dep:" syntax in the features table, so it does not have an implicit feature with that name.
failed to select a version for `reqwest` which could resolve this conflict
β οΈ Artifact update problem
Renovate failed to update artifacts related to this branch. You probably do not want to merge this PR as-is.
β» Renovate will retry this branch, including artifacts, only when one of the following happens:
- any of the package files in this branch needs updating, or
- the branch becomes conflicted, or
- you click the rebase/retry checkbox if found above, or
- you rename this PR's title to start with "rebase!" to trigger it manually
The artifact failure details are included below:
File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path fuzz/subgraph/Cargo.toml --workspace
warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
package: /tmp/renovate/repos/github/apollographql/router/apollo-router-scaffold/scaffold-test/Cargo.toml
workspace: /tmp/renovate/repos/github/apollographql/router/Cargo.toml
Updating crates.io index
error: failed to select a version for `axum`.
... required by package `apollo-router v1.52.1 (/tmp/renovate/repos/github/apollographql/router/apollo-router)`
... which satisfies path dependency `apollo-router` (locked to 1.52.1) of package `add-timestamp-header v0.1.0 (/tmp/renovate/repos/github/apollographql/router/examples/add-timestamp-header/rhai)`
versions that meet the requirements `^0.7.0` are: 0.7.5, 0.7.4, 0.7.3, 0.7.2, 0.7.1, 0.7.0
the package `apollo-router` depends on `axum`, with features: `headers` but `axum` does not have these features.
failed to select a version for `axum` which could resolve this conflict
File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path apollo-router/Cargo.toml --workspace
warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
package: /tmp/renovate/repos/github/apollographql/router/apollo-router-scaffold/scaffold-test/Cargo.toml
workspace: /tmp/renovate/repos/github/apollographql/router/Cargo.toml
Updating crates.io index
error: failed to select a version for `axum`.
... required by package `apollo-router v1.52.1 (/tmp/renovate/repos/github/apollographql/router/apollo-router)`
... which satisfies path dependency `apollo-router` (locked to 1.52.1) of package `add-timestamp-header v0.1.0 (/tmp/renovate/repos/github/apollographql/router/examples/add-timestamp-header/rhai)`
versions that meet the requirements `^0.7.0` are: 0.7.5, 0.7.4, 0.7.3, 0.7.2, 0.7.1, 0.7.0
the package `apollo-router` depends on `axum`, with features: `headers` but `axum` does not have these features.
failed to select a version for `axum` which could resolve this conflict
File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path fuzz/Cargo.toml --workspace
warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
package: /tmp/renovate/repos/github/apollographql/router/apollo-router-scaffold/scaffold-test/Cargo.toml
workspace: /tmp/renovate/repos/github/apollographql/router/Cargo.toml
Updating crates.io index
error: failed to select a version for `axum`.
... required by package `apollo-router v1.52.1 (/tmp/renovate/repos/github/apollographql/router/apollo-router)`
... which satisfies path dependency `apollo-router` (locked to 1.52.1) of package `add-timestamp-header v0.1.0 (/tmp/renovate/repos/github/apollographql/router/examples/add-timestamp-header/rhai)`
versions that meet the requirements `^0.7.0` are: 0.7.5, 0.7.4, 0.7.3, 0.7.2, 0.7.1, 0.7.0
the package `apollo-router` depends on `axum`, with features: `headers` but `axum` does not have these features.
failed to select a version for `axum` which could resolve this conflict
File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path Cargo.toml --workspace
warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
package: /tmp/renovate/repos/github/apollographql/router/apollo-router-scaffold/scaffold-test/Cargo.toml
workspace: /tmp/renovate/repos/github/apollographql/router/Cargo.toml
Updating crates.io index
error: failed to select a version for `axum`.
... required by package `apollo-router v1.52.1 (/tmp/renovate/repos/github/apollographql/router/apollo-router)`
... which satisfies path dependency `apollo-router` (locked to 1.52.1) of package `add-timestamp-header v0.1.0 (/tmp/renovate/repos/github/apollographql/router/examples/add-timestamp-header/rhai)`
versions that meet the requirements `^0.7.0` are: 0.7.5, 0.7.4, 0.7.3, 0.7.2, 0.7.1, 0.7.0
the package `apollo-router` depends on `axum`, with features: `headers` but `axum` does not have these features.
failed to select a version for `axum` which could resolve this conflict
File name: Cargo.lock
Command failed: cargo update --config net.git-fetch-with-cli=true --manifest-path apollo-router-scaffold/scaffold-test/Cargo.toml --workspace
warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
package: /tmp/renovate/repos/github/apollographql/router/apollo-router-scaffold/scaffold-test/Cargo.toml
workspace: /tmp/renovate/repos/github/apollographql/router/Cargo.toml
Updating crates.io index
error: failed to select a version for `axum`.
... required by package `apollo-router v1.52.1 (/tmp/renovate/repos/github/apollographql/router/apollo-router)`
... which satisfies path dependency `apollo-router` (locked to 1.52.1) of package `add-timestamp-header v0.1.0 (/tmp/renovate/repos/github/apollographql/router/examples/add-timestamp-header/rhai)`
versions that meet the requirements `^0.7.0` are: 0.7.5, 0.7.4, 0.7.3, 0.7.2, 0.7.1, 0.7.0
the package `apollo-router` depends on `axum`, with features: `headers` but `axum` does not have these features.
failed to select a version for `axum` which could resolve this conflict