Fix a problem with static pages being displayed wrong
Fix problems with calling cowboy modules from Nova
Highlights (From 0.8.0)
New routing system based on the radix tree algorithm. This enables us to do things like detecting non-determinism. The new routing system is a cowboy middleware which removes the need for using cowboys own version.
The plugin handling system is slightly rewritten as a cowboy middleware. This gives us better performance with incoming requests.
ErlDB was added to provide database abstraction layer. It’s still in a very early beta, but it enables the user to more conveniently create and use other nova-applications which relies on databases. Models are written as erlang terms and compiled into a parameterized module which gives the developer a sense of objects. Read more about it in the ErlDB-repository: GitHub - erldb/erldb: ORM implementation in Erlang
In case anyone else is wondering, are these the radix tree algorithms you mean Daniel?
In computer science, a radix tree (also radix trie or compact prefix tree) is a data structure that represents a space-optimizedtrie (prefix tree) in which each node that is the only child is merged with its parent. The result is that the number of children of every internal node is at most the radix r of the radix tree, where r is a positive integer and a power x of 2, having x ≥ 1. Unlike regular trees, edges can be labeled with sequences of elements as well as single elements. This makes radix trees much more efficient for small sets (especially if the strings are long) and for sets of strings that share long prefixes.
Unlike regular trees (where whole keys are compared en masse from their beginning up to the point of inequality), the key at each node is compared chunk-of-bits by chunk-of-bits, where the quantity of bits in that chunk at that node is the radix r of the radix trie. When the r is 2, the radix trie is binary (i.e., compare that node’s 1-bit portion of the key), which minimizes sparseness at the expense of maximizing trie depth—i.e., maximizing up to conflation of nondiverging bit-strings in the key. When r is an integer power of 2 having r ≥ 4, then the radix trie is an r-ary trie, which lessens the depth of the radix trie at the expense of potential sparseness.
As an optimization, edge labels can be stored in constant size by using two pointers to a string (for the first and last elements).[1]
Also this article looks interesting (though I haven’t had a chance to read it yet)
@Taure - suggestion, post a very short 1 liner saying what Nova is somewhere in the announcement post, to save clicking through to find it, e.g:
Nova makes it simple to build a fault-tolerant and distributed web application. It takes ideas from different web frameworks and implements them with the functionality and stability that Erlang and BEAM offer.
(and/or link to the website, which is where I took the text from)
I will see if I can release our slides from the presentation at code beam america. Niclas did show the routing structure. Will also update guides about it.
So we create different nodes in a tree that have a value. We see if it is a binding or not. And with that we also check so we don’t have paths that are duplicate or non deterministic.
Sure if you have some few endpoints that is fine. But in larger system it is quite nice to have those checks.