Release 19.0 is looking exciting, other things they seem to be planning on (this is mainly from Erlang Factory 2016 Slides):
* 10x faster tracing
* Dirty schedulers turned on by default
* A new state machine OTP module
* An external plugin (with LevelDB as one example) for Mnesia storage
* 2x-3x faster spawning external processes + many others
18.0 brought fast maps, good time handling. It is exciting to see all this good stuff done in a 30 year old language.
Edit: Where is ErlangLLVM?
Very interesting in any case, and I certainly voted for it - I'd love to see more articles like this.
Because of the nature of discussion groups on the internet, often people end up commenting if they want to disagree or nitpick. If there is an upvote feature, they just use that and often don't leave an "yap, agree" comment. I try to leave those when possible with additional things I like to balance the discussion out a bit. Otherwise things often end up negative by default (especially painful to see when someone shares a project they worked on).
In addition to what the article itself talks about, there's a number of other memory knobs you can twiddle for various use cases.
Is the user expected to know about OS packages on it. Are they installing/updating software components by hand, so they know the OS version which runs in the box even, are they calling it a "server"? If the answer is yes, it not "embedded".
If they interact with the device as with an appliance (a dvd player, microwave, car infotainment center, some radio base station and so on), then it is embedded. It can still be an 8 core Xeon monster, but because of how it is serviced and used it, I think of it as embedded.
The data layer is usually hardware or C drivers which handle streaming data. This is simple and as basic as possible so it can be monitored and managed by the control layer.
Yep, lower level stuff was done in C, managed and connected by Erlang, which also talks to Postgres.