On 2015-05-17 18:32, Liam McSherry wrote:
Phobos currently has packages for working with various archives
(Zlib/Gzip, Zip), and it's probably reasonable to expect that support
for more archive formats will be added in future. Before any more are
added, it would probably be beneficial to define an interface that any
modules adding support for archives should obey, and having archive
related modules under std.archive for organisational purposes probably
wouldn't hurt.
I saw a suggestion for improved archive support on the D wiki's wish
list, and the code link 'std.archive' module in the review queue now
404s, so it looks to be the case that there isn't currently an effort to
implement an archiving package for Phobos. What I would propose for such
a package is:
- Split archives in to two categories: stream-based (Gzip, Zlib, Bzip,
etc) and file-based (Zip, Tar).
- Make support for creating archives optional (e.g. by having
IStreamArchive and IWritableStreamArchive).
- Make compression-related functionality separate (e.g. through an
ICompressableArchive(T) interface, where T is an enum specifying
algorithms). I'm not sure on this one, so ideas are especially welcome
for it.
- A hierarchy of exceptions for implementations under std.archive rather
than the current Phobos norm of everything having its own exceptions.
I'd like to know whether there would be demand for such a package, and
what the community would want in terms of the API and features. I
haven't yet written any code for the package as the API is going to be
one of the most important parts, and I thought it would be best to have
agreement on what is wanted before starting on it.
Support for RAR archives would be nice.
--
/Jacob Carlborg