Bump edition to 2021, along with min rust version

This commit is contained in:
Josh Holmer 2022-01-12 11:50:33 -05:00
parent ece9787822
commit faf10c64a9
6 changed files with 117 additions and 125 deletions

View file

@ -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

View file

@ -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

View file

@ -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" }

View file

@ -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'
``` ```

View file

@ -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

View file

@ -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);
}
}