Erlang/OTP 19.0 has been released
erlang.org
erlang.org
* mnesia_ext : means a whole set of new possibilities to scale Mnesia. I think Klarna started that work and was using it in production. LevelDB was used for the backend.
* 3-5x faster open_port means being able to start and execute external executables. Forking was basically moved to fork a special process as opposed to main VM.
Tracing should be a lot faster as well. This is the one I mostly exciting. Been using tracing instead of adding log statement but if it is faster, it means can do more in production with it. Saw they have lttng as well. Also worth playing with.
* Code loading is now parallelized. So hopefully startup should be faster.
* Domain sockets. I know some people wanted this for ages. This should be nice. There were external project which did it, but it is nice to see it in the VM.
* os:perf_counter/1 function. Probably a read out of rdtsc or such instruction. That should be fun to use.
* ++ operator for lists now uses a single pass, so should be faster (before used to use another pass to check if list is proper).
* Observer now has configurable update frequency and length for graph windows. I'll be using that. I like observer.
Very impressive. Not a lot of 30 some year old languages make such kind of updates (yes Erlang is 30 years old this year, that is probably older than most HNers here).
Here's the slides: http://www.erlang-factory.com/static/upload/media/1434153406...
http://erlang.org/documentation/doc-8.0-rc1/lib/runtime_tool...
https://github.com/erlang/otp/tree/OTP-19.0/erts/emulator/hi...
It deals with running native and interpreted program code together, just reading the comments gives you a feel for the kind of low level concepts that go into making such an interpreter. I like this one:
/*
* Native code calls an emulated-mode closure via a stub defined below.
*
* The closure is appended as the last actual parameter, and parameters
* beyond the first few passed in registers are pushed onto the stack in
* left-to-right order.
* Hence, the location of the closure parameter only depends on the number
* of parameters in registers, not the total number of parameters.
*/ gen_statem a new state machine behavior
Very cool! For reasons not the least of which are the community involvement in its evolution. dialyzer: the support for maps is very much extended both the type specification syntax and the type analysis.
OMG! Yes! Finally `maps` don't have to be a giant escape hatch in the type-checking system. Experimental support for Unix Domain Sockets
Sweet tap-dancing Moses! This is awesome. I've wanted this for, so so so long. This should pave the way to all kinds of useful things. Better database clients, better Redis clients, more straightforward integration with things like libfiu and tcsd."This is a new behavior in Erlang/OTP 19.0. It has been thoroughly reviewed, is stable enough to be used by at least two heavy OTP applications, and is here to stay. Depending on user feedback, we do not expect but can find it necessary to make minor not backward compatible changes into Erlang/OTP 20.0."
It's honestly hard to overstate how excellent seeing that note is. It's a significant change in tone regarding community involvement in the design, structure, and implementation of core OTP components. It's really exciting to see.
I can't help but see this as part of a halo-effect that originates in the inclusive and thriving community around Elixir. It really seems like both ecosystems are getting a lot from each other right now.
My idea here is not to remove merit from Elixir in helping the ecosystem, but in pointing out that the Erlang community itself is expanding on these ideas of involvement and a more open design.
Also... I have a "6x Programmer" hat for you the next time I see you. When you mentioned it after seeing my "#7 Dad" hat at EF SF, I couldn't help but have a couple made.
The internet may have ruined me, but I somehow expected the thread to end up in insults and nasty things after a while; and here I am, amazed. Really well done.
This should almost immediately help Elixir, too, correct?
- Erlang Camp (Sat Jul 16), http://erlang.camp/
- Elixir Camp (Jul 15-17), http://elixircamp.io/
- Phoenix Camp (Jul 15-17), http://nyc.phoenix.camp
- Nerves Camp (Sun Jul 17), http://nerves.camp/
We've got a good mix of speakers coming together and the conference open to all (with suggested donation pricing for tickets).
We also still have a few session slots open if anyone wants to present (particularly around Erlang/OTP).
How does that contribute IN ANY WAY to a thread about a new version of Elixir being released? I'm not saying that what they say it's wrong, just tremendously out of context and unnecessary.
mnesia_ext: plugin of external storage solutions to mnesia
Don't know where you got your information from, but LMDB is verified as the safest storage engine:
https://www.usenix.org/conference/osdi14/technical-sessions/...
If you want an easy way to install both, you can check asdf [1].