This post has been de-listed
It is no longer included in search results and normal feeds (front page, hot posts, subreddit posts, etc). It remains visible only via the author's post history.
New Features:
- Major redesign from enum to union based for alignment reasons (there is a long story to go with this, but very happy with the new design overall)
- Major performance improvements due to this! Benchmarks
- Core types renamed to better reflect their usage:
LocalStr
andSharedStr
- Added APIs for much more robust ability to wrap and unwrap with precise control
- Updated README and rustdoc for better linkage and clarity
- Changed to
std
by default (no_std
still available with no default features)
I have some exciting ideas I'm working on including new storage types and capabilities, but I want to release early and often, and the new union work should be ready to go. Most importantly, this fixes the alignment bug in 0.8.0 and moves to the new naming I plan to use going forward.
NOTE: Apologies on my comment on API stability in the last release. I did not realize how much change was still needed, so this time I won't make that same mistake. While I don't have any major API overhauls in mind, that could change at any time pre-1.0. I expect at least a 0.10.0 and 0.11.0 release if not a couple more before 1.0 yet.
UPDATE: There is a simple fix to the issue of const generic type parameter sizes causing a very bad time for those implementing custom string types. I'm adding a new mem size/alignment check to each constructor function and issuing a runtime panic if not correct. While it would be ideal to be compile-time, this doesn't seem to be possible atm on stable Rust, however, this check is still 'constant' in that the branch is based on a const field and optimized away, so there is no performance penalty for the check. I will be issuing this in a 0.9.1 update shortly.
UPDATE 2: 0.9.1 is out
Post Details
- Posted
- 2 years ago
- Reddit URL
- View post on reddit.com
- External URL
- reddit.com/r/rust/commen...