New Nova release: 0.8.2

Nova Github
Docs
Example repo

Nova version 0.8.2

What’s Changed

Full Changelog: v0.8.1…v0.8.2

Bugfixes from 0.8.0

  • 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

What’s Changed (From 0.8.0)

  • Add support for watchers by @burbas in #100
  • Fix mismatch between nova_ws_handler and cowboy_handler by @burbas in #102
  • Method for fetching all processed routes by @burbas in #95
  • Implement read_urlencoded_body option for request_plugin by @fancycade in #108
  • Pass controller_data into security_plugin auth function by @fancycade in #109
  • Refactoring of the routing system by @burbas in #111

New Contributors (From 0.8.0)

Full Changelog: v0.7.2…v0.8.0

9 Likes

Congrats on the release @Taure :023:

In case anyone else is wondering, are these the radix tree algorithms you mean Daniel? :smiley:

In computer science, a radix tree (also radix trie or compact prefix tree) is a data structure that represents a space-optimized trie (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)

2 Likes

@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)

http://www.novaframework.org

(Edit: Or link to the intro post for it, “Nova Web Framework - have you used it?”)

4 Likes

Also, I love the background on the website. Maybe you could have F1-F4 change the view of the star field, and have the occasional spaceship fly by :wink:

3 Likes

I would also add some info the the ‘about’ section for the @nova_core_team group - like what the @rabbitmq_core_team have done with their group :003:

2 Likes

Oh I can add it. :slight_smile:

Will have a overlook of information about Nova.

3 Likes

Yes like that.

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.

3 Likes

Amazing work! I can’t wait to get a chance to use Nova in anger!

2 Likes