<div dir="ltr"><span style>I built a preliminary prototype of &quot;cabal update&quot; enhancements:</span><div style><br></div><div style>A) Using a Lazy I/O bytestring with the HTTP download, so that it can do a streaming-decompress on-the-fly (This gives a 30% speedup on my machine)</div>
<div style><br></div><div style>B) Using the bytestring-progress library to show a useful progress report on the whole process. Unfortunately, due to the PVP, the version constraints are (as usual) over-restrictive, so they need to be relaxed. Until the fix is put on hackage, you have to install bytestring-progress from <a href="https://github.com/Peaker/bytestring-progress" target="_blank" style="color:rgb(17,85,204)">https://github.com/Peaker/bytestring-progress</a></div>
<div style><br></div><div style>C) It&#39;s quick&amp;dirty (Proof of concept), because:</div><div style>C.1) No version constraints on bytestring-progress</div><div style>C.2) Using hSetBuffering on stdout and ANSI terminal codes, which may be problematic in different kinds of terminals</div>
<div style>C.3) The only way to disable it is setting verbosity=quiet. It probably deserves its own option</div><div style><br></div><div style>I hope it&#39;s a useful demonstration of the utility of this, though. It makes &quot;cabal update&quot; something I&#39;d dread a little less to run :)</div>
<div style><br></div><div style>Also, I was wondering why there&#39;s no monad for the passing of Verbosity around to so many functions. Then I could easily add more options that go around to control things like whether to show progress bars...</div>
<div style><br></div><div style>Eyal</div><div style><br></div></div>