anymap
Chris Morgan []
Remove obsolete items from .gitignore

Now the records are ancient.
Chris Morgan []
Add a local testing script
Chris Morgan []
Implement From, not Into
Chris Morgan []
More documentation tweaks to clarify and explain
Chris Morgan []
Drop anymap::Any in favour of std::any::Any

Casualties: Any + Sync, CloneAny + Sync. Acceptable losses.
Chris Morgan []
Flatten anymap::any out of existence

Namespaces are one honking great idea, but flat is better than nested.

anymap::raw still makes sense.
Chris Morgan []
Tweak docs, especially around safety

No semantic changes.
Chris Morgan []
Make TypeIdHasher safe, bump MSRV

Wait a few years and nice things stabilise!

• u64::from_ne_bytes([u8; 8]) is stable in 1.32.0
• TryFrom<&[u8]> for [u8; 8] is stable in 1.34.0

(There are other things I’m touching today that also require a more mild
MSRV bump, but this is the most I *need* at this time.)
Chris Morgan []
Refactor to avoid a spurious compatibility warning

Explained in the SAFETY comment. I’m not happy about *doing* this, but
it will make *using* this crate easier, since future-compatibility lints
make noise on bin crate builds, so this was polluting other people’s
code and making life harder for users.

I have traded one evil (a spurious warning) for another (unsafe code).
Chris Morgan []
Unravel the parbroken define! macro

Turns out its commenting technique was completely broken—the attributes
have to be attached to an item *inside* the macro, not outside. And
judging by https://docs.rs/anymap/0.11.0/anymap/any/trait.CloneAny.html,
it was broken from the start, and I never noticed. Sigh. Now, you get a
warning that it’s not going to work like you want. Good stuff.

Well, that macro wasn’t a great idea anyway. Doing without it ends up a
little longer, and risks inconsistent editing, but is decidedly easier
to read.
Chris Morgan []
No more bare trait objects: use `dyn Trait` syntax
Chris Morgan []
Refresh Cargo.toml, README.md

Remove superfluous things, update useful things.
Chris Morgan []
Add the BlueOak-1.0.0 license

I prefer to use BlueOak-1.0.0 now; It wasn’t around back in 2017.

There are a number of commits in this repository not made by me, all
from before Rust 1.0.0:

• f1710353a039c1d5e95d15bb54effd7cab8e047f (Robert Straw; trivial: matching std enum namespacing breakage)
• de091453093fb5139de71b085411d2fad1a52275 (Robert Straw; trivial: std enum namespacing breakage)
• 2e37f0d1aebbd0c56acd0de7b46d14cd71d3e134 (Jonathan Reem; added AnyMap::contains, which had become obvious for Rust collection parity)
• 8b30c87fe6cf514544d8bc68989631daac8aeec1 (tivek; trivial: Rust syntax change in integer literal inference)
• c9d196be5f40fb0c6e53c65fa072aea60de8c3f1 (Jonathan Reem; trivial: version bump)
• 330bc5aa1e4b1644a19b3751ee3b65c849447005 (Jonathan Reem; not creative and largely no longer present: introduced Cargo support, tweaked Makefile)
• a9b1e31b7062e42248347805cbee662efe0eb713 (Tomas Sedovic; nigh-trivial and no longer present: Collection and Mutable trait implementations)
• eecc4a4b758ae743486cfe4254cefd136f829391 (Jonathan Reem; trivial: Rust syntax change)
• d51aff506409d7ffa2de275cd4e3029a88de1e2a (Jonathan Reem; trivial: rustc lint change)
• 56113c63b028e7d215f1c16cf90d9c5d902df477 (Jonathan Reem; trivial: Rust syntax change)

All but one of these are definitely trivial, obvious, and in the context
of the project and ecosystem not creative works (⅌ copyright doctrine
definition); or else no longer present. The one arguable exception is
2e37f0d1aebbd0c56acd0de7b46d14cd71d3e134, adding AnyMap::contains, since
I hadn’t added a contains method; but its *definition* is trivial with
only one possible implementation, and subsequent to that time I did go
through and check for parity with HashMap methods, to say nothing of the
code having changed shape quite a bit since then too. Therefore I’m
content to consider it immaterial for relicensing.
Chris Morgan []
Revert "removed unsafe code in favor of explicit assert"

This reverts commit 479d756c992af132c6ba45248c65dc230c5986cf.

