Releases: vapor/vapor
4.94.1 - Patch configuration and log actual port on startup
What's Changed
Patch configuration and log actual port on startup by @bisgardo in #3160
Before this change, the application
let app = Application(.testing) defer { app.shutdown() } try app.server.start(hostname: nil, port: 0) defer { app.server.shutdown() }would log the following message before starting the server:
[Vapor] Server starting on http://127.0.0.1:0
After this change it instead logs a message like the following after starting the server:
[Vapor] Server starting on http://127.0.0.1:57935
The input configuration is also patched such that
app.http.server.configuration.port
will hold the actual port after startup. Currently if it has value 0 it will keep that value (onlyapp.http.server.shared.localAddress?.port
will have the correct one).Fixes #3159.
Reviewers
Thanks to the reviewers for their help:
This patch was released by @0xTim
Full Changelog: 4.94.0...4.94.1
4.94.0 - Migrate to Async NIOFileIO APIs
What's Changed
Migrate to Async NIOFileIO APIs by @0xTim in #3167
This migrates
collectFile(at:)
andwriteFile(_:at:)
to use NIO’s async NIOFileIO APIs introduced in https://github.com/apple/swift-nio/releases/tag/2.63.0Also adds a new API for streaming files using a
AsyncSequence
based on the newNIOFileSystem
.This work is required to move the
DotEnv
support over to an async API to avoid callingwait()
s in an async context which can cause issues
Reviewers
Thanks to the reviewers for their help:
This patch was released by @0xTim
Full Changelog: 4.93.2...4.94.0
4.93.2 - Removed streamFile deprecation + deactivated advancedETagComparison by default
What's Changed
Removed streamFile deprecation + deactivated advancedETagComparison by default by @linus-hologram in #3177
As discussed on Discord, this PR removes the deprecation and deactivates the lately introduced advanced ETag Comparison for the time being while the revised implementation is worked on.
New Contributor
- @linus-hologram made their first contribution in #3177 🎉
This patch was released by @0xTim
Full Changelog: 4.93.1...4.93.2
4.93.1 - Remove HeadResponder
What's Changed
Remove HeadResponder by @baarde in #3147
The HEAD method is identical to GET except that the server must not send content in the response (RFC 9110, section 9.3.2).
The previous default behaviour of returning 200 OK to every HEAD request to a constant route is not standard-compliant.
The new behaviour is to always forward the request to the GET route, unless the developer explicitely configured a custom HEAD route.
New Contributor
This patch was released by @0xTim
Full Changelog: 4.93.0...4.93.1
4.93.0 - Advanced ETag Comparison now supported
What's Changed
Advanced ETag Comparison now supported by @linus-hologram in #3015
Vapor now supports strong (byte-by-byte) ETag validation and caches ETags for rapid responses. This provides a stronger alternative to the current weak comparison, which only guarantees semantic file equivalence. This new strong comparison is enabled by default and can be deactivated during
FileMiddleware
initialization if needed. This PR closes #2948.
streamFile
method was deprecated and replaced by an alternative returning anEventLoopFuture
- vapor’s unit tests were updated to reflect the changes
- documentation was updated to reflect the changes
New Contributor
- @linus-hologram made their first contribution in #3015 🎉
Reviewers
Thanks to the reviewers for their help:
This patch was released by @gwynne
Full Changelog: 4.92.9...4.93.0
4.92.9 - Enabled Request Decompression By Default
What's Changed
Enabled Request Decompression By Default by @dimitribouniol in #3175
This enables request decompression by default and sets the decompression limit to 25×.
New Contributor
- @dimitribouniol made their first contribution in #3175 🎉
Reviewers
Thanks to the reviewers for their help:
This patch was released by @gwynne
Full Changelog: 4.92.8...4.92.9
4.92.8 - HTTP2 Response Compression/Request Decompression
What's Changed
HTTP2 Response Compression/Request Decompression by @dimitribouniol in #3126
Fixed an issue where HTTP2 didn’t support response compression and request decompression.
It seems like it may have been omitted when adding explicit support for HTTP2. Not sure what to do about testing as I couldn’t find any tests for the HTTP1.1 pathway, but I did verify it works in my pet project 😅
Fixes #3125
New Contributor
- @dimitribouniol made their first contribution in #3126 🎉
This patch was released by @0xTim
Full Changelog: 4.92.7...4.92.8
4.92.7 - Don't set ignore status for SIGTERM and SIGINT on Linux
What's Changed
Don't set ignore status for SIGTERM and SIGINT on Linux by @gwynne in #3174
Changes the behavior of
ServeCommand
’s signal handling setup to more closely match that of swift-service-lifecycle. Hopefully finally solves #2502 🤞
This patch was released by @gwynne
Full Changelog: 4.92.6...4.92.7
4.92.6 - Fix typos across the codebase
What's Changed
Fix typos across the codebase by @mrs1669 in #3162
Fixes a number of typos in the codebase.
⚠️ the logger for loading environment files now has the correctly spelt label -dot-env-logger
if you need to search for that
New Contributor
Reviewers
Thanks to the reviewers for their help:
This patch was released by @0xTim
Full Changelog: 4.92.5...4.92.6
4.92.5 - Fix some Sendable warnings on 5.10
What's Changed
Fix some Sendable warnings on 5.10 by @sidepelican in #3158
Fix a number of warnings in Swift 5.10 like below.
Fix simple issues that can be addressed by simply adding
Sendable
.
New Contributor
- @sidepelican made their first contribution in #3158 🎉
This patch was released by @0xTim
Full Changelog: 4.92.4...4.92.5