Releases: byronka/minum
v8.3.2 handle unread bodies. Small various improvements
- If a user sends a request with a body and doesn't process the body within the handler,
the server will now close the socket after the request is complete. - Providing better clarity in test framework assertions when comparing against null and
when asserting against exceptions - the cause stacktrace will now be included in the
overall stacktrace. - Better ordering of the methods in the TestFramework class
- Handling duplicate keys in URL-encoded bodies and query strings in a more consistent
way. Duplicate keys will add a debug logging entry and the last key in wins. - When an exception is thrown in an
assertThrows, the cause of the exception will now
be included in the stacktrace, slightly improving maintainability. - Handling content-length exceptions differently - no exception if invalid, instead
just set length to -1 and log the situation.
v8.3.1 additional customization options
- It is now possible to set a port of "-1" for the regular and encrypted server,
to disable it. Note that if both ports are set to -1, the system will shut down
immediately after starting, since it will have no servers to wait on. - General refactors, removing dead code, adjust constructors for internal components
- It is now possible to disable the system-running marker. Further explanation: the
system-running marker is a file written to disk when Minum starts, to help clarify
the program's current state - running or stopped. For some users, it is preferred
not to write anything to disk. By setting ENABLE_SYSTEM_RUNNING_MARKER to false in
minum.config, this file will not be written. - Adjusting behavior of disabling theBrig. Before, even if the brig was disabled, the
system would create a folder for its persistent state. Now, if the brig is disabled,
no folder will be created. - Slight performance improvement on TheBrig - changed to use the new DbEngine2
and using indexed data for searches. - Bugs fixed:
- It was noticed that query strings on empty-string paths (for example,
http://localhost/?key=value) were mishandled.
- It was noticed that query strings on empty-string paths (for example,
v8.3.0 Faster database engine
- Improve database performance
- Minum's original database stores each item in its own file. This was sufficient for smaller data sets, but not for large. This new design improves on that.
- Each database change will now append to a file, being one of the fastest ways to write to disk. In this way, a million rows can be added in seconds. Following that, in the consolidation phase, changes are squashed down to unique values, enabling fast system startup. A database file with a million unique entries can be loaded in about a second.
- New constants added to
minum.configto control maximum append-file size and consolidation-file size. They are MAX_DATABASE_APPEND_COUNT and MAX_DATABASE_CONSOLIDATED_FILE_LINES - Refactoring tests
- Better documentation
- New safety feature - if the user tries to register an index too late - that is, after the data has been loaded to memory - an exception will now be thrown.
- Fixing bugs:
- If the user tried finding an item by index as the first action after initializing a database, previously it would fail to load the data. It now properly loads the data if needed.
- In the database, if a user registered an index after data already loaded, the system would not complain. Now, it will throw an exception if that happens.
- In the tutorial, the line of code for running functional testing was wrong
v8.2.0 Make it faster
-
New database feature: indexed data
"Indexed data" means 1000x faster data access in some cases. By indexing the data,
it is associated with keys - in other words, it is a map of strings to lists of data.
In cases where the keys are unique identifiers for each element of data, the list will
contain just one single item, thus enabling O(1) requests for data. -
Templating performance improvements
-
New templating feature: nested templates
-
HTTP processing performance improvements
-
Better documentation
v8.1.2 - Handling throwables, documentation, testing
- Fix a bug in the ActionQueue - handle throwables
It was found that when an Error (versus an Exception) was encountered, it would kill
the thread of the ActionQueue. Errors are things like out-of-memory errors. This might
happen if the function to run in a loop iteration required too much memory. It's fine to
crash out of that particular run, but not fine to crash the thread entirely. - The system will complain if duplicate endpoints are registered
If there is a developer error of registering the same endpoint more than once, (that is,
a verb plus endpoint, such as GET /foo), the system will thrown an exception right away, so
there is less chance of incorporating subtle bugs. - General documentation improvements all around: In the JavaDocs and on the root README page.
- Documentation improvements to IRequest
- Clearer documentation about change to InputStreamUtils.read(), with test
- noticed a component of StatusLine that isn't used except for testing -
moved it to a testing section
- Prevent registering paths with a prefixed slash. This is a typical pattern from other
frameworks. Minum differs from that common pattern, on the basis that it provides
no clear benefit. A typical (pseudocode) path registration will look like the
following, note the path has no special symbol prefix:register(GET, "foo", doFoo). Naturally,
deeper paths may be defined, likeregister(GET, "foo/bar", doFoo)
v8.1.1 Better documentation for HtmlParseNode
Noticed that the HtmlParseNode had some confusing methods without documentation, this should help
v8.1.0 - Add toString for HtmlParseNode, account for compressibility better
- Add toString to HtmlParseNode
This enables a capability to process HTML code, adjust it, and render it out as HTML - Account for more compressible types in responses
Responses of a textual type are easily compressed. Before, we would only look for a mime
type in the Content-Type head which started with "text". Now we use a regular expression
to look for more types. - Improved documentation
v8.0.7 minor adjustments
Minor adjustments:
- No need to include sitemap.xml as a suspicious path in the minum.config, it is a path
most search engines will try on a site, it is not an attack. - If the developer makes a mistake and returns a null instead of a valid IResponse interface
from a web handler endpoint, we fail faster, and with a clearer message, whereas before
the null response would rattle around through some methods before causing an exception with
an unclear error message and in an unexpected part of the code.
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.