There’s nothing wrong with this patch, but I had never pulled this
commit to my local repository and had completely forgotten about it, and
today removed the unsafe code in a *different* direction that I like
better (`bytes.try_into().map(|bytes| u64::from_ne_bytes(bytes))`), so
reverting it so I can cleanly rebase is just easier for me!
Chris Morgan []
Merge pull request #32 from hellow554/master

removed unsafe code in favor of explicit assert
Marcel Hellwig []
removed unsafe code in favor of explicit assert
Chris Morgan []
Implement Default on Map

It was implemented on RawMap, and I’m not sure quite why it wasn’t
implemented on Map. I can’t think of any reason *not* to, though, so we
might as well.

Closes #30. Thanks to Maxwell Koo <mjkoo90@gmail.com> for the fix.
Chris Morgan []
Add a note about unsafety.
Chris Morgan []
Remove an obsolete note from the README
Chris Morgan []
Remove the `bench` Cargo feature as superfluous

A better pattern is to put benchmarks in the `benches` directory;
that way, `cargo test` won’t pick them up by default,
and so it won’t fail on the stable and beta channels.
Chris Morgan []
Add a changelog.
Chris Morgan []
Remove obsolete rust-ci docs uploading

We use docs.rs these days. No manual work in it, either. Yay!
Chris Morgan []
0.12.1
Chris Morgan []
Make clippy happy.
Chris Morgan []
Put in a bunch of #[inline] attributes on fns.

Somewhere along the path I didn’t mark some functions as `#[inline]`
which they should probably be.

Small but visible benchmark improvements, but within ε so low
confidence.
Chris Morgan []
Reduce the work for rustc in the benchmarks.

This *does* mean that they no longer function as tests, which was
deliberate, but rustc is just too slow with the assertions in there as
well. If I care, I can make variants of it that actually test. For now,
I’m sufficiently happy with it.
Chris Morgan []
Use raw pointers for downcasting, not TraitObject

This mirrors a change in mopa.
Chris Morgan []
Add more benchmarking

Including a rustc/llvm pathalogical case.
Chris Morgan []
Remove superfluous Clone bound on Entry methods.

Thanks to @Kimundi for pointing this out. I presume (without checking)
that they got added along with the CloneAny stuff by accident.

Closes #26.
Chris Morgan []
Remove now-unnecessary #[allow]s.
Chris Morgan []
Make Clippy happy.
Chris Morgan []
Keep Clippy happy.
Chris Morgan []
Fix order of ptr::copy_nonoverlapping parameters.

Clippy helped me spot this. It didn’t cause any bugs, just bad
performance as all keys would hash to 0 and thus end up in the same
bucket.
Chris Morgan []
0.12.0
Chris Morgan []
s/unstable/bench/ in travis config
Chris Morgan []
Rename "unstable" feature to "bench".

Benchmarking is the only thing that requires unstable Rust in the
library any more. Yay!
Chris Morgan []
Ungate drain iterator (stable in Rust 1.6.0).
Chris Morgan []
Ungate efficient hashing (stable in Rust 1.7.0).
Chris Morgan []
0.11.2: just fixing warnings and such.
Chris Morgan []
0.11.1: Rust update for unstable.
Chris Morgan []
Test Rust stable on Travis also.
Chris Morgan []
Make tests work on beta/stable (benchmarks can’t work).
Chris Morgan []
0.11.0: merge concurrency branch.
Chris Morgan []
Rename 'nightly' feature to 'unstable'.
Chris Morgan []
Implement Debug for Map and RawMap.
Chris Morgan []
Replace Cargo features with arcane DST magicks.

(It was a toss-up between “arcane” and “eldritch” there; “arcane” won
this time. “Eldritch”, maybe you can be it next time.)
Chris Morgan []
Implement stuff for concurrency.

This took some refactoring too for best effect.
Chris Morgan []
0.10.3: Rust beta support

This is accomplished at a certain loss of efficiency, sadly.

Add the 'nightly' feature to get things back how they were.
Chris Morgan []
0.10.2: Rust update for clone feature
Chris Morgan []
0.10.1: Rust update
Chris Morgan []
0.10.0: move Clone functionality into a feature.

No more separate Git branch for it; Cargo features fit the bill well.
Chris Morgan []
0.9.13
Chris Morgan []
Use std::convert for AnyMap -> RawAnyMap.
Chris Morgan []
Rust update.
Chris Morgan []
Substantial refactoring, exposing a raw interface.

