Skip to content

Bump im from 10.2.0 to 12.2.0#4

Closed
dependabot-preview[bot] wants to merge 1 commit into
masterfrom
dependabot/cargo/im-12.2.0
Closed

Bump im from 10.2.0 to 12.2.0#4
dependabot-preview[bot] wants to merge 1 commit into
masterfrom
dependabot/cargo/im-12.2.0

Conversation

@dependabot-preview

@dependabot-preview dependabot-preview Bot commented Jan 11, 2019

Copy link
Copy Markdown
Contributor

Bumps im from 10.2.0 to 12.2.0.

Release notes

Sourced from im's releases.

12.2.0

Added

  • OrdMap and OrdSet now have a range() method which makes an iterator over a bounded subset of the values. The improved iterator implementation is also considerably more efficient than the previous (about an order of magnitude faster for nontrivial data sets). iter() has been updated to take advantage of this, and is now just an alias for range(..). (#27)
  • FocusMut now has an unmut method to turn it into an immutable Focus, releasing its exclusive hold on the underlying Vector.
  • Focus now implements Clone.

12.1.0

Added

  • Maps and sets now have the clear method just like Vector. (#46)

Changed

  • Single chunk Vectors are no longer allocated directly on the stack, meaning that they're now comparable in performance to std::vec::Vec rather than slightly faster, but they also won't eat up your stack space quite as quickly, and they'll clone without copying and share structure with clones as you'd expect.

12.0.0

Starting with this release, the arc flag is gone, in favour of publishing im as two separate crates: im (using Arc) and im-rc (using Rc). They're identical (and built from the same code), except that im is thread safe and im-rc is a little bit more performant.

This is a major release as a consequence, but there should be no breaking code changes other than the new default choice of reference counter.

Added

  • The Chunk datatype that's used to build Vector and OrdMap has been exposed and made generally usable. It's somewhere between a GenericArray and a ring buffer, offers O(1)* push in either direction, and is generally hyperoptimised for its purpose of serving as nodes for Bagwell tries, but it's also a powered up version of GenericArray that might be useful to others, hence the public API.
  • Vector now has Focus and FocusMut APIs for caching index lookups, yielding huge performance gains when performing multiple adjacent index lookups. Vector::iter has been reimplemented using this API, and is now much simpler and about twice as fast as a result, and Vector::iter_mut now runs nearly an order of magnitude faster. Likewise, Vector::sort and Vector::retain are now using FocusMut and run considerably faster as a result.
  • Focus and FocusMut can also be used as stand ins for subslices through the narrow and split_at methods. You can also iterate over foci, making this the most efficient way to iterate over a subset of a Vector.
  • Vector now implements Rayon's parallel iterators behind the rayon feature flag.

Changed

  • As std::ops::RangeBounds is now stabilised in Rust 1.28, the Vector::slice method is now unconditionally available on the stable channel.
  • Union/difference/intersection/is_submap methods on HashMap and OrdMap that take functions now take FnMut instead of Fn. This should not affect any existing code. (#34)
  • Vector::split_off can now take an index equal to the length of the vector, yielding an empty vector as the split result. (#33)
  • Vector::set now returns the replaced value.

Fixed

  • Vector is now represented as a single inline chunk until it grows larger than the chunk size, making it even faster than Vec at small sizes, though clone could now be slower if the clone is expensive (it's still absurdly fast for A: Copy).

11.0.1

Fixed

  • Various performance improvements, amounting to a 5-10% speedup for both kinds of map/set.
  • Fixed an edge case bug in sort::quicksort.

11.0.0

Changed

This is a major release with many breaking changes, and is intended to stabilise the API more than to denote that the rewrite is now production ready. You should expect future releases with significant performance improvements as well as additional APIs, but there should be no further major release with breaking changes in the immediate future, barring very serious unforeseen issues.

Specifically, you should expect imminent minor releases with performance improvements for Vector and OrdMap, for which I have a number of known optimisations that remain unimplemented.

Thanks to the several contributors without whom im would not be what it is.

No More Arc

All data structures have been reworked to take values of A: Clone instead of Arc<A>, meaning that there's less performance overhead (as well as mental overhead) when using values that clone cheaply. The performance gain when values are A: Copy is a factor of two or more. It's expected that users should wrap values in Arc themselves when using values which are expensive to clone.

... (truncated)
Changelog

Sourced from im's changelog.

[12.2.0] - 2018-10-12

Added

  • OrdMap and OrdSet now have a range() method which makes an iterator over
    a bounded subset of the values. The improved iterator implementation is also
    considerably more efficient than the previous (about an order of magnitude
    faster for nontrivial data sets). iter() has been updated to take advantage
    of this, and is now just an alias for range(..). (#27)
  • FocusMut now has an unmut method to turn it into an immutable Focus,
    releasing its exclusive hold on the underlying Vector.
  • Focus now implements Clone.

[12.1.0] - 2018-09-25

Added

  • Maps and sets now have the clear method just like Vector. (#46)

Changed

  • Single chunk Vectors are no longer allocated directly on the stack, meaning
    that they're now comparable in performance to std::vec::Vec rather than
    slightly faster, but they also won't eat up your stack space quite as quickly,
    and they'll clone without copying and share structure with clones as you'd
    expect.

[12.0.0] - 2018-08-30

Starting with this release, the arc flag is gone, in favour of publishing im
as two separate crates: im (using Arc) and im-rc (using Rc). They're
identical (and built from the same code), except that im is thread safe and
im-rc is a little bit more performant.

This is a major release as a consequence, but there should be no breaking code
changes other than the new default choice of reference counter.

Added

  • The Chunk datatype that's used to build Vector and OrdMap has been
    exposed and made generally usable. It's somewhere between a
    GenericArray and a ring buffer,
    offers O(1)* push in either direction, and is generally hyperoptimised for its
    purpose of serving as nodes for Bagwell tries, but it's also a powered up
    version of GenericArray that might
    be useful to others, hence the public API.
  • Vector now has Focus and FocusMut APIs for caching index lookups,
    yielding huge performance gains when performing multiple adjacent index
    lookups. Vector::iter has been reimplemented using this API, and is now
    much simpler and about twice as fast as a result, and Vector::iter_mut now
    runs nearly an order of magnitude faster. Likewise, Vector::sort and
    Vector::retain are now using FocusMut and run considerably faster as a
    result.
  • Focus and FocusMut can also be used as stand ins for subslices through the
... (truncated)
Commits
  • df81ead (cargo-release) version 12.2.0
  • 67b5f2f Docs discussing when to wrap values in Rc and when they're cloned.
  • 3275e30 Yield to Clippy's idea of what a number should look like.
  • b0dfd5d tool_lints has stabilised.
  • 481e922 Don't crash copy-dist if dist doesn't exist already.
  • a600ca3 Clippy thinks this is more readable than previously, and the allow attribute ...
  • 836438e Convert the last quickcheck tests to proptest.
  • 46b166d Rewrite B-tree ref iterators for efficiency and range bounds.
  • 86ed299 Update documentation.
  • 74963be Add FocusMut::unmut and make Focus cloneable.
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Note: This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.

You can always request more updates by clicking Bump now in your Dependabot dashboard.

Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
  • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
  • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
  • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
  • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in your Dependabot dashboard:

  • Update frequency (including time of day and day of week)
  • Automerge options (never/patch/minor, and dev/runtime dependencies)
  • Pull request limits (per update run and/or open at any time)
  • Out-of-range updates (receive only lockfile updates, if desired)
  • Security updates (receive only security updates, if desired)

Finally, you can contact us by mentioning @dependabot.

@dependabot-preview dependabot-preview Bot added the dependencies Pull requests that update a dependency file label Jan 11, 2019
@dependabot-preview
dependabot-preview Bot force-pushed the dependabot/cargo/im-12.2.0 branch 3 times, most recently from 5b6f359 to d9eb98c Compare January 12, 2019 11:11
Bumps [im](https://github.com/bodil/im-rs) from 10.2.0 to 12.2.0.
- [Release notes](https://github.com/bodil/im-rs/releases)
- [Changelog](https://github.com/bodil/im-rs/blob/master/CHANGELOG.md)
- [Commits](bodil/im-rs@10.2.0...12.2.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
@dependabot-preview
dependabot-preview Bot force-pushed the dependabot/cargo/im-12.2.0 branch from d9eb98c to 968b04f Compare January 12, 2019 11:17
@dependabot-preview

Copy link
Copy Markdown
Contributor Author

Superseded by #17.

@dependabot-preview
dependabot-preview Bot deleted the dependabot/cargo/im-12.2.0 branch January 16, 2019 22:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant