ratarmount
Semantic versioning of GUIs and CLIs is not easy to define. The simplest GUI usage has not changed since the first version and even the index file format has been mostly compatible since version 0.2.0 and there is a lot of code for version checking. Based on the semver FAQ, the 1.0.0. release should probably have been a long time ago. Here it is now!
Features
- Bundle modified fusepy in order to add libfuse3 support in case only that one is installed.
Contributions to the mfusepy fork would be welcome! - Add message for first time users to show the result mount point.
Performance
- Disable Python-side buffering when opening files via FUSE.
- Forward underlying archive block sizes to statfs and stat implementations.
Fixes
statfs
did not work when using a write overlay and calling it on a file not in the overlay folder.- Union mounting of inputs with the same name, even if in different folders, ignored all but the first.
- Suppress teardown warning in case the mount source was not even created yet.
- Make mounting work with only a write overlay.
- Avoid hangs and errors caused by non-joined threads before forking into the background by checking for running threads.
- Set locale to C when calling GNU tar to get more reproducible output on
--commit-overlay
.
ratarmountcore
Features
- Add fsspec implementation and register it as ratar://.
- Add support for new formats: SquashFS, Git, FAT12, FAT16, FAT32.
- Add support for fsspec backends. Archives and even index files can now be specified via URIs:
dropbox://, ftp://, git://, github://, http://, https://, ipfs://, ipns://, s3://, ssh://, sftp://, smb://, webdav://. - Add support for remote and compressed index files. Ratarmount will automatically look for
index files with .gz and other common extensions and extracts these into/tmp/
orRATARMOUNT_INDEX_TMPDIR
before using them. MountSource.open
: Addbuffering
argument to enable/disable buffering or set the buffer size.
Fixes
- Argument to
--gzip-seek-point-spacing
was ignored when using the rapidgzip backend. - Index creation did not work with default arguments with an archive in a read-only location.
- Close sqlite3 dummy connection after querying the SQLite version.
- Avoid resource leaks in case a
MountSource
constructor throws. SQLiteIndex
: Do note store checkMetadata callback as a member to avoid dependency cycles.SQLiteIndex
: Ignore errors when the connection is already closed.SQLiteIndexedTar
: Avoid resource leak when constructor fails.
Performance
- Import compiled zip decrypter for 100x speedup for Standard ZIP 2.0 encrypted ZIP files
- Speed up
readdir
and therefore simple use cases such asfind
to iterate all files and folders by 3x. - Avoid reading the whole appended TAR parts into memory for the check has-been-appended-to check.
- Fix block size being ignored when reading everything via
io.BufferedReader
. - Do not use parallelization with possibly huge prefetches for simple file type checks.