This is not necessarily the final form, but I think it’s pretty good.
The only alteration to the public interface is the removal of the
iteration methods from `AnyMap`; they are now attached to `RawAnyMap`.

The diff appears considerably more scary than it is in actual fact due
to some comparatively unnecessary changes like the field name (from
`data` to `raw`). Really, it’s minimal.
Chris Morgan []
Remove plenty of unnecessary 'statics.
Chris Morgan []
Slight Rust update.
Chris Morgan []
Remove unused stability markers.
Chris Morgan []
0.9.12: Rust update
Chris Morgan []
0.9.11: Rust update
Chris Morgan []
0.9.10: Rust update
Chris Morgan []
0.9.9: Rust update
Chris Morgan []
0.9.8: Rust update
Chris Morgan []
0.9.7: parity with the collections API

There’s some Rust updating here too.

This entails the addition of various methods and iterator types where
appropriate, based on what’s on `HashMap`, though I doubt that people
will actually be able to make all that much use of the iterators. They’d
be of more use with a basis of a trait other than `Any`, such as might
be conveniently achieved by combining this with my MOPA crate.
(Getting a little close to HKT there, innit?)

You know, I wonder sometimes if anyone ever reads these messages after
they are written, myself included. If you have read this, please drop me
a note; I’m curious.

I’ve also gone over all the stability attributes, marking things as
appropriate.
Chris Morgan []
0.9.6

Changed the deprecated `#[deriving(…)]` to `#[derive(…)]`.

(Why not 0.9.5? I messed up, publishing the `clone` branch as 0.9.5.)
Chris Morgan []
0.9.4
Chris Morgan []
Merge pull request #14 from drbawb/feature/namespaced-enums

Use namespaced enum variants for HashMap `Entry`s
Robert Straw []
Do not re-export the `Entry` enum ...

A minor [breaking-change] as downstream users will have to import the variants
themselves, or prefix the variant with the Entry enum's namespace.
Robert Straw []
Use namespaced enum variants for the map-entry slots.
Chris Morgan []
0.9.3
Chris Morgan []
Fix a slightly erroneous comment.
Chris Morgan []
Rust update.
Chris Morgan []
tuple_indexing is no longer gated! Yay!
Chris Morgan []
Update metadata, 0.9.2.
Chris Morgan []
Rust update.
Chris Morgan []
Bump version to 0.9.1.
Chris Morgan []
Implement AnyMap.entry().
Chris Morgan []
Rust update.

This includes following the standard new semantics for `insert` and
`remove`, where they return any value that was previously present, and
renaming `find` and `find_mut` to `get` and `get_mut`. For the moment,
I’ve even provided a deprecation path! Will wonders ever cease?
Chris Morgan []
Make trait bounds more explicit.
Chris Morgan []
Can I diagnose the problem with Rust CI?
Chris Morgan []
Drop the Makefile in favour of Cargo.
Chris Morgan []
Rust syntax update in README.
Chris Morgan []
Get a new Rust CI token.

(Doc uploading doesn't seem to be working.)
Chris Morgan []
Elide superfluous lifetimes.
Chris Morgan []
Rust update.
Chris Morgan []
Remove obsolete managed_heap_memory lint warning.
Chris Morgan []
Make Travis use its own Rust support and cargo.
Chris Morgan []
Replace a deprecated method call.
Chris Morgan []
Add now-necessary lifetime bounds.
Chris Morgan []
Ignore Cargo.lock (this is a library).
Chris Morgan []
Update Cargo.toml for current conventions.
Chris Morgan []
Merge pull request #9 from reem/contains

Add contains method for checking if a type is already in the map.
Jonathan Reem []
Add contains method for checking if a type is already in the map.
Chris Morgan []
Update for upstream changes.

Also change from rlib/dylib to lib (dylib is not necessary and
complicates matters in this new rpath-free world).
Chris Morgan []
Merge pull request #6 from tivek/patch-1

Fix int type inference in range calls
tivek []
Fix int type inference in range calls
Chris Morgan []
Merge pull request #5 from reem/cargo

Add Cargo Support
Jonathan Reem []
Updated versions to 0.9.0.
Jonathan Reem []
Enabled Cargo and moved Makefile to use target.
Chris Morgan []
Merge pull request #4 from tomassedovic/impl-mutable

Implement Collection and Mutable traits