Skip to content

4.1.0#99

Merged
Archmonger merged 21 commits intomainfrom
4.1.0
Mar 7, 2026
Merged

4.1.0#99
Archmonger merged 21 commits intomainfrom
4.1.0

Conversation

@Archmonger
Copy link
Owner

@Archmonger Archmonger commented Mar 7, 2026

Description

Added

Changed

  • Improved event-loop handling for ASGI file iterator.
  • Installing servestatic as a Django app is now the suggested configuration. A warning will appear if it is not detected in INSTALLED_APPS when DEBUG is True.
  • servestatic.runserver_nostatic is no longer the recommended Django app installation path. This import path will be retained to ease WhiteNoise to ServeStatic migration, but now the documentation recommends to use the top-level servestatic module instead.
  • For security purposes, ServeStatic will no longer follow unsafe symlinks by default. If you are symlinking to files outside of your static root, it is highly recommended to copy them instead. This behavior can be disabled for trusted deployments using allow_unsafe_symlinks / SERVESTATIC_ALLOW_UNSAFE_SYMLINKS.

Fixed

  • Fixed a range-request edge case where the last byte could be requested but would not be served.

Security

Checklist

Please update this checklist as you complete each item:

  • Tests have been developed for bug fixes or new functionality.
  • The changelog has been updated, if necessary.
  • Documentation has been updated, if necessary.
  • GitHub Issues closed by this PR have been linked.

By submitting this pull request I agree that all contributions comply with this project's open source license(s).

@Archmonger Archmonger linked an issue Mar 7, 2026 that may be closed by this pull request
@Archmonger Archmonger marked this pull request as ready for review March 7, 2026 08:50
@Archmonger Archmonger merged commit e7cf37a into main Mar 7, 2026
22 checks passed
@Archmonger Archmonger deleted the 4.1.0 branch March 7, 2026 08:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use the Django Checks API to test for misconfiguration Rename servestatic.runserver_nostatic Fix range_response test

1 participant