Bump edition to 2021, along with min rust version
This commit is contained in:
parent
ece9787822
commit
faf10c64a9
6 changed files with 117 additions and 125 deletions
144
.github/workflows/oxipng.yml
vendored
144
.github/workflows/oxipng.yml
vendored
|
|
@ -13,80 +13,80 @@ jobs:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
target:
|
target:
|
||||||
- x86_64-unknown-linux-gnu
|
- x86_64-unknown-linux-gnu
|
||||||
- x86_64-unknown-linux-musl
|
- x86_64-unknown-linux-musl
|
||||||
- x86_64-pc-windows-msvc
|
- x86_64-pc-windows-msvc
|
||||||
- x86_64-apple-darwin
|
- x86_64-apple-darwin
|
||||||
toolchain:
|
toolchain:
|
||||||
# Minimum stable
|
# Minimum stable
|
||||||
- "1.46.0"
|
- "1.56.0"
|
||||||
- stable
|
- stable
|
||||||
- beta
|
- beta
|
||||||
- nightly
|
- nightly
|
||||||
include:
|
include:
|
||||||
- target: x86_64-unknown-linux-gnu
|
- target: x86_64-unknown-linux-gnu
|
||||||
os: ubuntu-latest
|
os: ubuntu-latest
|
||||||
- target: x86_64-unknown-linux-musl
|
- target: x86_64-unknown-linux-musl
|
||||||
os: ubuntu-latest
|
os: ubuntu-latest
|
||||||
- target: x86_64-pc-windows-msvc
|
- target: x86_64-pc-windows-msvc
|
||||||
os: windows-latest
|
os: windows-latest
|
||||||
- target: x86_64-apple-darwin
|
- target: x86_64-apple-darwin
|
||||||
os: macOS-latest
|
os: macOS-latest
|
||||||
exclude:
|
exclude:
|
||||||
- target: x86_64-pc-windows-msvc
|
- target: x86_64-pc-windows-msvc
|
||||||
toolchain: beta
|
toolchain: beta
|
||||||
- target: x86_64-pc-windows-msvc
|
- target: x86_64-pc-windows-msvc
|
||||||
toolchain: nightly
|
toolchain: nightly
|
||||||
- target: x86_64-apple-darwin
|
- target: x86_64-apple-darwin
|
||||||
toolchain: beta
|
toolchain: beta
|
||||||
- target: x86_64-apple-darwin
|
- target: x86_64-apple-darwin
|
||||||
toolchain: nightly
|
toolchain: nightly
|
||||||
- target: x86_64-unknown-linux-musl
|
- target: x86_64-unknown-linux-musl
|
||||||
toolchain: beta
|
toolchain: beta
|
||||||
- target: x86_64-unknown-linux-musl
|
- target: x86_64-unknown-linux-musl
|
||||||
toolchain: nightly
|
toolchain: nightly
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- name: Install musl tools
|
- name: Install musl tools
|
||||||
run: sudo apt-get install musl-tools
|
run: sudo apt-get install musl-tools
|
||||||
if: "contains(matrix.target, 'musl')"
|
if: "contains(matrix.target, 'musl')"
|
||||||
- name: Install ${{ matrix.toolchain }}
|
- name: Install ${{ matrix.toolchain }}
|
||||||
uses: actions-rs/toolchain@v1
|
uses: actions-rs/toolchain@v1
|
||||||
with:
|
with:
|
||||||
profile: minimal
|
profile: minimal
|
||||||
toolchain: ${{ matrix.toolchain }}
|
toolchain: ${{ matrix.toolchain }}
|
||||||
override: true
|
override: true
|
||||||
components: clippy, rustfmt
|
components: clippy, rustfmt
|
||||||
- name: Cache cargo registry
|
- name: Cache cargo registry
|
||||||
uses: actions/cache@v1
|
uses: actions/cache@v1
|
||||||
with:
|
with:
|
||||||
path: ~/.cargo/registry/cache
|
path: ~/.cargo/registry/cache
|
||||||
key: ${{ matrix.target }}-${{ matrix.toolchain }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
|
key: ${{ matrix.target }}-${{ matrix.toolchain }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ matrix.target }}-${{ matrix.toolchain }}-cargo-registry-
|
${{ matrix.target }}-${{ matrix.toolchain }}-cargo-registry-
|
||||||
- name: Run rustfmt
|
- name: Run rustfmt
|
||||||
if: matrix.toolchain == 'stable'
|
if: matrix.toolchain == 'stable'
|
||||||
uses: actions-rs/cargo@v1
|
uses: actions-rs/cargo@v1
|
||||||
with:
|
with:
|
||||||
command: fmt
|
command: fmt
|
||||||
args: -- --check
|
args: -- --check
|
||||||
- name: Run clippy
|
- name: Run clippy
|
||||||
if: matrix.toolchain == 'stable'
|
if: matrix.toolchain == 'stable'
|
||||||
uses: actions-rs/clippy-check@v1
|
uses: actions-rs/clippy-check@v1
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
args: -- -D warnings
|
args: -- -D warnings
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: cargo test
|
run: cargo test
|
||||||
- name: Build benchmarks
|
- name: Build benchmarks
|
||||||
if: matrix.toolchain == 'nightly'
|
if: matrix.toolchain == 'nightly'
|
||||||
run: cargo bench --no-run
|
run: cargo bench --no-run
|
||||||
- name: Build docs
|
- name: Build docs
|
||||||
run: cargo doc --no-deps
|
run: cargo doc --no-deps
|
||||||
- name: Check no default features
|
- name: Check no default features
|
||||||
if: matrix.toolchain == 'stable'
|
if: matrix.toolchain == 'stable'
|
||||||
uses: actions-rs/clippy-check@v1
|
uses: actions-rs/clippy-check@v1
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
args: --no-default-features -- -D warnings
|
args: --no-default-features -- -D warnings
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
### Next
|
### Next
|
||||||
|
|
||||||
|
- [Breaking] Bump minimum Rust version to 1.56.0
|
||||||
- [Misc] Bump `clap` to 3.0.0
|
- [Misc] Bump `clap` to 3.0.0
|
||||||
- [Misc] Bump `zopfli` to 0.5.0
|
- [Misc] Bump `zopfli` to 0.5.0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,14 @@ authors = ["Joshua Holmer <jholmer.in@gmail.com>"]
|
||||||
categories = ["command-line-utilities", "compression"]
|
categories = ["command-line-utilities", "compression"]
|
||||||
description = "A lossless PNG compression optimizer"
|
description = "A lossless PNG compression optimizer"
|
||||||
documentation = "https://docs.rs/oxipng"
|
documentation = "https://docs.rs/oxipng"
|
||||||
edition = "2018"
|
edition = "2021"
|
||||||
exclude = ["tests/*", "bench/*"]
|
exclude = ["tests/*", "bench/*"]
|
||||||
homepage = "https://github.com/shssoichiro/oxipng"
|
homepage = "https://github.com/shssoichiro/oxipng"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
name = "oxipng"
|
name = "oxipng"
|
||||||
repository = "https://github.com/shssoichiro/oxipng"
|
repository = "https://github.com/shssoichiro/oxipng"
|
||||||
build = "build.rs"
|
|
||||||
version = "5.0.1"
|
version = "5.0.1"
|
||||||
rust-version = "1.46.0"
|
rust-version = "1.56.0"
|
||||||
|
|
||||||
[badges]
|
[badges]
|
||||||
travis-ci = { repository = "shssoichiro/oxipng", branch = "master" }
|
travis-ci = { repository = "shssoichiro/oxipng", branch = "master" }
|
||||||
|
|
|
||||||
37
README.md
37
README.md
|
|
@ -17,12 +17,14 @@ Oxipng for Windows can be downloaded from the [Releases](https://github.com/shss
|
||||||
For MacOS or Linux, it is recommended to install from your distro's package repository, if possible.
|
For MacOS or Linux, it is recommended to install from your distro's package repository, if possible.
|
||||||
|
|
||||||
Alternatively, oxipng can be installed from Cargo, via the following command:
|
Alternatively, oxipng can be installed from Cargo, via the following command:
|
||||||
|
|
||||||
```
|
```
|
||||||
cargo install oxipng
|
cargo install oxipng
|
||||||
```
|
```
|
||||||
|
|
||||||
Oxipng can be built from source using the latest stable or nightly Rust.
|
Oxipng can be built from source using the latest stable or nightly Rust.
|
||||||
This is primarily useful for developing on oxipng.
|
This is primarily useful for developing on oxipng.
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/shssoichiro/oxipng.git
|
git clone https://github.com/shssoichiro/oxipng.git
|
||||||
cd oxipng
|
cd oxipng
|
||||||
|
|
@ -30,7 +32,7 @@ cargo build --release
|
||||||
cp target/release/oxipng /usr/local/bin
|
cp target/release/oxipng /usr/local/bin
|
||||||
```
|
```
|
||||||
|
|
||||||
The current minimum supported Rust version is **1.46.0**.
|
The current minimum supported Rust version is **1.56.0**.
|
||||||
|
|
||||||
Oxipng follows Semantic Versioning.
|
Oxipng follows Semantic Versioning.
|
||||||
|
|
||||||
|
|
@ -43,21 +45,22 @@ oxipng -o 4 -i 1 --strip safe *.png
|
||||||
```
|
```
|
||||||
|
|
||||||
The most commonly used options are as follows:
|
The most commonly used options are as follows:
|
||||||
* Optimization: `-o 1` through `-o 6`, lower is faster, higher is better compression.
|
|
||||||
The default (`-o 2`) is sufficiently fast on a modern CPU and provides 30-50% compression
|
- Optimization: `-o 1` through `-o 6`, lower is faster, higher is better compression.
|
||||||
gains over an unoptimized PNG. `-o 4` is 6 times slower than `-o 2` but can provide 5-10%
|
The default (`-o 2`) is sufficiently fast on a modern CPU and provides 30-50% compression
|
||||||
extra compression over `-o 2`. Using any setting higher than `-o 4` is unlikely
|
gains over an unoptimized PNG. `-o 4` is 6 times slower than `-o 2` but can provide 5-10%
|
||||||
to give any extra compression gains and is not recommended.
|
extra compression over `-o 2`. Using any setting higher than `-o 4` is unlikely
|
||||||
* Interlacing: `-i 1` will enable [Adam7](https://en.wikipedia.org/wiki/Adam7_algorithm)
|
to give any extra compression gains and is not recommended.
|
||||||
PNG interlacing on any images that are processed. `-i 0` will remove interlacing from all
|
- Interlacing: `-i 1` will enable [Adam7](https://en.wikipedia.org/wiki/Adam7_algorithm)
|
||||||
processed images. Not specifying either will keep the same interlacing state as the
|
PNG interlacing on any images that are processed. `-i 0` will remove interlacing from all
|
||||||
input image. Note: Interlacing can add 25-50% to the size of an optimized image. Only use
|
processed images. Not specifying either will keep the same interlacing state as the
|
||||||
it if you believe the benefits outweigh the costs for your use case.
|
input image. Note: Interlacing can add 25-50% to the size of an optimized image. Only use
|
||||||
* Strip: Used to remove metadata info from processed images. Used via `--strip [safe,all]`.
|
it if you believe the benefits outweigh the costs for your use case.
|
||||||
Can save a few kilobytes if you don't need the metadata. "Safe" removes only metadata that
|
- Strip: Used to remove metadata info from processed images. Used via `--strip [safe,all]`.
|
||||||
will never affect rendering of the image. "All" removes all metadata that is not critical
|
Can save a few kilobytes if you don't need the metadata. "Safe" removes only metadata that
|
||||||
to the image. You can also pass a comma-separated list of specific metadata chunks to remove.
|
will never affect rendering of the image. "All" removes all metadata that is not critical
|
||||||
`-s` can be used as a shorthand for `--strip safe`.
|
to the image. You can also pass a comma-separated list of specific metadata chunks to remove.
|
||||||
|
`-s` can be used as a shorthand for `--strip safe`.
|
||||||
|
|
||||||
More advanced options can be found by running `oxipng -h`.
|
More advanced options can be found by running `oxipng -h`.
|
||||||
|
|
||||||
|
|
@ -99,7 +102,6 @@ Oxipng is open-source software, distributed under the MIT license.
|
||||||
|
|
||||||
Tested oxipng 5.0.0 (compiled on rustc 1.55.0-nightly (7a16cfcff 2021-07-11)) against OptiPNG version 0.7.7 on AMD Ryzen 7 4800H with Radeon Graphics with 16 logical cores
|
Tested oxipng 5.0.0 (compiled on rustc 1.55.0-nightly (7a16cfcff 2021-07-11)) against OptiPNG version 0.7.7 on AMD Ryzen 7 4800H with Radeon Graphics with 16 logical cores
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Benchmark #1: ./target/release/oxipng -P ./tests/files/rgb_16_should_be_grayscale_8.png
|
Benchmark #1: ./target/release/oxipng -P ./tests/files/rgb_16_should_be_grayscale_8.png
|
||||||
|
|
@ -129,4 +131,3 @@ Summary
|
||||||
5.16 ± 0.58 times faster than 'optipng -o 4 -simulate ./tests/files/rgb_16_should_be_grayscale_8.png'
|
5.16 ± 0.58 times faster than 'optipng -o 4 -simulate ./tests/files/rgb_16_should_be_grayscale_8.png'
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,14 @@ Oxipng for Windows can be downloaded from the [Releases](https://github.com/shss
|
||||||
For MacOS or Linux, it is recommended to install from your distro's package repository, if possible.
|
For MacOS or Linux, it is recommended to install from your distro's package repository, if possible.
|
||||||
|
|
||||||
Alternatively, oxipng can be installed from Cargo, via the following command:
|
Alternatively, oxipng can be installed from Cargo, via the following command:
|
||||||
|
|
||||||
```
|
```
|
||||||
cargo install oxipng
|
cargo install oxipng
|
||||||
```
|
```
|
||||||
|
|
||||||
Oxipng can be built from source using the latest stable or nightly Rust.
|
Oxipng can be built from source using the latest stable or nightly Rust.
|
||||||
This is primarily useful for developing on oxipng.
|
This is primarily useful for developing on oxipng.
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://github.com/shssoichiro/oxipng.git
|
git clone https://github.com/shssoichiro/oxipng.git
|
||||||
cd oxipng
|
cd oxipng
|
||||||
|
|
@ -30,7 +32,7 @@ cargo build --release
|
||||||
cp target/release/oxipng /usr/local/bin
|
cp target/release/oxipng /usr/local/bin
|
||||||
```
|
```
|
||||||
|
|
||||||
The current minimum supported Rust version is **1.46.0**.
|
The current minimum supported Rust version is **1.56.0**.
|
||||||
|
|
||||||
Oxipng follows Semantic Versioning.
|
Oxipng follows Semantic Versioning.
|
||||||
|
|
||||||
|
|
@ -43,21 +45,22 @@ oxipng -o 4 -i 1 --strip safe *.png
|
||||||
```
|
```
|
||||||
|
|
||||||
The most commonly used options are as follows:
|
The most commonly used options are as follows:
|
||||||
* Optimization: `-o 1` through `-o 6`, lower is faster, higher is better compression.
|
|
||||||
The default (`-o 2`) is sufficiently fast on a modern CPU and provides 30-50% compression
|
- Optimization: `-o 1` through `-o 6`, lower is faster, higher is better compression.
|
||||||
gains over an unoptimized PNG. `-o 4` is 6 times slower than `-o 2` but can provide 5-10%
|
The default (`-o 2`) is sufficiently fast on a modern CPU and provides 30-50% compression
|
||||||
extra compression over `-o 2`. Using any setting higher than `-o 4` is unlikely
|
gains over an unoptimized PNG. `-o 4` is 6 times slower than `-o 2` but can provide 5-10%
|
||||||
to give any extra compression gains and is not recommended.
|
extra compression over `-o 2`. Using any setting higher than `-o 4` is unlikely
|
||||||
* Interlacing: `-i 1` will enable [Adam7](https://en.wikipedia.org/wiki/Adam7_algorithm)
|
to give any extra compression gains and is not recommended.
|
||||||
PNG interlacing on any images that are processed. `-i 0` will remove interlacing from all
|
- Interlacing: `-i 1` will enable [Adam7](https://en.wikipedia.org/wiki/Adam7_algorithm)
|
||||||
processed images. Not specifying either will keep the same interlacing state as the
|
PNG interlacing on any images that are processed. `-i 0` will remove interlacing from all
|
||||||
input image. Note: Interlacing can add 25-50% to the size of an optimized image. Only use
|
processed images. Not specifying either will keep the same interlacing state as the
|
||||||
it if you believe the benefits outweigh the costs for your use case.
|
input image. Note: Interlacing can add 25-50% to the size of an optimized image. Only use
|
||||||
* Strip: Used to remove metadata info from processed images. Used via `--strip [safe,all]`.
|
it if you believe the benefits outweigh the costs for your use case.
|
||||||
Can save a few kilobytes if you don't need the metadata. "Safe" removes only metadata that
|
- Strip: Used to remove metadata info from processed images. Used via `--strip [safe,all]`.
|
||||||
will never affect rendering of the image. "All" removes all metadata that is not critical
|
Can save a few kilobytes if you don't need the metadata. "Safe" removes only metadata that
|
||||||
to the image. You can also pass a comma-separated list of specific metadata chunks to remove.
|
will never affect rendering of the image. "All" removes all metadata that is not critical
|
||||||
`-s` can be used as a shorthand for `--strip safe`.
|
to the image. You can also pass a comma-separated list of specific metadata chunks to remove.
|
||||||
|
`-s` can be used as a shorthand for `--strip safe`.
|
||||||
|
|
||||||
More advanced options can be found by running `oxipng -h`.
|
More advanced options can be found by running `oxipng -h`.
|
||||||
|
|
||||||
|
|
@ -96,4 +99,3 @@ Other contributions (such as improving documentation or translations) are also w
|
||||||
Oxipng is open-source software, distributed under the MIT license.
|
Oxipng is open-source software, distributed under the MIT license.
|
||||||
|
|
||||||
## Benchmarks
|
## Benchmarks
|
||||||
|
|
||||||
|
|
|
||||||
11
build.rs
11
build.rs
|
|
@ -1,11 +0,0 @@
|
||||||
use rustc_version::{version, Version};
|
|
||||||
use std::process::exit;
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
// This should match the version in Github Actions scripts and the Readme
|
|
||||||
const REQUIRED_VERSION: &str = "1.46.0";
|
|
||||||
if version().unwrap() < Version::parse(REQUIRED_VERSION).unwrap() {
|
|
||||||
eprintln!("oxipng requires rustc >= {}.", REQUIRED_VERSION);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue