Skip to content

Releases: byronka/minum

v8.3.2 handle unread bodies. Small various improvements

28 Dec 17:45

Choose a tag to compare

  • 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

24 Nov 17:45

Choose a tag to compare

  • 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.

v8.3.0 Faster database engine

01 Nov 11:31

Choose a tag to compare

  • 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.config to 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

07 Aug 01:59

Choose a tag to compare

  • 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

31 Jul 23:47

Choose a tag to compare

  • 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, like register(GET, "foo/bar", doFoo)

v8.1.1 Better documentation for HtmlParseNode

26 Apr 18:42

Choose a tag to compare

Noticed that the HtmlParseNode had some confusing methods without documentation, this should help

v8.1.0 - Add toString for HtmlParseNode, account for compressibility better

12 Apr 14:52

Choose a tag to compare

  • 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

07 Feb 16:27

Choose a tag to compare

Minor adjustments:

  1. 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.
  2. 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

16 Jan 02:34

Choose a tag to compare

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

24 Nov 19:46

Choose a tag to compare