All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
v0.3.0 - 2024-04-28
- Bump Minimum Supported Rust Version from 1.56 to 1.75.
- Get rid of
async-trait
. Rust 1.75 included support forasync fn
in traits, andultra-batch
now uses this instead of theasync-trait
crate. This means allimpl
s ofFetcher
should no longer use the#[async_trait]
macro. - Rename
Batcher
toBatchFetcher
. - Update
BatchFetcherBuilder::label()
to take anInto<Cow<'static, str>>
instead ofInto<String>
. This makes it cheaper to cloneBatchFetcher
, since cloning a static string is now much cheaper.
- Added
BatchExecutor
type andExecutor
trait. These types are similar toBatchFetcher
andFetcher
, but are more suitable for database mutations (such as bulk inserts/deletes), or for cases where you want more fine-grained control over how fetching works.
- Remove some unnecessary associated type bounds on
Fetcher::Error
.
v0.2.0 - 2022-02-15
- Upgrade from Tokio 0.2.x to Tokio 1.0.x (#1). Thanks to @maldrake for contributing this change!
- Rename
Batcher::new(/* ... */).build()
toBatcher::build(/* ... */).finish()
. These new function names are meant to be more idiomatic, and additionally silence a Clipping warning in the project. - Bump the Minimum Supported Rust Version to v1.56. The MSRV wasn't tracked previously, but
ultra-batch
did previously work as far back as Rust 1.45.0. Future changes to the MSRV will be documented in the Changelog going forward.
- Switch from log to Tracing crate for logging. For compatibility, the
log
feature ofultra-batch
can be enabled. This uses thelog
feature of Tracing, so see the Tracing docs on thelog
feature for more details.
v0.1.1 - 2020-08-20
- Implement logging using Rust's log crate. If you're using
env_logger
orslog-envlogger
, then you can output logs in your app by setting the environment variableRUST_LOG=ultra_batch=debug
orRUST_LOG=ultra_batch=trace
. - Add
BatcherBuilder.label
method to set a label when building aBatcher
. Currently, this is used for clearer log messages and panic messages when working with multipleBatcher
s.
- Use
chashmap::CHashMap
to cache values (rather than atokio::sync::RwLock<HashMap<K, V>>
).CHashMap
has a very similar interface to a standardHashMap
, except it's designed for use in concurrent contexts without needing an explict lock. In practice, this seems to reduce lock contention.
v0.1.0 - 2020-08-16
- Initial release!