
Erlang/OTP R16A has been released - rlander
http://www.erlang.org/news/41
======
vladev
From the release announcement on the mailing list:

Some of the highlights are:

* Optimized handling of processes in the VM

* New internal process table allowing for parallel reads and writes

\- optimized run queue management

\- optimized process state changes

* "Non-blocking" code loading

* New internal port table, and rewrite of scheduling of port tasks.

* Dynamic allocation of port structures, allowing the default for maximum ports to be raised to 65536 (from 1024) Support for UTF-8 encoded Unicode characters in source files.

* Inets application: The http client now support HTTPS through a proxy

* Asn1 application: Major cleanup of back ends and optimizations of mainly decode for PER and UPER.

* The experimental features parameterized modules and packages are removed. An alternative compatible solution for parameterized modules is provided here <https://github.com/erlang/pmod_transform>.

* All built in functions BIF's (even if they are implemented in C as part of the VM) are now visible in the source code of the module they belong to, including their type specs.

* The Wx application now compiles and is usable with the unstable development branch of wxWidgets-2.9. This means that wx can now be built on 64 bit MacOsX as well.

You can find the README file with more detailed info at
[http://www.erlang.org/download/otp_src_R16A_RELEASE_CANDIDAT...](http://www.erlang.org/download/otp_src_R16A_RELEASE_CANDIDATE.readme)

~~~
olgeni
We also get a brand new man(7) section :)

------
chops
For those new to Erlang conventions, the "A" in the release number is an
indicator that this is a beta release. The stable releases are the "B"
branches. So in this case, R16B will be the stable version.

------
chrisduesing
"Support for parameterized modules (but an alternative solution provides) and
packages removed"

That is kind of huge, guess it is time to go catch up on the mailing list...

~~~
chops
The pmod arguments have been a pretty ongoing war[1] on the mailing list,
especially since it was announced R16 would be removing official support for
them.

With ChicagoBoss being one of the highest profile projects to use pmods
extensively, Evan Miller has been arguing for them pretty extensively.

At least support wasn't _completely_ dropped, since they are providing the
parse_transform to re-enable the functionality:

<https://github.com/erlang/pmod_transform>

[1] A friendly war, anyway: [http://erlang.org/pipermail/erlang-
questions/2013-January/07...](http://erlang.org/pipermail/erlang-
questions/2013-January/071860.html)

~~~
codewright
The fact that people like Evan Miller aren't taken seriously and heeded is why
I only tinker with Erlang and haven't bothered to use it for anything.

Once they start taking the little people (so to speak) seriously, I'll revisit
the Erlang runtime for an actual project.

Until then: Clojure.

Clojure has a strong tinkerer culture.

~~~
rlander
I wish I could upvote this 5x. I love Erlang the language but, paraphrasing
tarcieri (& zedshaw), the community around it can sometimes be a ghetto.

~~~
jlouis
I think the community is open to change of the language, given that the idea
you propose is a good one.

The thing that led tarcieri to write the "Erlang is a Ghetto" post was that he
proposed the addition of Ruby-style blocks to the Erlang language. And then
Richard O'Keefe wrote back a post—not a very diplomatic one—which explains why
Ruby-style blocks is a horrendously bad idea to add to _any_ language.

The main reason that Erlang sometimes comes along as smug is because there are
some people in the community who are extremely capable in their fields of
expertise. You need a good argument to convince a semanticist that your
informally specified language extension is worth anything, unless you can
supply meta-theorems which explains why. Or at least provide proper semantics.
In other words, you need a really good design.

If you have working code for your design, it is even better. If you have an
EEP (Erlang Enhancement Proposal) you may even have your idea implemented.
There is, for instance, an EEP called "Named funs" which extends and
generalizes tarcieris proposal. It did not go in in time for R16, but it is
still being worked on.

Parameterized modules were an experiment. Like Tuple funs (now removed),
packages (now removed), and mnemosyne (now removed). They still live on
outside the Erlang distribution but retains enough inside to support them via
parse transformations.

~~~
davidw
> Richard O'Keefe

Heh, interesting. That brings up this interaction, which I feel characterizes
some of the problem:

[http://erlang.org/pipermail/erlang-
questions/2013-January/07...](http://erlang.org/pipermail/erlang-
questions/2013-January/072016.html)

Loïc's response to him is worth quoting:

" You are confronted with the problem of wasting a lot of time writing
basement level code to access and update deep values. You think "Great! I can
write DSL or combinators to solve this!". Now you got two problems, and you
haven't come any closer to solving the first one. The DSL still maps to
functions which needs to access and update these values, and that code is
still painful to write. Your next step is to think "Great! Let's generate all
that code then!". Now you got three problems, and you better hope to have not
made any error when writing that code generator or you'll waste a lot more
time. Speaking of time, by the time you get to that point the PHP developer
has already long finished his bug-free implementation of the same code and is
moving on to other tasks."

------
Xurinos
Is there a convenient list that I can read that shows what feature changes
have been introduced to Erlang in the last 10 years?

~~~
chops
As far as I know, there isn't.

This particular question highlights a shortcoming of long-form changelogs
though. It would be nice if there was a way to have community-voted
highlighting of a changelog pointing out the significance of each line-item of
a changelog.

<http://sigma-star.com/blog/post/changelog-voting> (Blog post inspired by this
question)

