Merge branch 'release-4.3.0' into develop

This commit is contained in:
Timofey Solomko
2018-04-29 11:28:27 +03:00
11 changed files with 88 additions and 57 deletions
+2 -2
View File
@@ -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:
+20
View File
@@ -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.
+1 -1
View File
@@ -1 +1 @@
github "tsolomko/BitByteData" "1.2.0-test.3"
github "tsolomko/BitByteData" ~> 1.2
+2 -2
View File
@@ -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.
+3 -3
View File
@@ -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`.
+2 -2
View File
@@ -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"
+2 -2
View File
@@ -15,9 +15,9 @@
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>4.2.2</string>
<string>4.3.0</string>
<key>CFBundleVersion</key>
<string>59</string>
<string>62</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2018 Timofey Solomko. All rights reserved.</string>
</dict>
@@ -15,8 +15,8 @@
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>4.2.2</string>
<string>4.3.0</string>
<key>CFBundleVersion</key>
<string>59</string>
<string>62</string>
</dict>
</plist>
+4 -4
View File
@@ -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";
+1 -1
View File
@@ -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.
+49 -38
View File
@@ -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<br>version|BitByteData<br>version|Test 1|Test 2|Test 3|
|:---:|:---:|---|---|---|
|4.0.0|&mdash;|6.821 ± 0.042|54.214 ± 1.398|7.255 ± 0.117|
|4.0.1|&mdash;|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<br>version|BitByteData<br>version|Swift<br>version|Test 1|Test 2|Test 3|
|:---:|:---:|:---:|---|---|---|
|4.0.0|&mdash;|4.0.X|6.821 ± 0.042|54.214 ± 1.398|7.255 ± 0.117|
|4.0.1|&mdash;|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<br>version|BitByteData<br>version|Test 1|Test 2|Test 3|
|:---:|:---:|---|---|---|
|4.0.0|&mdash;|error|24.663 ± 2.349|2.904 ± 0.076|
|4.0.1|&mdash;|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<br>version|BitByteData<br>version|Swift<br>version|Test 1|Test 2|Test 3|
|:---:|:---:|:---:|---|---|---|
|4.0.0|&mdash;|4.0.X|error|24.663 ± 2.349|2.904 ± 0.076|
|4.0.1|&mdash;|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<br>version|BitByteData<br>version|Test 1|Test 2|Test 3|
|:---:|:---:|---|---|---|
|4.0.0|&mdash;|4.007 ± 0.196|32.043 ± 0.581|4.303 ± 0.045|
|4.0.1|&mdash;|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<br>version|BitByteData<br>version|Swift<br>version|Test 1|Test 2|Test 3|
|:---:|:---:|:---:|---|---|---|
|4.0.0|&mdash;|4.0.X|4.007 ± 0.196|32.043 ± 0.581|4.303 ± 0.045|
|4.0.1|&mdash;|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<br>version|BitByteData<br>version|Test 1|Test 2|Test 3|
|:---:|:---:|---|---|---|
|4.0.0|&mdash;|0.270 ± 0.010|crash|0.601 ± 0.057|
|4.0.1|&mdash;|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<br>version|BitByteData<br>version|Swift<br>version|Test 1|Test 2|Test 3|
|:---:|:---:|:---:|---|---|---|
|4.0.0|&mdash;|4.0.X|0.270 ± 0.010|crash|0.601 ± 0.057|
|4.0.1|&mdash;|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<br>version|BitByteData<br>version|Test 1|Test 2|Test 3|
|:---:|:---:|---|---|---|
|4.0.0|&mdash;|0.248 ± 0.172|1.563 ± 0.442|1.254 ± 0.277|
|4.0.1|&mdash;|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<br>version|BitByteData<br>version|Swift<br>version|Test 1|Test 2|Test 3|
|:---:|:---:|:---:|---|---|---|
|4.0.0|&mdash;|4.0.X|0.248 ± 0.172|1.563 ± 0.442|1.254 ± 0.277|
|4.0.1|&mdash;|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<br>version|BitByteData<br>version|Test 1|Test 2|Test 3|
|:---:|:---:|---|---|---|
|4.0.0|&mdash;|0.072 ± 0.065|0.669 ± 0.147|0.120 ± 0.081|
|4.0.1|&mdash;|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<br>version|BitByteData<br>version|Swift<br>version|Test 1|Test 2|Test 3|
|:---:|:---:|:---:|---|---|---|
|4.0.0|&mdash;|4.0.X|0.072 ± 0.065|0.669 ± 0.147|0.120 ± 0.081|
|4.0.1|&mdash;|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|