Releases: chpock/cookfs
v1.9.0
Notable changes:
-
Improved deduplication. When adding a new file that is exactly the same as an already added file, the new file will not take up space in the archive, but will use the bytes of the previous file.
-
Added a fileset feature. File sets are the ability to have different sets of files in the same archive and to switch between them. File sets can have either arbitrary names or automatic names that correspond to the current platform and/or current version of Tcl. In the latter case, when the archive is mounted, the file set that corresponds to the current platform and/or version of Tcl will be selected.
This makes it possible to create archives that, for example, when mounted on Windows platform with the Tcl8.6 interpreter, will have one set of files, and when mounted on Linux platform with the Tcl9.0 interpreter, will have a different set.
This feature will be used in the future to provide universal and cross-platform packages (archives) that will contain files (including loadable modules) suitable for multiple platforms and/or versions of Tcl. -
Added the ability to link the package directly to zlib (without zlib functions in the Tcl C API), and to link the package to the mbedTLS library for cryptographic functions. This will allow zlib and mbedTLS to be used directly if cookfs is not used as a separate package, but as part of an application that is already linked to these libraries.
In the case of zlib, this allows for faster and more memory-efficient zlib compression, because with the Tcl C API it is necessary to convert compressed/uncompressed memory areas into a Tcl object. In the case of mbedTLS, this allows to use the same code for SHA256 and AES encryption cryptographic functions, rather than duplicating it with yet another implementation. -
Added support for attributes for VFS root, files and directories. Using attributes, it is possible to manage the file system, or to get information and explore it. For example, using attributes, it is possible to change the current compression method, set a password, enable write-to-memory mode, get information about compression of existing files (compression method, size before and after compression), and much more.
-
The values for the pagesize/smallfilesize/smallfilebuffer mount parameters are now retained and the previous values will be used for subsequent mounts.
-
Added
::cookfs::sha256
command to get SHA256 hash for certain data. This command is only available if the package is built with cryptographic features enabled (they are enabled by default).
v1.8.0
Notable changes:
-
Added support for strong AES-256-CBC encryption with PBKDF2-HMAC-SHA256 key derivation. Cookfs supports 2 modes in which either individual files or the encryption key can be encrypted. The second mode will be very useful when the same archive needs to be shared with different passwords. More details about these modes and how to work with them is described in the documentation. http://cookfs.chpock.tk/cookfs.html#section10
-
Added a C header file (tclCookfs.h) that is installed with the package and contains a mount function and functions for configuring mount parameters. These functions make it easier to integrate cookfs as a file store for tclkit.
v1.7.0
Notable changes:
-
Added multithreading support. It is now possible to mount cookfs in multithreaded mode. In this mode cookfs will be available to all application threads in read-write mode.
-
Added ability to specify compression level for all supported compression algorithms. The optimal level is used by default.
-
Added support for Zstandard compression (not enabled by default).
-
Added support for brotli compression (not enabled by default).
v1.6.0
Notable changes:
-
Added C variants for all parts of Cookfs. Removed dependency on tclvfs. This means that now the cookfs package does not depend on any Tcl scripts and will work when built as a single loadable binary module. If static linking is used, the process is also significantly simplified. You can use VFS immediately after loading a static package.
-
Added the ability to detect that a file has been truncated. This is a common error when a file is copied/downloaded incompletely. In this case the file is corrupted and using it causes an error. If it is tclkit, then it will cause an application startup error. Usually in such cases some error like "file system mount error", "interpreter initialization error" or some "internal error" is returned. This completely confuses the user and leads to the wrong conclusion that the application is not working. Cookfs tries to identify such cases. If such a case is detected, then cookfs will return the following error:
The archive "<filename>" appears to be corrupted or truncated. Expected archive size is <size> bytes or larger.
-
Added support for Tcl 9
-
Tests have been significantly improved. Added an automatic check for memory leaks to CI. It can be confidently confirmed that there are no memory leaks in this module.
-
Added a simple (for now) interface to mount VFS from C code.
-
XZ format was replaced by a simple LZMA. This allowed to reduce the size of the module and the size of the service data in the archive, which is generated by XZ format. Also, the LZMA library has been updated from v23.01 to v.24.05
-
Added the ability to create a VFS entirely in memory (in-memory VFS), without using a physical file.
-
Other miscellaneous updates and bug fixes.
v1.5.0
Full Changelog: v1.4.0...v1.5.0