diff --git a/.jazzy.yaml b/.jazzy.yaml
index caec3e95..9eddaeb7 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.2.2
+module_version: 4.3.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.2.2
+github_file_prefix: https://github.com/tsolomko/SWCompression/tree/4.3.0
theme: fullwidth
custom_categories:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index dddbb2e9..bba766f7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,25 @@
# Changelog
+## 4.3.0
+
+- Updated to support Swift 4.1.
+- Minuimum required version of BitByteData is now 1.2.0.
+- Added APIs which allow to use custom ZIP Extra Fields.
+ - Added `ZipExtraField` protocol.
+ - Added `ZipExtraFieldLocation` enum.
+ - Added `ZipContainer.customExtraFields` property.
+ - Added `ZipEntryInfo.customExtraFields` property.
+- Added APIs which allow to get information about TAR's format:
+ - Added `TarContainer.Format` enum which represents various formats of TAR containers.
+ - Added `TarContainer.formatOf(container:)` function which returns format of the container.
+ - Added `-f`, `--format` option to swcomp's `tar` command which prints format of TAR container.
+- Added `TarEntryInfo.compressionMethod` property which is always equal to `.copy`.
+- Added documenation for `Container.Entry` and `ContainerEntry.Info` associated types.
+- Reverted "disable symbol stripping" change from 4.2.0 update, since underlying problem was fixed in Carthage.
+- Benchmarks changes:
+ - Iterations number increased from 6 to 10.
+ - There is now a zeroth iteration which is excluded from averages.
+
## 4.2.2
- Fixed skipping entries in `SevenZipContainer.open(container:)` in some rare cases.
diff --git a/Cartfile b/Cartfile
index 02555728..20558217 100644
--- a/Cartfile
+++ b/Cartfile
@@ -1 +1 @@
-github "tsolomko/BitByteData" "1.2.0-test.3"
+github "tsolomko/BitByteData" ~> 1.2
diff --git a/Package.swift b/Package.swift
index 805d1fee..0da00ff9 100644
--- a/Package.swift
+++ b/Package.swift
@@ -11,9 +11,9 @@ let package = Package(
dependencies: [
// SWCOMP: Uncomment the line below to build swcomp example program.
// .package(url: "https://github.com/jakeheis/SwiftCLI",
- // from: "4.2.0"),
+ // from: "5.0.0"),
.package(url: "https://github.com/tsolomko/BitByteData",
- from: "1.2.0-test"),
+ from: "1.2.0"),
],
targets: [
// SWCOMP: Uncomment the lines below to build swcomp example program.
diff --git a/README.md b/README.md
index 17d230e5..ad77dd44 100644
--- a/README.md
+++ b/README.md
@@ -51,7 +51,7 @@ let package = Package(
name: "PackageName",
dependencies: [
.package(url: "https://github.com/tsolomko/SWCompression.git",
- from: "4.2.0")
+ from: "4.3.0")
],
targets: [
.target(
@@ -66,7 +66,7 @@ More details you can find in [Swift Package Manager's Documentation](https://git
### CocoaPods
-Add `pod 'SWCompression', '~> 4.2'` and `use_frameworks!` to your Podfile.
+Add `pod 'SWCompression', '~> 4.3'` and `use_frameworks!` to your Podfile.
To complete installation, run `pod install`.
@@ -112,7 +112,7 @@ __Note:__ If you use Swift Package Manager or Carthage you always have everythin
### Carthage
-Add to your Cartfile `github "tsolomko/SWCompression" ~> 4.2`.
+Add to your Cartfile `github "tsolomko/SWCompression" ~> 4.3`.
Then run `carthage update`.
diff --git a/SWCompression.podspec b/SWCompression.podspec
index 0a68532f..a0309604 100644
--- a/SWCompression.podspec
+++ b/SWCompression.podspec
@@ -1,7 +1,7 @@
Pod::Spec.new do |s|
s.name = "SWCompression"
- s.version = "4.2.2"
+ s.version = "4.3.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."
@@ -22,7 +22,7 @@ Pod::Spec.new do |s|
s.swift_version = "4.1"
- s.dependency "BitByteData", "~> 1.1"
+ s.dependency "BitByteData", "~> 1.2.0"
s.subspec "Deflate" do |sp|
sp.source_files = "Sources/{Deflate/*,Common/*}.swift"
diff --git a/SWCompression.xcodeproj/SWCompression.plist b/SWCompression.xcodeproj/SWCompression.plist
index 328506ea..f2425192 100644
--- a/SWCompression.xcodeproj/SWCompression.plist
+++ b/SWCompression.xcodeproj/SWCompression.plist
@@ -15,9 +15,9 @@
CFBundlePackageType
FMWK
CFBundleShortVersionString
- 4.2.2
+ 4.3.0
CFBundleVersion
- 59
+ 62
NSHumanReadableCopyright
Copyright © 2018 Timofey Solomko. All rights reserved.
diff --git a/SWCompression.xcodeproj/TestSWCompression.plist b/SWCompression.xcodeproj/TestSWCompression.plist
index 8b00954d..41412361 100644
--- a/SWCompression.xcodeproj/TestSWCompression.plist
+++ b/SWCompression.xcodeproj/TestSWCompression.plist
@@ -15,8 +15,8 @@
CFBundlePackageType
BNDL
CFBundleShortVersionString
- 4.2.2
+ 4.3.0
CFBundleVersion
- 59
+ 62
diff --git a/SWCompression.xcodeproj/project.pbxproj b/SWCompression.xcodeproj/project.pbxproj
index a27fbd14..800d1067 100644
--- a/SWCompression.xcodeproj/project.pbxproj
+++ b/SWCompression.xcodeproj/project.pbxproj
@@ -1159,7 +1159,7 @@
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- CURRENT_PROJECT_VERSION = 59;
+ CURRENT_PROJECT_VERSION = 62;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
@@ -1216,7 +1216,7 @@
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- CURRENT_PROJECT_VERSION = 59;
+ CURRENT_PROJECT_VERSION = 62;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_STRICT_OBJC_MSGSEND = YES;
"FRAMEWORK_SEARCH_PATHS[sdk=appletvos*]" = "\"$(SRCROOT)/Carthage/Build/tvOS\"";
@@ -1254,7 +1254,7 @@
APPLICATION_EXTENSION_API_ONLY = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 59;
+ DYLIB_CURRENT_VERSION = 62;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = SWCompression.xcodeproj/SWCompression.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -1282,7 +1282,7 @@
APPLICATION_EXTENSION_API_ONLY = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
- DYLIB_CURRENT_VERSION = 59;
+ DYLIB_CURRENT_VERSION = 62;
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 5634f3eb..86714538 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.2.2",
+let cli = CLI(name: "swcomp", version: "4.3.0",
description: """
swcomp - small command-line client for SWCompression framework.
Serves as an example of SWCompression usage.
diff --git a/Tests/Results.md b/Tests/Results.md
index 3a7d19a2..0f749650 100644
--- a/Tests/Results.md
+++ b/Tests/Results.md
@@ -1,17 +1,22 @@
# Test Results
-In this document you can find the results of benchmarking which were run on Macbook Pro, Late 2011.
-The main purpose of these results is to track the progress from version to version.
+In this document you can find the results of benchmarking which was performed on Macbook Pro, Late 2011. The main
+purpose of these results is to track progress from version to version.
-__Note:__ Since version 4.1.0 of SWCompression internal functionality related to reading/writing bits and bytes
+__Note:__ Since 4.1.0 version of SWCompression internal functionality related to reading/writing bits and bytes
is published as a separate framework, [BitByteData](https://github.com/tsolomko/BitByteData).
-It is worth mentioning that overall performance depends on the speed of reading and writing,
-and thus BitByteData's version (which is specified in a separate column in the tables below)
-becomes relevant to benchmarking, since newer version can contain speed improvements.
+The overall performance heavily depends on the speed of reading and writing, and thus BitByteData's version, which is
+specified in a separate column in the tables below, becomes relevant to benchmarking, since newer versions can contain
+performance improvements.
+
+__Note:__ Since 4.3.0 version of SWCompression the first (zeroth, actually) iteration is excluded from averages
+calculation since this iteration has abnormally longer execution time than any of the following iterations. This
+exclusion led not only to (artificially) improved results, but also to the increased quality of the results by reducing
+calculated uncertainty.
## Tests description
-There are three different datasets for testing. When choosing them I was trying to have something,
+There are three different datasets for testing. When choosing them the intention was to have something
that represents real life situations. For obvious reasons these test files aren't provided anywhere
in the repository.
@@ -22,52 +27,58 @@ in the repository.
All tests were run using swcomp's "benchmark" command. SWCompression (and swcomp) were compiled
using "Release" configuration.
-__Note:__ All results are averages over 6 iterations.
+__Note:__ All results are averages over 10 iterations (6 iterations until 4.3.0 version).
## BZip2 Decompress
-|SWCompression
version|BitByteData
version|Test 1|Test 2|Test 3|
-|:---:|:---:|---|---|---|
-|4.0.0|—|6.821 ± 0.042|54.214 ± 1.398|7.255 ± 0.117|
-|4.0.1|—|6.797 ± 0.080|54.046 ± 1.070|7.177 ± 0.029|
-|4.1.0|1.0.1|4.452 ± 0.125|36.768 ± 0.382|4.880 ± 0.094|
+|SWCompression
version|BitByteData
version|Swift
version|Test 1|Test 2|Test 3|
+|:---:|:---:|:---:|---|---|---|
+|4.0.0|—|4.0.X|6.821 ± 0.042|54.214 ± 1.398|7.255 ± 0.117|
+|4.0.1|—|4.0.X|6.797 ± 0.080|54.046 ± 1.070|7.177 ± 0.029|
+|4.1.0|1.0.1|4.0.X|4.452 ± 0.125|36.768 ± 0.382|4.880 ± 0.094|
+|4.3.0|1.2.0|4.1.0|3.481 ± 0.038|27.187 ± 0.152|3.914 ± 0.091|
## XZ Unarchive (LZMA/LZMA2 Decompress)
-|SWCompression
version|BitByteData
version|Test 1|Test 2|Test 3|
-|:---:|:---:|---|---|---|
-|4.0.0|—|error|24.663 ± 2.349|2.904 ± 0.076|
-|4.0.1|—|2.475 ± 0.067|23.507 ± 0.423|2.901 ± 0.049|
-|4.1.0|1.0.1|2.480 ± 0.091|24.126 ± 1.239|2.892 ± 0.052|
+|SWCompression
version|BitByteData
version|Swift
version|Test 1|Test 2|Test 3|
+|:---:|:---:|:---:|---|---|---|
+|4.0.0|—|4.0.X|error|24.663 ± 2.349|2.904 ± 0.076|
+|4.0.1|—|4.0.X|2.475 ± 0.067|23.507 ± 0.423|2.901 ± 0.049|
+|4.1.0|1.0.1|4.0.X|2.480 ± 0.091|24.126 ± 1.239|2.892 ± 0.052|
+|4.3.0|1.2.0|4.1.0|2.664 ± 0.031|26.030 ± 1.200|3.111 ± 0.053|
## GZip Unarchive (Deflate Decompress)
-|SWCompression
version|BitByteData
version|Test 1|Test 2|Test 3|
-|:---:|:---:|---|---|---|
-|4.0.0|—|4.007 ± 0.196|32.043 ± 0.581|4.303 ± 0.045|
-|4.0.1|—|3.886 ± 0.100|32.390 ± 0.896|4.295 ± 0.040|
-|4.1.0|1.0.1|2.886 ± 0.571|22.134 ± 1.473|2.700 ± 0.168|
+|SWCompression
version|BitByteData
version|Swift
version|Test 1|Test 2|Test 3|
+|:---:|:---:|:---:|---|---|---|
+|4.0.0|—|4.0.X|4.007 ± 0.196|32.043 ± 0.581|4.303 ± 0.045|
+|4.0.1|—|4.0.X|3.886 ± 0.100|32.390 ± 0.896|4.295 ± 0.040|
+|4.1.0|1.0.1|4.0.X|2.886 ± 0.571|22.134 ± 1.473|2.700 ± 0.168|
+|4.3.0|1.2.0|4.1.0|1.622 ± 0.016|13.641 ± 0.069|1.804 ± 0.028|
## 7-Zip Info Function
-|SWCompression
version|BitByteData
version|Test 1|Test 2|Test 3|
-|:---:|:---:|---|---|---|
-|4.0.0|—|0.270 ± 0.010|crash|0.601 ± 0.057|
-|4.0.1|—|0.258 ± 0.003|0.601 ± 0.010|0.473 ± 0.008|
-|4.1.0|1.0.1|0.062 ± 0.008|0.208 ± 0.010|0.122 ± 0.003|
+|SWCompression
version|BitByteData
version|Swift
version|Test 1|Test 2|Test 3|
+|:---:|:---:|:---:|---|---|---|
+|4.0.0|—|4.0.X|0.270 ± 0.010|crash|0.601 ± 0.057|
+|4.0.1|—|4.0.X|0.258 ± 0.003|0.601 ± 0.010|0.473 ± 0.008|
+|4.1.0|1.0.1|4.0.X|0.062 ± 0.008|0.208 ± 0.010|0.122 ± 0.003|
+|4.3.0|1.2.0|4.1.0|0.060 ± 0.006|0.208 ± 0.008|0.123 ± 0.008|
## TAR Info Function
-|SWCompression
version|BitByteData
version|Test 1|Test 2|Test 3|
-|:---:|:---:|---|---|---|
-|4.0.0|—|0.248 ± 0.172|1.563 ± 0.442|1.254 ± 0.277|
-|4.0.1|—|0.187 ± 0.177|1.257 ± 0.404|1.016 ± 0.325|
-|4.1.0|1.0.1|0.194 ± 0.190|1.335 ± 0.475|1.062 ± 0.353|
+|SWCompression
version|BitByteData
version|Swift
version|Test 1|Test 2|Test 3|
+|:---:|:---:|:---:|---|---|---|
+|4.0.0|—|4.0.X|0.248 ± 0.172|1.563 ± 0.442|1.254 ± 0.277|
+|4.0.1|—|4.0.X|0.187 ± 0.177|1.257 ± 0.404|1.016 ± 0.325|
+|4.1.0|1.0.1|4.0.X|0.194 ± 0.190|1.335 ± 0.475|1.062 ± 0.353|
+|4.3.0|1.2.0|4.1.0|0.111 ± 0.008|1.014 ± 0.016|0.813 ± 0.015|
## ZIP Info Function
-|SWCompression
version|BitByteData
version|Test 1|Test 2|Test 3|
-|:---:|:---:|---|---|---|
-|4.0.0|—|0.072 ± 0.065|0.669 ± 0.147|0.120 ± 0.081|
-|4.0.1|—|0.076 ± 0.064|0.670 ± 0.142|0.123 ± 0.080|
-|4.1.0|1.0.1|0.063 ± 0.076|0.148 ± 0.107|0.105 ± 0.089|
+|SWCompression
version|BitByteData
version|Swift
version|Test 1|Test 2|Test 3|
+|:---:|:---:|:---:|---|---|---|
+|4.0.0|—|4.0.X|0.072 ± 0.065|0.669 ± 0.147|0.120 ± 0.081|
+|4.0.1|—|4.0.X|0.076 ± 0.064|0.670 ± 0.142|0.123 ± 0.080|
+|4.1.0|1.0.1|4.0.X|0.063 ± 0.076|0.148 ± 0.107|0.105 ± 0.089|
+|4.3.0|1.2.0|4.1.0|0.044 ± 0.007|0.122 ± 0.009|0.086 ± 0.008|