Releases: tsolomko/SWCompression
Releases · tsolomko/SWCompression
3.3.0 Test 2
This test release contains fixes and improvements in other than 7z parts of SWCompression.
3.3.0 Test 1
This pre-release version includes support for 7-Zip containers.
3.2.0
- Added
creationTime
property and corresponding key/value pair intoentryAttributes
forTarEntry
. - Added support for ZIP standardized CP437 encoding of string fields such as file name and file comment.
- Fallback to UTF-8 if CP437 is unavailable.
- Fallback to UTF-8 if it is detected that string fields is in UTF-8.
Comment: The latter is necessary because, apparently, ZIP files created by Info-ZIP tools never specify UTF-8 flag, even in cases when it should be set.
- Fixed problem with installing SWCompression using Swift Package Manager.
Comment: SPM performsgit clone
from local repository during installation of package which doesn't work well with Git LFS enabled repositories. To fix this, test files were moved into a separate repository and included as a submodule. - Fixed problem with finding ZIP64 end of Central Directory locator.
- Fixed problem with accessing
ZipEntry
's data two or more times. - Fixed problem with accessing data of BZip2 compressed
ZipEntry
. - Fixed problem with incorrect reading ZIP64 data descriptor.
- Removed internal
SWCompression/Common
subspec.
3.2.0 Test
A test version of the upcoming 3.2.0 update. Necessary to test internal changes such as splitting source files, etc.
3.1.3
3.1.2
3.1.1
- Permissions attribute from
entryAttributes
andmode
property forTarEntry
are now decimal based instead of octal as was intended.
Comment: Decimal-based permissions are consistent with permissions forZipEntry
. Furthermore,FileManager.setAttributes
function expects decimal based number and this change eliminates unnecessary conversion. - Now consistently throws
fieldIsNotNumber
error when encounters non-number required field in TAR header.
Comment: Previously, there were a couple of properties for which this error wasn't thrown and the problem with such properties was silently ignored. Now it is fixed. - Documentation for
entryAttributes
now lists possible attributes.
3.1.0
- Added support for multi-member GZip and multi-stream XZ archives.
Comment: This archives are essentially several separate archives concatenated into one file. Despite that, they are described in specifications for both GZip and XZ, so it is important to be able to open them. Story time: they were actually supported up until SWCompression 3.0 where it was removed because it was kind of a hidden functionality. Moreover, the resulted data from each part of multi-member archive were combined into singleData
object which was hard to use. But now there is a separatemultiunarchive(:)
function for these cases. - Added
entryAttributes
property to bothTarEntry
andZipEntry
.- This property allows access to various attributes such as modification time, POSIX permissions, entry type, etc.
- Existing separate
TarEntry
properties for these attributes are now considered deprecated and will be removed in 4.0. - This also means that
ZipEntry
's modification time, permissions, etc can be now accessed. - This property utilizes
FileAttributeKey
type from Foundation framework which provides relatively easy way of setting attributes of unpacked file throughFileManager.setAttributes
function. - This property also contains information about type of an entry.
FileAttributeType
values from Foundation are used for specifying it. entryAttributes
is going to be renamed toattributes
in 4.0.
- Added support in
TarEntry
for linked file path specified using PAX format. - Fixed several problems with decompressing LZMA compressed files from ZIP container.
- Fixed problem with discarding ZIP containers with
wrongVersion
error when they contain LZMA or BZip2 compressed files. - Encrypted ZIP containers should now be detected properly and error should be now thrown more consistently.
ZipError.compressionNotSupported
is now only thrown when trying to get entry's data and not when just opening an archive usingopen(:)
function.- Text fields from GZip header are now decoded more correctly.
Comment: Previously, SWCompression expected UTF-8 encoding in this fields, but according to specification this fields are encoded using ISO-Latin-1 encoding. In most real-life scenarios this mismatch was unlikely to cause any problem, but it was kind of incorrect behaviour and is now fixed. - Improved Deflate comrpession rate for some corner cases.
- Improved BZip2 performance for big data sizes.
Side notes.
- 'Know issues' section was added to README.
- Performance discussions, thoughts and notes about it were moved into a separate file.
3.1.0 Test
This upcoming release will include designated functions for 'multiunarchive' functionality as well as some improvements to file attributes support in containers and fixes for several problems.