Skip to content

Releases: qwerty541/dns-bench

v0.14.0

30 Nov 23:30

Choose a tag to compare

Added

  • Added Gcore Public DNS to the built-in servers list.
  • Implemented adaptive timeout behavior for clearly unresponsive servers to reduce total benchmark time. After 8 consecutive timeouts for a server, its timeout is reduced to 500 ms; after 16 consecutive timeouts, it is reduced to 100 ms.
  • Introduced a new CLI flag --disable-adaptive-timeout to force a fixed timeout for every request when desired.
  • Docker image published to GitHub Container Registry (GHCR) alongside Docker Hub.

Changed

  • Updated base image of Docker container from debian:13.1-slim to debian:13.2-slim.
  • Updated build image of Docker container from rust:1.90.0 to rust:1.91.1.
  • Increased default threads count from 8 to 16 to better utilize modern CPUs.
  • Increased default requests count from 25 to 50 for more statistically robust results.
  • Decreased default timeout from 3 seconds to 1 second, improving responsiveness while keeping reliability.

Documentation

  • Updated README to reflect new defaults (threads 16, requests 50, timeout 1s).
  • Added a security protocol document describing how to report vulnerabilities.
  • Updated README installation instructions to include GHCR as an alternative Docker image source.

Dependencies

  • Updated clap from 4.5.51 to 4.5.53
  • Updated quick-xml from 0.38.3 to 0.38.4
  • Updated indicatif from 0.18.2 to 0.18.3

v0.13.0

08 Nov 23:47

Choose a tag to compare

Added

  • Added FlashStart DNS to the built-in servers list.
  • Added arrow symbol which indicates sorting column in the output table header.

Changed

  • Replaced previous results table columns First duration/Average duration with Min./Max./Avg. columns to provide more comprehensive statistics about DNS servers performance and better matching benchmarking best practices.
  • Updated other output formats (JSON, XML and CSV) to reflect the changes in the results table structure.
  • Centered the contents of the column titles for better appearance and readability.
  • Changed base image of Docker container from alpine to debian slim which improves compatibility with various systems and architectures, and also results in a slightly larger image size (~15 MiB => ~25 MiB).
  • Restored the support of linux/arm/v7, linux/386, linux/s390x architectures in the Docker image. The docker image of previous version was republished to include these architectures.
  • Added support for the linux/riscv64 architecture in the Docker image.
  • Significant internal refactoring of output formatting related code to improve its readability and maintainability.
  • Integrated derive_more library to reduce some boilerplate code with derived implementations.

Documentation

  • Updated preview GIFs and PNGs to reflect the latest changes.
  • Added clarification about skipped features (system DNS and gateway detection) when using Docker container.
  • Made the license badge clickable.
  • Added total lines count badge into the readme file.
  • Added COCOMO estimation badge into the readme file.
  • Added Docker Hub pulls badge into the readme file.

Dependencies

  • Updated clap from 4.5.47 to 4.5.50
  • Updated serde from 1.0.223 to 1.0.228
  • Updated toml from 0.9.5 to 0.9.8
  • Updated csv from 1.3.1 to 1.4.0
  • Updated indicatif from 0.18.0 to 0.18.1

v0.12.0

28 Sep 13:47

Choose a tag to compare

Added

  • Implemented automatic detection of gateway (router) address on Linux, Windows and macOS platforms. It will be included in the benchmark in case this address is a DNS provider.
  • Added --skip-gateway-detection option to skip the auto-detection of gateway (router) address.
  • Implemented dns-bench config list subcommand to list the current configurations without necessity to run the benchmark or open the file.

Changed

  • Changed base image of Docker container from rust to alpine which results in significant reduction of the image size (~650 MiB => ~15 MiB) by @February30th in #301.
  • Docker container now uses a dns-bench binary entrypoint, so you can pass arguments directly to docker run command without necessity to specify /bin/sh -c "dns-bench ...".
  • Dropped the support of several architectures in the Docker image including linux/arm/v7, linux/386, linux/s390x due to migration on the alpine.

Documentation

  • Completely reworked the Docker Hub overview to match the style and follow the best practices of this platform.
  • Updated documentation according to all the changes and newly added features.

Dependencies

  • Updated clap from 4.5.41 to 4.5.47
  • Updated toml from 0.9.2 to 0.9.5
  • Updated quick-xml from 0.38.0 to 0.38.3
  • Updated serde from 1.0.219 to 1.0.223
  • Updated serde_json from 1.0.141 to 1.0.145
  • Updated tokio from 1.32.0 to 1.47.1

v0.11.0

04 Aug 18:06

Choose a tag to compare

Added

  • Implemented subcommands which allow users to perform configurations file management without the necessity to run benchmark each time. Here is the list of available subcommands:
    • dns-bench config init - initializes the configuration file with default values.
    • dns-bench config set [--key value ...] - sets the specified keys to the specified values inside the configuration file.
    • dns-bench config reset - resets the configuration file to its default values.
    • dns-bench config delete - deletes the configuration file.
  • Added Vercara UltraDNS Public to the built-in servers list.

Changed

  • Updated base image of Docker container from rust:1.87.0 to rust:1.88.0
  • Changed help template of all commands to include author information and repository link.

Documentation

  • Reworked the options section inside documentation into command-line reference section which includes options and subcommands subsections.
  • Updated license copyright years.

