NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2962 most downloaded on crates.io
A multithreaded and single threaded string interner that allows strings to be cached with a minimal memory footprint, associating them with a unique key that can be used to retrieve them at any time.
Last release 2 years ago
no release in 18 months
Release timing varies
gaps range from 2 weeks to 1.6 years
Most releases are documented
notes for 11 of 15 stable releases
3 versions withdrawn
withdrawn after publishing
7 years old
18 releases · first in 2020
### Changed - Bumped MSRV to 1.71.0 - Updated hashbrown to 0.14.0 - Updated dashmap to 0.6.0
Nothing published for this version
Nothing published for this version
One column per quarter.
Interning empty strings no longer counts towards the memory limit of any interners. Empty strings now take up zero bytes and therefore will neither al
ThreadedRodeo to use a new lockfree interner that no longer requires taking a mutex in order to allocate
within itReader and Resolver for &T and &mut T references to types that implement
those traits, and Interner likewise for &mut TClone implementation for RodeoRodeo::try_clone() and Rodeo::try_clone_from() functionsChanged the Debug implementations of all key types to be more condensed
Debug implementations of all key types to be more condensed.into_inner() method to each key type that exposes the backing NonZeroU* it's made ofFixed compile error in release mode when using the serialize feature
serialize featureImplemented Interner, Reader and Resolver for &ThreadedRodeo
Interner, Reader and Resolver for &ThreadedRodeoAbomonation for key types under the abomonation feature flagDeepSizeOf for key types under the deepsize feature flagThreadedRodeo.into_reader() and .into_resolver() traits from Interner and Reader into the new IntoReader, IntoResolver and IntoReaderAndResolver traitsThreadedRodeoUpdated dependencies to latest versions
Interner, Reader and Resolver default their generic arguments to SpurAdded the MemoryLimits struct for creating memory limits on interners
MemoryLimits struct for creating memory limits on internersRodeo & ThreadedRodeo the ability to be given a hard memory capacity, currently only limiting the amount of memory allocated within the arena it useswith_memory_limits, with_capacity_and_memory_limits and with_capacity_memory_limits_and_hasher methods to Rodeo & ThreadedRodeo for creating interners with memory limitsset_memory_limits to Rodeo & ThreadedRodeo for in-flight modification of memory limitscurrent_memory_usage and max_memory_usage methods to Rodeo & ThreadedRodeo for introspection of current memory usage maximum memory usageFromIterator, Extend and IntoIterator implementations for RodeoExactSizeIterator implementations for Iter and StringsIntoIterator implementations for RodeoReader and RodeoResolverinline-more feature to enable inlining (off by default)FromIterator and Extend implementations to ThreadedRodeo.contains() and the .contains_key() methods to Rodeo, ThreadedRodeo, RodeoReader and RodeoResolverSerialize and Deserialize for Rodeo, ThreadedRodeo, RodeoReader and RodeoResolverEq and PartialEq implementations through the various internersIndex implementations for all internersInterner, Reader and Resolver traitsRodeo methodsKey::into_usize safe#[inline] by default, for that use the inline-more feature.get_or_intern() and .get_or_intern_static() now return a Result<T, LassoError> to allow intelligently handling failureAdded the get_or_intern_static and try_get_or_intern_static methods to ThreadedRodeo (Thanks to @jonas-schievink)
get_or_intern_static and try_get_or_intern_static methods to ThreadedRodeo (Thanks to @jonas-schievink)This version really wouldn't be possible without the amazing work of @CAD97. They were an amazing asset in improving the memory efficiency of lasso an
This version really wouldn't be possible without the amazing work of @CAD97. They were an amazing asset in improving the memory efficiency of lasso and I can't thank them enough
get_or_intern_static and try_get_or_intern_static methods for zero-copy static string internmentCapacity struct for better internment estimates and more accurate pre-allocationRodeo and RodeoReader now use less memory since they only store their interned strings' pointers onceRodeo and RodeoReader use a different hashing strategy for their maps, instead of using a hashed string and key pair, they now use the key hashed as their paired string. This allows for decreased memory usageVec is used). This allows for fewer allocations to happen as more strings are internedhashbrown is now a default dependency due to HashMap's raw_api not being stableDebug implementations to cut the excess and unneeded outputStrings and Iter structswith_capacity methods now use the Capacity structhashbrown-table and nightly featuresNothing published for this version
### Fixed - Fixed Send for Rodeo
Send for RodeoNothing published for this version
Removed blanket impls for u8-usize & the nonzero varieties
try_get_or_internhashbrownparking_lotno-std featureKey::try_from_usizeMiniSpurMicroCordu8-usize & the nonzero varietiesRodeo typesKeyKeytry_resolves and resolve_uncheckedsstrings() and iter() methods to Rodeo, RodeoResolver and RodeoReaderLasso to ThreadedRodeoReadOnlyLasso to RodeoReaderResolverLasso to RodeoResolverKey::from_usizeSend and Sync bounds for ThreadedRodeo, RodeoResolver and RodeoReaderget_or_intern to be try_get_or_intern.expect()multi-threaded is now actually disabled by default.intern from all structsRodeo and ThreadedRodeo no longer implement CloneThreadedRodeoThreadedRodeo, for real this timeNothing published for this version
Nothing published for this version
<!-- next-url --> [Unreleased]: https://github.com/Kixiron/lasso/compare/v0.7.3...HEAD [0.7.3]: https://github.com/Kixiron/lasso/compare/v0.7.2...v0.7
<!-- next-url --> [Unreleased]: https://github.com/Kixiron/lasso/compare/v0.7.3...HEAD [0.7.3]: https://github.com/Kixiron/lasso/compare/v0.7.2...v0.7.3 [0.7.2]: https://github.com/Kixiron/lasso/compare/v0.7.1...v0.7.2 [0.7.1]: https://github.com/Kixiron/lasso/compare/v0.7.0...v0.7.1 [0.7.0]: https://github.com/Kixiron/lasso/compare/v0.6.0...v0.7.0 [0.6.0]: https://github.com/Kixiron/lasso/compare/v0.5.1...v0.6.0 [0.5.1]: https://github.com/Kixiron/lasso/compare/v0.5.0...v0.5.1 [0.5.0]: https://github.com/Kixiron/lasso/compare/v0.4.1...v0.5.0 [0.4.1]: https://github.com/Kixiron/lasso/compare/v0.4.0...v0.4.1 [0.4.0]: https://github.com/Kixiron/lasso/compare/v0.3.1...v0.4.0 [0.3.1]: https://github.com/Kixiron/lasso/compare/v0.3.0...v0.3.1 [0.3.0]: https://github.com/Kixiron/lasso/compare/v0.3.0
Your coding agent can read these notes before it upgrades. Set up the MCP server →