- Change: global::print::sub_start_timer()
now returns a new typeGlobalTimer` that implements the same interface cancel/done interface as before. (#45) - Change/fix: Minimum supported Rust version is now officially 1.86. Previously released, v0.10.0, used a feature stabalized in 1.86 but did not correctly update the MSRV (#47).
- Change: Uses a feature of Rust not supported until 1.86, although the MSRV was not correctly incremented in this release (#43).
- Add: New function
global::with_locked_writeris introduced to allow consistently capturing write output. This function is designed for use in testing output or in other non-reentrant capture cases. This blocks all threads using this function but one from executing so that a deterministic and consistent output is captured. Previously tests could be written with a thread_local writer, however there's a subtle race condition in that approach if the output relies on "paragraph" style text (#43).
- Change: Result of
global::sub_start_timer(...).done()is no longer "must use". This means it no longer needslet _ =for clippy. (#38) - Add: The
fun_runlibrary is re-exported whenfeature = "fun_run"is enabled (on by default). This is because our crate exposes types fromfun_runin the form of an error resultfun_run::CmdError, now someone can use that feature and that type via re-export and guarantee it's the same version. (#39)
- Add: explicit
print::buildpackandprint::headerfunctions that are focused on intent rather than implementation detail (#34) - Add:
h3header support (#32) - Add:
global::print::plainto print out plain text likeprintln!. It auto-flushes IO, redirects to the global writer (if you wanted to capture everything), and enables "paragraph detection" if it's followed by something like a warning or error (#33)
- Fix: Relax the constraint of
fun_runoptional dependency. Now any version higher than0.5and less than1.0is will work. (#30)
- Added:
Print<T>::error()now returns the original writerW, this allows for building error messages (Vec<u8>) with debug output above it using the stateful API. See the tests for an example (#28)
- A
fun_runfeature to provide optional interfaces when thefun_runcrate is being used. PR: (#25)- Added:
global::print::sub_stream_cmdandglobal::print::sub_time_cmd - Added:
Print<SubBullet<W>>::stream_cmd()andPrint<SubBullet<W>>::time_cmd()
- Added:
- Struct
_GlobalWriteris deprecated, useGlobalWriterinstead (#26)
- Fix: dropping
Print<Background<W>>now emits a message of(Error)and a newline (#20) - Added:
bullet_stream::global::printfunctions for writing formatted output without needing to preserve state (#21) - Added:
Print::global()andbullet_stream::global::set_writer. Use these to preserve the newline indentation when handling dropped structs or errors (#21)
- Added
bullet_stream::strip_ansi(#11) - Added
Print<Background<W>>::cancel()to stop a timer with a message instead of emitting timing information (#10)
- Added:
Printstruct.Outputis now deprecated, usePrintinstead (#5) - Fix: Missing
must_useattributes (#5)
- Fix double newlines for headers (#2)
- First