Dependencies

  • Updated quick-xml from 0.37.5 to 0.38.0
  • Updated indicatif from 0.17.11 to 0.18.0
  • Updated toml from 0.8.23 to 0.9.2
  • Updated clap from 4.5.40 to 4.5.41
  • Updated anstream from 0.6.7 to 0.6.19
  • Updated mio from 0.8.8 to 0.8.11
  • Updated serde_json from 1.0.140 to 1.0.141

v0.10.1

29 Jun 19:02

Choose a tag to compare

Added

  • Implemented build process of the Windows executable file. Starting from this version, the compiled executable file will be attached to each GitHub release.
  • Added devcontainer configuration to the repository. It allows you to run the project in a containerized development environment using Visual Studio Code or any other compatible IDE.

Fixed

  • Adjusted the automatic detection of system DNS servers on Windows to work with non-English locales. Previously, it could fail if the system language was not English.

Documentation

  • Updated installation instructions in the readme file to include information about the Windows executable file.
  • Updated changelog entries of previous versions to adhere to keep a changelog format.
  • Fixed Docker Hub branding across all documents.

Dependencies

  • Updated clap from 4.5.39 to 4.5.40
  • Updated directories from 5.0.1 to 6.0.0

v0.10.0

17 Jun 18:45

Choose a tag to compare

Added

  • Implemented automatic detection of the system DNS servers on Linux, Windows and macOS platforms and its inclusion in the benchmark in case these servers are not present in the built-in servers list.
  • Servers that are currently configured in the system will be highlighted in the output table.
  • Added --skip-system-servers option to skip the auto-detection of system DNS servers.

Changed

  • Changed MSRV from 1.74.1 to 1.82.0
  • Updated base image of Docker container from rust:1.86.0 to rust:1.87.0

Documentation

  • Added information about new features.
  • Completely reworked features section to make it more informative and user-friendly.
  • Reviewed grammar and spelling errors in the description section.
  • Updated the preview gif-animation to reflect the new features.
  • Added the preview image to the readme file and Docker Hub overview.

Dependencies

  • Updated quick-xml from 0.37.4 to 0.37.5
  • Updated toml from 0.8.20 to 0.8.23
  • Updated tabled from 0.18.0 to 0.20.0
  • Updated clap from 4.5.37 to 4.5.39

v0.9.1

28 Apr 19:51

Choose a tag to compare

Changed

  • Updated base image of Docker container from rust:1.85.1 to rust:1.86.0

Fixed

  • Resolved several uninlined format args clippy lints on the nightly toolchain.

Build

  • Removed preview git-animation from the published crate to reduce its size 30+ times (1.15 MiB => 31.1 KiB).

Documentation

  • Replaced outdated preview gif-animation with two new separate ones for crate and DockerHub.
  • Enhanced text in description section, fixed grammatical errors, and improved overall readability.

Dependencies

  • Updated clap from 4.5.34 to 4.5.37

v0.9.0

16 Apr 02:12

Choose a tag to compare

Added

  • Introduced a new CSV output format. It can be used by specifying the --format option with the value csv.
  • Added Surfshark DNS to the built-in servers list.
  • Added SafeServe to the built-in servers list.
  • Enhanced numeric command line arguments validation to ensure they are within the specified range.
  • Added requests timeout value to the summary output.
  • From this version, the Docker images will be multi-arch. Here is a list of supported architectures: linux/amd64, linux/arm64, linux/arm/v7, linux/386, linux/s390x, linux/ppc64le. Previously, only linux/amd64 was supported.
  • From this version, the latest Docker image will be available under the latest tag. Previously, only the versioned tag was available.
  • Minor documentation improvements.
  • Improved tests coverage.

Changed

  • Updated base image of Docker container from rust:1.85.0 to rust:1.85.1

Dependencies

  • Updated clap from 4.5.32 to 4.5.34

v0.8.0

04 Apr 15:56

Choose a tag to compare

Added

  • Introduced a new option --format to specify the output format. Supported formats are human-readable, json, and xml. The default format is human-readable.
  • Added Hurricane Electric to the built-in servers list.
  • Minor documentation improvements.
  • Improved tests coverage.

Changed

  • Updated base image of Docker container from rust:1.83.0 to rust:1.85.0

Dependencies

  • Updated clap from 4.5.23 to 4.5.32
  • Updated indicatif from 0.17.9 to 0.17.11
  • Updated toml from 0.8.19 to 0.8.20
  • Updated tabled from 0.17.0 to 0.18.0
  • Updated hickory-resolver from 0.24.2 to 0.24.4
  • Updated serde from 1.0.217 to 1.0.219

v0.7.2

31 Dec 20:00

Choose a tag to compare

Added

  • Added Dyn to the built-in servers list.

Changed

  • Updated base image of Docker container from rust:1.82.0 to rust:1.83.0

Documentation

  • Fixed default requests count in features section of DockerHub overview.
  • Added example command of using custom servers list feature with docker container into readme file and DockerHub overview.
  • Removed table of contents from the DockerHub overview because it doesn't work there.
  • Table with built-in servers list was splitted into three columns to improve readability.

Dependencies

  • Updated serde from 1.0.214 to 1.0.217
  • Updated clap from 4.5.20 to 4.5.23
  • Updated indicatif from 0.17.8 to 0.17.9
  • Updated tabled from 0.16.0 to 0.17.0
  • Updated hickory-resolver from 0.24.1 to 0.24.2