Releases: console-rs/indicatif
0.17.8
What's Changed
- documented behaviour of MultiProgress::add by @djugei in #592
- improve documentation for usage as spinner by @chris-laplante in #593
- docs: Improve formatting and linking by @waywardmonkeys in #599
- Add minimal examples demonstrating Formatters by @Chris--B in #600
- Skip drawing MultiProgress if backing draw target is hidden by @djc in #603
- Add more item links in docs by @dominik-korsa in #607
- fix and rename
real_len
by @tgolsson in #608 - Fix #612 by @smoelius in #613
- Add
VisualLines
newtype wrapper by @smoelius in #616 - Use current position for calculating finished progress bar per_sec instead of bar length by @DanGonite57 in #605
- renders the speed in bytes per second using SI prefixes by @WankkoRee in #622
- fix inadvertently dropping MutexGuard in TickerControl by @chris-laplante in #626
- [feature request] adding
{percent_precise}
style key by @OmarTawfik in #628
0.17.7
What's Changed
0.17.6
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
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 toProgressBarIter
(#548, thanks to @matthewhchan)
On behalf of @chris-laplante and @djc, thanks to all contributors!
0.17.4
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
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
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
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 toProgressTracker
(#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 fromProgressBarIter
'sWrite
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
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()
inProgressBarIter
(#309, thanks to @rlee287) - Add
AsyncRead
/AsyncWrite
support forProgressBar
(#308, thanks to @x0f5c3) - Add
AsyncBufRead
implementation forProgressBarIterator
(#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 onMultiProgress
(#331, with follow up in #424) MultiProgress
: addprintln()
andsuspend()
methods (#351)MultiProgress
: prune zombie progress bars (#438, with follow up in #446)- Make
is_hidden()
work forMultiProgress
(#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 takeself
(#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
andwide_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)