Erlang R19 Release Candidate Available
github.com
github.com
Some changes:
* New state machine module: gen_statem (ssh module uses it as a first example).
* 3-5x times faster open_port(spawn, ...)
* Must faster and better tracing (also lttng support)
* Keeping messages off heap for processes
* mnesia-ext : pluggable storage for Mnesia. This removes the 2GB per shard limit.
* Allow limiting process's max heap usage
* Observer tool allows configuration update frequency and length of graph windows
* crypto uses EVP calls so should be accelerated by hardware were supported
* Parallel/faster module code loading
This is a pretty big deal isn't it? I've never used Mnesia but that 2GB limit was a common warning I came across in the docs and blog posts, despite noting it was a great DB to work with.
Allegedly this has already been running at Klarna in production for a while. LevelDB backend from Basho (eleveldb, it has extra optimizations and improvements besides just Erlang wrapper) has been used.
Granted 15-20 some years ago perhaps 2GB was BigData(TM) ;-)
For a while I understand you could set up sharding, so each shard is 2GB and spread shards across nodes.
What happens when it hits that limit? Crash, or try to GC, or... ?
Configurable, but can kill the process in question and/or log when it occurs. Their suggestion is to log it first and tune it from there since heap size isn't easily predictable.
EDIT: Scroll down a little bit to get this particular flag documentation.
* dirty schedulers improved
which means much better scheduling of long running NIFs from what I understand:
https://medium.com/@jlouis666/erlang-dirty-scheduler-overhea...
It's so beautiful to read such CHANGELOGs. The developers clearly love their product and have put in the effort to clearly explain each change, background and it's purpose.
Not wanting to recommit sins of the past and all that :-)
† If you charge for a product, you don't generally have to worry quite so much about scaling because you make a lot more money per user than some site that's all about ads and trying to keep the cost per user really low because the ads don't actually pay all that much.
However, there is the need to make sure Elixir can work with R19 in the first place, but Jose Valim and co. has usually been quite good at getting that working.