Concluding the Erlang Workshop at ICFP in Edinburgh, Kenneth Lundin, lead manager of the Erlang/OTP development team showed us what’s going to be new in Erlang.
New Stuff in Erlang/OTP
The next release R13B02 will be released at the end of September and the following so called service releases will come out roughly every two months.
The next major release R14B s targeted to be released in Q1 of 2010.
R13B02
Ericsson’s customers see Erlang’s ability to scale near linear with the number of available CPUs and cores as a major selling point. Conclusively, Ericsson continues to improve Erlang’s multi core performance. The R12B02 release will only see a few minor improvements though.
Some bullet points:
- DNS Client supoprt (inet_res module for EDNS)
- Optimizaiton of
erlang:demonitor(Mon, [flush])
- makes
gen_server:call()
faster by avoiding a full search of the message queue. So far, the number of times to scan the message queue was reduced from 3 to 1 and they keep working on this.
R13B2 will come with a new utility for packaging Erlang applications. It is called RelTool and its goal is to “make it easy to build your own standalone applications”. These applications are a single installation directory for your Erlang application including the full runtime system and all dependent libraries. This makes it trivial to distribute Erlang applications without any dependencies.
Packages are built according to a recipe that for now needs to be handwritten but in the future will be built with a graphical tool. Recipe’s are used to transform a development environment directly into a deployable package for the target platform(s).
Long-term Erlang users were overheard:
This should have happened ten years ago
Down the Road
Kenneth finished with a list of things that Ericsson is working on, but doesn’t have a schedule to release yet.
Further improvement of multi core performance:
- delayed deallocation (R13B03)
- improved handling of process table
- separate allocators per scheduler
- use NUMA info for grouping of schedulers
- separate poll sets per scheduler (improves IO)
- support scheduler binding on windows
- optimize erlang apps in OTP
- fine grained parallelism, language and library functions
And a few general improvements:
- better and more benchmarks
- new docs build system
- validation for SAX parser
- easier to interface C libraries and a “make your own BIFs” by dynamically linking shared libraries that provide custom BIFs. These are more efficient than a driver
Good stuff.