Erlang — is a general-purpose concurrent, garbage-collected programming language and runtime system.
Erlang Logo
The release has a lot of new different features and changes. The first thing is that the versioning scheme has been changed. Previously it was R15B, R16B, etc.

New data type — Maps

This one is the most noticeable change that the community had been waiting a long time for. See an example below:

1> Map = #{ key1 => "Value1", key2 => "Value2"}.
#{key1 => "Value1",key2 => "Value2"}
2> maps:get(key1, Map).
#{key2 := MatchValue} = Map.
#{key1 => "Value1",key2 => "Value2"}
4> MatchValue.
Map2 = Map#{key3 => "Value3"}.
#{key1 => "Value1",key2 => "Value2",key3 => "Value3"}
Map3 = Map2#{key1 := change_value1}.
#{key1 => change_value1,key2 => "Value2",key3 => "Value3"}

This data type is still experimental and has a few limits:

Here is the whole list of features, which will be implemented later.

Erlang/OTP has been ported to the real time operating system OSE

OSE is a high-performance, POSIX compatible, multicore real-time operating system maximizing your hardware utilization

The highlights show that not all the parts of the platform have been ported though.

Anonymous functions can have names

...and can be used in recursion:

1> TestFun = fun Factorial(0) -> 1; Factorial(Num) when Num > 0 -> Num * Factorial(Num - 1) end.
2> TestFun(4).

Improved Unicode support

For example, the default encoding for all the source files is now UTF-8.

And much more

The new release can be downloaded from here.
LYSE has added new chapter about maps.
Joe Armstrong's post about the release.
Official release announcement

Write your own articles at Kukuruku Hub


Read Next