[Haskell-cafe] ANN: progress-meter 1.0.0

Ertugrul Söylemez esz at posteo.de
Mon Dec 25 01:15:11 UTC 2017

Hi everybody,

I have just released a complete API rewrite of the `progress-meter`

  * <https://hackage.haskell.org/package/progress-meter>
  * <https://github.com/esoeylemez/progress-meter>

With this package you can easily add live diagnostics to any
long-running application from a simple progress bar to full task
monitoring.  The `System.Progress` module contains a tutorial.

  * update progress from multiple threads,

  * non-progress diagnostics that just scroll by (e.g. logging),

  * breaking the state apart for individual threads, so they can update
    their relevant portion of the progress bar without interfering with
    each other ("zooming"),

  * smart throttling (no updates drawn when nothing is happening, and
    only ever drawn at a maximum rate).

Here is a very simple example:

    import Control.Concurrent
    import System.Progress

    main = withProgress_ "" id $ \pm -> do
        -- Set the progress bar:
        setMeter pm "Working..."

        -- Do some "work":
        threadDelay 3000000

        -- Print something while temporarily hiding the progress bar:
        putMsgLn pm "Some extra diagnostics that scrolls by"

        setMeter pm "Almost done..."
        threadDelay 1000000
        putMsgLn pm "Done."

The first argument of 'withProgress_' is the initial state and the
second is a renderer for the current state:

    render :: Int -> String
    render p = "Progress: " ++ show p ++ "%"

    withProgress_ 0 render $ \pm -> do
        threadDelay 1000000
        setMeter pm 10
        threadDelay 8900000
        setMeter pm 99
        -- The famous last percent:
        threadDelay 10000000
        putMsgLn pm "Done."

Progress-meter will do The Right Thing when you update the state or
produce log messages from multiple threads.

Happy holidays
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 487 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20171225/a8278719/attachment.sig>

More information about the Haskell-Cafe mailing list