Releases: static-web-server/static-web-server
v2.31.1
This new v2.31.1
release fixes an issue when running the SWS Linux ARM64 Musl binary on systems with greater memory page sizes than 4KB and re-enables build support for the legacy Windows 7 dropped by the previous release.
Fixes
- c5f851f Bugfix/security dependency updates.
- adaddde Jemalloc unsupported system page size in Linux ARM64 Musl. PR #446.
- 1763623 Lib: Cargo
publish
issue due to missingbuild.rs
file include.
Refactorings
v2.31.0
This new v2.31.0
release brings several bug fixes, features like a new compression level option, logs for virtual hosts, better-accepted encodings handling for pre-compressed files and other improvements.
Fixes
- d22e2dd Bugfix/security dependency updates including bytes, serde, toml, async-compression, flate2, brotli and other crates (also ea96328).
- 1aae13c Directory Listing: Empty file sizes are displayed incorrectly. PR #385 by @palant.
- 25c171b Directory Listing: File sizes are wrongly displayed in decimal format. PR #376 by @miroim.
- e7bfaa2 Lib: Compile errors if only
deflate
compression is enabled. PR #383 by @palant. - 195f706 Docker: Unsupported system page size when using Linux ARM64 musl (E.g. Raspberry Pi 5). PR #443.
- d4046d9 Unexpected
cfg
condition-namewasm
in Rust nightly. PR #441. - 1b13a74 Misc: Clippy warnings caused by test code. PR #382 by @palant.
- 936b224 CI: Prevent running the FreeBSD
devel
pipeline unnecessarily.
Features
- 9cbf95b Compression level option support. PR #381 by @palant. See docs.
- 778477e Log virtual-hosts information per request. PR #442.
- 7f59da9 Look for all accepted encodings for pre-compressed files but keep the quality order. PR #439 by @kobutri.
- d2eaa74 Benchmark: Add Caddy server to performance benchmarks. PR #379 by @palant. See benchmarks.
- 2faeef5 Show detailed information about the server via
--version
(-V
) flag. PR #444. - 0792606 CI: Code analysis workflow.
Refactorings
- 85e3da7 Lib: Make request
body
type generic across modules. PR #375 by @palant. - 18f550a Directory Listing: Drop custom type conversion between
SystemTime
andDateTime
. PR #384 by @palant. - 219ec6c Move Remote and Real IP addresses logging to a new module. PR #388.
- cfd8bb1 Re-organize file system-related modules. PR #424.
- 7cf72e6 Misc: Several project config and doc file improvements.
For more details see the v2.31.0 milestone and the full changelog v2.30.0...v2.31.0.
v2.30.0
This new v2.30.0
release brings security and dependency updates as well as several bug fixes. Overall performance improvements (directory listing particularly), continuous HTTP load testing benchmarks, project refactorings for increased stability, security and correctness as well as several other improvements.
This particular release addresses an security issue for the directory listing feature.
We encourage users using the directory listing to update as soon as possible.
Fixes
- 6683446 Bugfix/security dependency updates including rustls, tokio, async-compression, regex, chrono, clap and other crates (also 8cfc7ed, a876cd5, 69bfdd4).
- c04357e Missing custom headers for directory requests (trailing slash). PR #333.
- 1c4fad2 CORS does not work properly when used with Basic Auth. PR #343 by @ms140569.
- 528ed08
Accept-Encoding
handling does not work correctly if only two compression schemes are available. PR #361 by @palant. - c8e39aa Errors due to "unused code" when features are disabled. PR #368 by @palant.
- 5d66301 Unreserved characters are percent-encoded in directory listing links. PR #371.
- 114862a Malformed UTF-8 file names are not handled correctly. PR #374 by @palant.
Features
- 012ef11 Crate: Display platforms-specific documentation on docs.rs.
- a197f20 CI: Load testing benchmarks comparison for each commit via GitHub Actions. PR #355 by @palant. See benchmarks on CI.
Refactorings
- a451a93 Improve performance when serving static files. PR #334.
- e569a71 Reduce some allocations in several modules. PR #337.
- 183102d Build error when using specific or no Cargo compression features. PR #339.
- fe6a2a1 Move health endpoint-related code into a separate file. PR #344 by @palant.
- cc6784a Move metrics endpoint-related code into a separate file. PR #345 by @palant.
- 76531e6 Move all of Basic authentication logic into
basic_auth
module. PR #346 by @palant. - d44e5a1 Move all redirect handling logic into the redirects module. PR #348 by @palant.
- e965933 Move most of the CORS-related code into the cors module. PR #349 by @palant.
- 1246e37 Move most of maintenance mode logic into
maintenance_mode
module. PR #350 by @palant. - 941f692 Move various code related to header handling to the respective modules. PR #351 by @palant.
- a13f496 Replaced fork of the headers module by an in-tree handler for the
Accept-Encoding
header. PR #354 by @palant. - 207fa4a Move all rewrite handling logic into the rewrites module. PR #353 by @palant.
- c3c55a4 Prefer querying available cpus using Rust std. PR #358.
- ddda871 Apply the usual post-processing to error responses for consistency. PR #359 by @palant.
- cfd1390 Improve performance of directory listings. PR #357 by @palant.
- 5a4035f Improve recognition of text MIME types for compression. PR #360 by @palant.
- b66c89e Move all compression-related code into
compression
andcompression_static
modules. PR #369 by @palant. - 5b5ea98 Use
maud
templates andserde_json
for directory listings. PR #367 by @palant. - f311e94 Move all
fallback
page logic into the corresponding module. PR #372 by @palant. - 7d61c91 Move directory listing initialization into the corresponding module. PR #373 by @palant.
Docs
- 90b6032 Add Exherbo Linux install guide. PR #331 by @davlgd. See docs.
- f534f00 Fix typo in GitHub bug report template. PR #341 by @palant.
For more details see v2.30.0 milestone and the full changelog v2.28.0...v2.30.0.
v2.28.0
This new v2.28.0
release brings security dependency updates and bug fixes. Cancellation ability to shut down the server gracefully on demand when using the library, Docker examples and Windows Firewall instructions as well as other improvements.
Fixes
- 769daf1 Bugfix/security dependency updates including mio, ring, http, rustls-pemfile, regex, chrono, clap and other crates (also a97cc77).
- e031a7d Docker: Debian 12.5 image update.
- b6444f4 Crate:
TryFrom
imported redundantly in Rust nightly. PR #318 by @yonas.
Features
- afd6a87 Crate: Cancellation ability for
server::Server::run_server_on_rt
andserver::Server::run_standalone
functions in Linux/BSDs. PR #319 resolves #315 suggested by @hanaTsuk1.
Refactorings
- a68349c Crate: Add targets to Crate
docs.rs
metadata. - afa8575 Misc: Refactor the static files module and delegate functionality to separated files. PR #329.
Docs
v2.27.0
This new v2.27.0
release brings a few dependency updates and bug fixes. Two new Cargo feature flags and fixes a regression introduced by the previous release when building SWS from source.
Fixes
- ec93d6c Bugfix/security dependency updates including chrono, indexmap, thiserror and other crates.
Features
- 1a6caa4 Crate: New
all
andexperimental
Cargo feature flags. PR #313 also fixes #312 reported by @mattfbacon. See docs.
v2.26.0
This new v2.26.0
release brings several dependency security updates and bug fixes. Support for Range
requests out of bounds, experimental Tokio Runtime metrics for Prometheus, new Discord server as well as other improvements.
Fixes
- 80af0aa Bugfix/security dependency updates including tokio, regex, chrono, libc, toml, serde and other crates. Also 1d4f423
- 5623799 Docker: Alpine 3.18.6 update.
- a7dc6ac Docker: linux/s590x and linux/ppc64le images are missing dependencies. PR #309 resolves #308 reported by @glehmann.
- It is solved by dropping support for the
linux/ppc64le
andlinux/s390x
of the Alpine Scratch images because those binaries provided are not static-linked. Prefer the Debian image variant for those targets instead.
- It is solved by dropping support for the
Features
- 71dd54f Support for Range requests out of bounds. PR #306 resolves #295 suggested by @bjornharrtell.
- d4427eb Experimental Tokio Runtime metrics for Prometheus via the new
--experimental-metrics
option (Unix/Linux). PR #307 by @pl4nty. - fd15914 New SWS Discord server.
Refactorings
- 563367c Minimum Rust stable version 1.74.0.
- 370d288 Misc: Base fuzz and micro-benchmark testing for static files module. PR #310.
Acknowledgments
Thanks to our new donor @c0m4r for supporting the project.
v2.25.0
This new v2.25.0 release brings several dependency security updates and bug fixes. An optional Host
URI support for the URL Redirects feature, a bug fix when capturing a Glob pattern using brace expansion for URL Rewrites/Redirects as well as other improvements.
Fixes
- 477ed00 Bugfix/security dependency updates including rustls, h2, regex, chrono, libc, async-compression, serde and other crates (also 32e86aa).
- 42f52e8 Wrong Glob brace expansion capture in URL Rewrites/Redirects. PR #304.
- 9f2a4f0 Docker: Alpine 3.18.5 update.
Features
- 8c6ab53 Optional
Host
URI support for the URL Redirects feature. PR #301.
This will allow users for example to perform www to non-www redirects or vice versa. See docs.
Refactorings
- 83e4277 Migrate TLS module to use
tokio-rustls
0.25. PR #303. - 1bbc703 CI: Cache Rust toolchain and Cargo directories for CI
devel
workflow. PR #300. - 67a2403 CI: Prefer cross precompiled binary on CI
devel
workflow. - ef9876a CI: Prefer cross precompiled binary on CI
release
workflow.
Docs
- 3076d08 Optional Host uri support for URL Redirects feature. See docs.
- dedefc5 Fix a few page typos.
Acknowledgments
Thanks to our new donors for supporting the project.
v2.24.2
This new v2.24.2 release brings general dependency security updates, bug fixes and improvements.
Fixes
- 5554522 Bugfix/security dependency updates including hyper, tokio, rustls/ring, h2, tracing, regex, toml, futures, serde and other crates.
- 8cdb305 Docker: Debian 12.4 update.
- af203ca Docker: Alpine 3.17.6 update.
Refactorings
v2.24.1
This new v2.24.1
release brings dependency security updates and bug fixes. In particular, it fixes an issue when executing the previous Windows ARM64 build as well as other minor improvements.
Fixes
- c0c88f1 Bugfix/security dependency updates including tokio, http, rustls-pemfile, tracing, clap and other crates.
- f4e9142 Windows ARM64 binary does not execute due to missing DLLs. PR #290.
Refactorings
Docs
- e99d989 Fix typos in README file. PR #287 by @dynamite-bud (also a987e37).
Misc
v2.24.0
This new v2.24.0
release brings dependency security updates and bug fixes. It introduces three new targets (PowerPC (PPC64LE), S390x and Windows ARM64). Features like automatic TOML configuration file detection at startup and 404/50x error pages loading at runtime as well as several improvements.
Fixes
- e767938 Bugfix/security dependency updates including ring, rustls, regex, clap, serde, futures, brotli and other crates (also b0c0775).
- 4fa09ab CI:
cross
does not build when usinglibc
0.2.149+ on NetBSD.
Features
- e89ce29 Automatic TOML configuration file detection at startup. PR #281. See docs.
- fd4bfd4 Linux PowerPC (PPC64LE) and S390x targets (also Docker images). PR #159. See docs.
- 02c6d3e Windows ARM64 target. PR #283. See docs.
- 1fa9261 Load 404 and 50x error pages at runtime. PR #284 resolves #98 reported by @Dexus.
Refactorings
- 4de9acd Allowed methods response for
OPTIONS
file requests. PR #278. - d06ad0f Remove some unused TLS configuration APIs and use defaults directly. PR #279.
- ab16187 Improve the server maintenance mode debug logs. PR #282.
Docs