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::serve
directly with aRouter
orMethodRouter
(#β2586) -
fixed:
h2
is no longer pulled as a dependency unless thehttp2
feature is enabled (#β2605)
v0.7.4
: axum - v0.7.4
- fixed: Fix performance regression present since axum 0.7.0 (#β2483)
-
fixed: Improve
debug_handler
on tuple response types (#β2201) -
added: Add
must_use
attribute toServe
andWithGracefulShutdown
(#β2484) -
added: Re-export
axum_core::body::BodyDataStream
from axum
v0.7.3
: axum - v0.7.3
-
added:
Body
implementsFrom<()>
now (#β2411) - change: Update version of multer used internally for multipart (#β2433)
- change: Update tokio-tungstenite to 0.21 (#β2435)
-
added: Enable
tracing
feature by default (#β2460) -
added: Support graceful shutdown on
serve
(#β2398) -
added:
RouterIntoService
implementsClone
(#β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
B
type param has been removed) (#β1751 and #β1789):-
FromRequestParts
-
FromRequest
-
HandlerService
-
HandlerWithoutStateExt
-
Handler
-
LayeredFuture
-
Layered
-
MethodRouter
-
Next
-
RequestExt
-
RouteFuture
-
Route
-
Router
-
-
breaking: axum no longer re-exports
hyper::Body
as that type is removed in hyper 1.0. Instead axum has its own body type ataxum::body::Body
(#β1751) -
breaking:
extract::BodyStream
has been removed asbody::Body
implementsStream
andFromRequest
directly (#β1751) -
breaking: Change
sse::Event::json_data
to useaxum_core::Error
as its error type (#β1762) -
breaking: Rename
DefaultOnFailedUpdgrade
toDefaultOnFailedUpgrade
(#β1664) -
breaking: Rename
OnFailedUpdgrade
toOnFailedUpgrade
(#β1664) -
breaking:
TypedHeader
has been move toaxum-extra
(#β1850) -
breaking: Removed re-exports of
Empty
andFull
. Useaxum::body::Body::empty
andaxum::body::Body::from
respectively (#β1789) -
breaking: The response returned by
IntoResponse::into_response
must useaxum::body::Body
as the body type.axum::response::Response
does this (#β1789) -
breaking: Removed the
BoxBody
type alias and itsbox_body
constructor. Useaxum::body::Body::new
instead (#β1789) -
breaking: Remove
RawBody
extractor.axum::body::Body
implementsFromRequest
directly (#β1789) -
breaking: The following types from
http-body
no longer implementIntoResponse
:-
Full
, useBody::from
instead -
Empty
, useBody::empty
instead -
BoxBody
, useBody::new
instead -
UnsyncBoxBody
, useBody::new
instead -
MapData
, useBody::new
instead -
MapErr
, useBody::new
instead
-
-
added: Add
axum::extract::Request
type alias where the body isaxum::body::Body
(#β1789) -
added: Add
Router::as_service
andRouter::into_service
to workaround type inference issues when callingServiceExt
methods on aRouter
(#β1835) -
breaking: Removed
axum::Server
as 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_service
will no longer inherit fallbacks (#β1956) -
fixed: Don't remove the
Sec-WebSocket-Key
header inWebSocketUpgrade
(#β1972) -
added: Add
axum::extract::Query::try_from_uri
(#β2058) -
added: Implement
IntoResponse
forBox<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
IntoResponse
for(R,) where R: IntoResponse
(#β2143) - changed: For SSE, add space between field and value for compatibility (#β2149)
-
added: Add
NestedPath
extractor (#β1924) -
added: Add
handle_error
function to existingServiceExt
trait (#β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
FromRequestParts
forhttp::request::Parts
(#β2328) -
added: Implement
FromRequestParts
forhttp::Extensions
(#β2328) -
fixed: Clearly document applying
DefaultBodyLimit
to individual routes (#β2157)
marshallpierce/rust-base64 (base64)
v0.22.1
- Correct the symbols used for the predefined
alphabet::BIN_HEX
.
v0.22.0
-
DecodeSliceError::OutputSliceTooSmall
is now conservative rather than precise. That is, the error will only occur if the decoded output cannot fit, meaning thatEngine::decode_slice
can now be used with exactly-sized output slices. As part of this,Engine::internal_decode
now returnsDecodeSliceError
instead ofDecodeError
, but that is not expected to affect any external callers. -
DecodeError::InvalidLength
now 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 eitherInvalidLength
orInvalidByte
being 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
Debug
andClone
impls for the general purpose Engine
v0.21.4
- Make
encoded_len
const
, allowing the creation of arrays sized to encode compile-time-known data lengths
v0.21.3
- Implement
source
instead ofcause
on 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-api
andconsole-subscriber
, as it changes the publictonic
dependency to a semver-incompatible version. This breaks compatibility withtonic
0.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-web
feature (#β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::style
-
env_logger::fmt::Formatter::default_styled_level
-
env_logger::fmt::Style
-
env_logger::fmt::Color
-
env_logger::fmt::StyledValue
-
- Removed
env_logger::filter
in 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_COLOR
andCLICOLOR_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
color
is disabled
v0.10.1
Performance
- Avoid hashing directives and accessing RNG on startup
Documentation
- Tweak
RUST_LOG
documentation
v0.10.0
MSRV changed to 1.60 to hide optional dependencies
Fixes
- Resolved soundness issue by switching from
atty
tois-terminal
Breaking Changes
To open room for changing dependencies:
- Renamed
termcolor
feature tocolor
- Renamed
atty
feature toauto-color
graphql-rust/graphql-client (graphql_client)
v0.14.0
- Add support for GraphQLβs
extend type
directive - Add support for
graphqls://
schema - Expose
generate_module_token_stream_from_string
to allow custom macro wrappers
withoutboats/heck (heck)
v0.5.0
- Add
no_std
support. - Remove non-additive
unicode
feature. The library now useschar::is_alphanumeric
instead of theunicode-segmentation
library to determine word boundaries in all cases.
rust-itertools/itertools (itertools)
v0.13.0
Breaking
- Removed implementation of
DoubleEndedIterator
forConsTuples
(#β853) - Made
MultiProduct
fused and fixed on an empty iterator (#β835, #β834) - Changed
iproduct!
to return tuples for maxi one iterator too (#β870) - Changed
PutBack::put_back
to 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
DoubleEndedIterator
forProcessResults
(#β910) - Implemented
Debug
forFormatWith
(#β931) - Added
Itertools::get
(#β891)
Changed
- Deprecated
Itertools::group_by
(renamedchunk_by
) (#β866, #β879) - Deprecated
unfold
(usestd::iter::from_fn
instead) (#β871) - Optimized
GroupingMapBy
(#β873, #β876) - Relaxed
Fn
bounds toFnMut
indiff_with, Itertools::into_group_map_by
(#β886) - Relaxed
Debug/Clone
bounds forMapInto
(#β889) - Documented the
use_alloc
feature (#β887) - Optimized
Itertools::set_from
(#β888) - Removed badges in
README.md
(#β890) - Added "no-std" categories in
Cargo.toml
(#β894) - Fixed
Itertools::k_smallest
on 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_equal
for iterators longer thani32::MAX
(#β932) - Updated the
must_use
message of non-lazyKMergeBy
andTupleCombinations
(#β939)
Notable Internal Changes
Stranger6667/jsonschema-rs (jsonschema)
v0.18.0
Added
- Custom keywords support. #β379
- Expose
JsonPointerNode
that can be converted intoJSONPointer
. This is needed for the upcoming custom validators support.
Changed
- Bump
base64
to0.22
. - Bump
clap
to4.5
. - Bump
fancy-regex
to0.13
. - Bump
fraction
to0.15
. - Bump
memchr
to2.7
. - Bump
once_cell
to1.19
. - Bump
percent-encoding
to2.3
. - Bump
regex
to1.10
. - Bump
url
to2.5
. - Build CLI only if the
cli
feature is enabled. -
BREAKING: Extend
CompilationOptions
to support more ways to define custom format checkers (for example in Python bindings). In turn it changesValidationErrorKind::Format
to contain aString
instead of a&'static str
.
Fixed
- Incorrect
schema_path
when multiple errors coming from the$ref
keyword #β426
Performance
- Optimize building
JSONPointer
for 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-'static
generic 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_arguments
warnings in the generated code. This is most useful when mocking static functions with exactly 7 arguments. (#β487) -
Fixed
unused_attributes
warnings 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.returning
method. (#β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
predicates
dependency. Reexports no longer includedifflib
,normalize-line-endings
,regex
andfloat-cmp
features. (#β517)
moka-rs/moka (moka)
v0.12.7
Changed
- Ensure a single call to
run_pending_tasks
to evict as many entries as possible from the cache ([#β417][gh-pull-0417]).
v0.12.6
Fixed
- Fixed a bug in
future::Cache
that pendingrun_pending_tasks
calls may cause infinite busy loop in an internalschedule_write_op
method ([#β412][gh-issue-0412]):- This bug was introduced in
v0.12.0
when the background threads were removed fromfuture::Cache
. - This bug can occur when
run_pending_task
method is called by user code while cache is receiving a very high number of concurrent cache write operations. (e.g.insert
,get_with
,invalidate
etc.) - When it occurs, the
schedule_write_op
method 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-lock
crate used byfuture::Cache
fromv2.4
to 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_policy
method of the cache builder with a policy obtained byEvictionPolicy::lru
function. - 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-epoch
to run GC when dropping a cache ([#β384][gh-pull-0384]):-
crossbeam-epoch
crate 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-epoch
does 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-epoch
to 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
entry
andentry_by_ref
APIs have the following methods:-
and_upsert_with
method to insert or update the entry. -
and_compute_with
method to insert, update, remove or do nothing on the entry. -
and_try_compute_with
method, which is similar to above but returnsResult
.
-
- Now the
Fixed
- Raised the version requirement of the
quanta
from>=0.11.0, <0.12.0
to>=0.12.2, <0.13.0
to 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_count
method will keep returning a non zero value after calling theinvalidate_all
method (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::Cache
that 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.0
do 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.0
has major breaking changes on the API and internal behavior.
-
sync
caches are no longer enabled by default: Please use a crate featuresync
to enable it. -
No more background threads: All cache types
future::Cache
,sync::Cache
, andsync::SegmentedCache
no longer spawn background threads.- The
scheduled-thread-pool
crate was removed from the dependency. - Because of this change, many private methods and some public methods under the
future
module were converted toasync
methods. You may need to add.await
to your code for those methods.
- The
-
Immediate notification delivery: The
notification::DeliveryMode
enum for the eviction listener was removed. Now all cache types behave as if theImmediate
delivery mode is specified.
Please read the MIGRATION-GUIDE.md for more details.
Changed
- Removed the thread pool from
future
cache ([#β294][gh-pull-0294]) andsync
caches ([#β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_hash
method gets the currentInstant
too early when eviction listener is enabled. ([#β322][gh-issue-0322])
v0.11.3
Fixed
- Fixed a bug in
sync::Cache
andsync::SegmentedCache
where memory usage kept increasing when the eviction listener was set with theImmediate
delivery 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_cpus
crate 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
FrequencySketch
in debug build. ([#β272][gh-pull-0272])
Added
- Added some example programs to the
examples
directory. ([#β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
sync
andfuture
caches 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
remove
method to thesync
andfuture
caches (#β255):- Like the
invalidate
method, 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
NonNull
pointer derived from a shared reference. ([#β259][gh-pull-0259])
Removed
- Removed
unsync
cache 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
quanta
crate to v0.11.0. ([#β251][gh-pull-0251])- This resolved "[RUSTSEC-2020-0168]:
mach
is unmaintained" ([#β243][gh-issue-0243]) by replacingmach
withmach2
. -
quanta
v0.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
future
cache'sblocking().invalidate(key)
method does not trigger the eviction listener. ([#β242][gh-issue-0242])
Changed
- Now
sync
andfuture
caches 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::Cache
-
moka::dash::Cache
βmini_moka::sync::Cache
-
- The following methods have been removed from
sync
andfuture
caches ([#β199][gh-pull-0199]). They were deprecated in v0.8.0:-
get_or_insert_with
(Useget_with
instead) -
get_or_try_insert_with
(Usetry_get_with
instead)
-
- The following methods of
sync
andfuture
caches have been marked as deprecated ([#β193][gh-pull-0193]):-
get_with_if
(Useentry
API'sor_insert_with_if
instead)
-
Added
- Add
entry
andentry_by_ref
APIs tosync
andfuture
caches ([#β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_default
-
or_insert
-
or_insert_with
-
or_insert_with_if
-
or_optionally_insert_with
-
or_try_insert_with
-
- The above methods return
Entry
type, which providesis_fresh
method 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_with
method offuture
cache inflates future size by ~7x, sometimes causing stack overflow ([#β212][gh-issue-0212]):- This was caused by a known
rustc
optimization 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
sync
cache will disable notifications. ([#β207][gh-issue-0207])
Added
- Add examples for
build_with_hasher
method of cache builders. ([#β216][gh-pull-0216])
v0.9.6
Fixed
- Prevent race condition in
get_with
family methods to avoid evaluatinginit
closure or future multiple times in concurrent calls. ([#β195][gh-pull-0195])
v0.9.5
Added
- Add
optionally_get_with
method tosync
andfuture
caches ([#β187][gh-pull-0187], by [@βLMJW][gh-LMJW]):- It is similar to
try_get_with
but takes an init closure/future returning anOption<V>
instead ofResult<V, E>
.
- It is similar to
- Add
by_ref
version of API forget_with
,optionally_get_with
, andtry_get_with
ofsync
andfuture
caches ([#β190][gh-pull-0190], by [@βLMJW][gh-LMJW]):- They are similar to the non-
by_ref
versions 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
sync
orfuture
cache ([#β177][gh-pull-0177]):- This leaked the value part of cache entries.
Added
- Add an experimental
js
feature to makeunsync
andsync
caches to compile forwasm32-unknown-unknown
target (#β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::Cache
-
sync::SegmentedCache
-
Fixed
- Ensure that the following caches will drop the value of evicted entries immediately
after eviction ([#β169][gh-pull-0169]):
-
sync::Cache
-
sync::SegmentedCache
-
future::Cache
-
v0.9.2
Fixed
- Fix segmentation faults in
sync
andfuture
caches 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&Q
of thecontains_key
,get
andinvalidate
methods in the following caches (withK
as the key type) ([#β167][gh-pull-0167]). The requirement is nowK: Borrow<Q>
so these methods will accept&[u8]
for the key&Q
when the stored keyK
isVec<u8>
.-
sync::Cache
-
sync::SegmentedCache
-
future::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::Cache
-
sync::SegmentedCache
-
future::Cache
-
- Add a crate feature
sync
for enabling and disablingsync
caches. ([#β141][gh-pull-0141] by [@βMilo123459][gh-Milo123459], and [#β143][gh-pull-0143])- This feature is enabled by default.
- When using experimental
dash
cache, opting out ofsync
will reduce the number of dependencies.
- Add a crate feature
logging
to 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_yaml
does some major breaking stuff in ways that might actually be problematic. -
tonic
is 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_yaml
does some major breaking stuff in ways that might actually be problematic.tonic
is 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