[Starkit] Improving Tcl compression and performance
guacamole1234 at yahoo.com
Sun Jan 11 14:41:30 CET 2004
> > for extracting the contents. Unless it is possible
> > layer VFS inside each other (open a vfs::tar file
> > inside mk4vfs::vfs) ?
> Open VFS tar/gz file, open a pipe to tar/gz, and
> fcopy. No temp space
> at all.
Ah nice! Although I probably can make tar and gzip a
dependency on Linux, it would not work for Windows and
not a sure thing either for other OS such as HP-UX or
Solaris (native tar has some limitations in path
length, etc.) I guess I could build or find binaries
for those architectures and bundle them, but I dont
have access to many of those architectures so,
for practical purposes I need to use something already
bundled with Tclkit or pure Tcl (As vfs::tar)
> Or save as tar and let starkit do the compression
> (slower, as you
> mentioned), then do the above.
I just checked and vfs::tar is read only access,
> Same effect, and if
> you want to totally
> get rid of outside dependencies you could even do
> tar-decode-and-unpack-to-files in Tcl. FWIW, SDX
> has a "tgz2sdx"
To eliminiate packing time dependencies I would need a
vfs::tar or sdx2tar in pure Tcl
> Or look at the zlib extension (see
> http://www.equi4.com/critlib/ for a
> Critcl version), and redo it with bzip2. Should be
> very easy, since
> the API's of the two are very similar.
The problem here is external dependencies, I could
only do it in those architectures I have access to
(mainly x86 at this point). If a vfs::bzip2 layer was
written which improved compression ratios over
current tcl zlib, would you consider it for Tclkit?
> There's no rocket science in any of these
> approaches. It just takes
> some elbow grease.
Yes, and this is important for me. So the solutions
right now with minimal external dependencies are:
a) Write vfs::tar that can create tar files
(or depending on how complex that will be, a simple
tar-like vfs that stores all the info in one file and
the offsets in another file)
b) Write a vfs::bzip2 and convince you to bundle it
with Tclkit so it gets built for platforms I dont have
access to :)
or, compromise architecture for the time being :
c) Find and bundle a static tar binary with Linux and
Windows (that should cover 90% of my users) and do
nothing in the rest of architectures. In most cases my
users do not have such big files, but when they do the
difference with tar.gz is significant.
Do you Yahoo!?
Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes
More information about the Starkit