113 Commits

Author SHA1 Message Date
Jose Quintana
865e8e4e89 refactor: improve SWS installer script functionality for Linux/BSDs (#611)
* refactor: improve installer script functionality
* refactor: simplify installer script and installation docs
* fix: typos
2026-01-08 19:21:02 +01:00
Jose Quintana
c298a6d0ab chore: remove pull_request trigger from release-docker-devel workflow (#608) 2025-12-26 15:41:12 +01:00
Matthias Schoettle
dd43d06551 refactor: format check support Markdown files via mdformat (#597)
* chore: format Markdown files with mdformat
* chore: switch to mdformat config file
* chore: add missing trailing slash
* docs: add section about formatting Markdown files
2025-12-07 10:40:21 +01:00
Jose Quintana
ce3a51c6ac refactor: dedicated CI workflow for project documentation checks (#596)
* refactor: dedicated CI workflow for project documentation checks
* chore: remove deprecated v1 references in README.md
2025-12-05 02:05:32 +01:00
Jose Quintana
c66c791ca9 refactor: prefer dynamically-linked binaries for Debian Docker images (#588)
* refactor: prefer dynamically-linked binaries for debian docker images
* fix: disable dynamically-linked binary execution tests
   As dynamically-linked binaries can not be executed for obvious reasons
* docs: improve os/arch section
2025-11-29 03:04:56 +01:00
Jose Quintana
ee4b049d3b feat: armv7-unknown-linux-gnueabihf target (#586) 2025-11-27 23:03:54 +01:00
Jose Quintana
ea9f43f404 refactor: move perfcheck workflow behind a PR comment trigger (#584) 2025-11-26 04:47:08 +01:00
Jose Quintana
0fedeb36b4 fix: crate documentation issues (#583)
* chore: improve crate doc checks on ci
* fix: doc_auto_cfg feature has been removed (error)
* fix: bare URLs are not automatically turned into clickable links (warning)
2025-11-26 04:12:17 +01:00
Jose Quintana
57025e3321 chore: update dependencies 23-10-2025 & MSRV to Rust 1.85.0 (2024 Edition) (#572)
* fix: update dependencies 23-10-2025
* chore: update dependencies 26-10-2025
* chore: update dependencies 26.10.2025 & bump up MSRV to 1.85.0
* fix: lint errors
* fix: style edition 2024

SWS now requires Rust 1.85.0 (Rust 2024 Edition) or later
https://blog.rust-lang.org/2025/02/20/Rust-1.85.0/
2025-10-26 02:04:21 +02:00
Jose Quintana
ac72d4e6be docs: v2.37.0 [skip ci] 2025-06-03 23:28:19 +02:00
Jose Quintana
b56e3c4a96 chore: update dependencies 30.05.2025 and MSRV to 1.82.0 (#546)
* chore: update dependencies 30.05.2025
* chore: format and lint checks for test files on CI
* fix: clippy lint warnings in test files
2025-05-31 23:31:50 +02:00
Jose Quintana
7ca2785c82 chore: update dependencies 26.05.2025 and MSRV 1.81.0 (#545)
- BREAKING: End support for unmaintained Windows 7, 8, 8.1 platforms as previously announced on v2.36.1.
- SECURITY (RUSTSEC-2024-0437): Crash due to uncontrolled recursion in protobuf crate was temporarily solved in the previous release. However, this PR applies the dependency patches recently available.
- RESTORED: `experimental` Cargo feature for metrics and in-memory cache.
2025-05-27 00:25:29 +02:00
Jose Quintana
5d1eaac0b5 chore: automate post-release updates using ci (#538)
It just automates the post-release updates needed after every release, like documentation and installer script updates, as well as checksum generation.
2025-04-10 01:09:08 +02:00
Jose Quintana
ad4c1718a6 chore: update dependencies 24-03-2025 (#532)
This change removes the "experimental" Cargo feature from the
resulting static-web-server **binary** temporarily (not the Cargo
feature itself) to prevent shipping the RUSTSEC-2024-0437 security 
vulnerability along with SWS binary.
The "experimental" Cargo feature will be restored once the upstream
patch is available.

Old Windows 7, 8, 8.1 patch:
Additionally, it pins zerofrom, zerofrom-derive and litemap
dependencies **temporarily** to be able to build SWS for old Windows
7, 8, 8.1 because newer versions of them require rustc 1.81 or later.
2025-03-24 02:22:29 +01:00
Jose Quintana
0053d74e6c refactor: improve post release updates ci workflow (#525) 2025-02-07 07:15:42 +01:00
Jose Quintana
82c548313c v2.35.0 2025-01-10 16:58:37 +01:00
Jose Quintana
1c4929d04e refactor: update github ci workflows (#514)
It updates all GitHub CI workflow dependencies to their corresponding latest stable versions and improves them when necessary.
2025-01-03 02:30:43 +01:00
Jose Quintana
b46a7a0f80 feat: build and push devel Docker image on master branch changes (#512)
* chore: build and push devel image on master changes via ci workflow (#508) by @mschoettle

* ci: build and push devel image on master

* Temporarily enable devel docker release on pull request

* add build release

* ci: build only amd64 and use devel dockerfiles

* temporarily disable login to docker hub

* fix tag

* add cache for binary

* test release binary

* move binary to the right place

* update action versions

* disable docker hub image

* test tags

* test tags

* test tags

* add permissions to scratch job

* apply feedback

* remove test step

* Address comments

* refactor: prefer job matrix strategy and x86_64-unknown-linux-musl

---------

Co-authored-by: Matthias Schoettle <git@mattsch.com>
2024-12-11 00:16:45 +01:00
Jose Quintana
0768c20d4e refactor: update deprecated macos-12 runner to macos-14 due to issues
2024-12-03: https://github.com/actions/runner-images/issues/10721
2024-12-03 23:44:35 +01:00
Matthias Schoettle
12387a88bb docs: improve docs configuration and fix anchor links (#504)
* Fix anchor links in documentation

* Move strict to mkdocs config

* add mkdocs to CI

---------

Co-authored-by: Jose Quintana <1700322+joseluisq@users.noreply.github.com>
2024-12-01 13:22:16 +01:00
Jose Quintana
e1a73c0e1e docs: add contributing, code of conduct and code guidelines pages [skip ci] (#497) 2024-11-11 23:16:54 +01:00
Jose Quintana
a3d40b8c2f fix: issues when building SWS without default features (#480)
* fix: issues when building without default features
* fix: windows http1_cancel_recv build issues
2024-09-10 15:28:54 +02:00
Jose Quintana
5bdfcd4c88 feat: experimental in-memory files cache with eviction policy support (#328)
Via a new advanced configuration entry.

The feature also supports expiration policies such as Time To Live (TTL) and Time To Idle (TTI).

Admission to a cache is controlled by the Least Frequently Used (LFU) policy and the eviction from a cache is controlled by the Least Recently Used (LRU) policy.

Example:

```toml
[general]

[advanced]

[advanced.memory-cache]
# Maximum capacity entries of the memory cache-store. Default 256
capacity = 256
# Time to live in seconds of a cached file entry. Default 1h
ttl = 3600
# Time to idle in seconds of a cached file entry. Default 5min
tti = 300
# Maximum size in bytes for a file entry to be cached. Default 8MB
max-file-size = 8192
```

Note that this feature requires Rust 1.76.0 or newer.

This feature is **experimental**. However, when stabilized then a cargo feature will be available as well as a proper documentation page.
2024-09-04 00:15:55 +02:00
Jose Quintana
b3fad98687 refactor: remove deprecated bors and improve devel ci (#458) 2024-07-01 23:22:58 +02:00
Viktor Szépe
e64076c6c7 refactor: improve typos configuration (#456)
* Improve typos configuration

* Remove individual username

Co-authored-by: Jose Quintana <1700322+joseluisq@users.noreply.github.com>

* Ignore all usernames

Co-authored-by: Jose Quintana <1700322+joseluisq@users.noreply.github.com>
2024-06-19 23:27:19 +02:00
Jose Quintana
5f116d7542 refactor: re-enable windows 7 support by pinning ust 1.77.2 (#447)
Since the latest Rust 1.78.0 drops support Windows 7 support.
See https://blog.rust-lang.org/2024/02/26/Windows-7.html

We pin Rust to 1.77.2 for the following Windows targets:

- x86_64-pc-windows-msvc
- i686-pc-windows-msvc
- x86_64-pc-windows-gnu

aarch64-pc-windows-msvc (a.k.a. Windows ARM64) will continue using the
latest stable Rust available.

NOTES:
Microsoft stopped support for Windows 7 (also for extended users in
2023). But at the moment we don't know how long we should keep
supporting this unmaintained platform. However, keep in mind that we
could reconsider bumping up the MSRV in future SWS versions when
convenient, advising users accordingly.
See https://learn.microsoft.com/en-us/lifecycle/products/windows-7
2024-05-21 00:16:21 +02:00
Jose Quintana
adaddde93f fix: jemalloc unsupported system page size in linux arm64 musl (#446)
This completes the previous work on
https://github.com/static-web-server/static-web-server/pull/443 by
correctly setting the default 64KB page size for jemalloc at
the build config level (cross) which should be applied for development
and production `aarch64-unknown-linux-musl` builds.
2024-05-20 17:10:06 +02:00
Jose Quintana
0792606c14 feat: ci code analysis workflow 2024-05-19 02:15:14 +02:00
Jose Quintana
7cf72e6315 chore: several project config and doc file improvements 2024-05-19 01:03:42 +02:00
Jose Quintana
195f706e64 fix: unsupported system page size when using linux arm64 musl (#443)
It fixes an issue when using the `aarch64-unknown-linux-musl` binary
in systems with 16KB page size like Linux aarch64 (Raspberry Pi 5) by
setting up jemalloc to use a maximal supported page size of 64KB on
aarch64. See jemalloc/jemalloc#467#issuecomment-2054282344
jemalloc can also handle systems with smaller page sizes. See jemalloc/jemalloc#769

error:

<jemalloc>: Unsupported system page size
<jemalloc>: Unsupported system page size
memory allocation of 5 bytes failed
2024-05-13 22:18:46 +02:00
Wladimir Palant
d2eaa74648 feat: Add Caddy server to performance benchmarks (#379) 2024-04-29 09:55:53 +02:00
Wladimir Palant
a197f20650 feat: load testing benchmarks comparison for each commit via Github Actions (#355)
It runs load testing benchmarks comparison of SWS against several major web servers via CI regularly.
Results can be found at https://github.com/static-web-server/static-web-server/actions/runs/8802645161
and benchmark setup and corpus can be found at https://github.com/static-web-server/benchmarks-setup

* Run benchmarks for each commit via Github Actions
* Enable compression in all tested software
* Make sure lighttpd compresses the static file
* Use static config files
* Don't repeat vegeta command line parameters
* Use gnuplot to produce an overview graph
* Use graph-cli instead of gnuplot
* Use a dedicated test root directory and run various tests on it
* Display performance overview as job summary
* Remove scheduled test run
* Add (source) suffix to SWS version
* Merge artifacts after successful run
* Do not upload binary reports
* Simplify subdirectory names for merged artifact
* Move configuration and test root used for benchmarking into a separate repository

---------

Co-authored-by: Jose Quintana <1700322+joseluisq@users.noreply.github.com>
2024-04-24 02:30:44 +02:00
Wladimir Palant
f534f002b4 fix: typo in GitHub bug report template [skip ci] (#341) 2024-04-14 08:02:51 +02:00
Jose Quintana
012ef119e0 chore: display platform-specific documentation on docs.rs 2024-03-10 23:21:14 +01:00
Jose Quintana
1a6caa476a feat: add all and experimental Cargo feature flags (#313)
* feat: `all` and `experimental` cargo feature flags
  - the `all` will host all available features (`default`) plus the
    `experimental`.
  - the `experimental` will only hold unstable features like for example
    `metrics` (as of writing)
* chore: enable the `all` cargo feature for freebsd

this feature also fixes #312
2024-02-12 23:19:15 +01:00
Jose Quintana
563367c5af chore: minimum rust version 1.74.0 2024-02-10 21:49:17 +01:00
Jose Quintana
a7dc6ace80 refactor: drop linux ppc64le/s390x from alpine and scratch docker (#309)
The SWS binaries for ppc64le (powerpc64le-unknown-linux-gnu) and
s590x (s390x-unknown-linux-gnu) are dynamically linked so
it does **not** make so much sense to deliver them with either the
Alpine (musl) or the Scratch images (they even do not work properly as
of writing).

So we remove those two from the SWS Alpine and Scratch Docker image
variants to avoid misunderstandings or future issues.

The Debian Docker image should be preferred instead, either linux/ppc64le
or linux/s390x respectively.

This resolves #308
2024-02-06 22:56:11 +01:00
Jose Quintana
ef9876ad17 refactor: prefer cross precompiled binary on ci release workflow 2024-01-23 00:02:53 +01:00
Jose Quintana
67a2403253 refactor: prefer cross precompiled binary on ci devel workflow 2024-01-08 03:10:11 +01:00
Jose Quintana
1bbc70393c refactor: cache rust toolchain & cargo dirs for ci devel workflow (#300) 2024-01-08 02:14:39 +01:00
Jose Quintana
a9d509ed45 refactor: github issue & pr template improvements [skip ci] 2023-12-01 23:48:13 +01:00
Jose Quintana
ab67bd7a64 refactor: github issue & pull request template improvement [skip ci] (#294) 2023-12-01 23:19:26 +01:00
Jose Quintana
680323c98f chore: manual release build ci workflow (#288) 2023-11-14 23:43:40 +01:00
Jose Quintana
3099dba4d3 chore: docker ci workflow (Debian) (#286) 2023-11-10 22:52:33 +01:00
Jose Quintana
02c6d3e795 feat: windows arm64 target (#283)
- aarch64-pc-windows-msvc
2023-11-05 22:57:31 +01:00
Jose Quintana
fd4bfd4eb5 feat: linux powerpc (ppc64le) and s390x targets (#159)
- linux/ppc64le (powerpc64le-unknown-linux-gnu)
- linux/s390x (s390x-unknown-linux-gnu)
2023-10-25 01:34:48 +02:00
Jose Quintana
e551d67278 chore: msrv 1.70.0 2023-09-15 07:14:22 +02:00
Jose Quintana
2ec408c6f1 feat: illumos x86_64 target (#258)
- x86_64-unknown-illumos
2023-08-30 01:25:28 +02:00
Jose Quintana
65dcd171da chore: update devel docker images [skip ci] 2023-08-10 01:05:17 +02:00
Jose Quintana
94e050b517 feat: netbsd x86_64 target (#251)
- x86_64-unknown-netbsd
2023-08-07 21:55:43 +02:00