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.