Skip to content

Releases: console-rs/indicatif

0.17.9

12 Nov 15:54
@djc djc
0.17.9
e84863a
Compare
Choose a tag to compare

What's Changed

0.17.8

27 Feb 11:27
@djc djc
0.17.8
Compare
Choose a tag to compare

What's Changed

0.17.7

27 Feb 11:27
@djc djc
0c037ed
Compare
Choose a tag to compare

What's Changed

0.17.6

27 Feb 11:26
@djc djc
Compare
Choose a tag to compare

What's Changed

  • fix overflow crash when displaying ETA by @conradoplg in #555
  • feat: add futures::Stream support by @aatifsyed in #551
  • fix incorrect remainder calculation in RateLimiter by @taoky in #565
  • fix ProgressState::duration() overflow by @alexheretic in #560
  • Add missing space before unit by @Error-42 in #562
  • Only render as many lines as the terminal can actually display by @oli-obk in #563
  • Fixed progress bar not suspending multiprogress bar by @Vrajs16 in #568
  • Add new Integrations section to README, containing a link to indicatif_log_bridge initially by @djugei in #570

0.17.5

03 Jun 21:57
@djc djc
Compare
Choose a tag to compare

Another smaller release. Fixes a regression from 0.17.4 and should drastically improve ETA and speed estimation thanks to great work by @afontenot in #539.

  • Switch Estimator to use an exponential weighting (#539, thanks to @afontenot)
  • Fix subtract with overflow when measuring terminal line length (#547, thanks to @foresterre)
  • Add builder-like with_finish method to ProgressBarIter (#548, thanks to @matthewhchan)

On behalf of @chris-laplante and @djc, thanks to all contributors!

0.17.4

29 May 08:52
@djc djc
Compare
Choose a tag to compare

Another small bugfix release.

  • Handle newline in msg and empty msg (#540, thanks to @RDruon)
  • Handle terminal line wrap to avoid new line (#533, thanks to @RDruon)
  • Resetting the elapsed time also resets ETA (#538, thanks to @afontenot)
  • Mention the prefix and message placeholders in the with_ docs (#529, thanks to @lnicola)
  • Allow rate-limiting TermLike targets (#526, thanks to @akx)
  • Fix docs for ProgressDrawTarget (#523, thanks to @tillarnold)
  • Change "OS X" to "macOS" (#519, thanks to @atouchet)
  • Fix MultiProgress alignment handling and migrate from structopt => clap (#516)
  • Don't deadlock when double-adding ProgressBar (#515)
  • Use instant::Instant when compiling to WASM (#514, thanks to @azriel91)
  • Update portable-atomic requirement from 0.3.15 to 1.0.0 (#512)
  • Add contents_formatted() method to `InMemoryTerm (#531, thanks to @dfaust)
  • inc() after work in examples (#522, thanks to @tatref)

On behalf of the indicatif team (@chris-laplante and @djc), thanks to all contributors!

0.17.3

14 Jan 21:26
Compare
Choose a tag to compare

A small maintenance release:

  • address a bunch of lints by @danieleades in #498
  • Remove "fs" feature in tokio dependency. by @azriel91 in #504
  • Update estimate when using a steady ticker by @aawsome in #495
  • Refactoring and internal improvements

Full Changelog: 0.17.2...0.17.3

0.17.2

08 Nov 15:42
@djc djc
Compare
Choose a tag to compare

A small maintenance release which makes indicatif more portable and fixes some minor regressions.

  • Use portable-atomic to fix build on some 32-bit platforms (#484, thanks to @messense)
  • Implement multi-line progress message support (#443, thanks to @happenslol)
  • Reset estimator of progress rate on backwards movement (#483, thanks to @rlee287)
  • Fix percent initial value when there is no length (#491, thanks to @devmatteini)
  • Bumped the MSRV to 1.56 (#482)

On behalf of @djc and @chris-laplante, thanks to all contributors!

0.17.1

14 Sep 08:48
@djc djc
Compare
Choose a tag to compare

2.5 months after the large 0.17 release, we (finally) have a release that addresses most of the regressions found in 0.17. There is ongoing work on changes in the estimation algorithm, tracked in #394, which has regressed for some users.

Note that we made some technically semver-breaking change of adding a missing Sync bound to the ProgressTracker bounds (#471). We're assuming that most users don't (yet) have custom ProgressTracker impls, and that users who do have probably built one that is Sync anyway.

Fixed regressions

  • Fixed unicode-width feature spelling (#456)
  • Only tick if the ticker is disabled (#458)
  • Rework MultiProgress zombie line handling (#460)
  • Fix incorrect link in documentation (#469, thanks to @Jedsek)
  • Take a reference for ProgressBar::style() (#476, thanks to @andrewchambers)

Other changes

  • Add HumanFloatCount formatting option (#453, thanks to @jqnatividad)
  • Add Sync bound to ProgressTracker (#471)
  • Update ProgressDrawTarget documentation (#472, thanks to @AronParker)
  • Correct mis-naming of variables in wrap_async_read (#473, thanks to @octylFractal)
  • Remove write_all() impl from ProgressBarIter's Write impl (#478, thanks to @hexagonal-sun)
  • Document last char/string in tick style being the "final" state (#479, thanks to @MarijnS95)

Thanks from @djc and @chris-laplante to all contributors!

0.17.0

30 Jul 08:45
@djc djc
Compare
Choose a tag to compare

indicatif is one of the most popular terminal progress bar libraries in the Rust ecosystem. More than a year after the 0.16.0 release, we're happy to finally release 0.17. In the past year, the indicatif team has grown to two maintainers, since @chris-laplante joined @djc as a maintainer. We also now have a Discord channel.

Apart from many small API additions and fixes, particular effort has gone into reducing the overhead for reporting progress. To this end, we've removed some of the explicit rate limiting APIs in favor of a single refresh rate in the ProgressDrawTarget. We now set a rate limit by default (50ms) that should drastically reduce overhead for most applications while being more than enough for most terminal applications. Additionally, position updates are now synchronized by using atomic integer APIs instead of a mutex. In a basic test the simplest possible progress bar is about 95x faster on 0.17.0 compared to 0.16.2.

We've made many changes to the way MultiProgress collections work. You no longer need to explicitly join() the MultiProgress, there are more ways to insert new progress bars into the collection, and many correctness improvements have been made, in part to more effort having gone into testing the crate.

Additionally, we've reduced our dependency footprint, removing lazy_static and regex from our required dependencies.

Additions

  • Add ability to add custom template keys (#301, thanks to @redzic)
  • Allow custom template keys to maintain state (#420, thanks to @1Dragoon)
  • Add HumanCount and template keys to print more humane position/length (#340, thanks to @dabreegster)
  • Remove extra new line after progress bar (#338 with fixes in #343, #350 and #356, thanks to @sigmaSd)
  • Implement ProgressBar::suspend() (#333, thanks to @ishitatsuyuki)
  • Add ProgressIterator::progress_with_style() (#306, thanks to @LeCyberDucky)
  • Pass through stream_position() in ProgressBarIter (#309, thanks to @rlee287)
  • Add AsyncRead/AsyncWrite support for ProgressBar (#308, thanks to @x0f5c3)
  • Add AsyncBufRead implementation for ProgressBarIterator (#315, thanks to @x0f5c3)
  • Add builder methods for ProgressBarIter (#337, thanks to @chubei-oppen)
  • Allow overriding ProgressBar elapsed time (#325, thanks to @zhaofengli)
  • Add a space between numbers and their units (#345, thanks to @firasuke)
  • Add ProgressBar::style() to enable access to the current style (#396, thanks to @andrewchambers)
  • Account for alignment when truncating (#402)

Performance

  • Use atomics to track the current position (#390 with follow up in #404, #406, #414)
  • Faster template expansion (without the regex dependency; #319)
  • Draw progress bars into draw states (#361, with follow up in #371)
  • Remove draw limiting from the progress bar state (#380)
  • Simplify ProgressDrawTarget to reduce in-memory size (#277, thanks to @mibac138)

MultiProgress changes

  • Run MultiProgress drawing on the main thread (#231 and #284, thanks to @marienz and @aj-bagwell)
  • Enable inserting progress bars at the end in MultiProgress (#326, thanks to @omjadas)
  • Add insert_after()/insert_before() methods on MultiProgress (#331, with follow up in #424)
  • MultiProgress: add println() and suspend() methods (#351)
  • MultiProgress: prune zombie progress bars (#438, with follow up in #446)
  • Make is_hidden() work for MultiProgress (#430)
  • Allow vertical alignment in MultiProgress bars (#295, thanks to @nlinker)

Fixes

  • Expand tabs to spaces to fix formatting (#150)
  • Enable 256 color support in template strings (#283, thanks to @MoSal)
  • Fix potential panic for hidden draw targets (#286, thanks to @matthiasbeyer)
  • ProgressFolder shouldn't finish progress bars on completion (#290, thanks to @mibac138)
  • Improve precision of estimates for high progress rates (#293, thanks to @kayru)
  • Reduce precision in per_sec values to make them more readable (#312)
  • Fix time rounding for HumanDuration values (#296, thanks to @Armavica)
  • Make unicode-width dependency actually optional (#281, thanks to @Shnatsel)
  • Fix progress bar width in the presence of ANSI formatting codes (#316, thanks to @redzic)
  • Fix wide element styling to work with improved unicode feature (#357)
  • WeakProgressBar::new() should not take self (#359, thanks to @ishitatsuyuki)
  • Fix panic when calculating padding spaces (#364, thanks to @sigmaSd)
  • Use final values when showing speed after finishing (#381, thanks to @Yatekii)
  • Fix panic in the estimator (#403, thanks to @arxanas)
  • Resolve potential deadlock when ticker is enabled (#417, #437)
  • Fix issue with spinners when the ticker is enabled (#407)
  • Make sure we use the first style for wide elements (#441)

Non-functional improvements

  • Use once_cell instead of lazy_static (#324, thanks to @sigmaSd)
  • Document interaction between wide_bar and wide_msg (#329, thanks to @sigmaSd)
  • Use doc(cfg) to improve docs.rs documentation (#399)
  • Add categories in Cargo metadata (#330, thanks to @jqnatividad)
  • Introduce in-memory testing interface (#354, with follow up in #378 and #379)
  • Simplify how drawing is planned internally (#374, #382, #383, #384, #385, #386)
  • Add sleep in iterator example to see progress bars (#314, thanks to @bidoubiwa)
  • Don't conflate ticking with updating estimates (#434)
  • Store length as an Option (#415)