Releases: byronka/minum
v8.0.6 handle bad URL-encodings better - simply skip
handle bad URL-encodings better - simply skip
It was discovered that if a user sent a request with improperly-formed URL-encoded data, it would sometimes cause a 500 error. This was not a significant issue, but ergonomically the system should not react so strongly for a relatively minor issue.
This adjustment takes a milder approach, simply moving on to the next key-value pair and logging about the action.
v8.0.5 Fixing security vulnerabilities
v8.0.4 Various improvements
v8.0.3 Bug fix
v8.0.2 Better edge condition handling, documentation
v8.0.1 - documentation
Extra documentation in key areas, and some minor adjustments. See RELEASE_NOTES.md
v8.0.0 - partial ranges
See RELEASE_NOTES.md for further information
Handle incoming body better
See RELEASE_NOTES.md
v6.0.0 Handle streaming large files
New feature: streaming output from server
Breaking change: Response constructors converted to factory methods. Order of parameters adjusted in certain cases for greater consistency.
A missing capability of the Minum server was to send large files. Yes, it was reasonable to send files up to around several megabytes, but before this change, the data would take room in the server's memory. If the server were making a large
file available and there were many requests, it could easily eat up the entire memory.
Now, the Response object and WebFramework have had their code adjusted to enable this without undue requirements. The constructors in Response
were converted to factory methods, and some of these are intended to be used for streaming large data, such as buildLargeFileResponse
and buildStreamingResponse
.
There is no limit to the file size being served. Memory usage will be minimally impactful.
To migrate to version 6 more easily:
Do a global search and replace: "new Response" -> "Response.buildLeanResponse". That will fix a bunch of the cases. The rest are likely "Response.buildResponse", but update those as necessary. In several cases, it will be required to reorder the parameters - the extraHeaders parameter is now the second parameter in almost all the Response factory methods. In some cases, you will find calls to a now-deleted constructor which would provide a status code and body but no extra headers. These should be fixed to include the necessary headers, such as Map.of("Content-Type", "text/plain")
v5.0.0 - Refactorings
Excellent test coverage enables fearless refactoring.
It is closing in on a year past beta. We have stability and high test
coverage, let's apply the recommendations from linting tools, informed
by our tests and usage scenarios.
Improvements:
- Several class methods and constructors would pass mutable data, leading to the possibility of
subtle bugs. Where possible, these have been corrected. - Made several methods package-private, to lower scope. Removed methods if possible - e.g. see
Context
. - Consistency and conventionality improvements.
- Applying recommendations from linting tools that would forestall bugs, such as setting the charset
instead of relying on the system default. - Organizing the files better. All files are now in subpackages of "minum".
- Improved documentation.
- Removed need for
Context
object during construction of some classes. - Added new tools for regular examination of the code - information is provided during compilation
and runningmake lint
.
Moved to different package:
- Context (globally adjust like this:
find src/ -type f -name "*.java" -exec sed -i 's/com\.renomad\.minum\.Context/com.renomad.minum.state.Context/g' {} \;
) - Constants (globally adjust like this:
find src/ -type f -name "*.java" -exec sed -i 's/com\.renomad\.minum\.Constants/com.renomad.minum.state.Constants/g' {} \;
) - ActionQueue (globally adjust like this:
find src/ -type f -name "*.java" -exec sed -i 's/com\.renomad\.minum\.utils\.ActionQueue/com.renomad.minum.queue.ActionQueue/g' {} \;
)
Removed:
- Context.getFileUtils - instead of obtaining from Context, build:
new FileUtils(logger, constants);
- Several other public methods from Context that only related to Minum internals
Adjusted:
- PathDetails is no longer a record. Its methods moved to be prefixed with "get" with adjusted capitalization
- TagInfo, same thing
- HtmlParseNode, same thing
- On TagInfo, the attributes are further encapsulated - it is no longer possible to grab the collection. Get an attribute with "getAttribute()"
Removed use of Context
in constructors:
- Headers
- RequestLine
Moved:
- RequestLine.PathDetails was moved to its own file. It can now be called on its own, "PathDetails" (globally adjust like
this:find src/ -type f -name "*.java" -exec sed -i 's/RequestLine\.PathDetails/PathDetails/g' {} \;
)