diff --git a/.jazzy.yaml b/.jazzy.yaml index 73783e34..a1aa0b2e 100644 --- a/.jazzy.yaml +++ b/.jazzy.yaml @@ -3,11 +3,11 @@ sourcekitten_sourcefile: docs.json clean: true author: Timofey Solomko module: SWCompression -module_version: 4.4.0-test +module_version: 4.4.0 copyright: '© 2018 Timofey Solomko' readme: README.md github_url: https://github.com/tsolomko/SWCompression -github_file_prefix: https://github.com/tsolomko/SWCompression/tree/4.4.0-test +github_file_prefix: https://github.com/tsolomko/SWCompression/tree/4.4.0 theme: fullwidth custom_categories: diff --git a/CHANGELOG.md b/CHANGELOG.md index bba766f7..3f672e54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,38 @@ # Changelog +## 4.4.0 + +- Added APIs which allow creation of new TAR containers: + - Added `TarContainer.create(from:)` function. + - Added `TarCreateError` error type with a single case `utf8NonEncodable`. +- `TarEntry.info` and `TarEntry.data` are now `var`-properties (instead of `let`). +- Accessing setter of `TarEntry.data` now automatically updates corresponding `TarEntry.info.size` with `data.count` + value (or 0 if `data` is `nil`). +- Added `TarEntry.init(info:data:)` initializer. +- Most public properties of `TarEntry` are now `var`-properties (instead of `let`). Exceptions: `size` and `type`. +- Added `TarEntryInfo.init(name:type:)` initializer. +- Improved compatibility with other TAR implementations: + - All string fields of TAR headers are now treated as UTF-8 strings. + - Non-well-formed integer fields of TAR headers no longer cause `TarError.wrongField` to be thrown and instead + result in `nil` values of corresponding properties of `TarEntryInfo` (exception: `size` field). + - Base-256 encoding of numeric fields is now supported. + - Leading NULLs and whitespaces in numeric fields are now correctly skipped. + - Sun Extended Headers are now processed as local PAX extended headers instead of being considered entries with + `.unknown` type. + - GNU TAR format features for incremental backups are now partially supported (access and creation time). +- `TarContainer.formatOf` now correctly returns `TarFormat.gnu` when GNU format "magic" field is encountered. +- A new (copy) `Data` object is now created for `TarEntry.data` property instead of using a slice of input data. +- Fixed incorrect file name of TAR entries from containers with GNU TAR format-specific features being used. +- Fixed `TarError.wrongPaxHeaderEntry` error being thrown when header with multi-byte UTF-8 characters is encountered. +- Fixed incorrect values of `TarEntryInfo.ownerID`, `groupID`, `deviceMajorNumber` and `deviceMinorNumber` properties. +- Slightly improved performance of LZMA/LZMA2 operations by making internal classes declared as `final`. +- swcomp changes: + - Added `-c`, `--create` option to `tar` command which creates a new TAR container. + - Output of bencmark commands is now properly flushed on non-Linux platforms. + - Results for omitted iterations of benchmark commands are now also printed. + - Iteration number in benchmark commands is now printed with leading zeros. + - Fixed compilation error on Linux platforms due to `ObjCBool` no longer being an alias for `Bool`. + ## 4.3.0 - Updated to support Swift 4.1. diff --git a/SWCompression.podspec b/SWCompression.podspec index 08daaf72..f223516e 100644 --- a/SWCompression.podspec +++ b/SWCompression.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "SWCompression" - s.version = "4.4.0-test" + s.version = "4.4.0" s.summary = "A framework with functions for working with compression, archives and containers." s.description = "A framework with (de)compression algorithms and functions for processing various archives and containers." diff --git a/SWCompression.xcodeproj/SWCompression.plist b/SWCompression.xcodeproj/SWCompression.plist index a72643d5..619f4df7 100644 --- a/SWCompression.xcodeproj/SWCompression.plist +++ b/SWCompression.xcodeproj/SWCompression.plist @@ -15,9 +15,9 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.4.0-test + 4.4.0 CFBundleVersion - 63 + 64 NSHumanReadableCopyright Copyright © 2018 Timofey Solomko. All rights reserved. diff --git a/SWCompression.xcodeproj/TestSWCompression.plist b/SWCompression.xcodeproj/TestSWCompression.plist index c7d7c063..1eb6dd8d 100644 --- a/SWCompression.xcodeproj/TestSWCompression.plist +++ b/SWCompression.xcodeproj/TestSWCompression.plist @@ -15,8 +15,8 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 4.4.0-test + 4.4.0 CFBundleVersion - 63 + 64 diff --git a/SWCompression.xcodeproj/project.pbxproj b/SWCompression.xcodeproj/project.pbxproj index 248f224f..bf2bc9e1 100644 --- a/SWCompression.xcodeproj/project.pbxproj +++ b/SWCompression.xcodeproj/project.pbxproj @@ -1195,7 +1195,7 @@ CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CURRENT_PROJECT_VERSION = 63; + CURRENT_PROJECT_VERSION = 64; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; @@ -1252,7 +1252,7 @@ CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CURRENT_PROJECT_VERSION = 63; + CURRENT_PROJECT_VERSION = 64; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_STRICT_OBJC_MSGSEND = YES; "FRAMEWORK_SEARCH_PATHS[sdk=appletvos*]" = "\"$(SRCROOT)/Carthage/Build/tvOS\""; @@ -1290,7 +1290,7 @@ APPLICATION_EXTENSION_API_ONLY = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 63; + DYLIB_CURRENT_VERSION = 64; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = SWCompression.xcodeproj/SWCompression.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; @@ -1318,7 +1318,7 @@ APPLICATION_EXTENSION_API_ONLY = YES; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 63; + DYLIB_CURRENT_VERSION = 64; DYLIB_INSTALL_NAME_BASE = "@rpath"; INFOPLIST_FILE = SWCompression.xcodeproj/SWCompression.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; diff --git a/Sources/swcomp/main.swift b/Sources/swcomp/main.swift index 03d6cbf6..7d6d92c3 100644 --- a/Sources/swcomp/main.swift +++ b/Sources/swcomp/main.swift @@ -7,7 +7,7 @@ import Foundation import SWCompression import SwiftCLI -let cli = CLI(name: "swcomp", version: "4.4.0-test", +let cli = CLI(name: "swcomp", version: "4.4.0", description: """ swcomp - small command-line client for SWCompression framework. Serves as an example of SWCompression usage.