
Elixir v0.13.0 released, hex.pm and ElixirConf announced - devinus
http://elixir-lang.org/blog/2014/04/21/elixir-v0-13-0-released/
======
peregrine
For those not sure what Elixir is, think of it like this:

elixir : erlang vm (BEAM) :: clojure : jvm

Elixir's syntax is heavily influenced by Ruby but its semantics and structure
is very reminiscent of Clojure. Like Clojure you are constantly reminded you
live on JVM, with Elixir you are constantly reminded that Erlang is under the
covers and thats OKAY.

Its really great stuff and the creator José Valim has really put thought, love
and care into every part of the project. I highly suggest you take a look, you
might be surprised at what you find.

~~~
leccine
What is the advantage over Erlang? I guess this gives the syntactic sugar on
the top of Erlang but I am not sure if this takes away the good parts of the
language (pattern matching etc.) as well. Anyways, Erlang has a steep learning
curve but if you invest the time it is pretty rewarding.

~~~
rdtsc
It is different. It doesn't have a 100% advantage. In some case it just sort
of inverted the choice Erlang made -- lower case variables, vs upper case.
Lower case module names vs upper case etc.

It has immutable data but not immutable bindings. Erlang has both as
immutable. What that means is, you can do x = value1 then x = value2. In
Erlang, like in mathematical notation, once you said X=value1 it is value1, it
doesn't make sense to say X=value2 (it throws an exception). In either case
you can't modify value1 in place for example by saying x[3]=4 or X[3]=4 ( <\-
I am making up syntax to illustrate here).

Some like it one way some like it another.

Elixir has better meta-programming, which is nice.

In general, Erlang syntax is not the steepest learning curve. The steepest
learning curve is to learn to use actors for concurrency and use functional
programming for sequential parts. Elixir presents a more familiar syntax but
the other learning curve parts are still there.

~~~
leccine
Well you are making variables mutable. This is bad. One of the great features
of Erlang and generally any functional programming language is immutability
that makes defensive programming unnecessary. I would like to keep that... The
rest of the stuff is great but it does not give enough value to me to not to
use Erlang. Actors is a basic concept and message passing is definitely the
way to go if you are building a distributed system. One of the biggest
problems with Ruby and the imperative languages in general that it was
designed for local execution so communication and distributing computation is
more difficult than for example in Erlang.

~~~
rdtsc
When we talk about variables we usually talk about 2 different things. Values
and bindings. Values are the data in the variables ( a list, a tuple, an
object), and bindings are names that are used to refer to data ( what the
variables is called).

So X = [1,2,3]. in gives you variable binding X and variable value [1,2,3].
Variable value [1,2,3] is immutable in both Elixir and Erlang. You cannot do
x[0]=5 in either one and expect the value [1,2,3] to be modified in place.
Binding X is immutable in Erlang but not in Elixir. In Erlang you'd do
X1=[5,2,3]. and in Elixir you could do x=[5,2,3].

You can argue what is better. I think both approaches are good, there is not
one clearly superior in my opinion. Sometimes I take your side and prefer
Erlang, because I like having explicit and immutable variable bindings that
don't change behind my back. If I make X=[1,2,3], it is going to be [1,2,3]
from now until forever.

As far as Actor and distribution stuff all that goodness is still in Elixir.
They complement each other more than compete. Both take advantage of the
awesome VM (BEAM) -- which I think is a marvel of engineering -- concurrent
garbage collection, lightweight processes, scheduling balancing, async IO
background threads, binary references, distribution and so on.

------
SingAlong
If you are deploying Elixir apps to Heroku, checkout the Heroku buildpack for
Elixir - [https://github.com/hashnuke/heroku-buildpack-
elixir](https://github.com/hashnuke/heroku-buildpack-elixir)

Easy to configure and the deploys are pretty fast.

Disclaimer: I wrote it

------
MartinMond
Been using Elixir for a new project and it's really nice.

For me it's not so much about bringing a nicer syntax to Erlang (Erlang's
syntax is very nice once you get used to it, except for single assignment IMO.
I'd prefer it if Elixir had taken Erlang's syntax and added support for
rebinding variables and macros) but about tooling (mix, the build tool
absolutely rocks) and libraries (e.g. take a look at
[http://github.com/elixir-lang/ecto](http://github.com/elixir-lang/ecto)).

------
jw2013
I would love to contribute to Elixir, but jumping right into Elixir's issue
list on Github to fix the bug there is a bit too hard for me. I wish there was
some resources getting us familiarized with Elixir code base, and leading us
more easily into contributing to Elixir, just like the The Eudyptula Challenge
for Linux Kernel ([http://eudyptula-challenge.org/](http://eudyptula-
challenge.org/)). Or is there already this kind of resource?

~~~
peregrine
Keep an eye on this label [https://github.com/elixir-
lang/elixir/issues?labels=Level%3A...](https://github.com/elixir-
lang/elixir/issues?labels=Level%3AStarter&page=1&state=open)

Another way is to jump on irc freenode #elixir-lang and ask :).

Another way is to use it, report bugs, poor error messages or unclear
documentation, and maybe fix it.

I did the later and the Elixir developers were super helpful and responsive.

------
sr-ix
Elixir v0.13.0 now runs on Erlang R17 and brings with it map/struct support
over records.

------
ia
i've been playing with elixir for a little while. i'm still wrapping my head
around all its metaprogramming goodness, but so far it's been a fun journey.

also, jose valim must have clones of himself.

------
ch4s3
I really like Elixir's syntax and really want to get into Erlang. I can't wait
until I have some free time soon. Any good resources other than Elixir Sips?

~~~
peregrine
The pragmatic programmer elixir book is excellent
[http://pragprog.com/book/elixir/programming-
elixir](http://pragprog.com/book/elixir/programming-elixir) .

The elixir-lang getting started guide covers a ton as well.

I'd also highly suggest working through
[http://learnyousomeerlang.com/](http://learnyousomeerlang.com/) as almost all
of the concepts apply to elixir.

If you are having trouble hop onto irc freenode #elixir-lang and ask for help!
Always someone willing to offer guidance, including the creators and some of
the Erlang contributors!

~~~
ch4s3
Thanks! Hopefully I'll see you on #elixir-lang some time after pitch day and
finals.

------
devanti
Any examples of Elixir in production at a well-known company?

~~~
rubiquity
Lots of Bitcoin exchanges use Erlang/Elixir.

But really any project using Erlang can and probably will add some Elixir to
its code base at some point. The languages complete interop between each other
by way of sharing BEAM byte code.

~~~
sjtgraham
That's not the greatest of endorsements to be honest.

~~~
rubiquity
The scale at which Bitcoin exchanges operate at is pretty impressive.
Dismissing that due to Mt Gox's poor security is ridiculous. Plus, I don't
think the exchanges you're thinking of used Erlang/Elixir.

~~~
sjtgraham
I did not mention MtGox.

~~~
hackerboos
What exchanges use elixir?

~~~
lectrick
Based on my limited googling, at least Bex.io

[http://bex.io/faqs](http://bex.io/faqs)

An industry tends to congeal around a single technology for implementation
(for example, Python in bioinformatics), so if bitcoin exchanges will start
using Elixir, that is interesting

------
chrismorgan
I'm surprised by this ElixirConf thing.

I've been involved in the Rust community, a considerably larger, more active
and more mature community, and I would consider a RustConf still a little
premature.

Is there really enough interest in it? How many people are expected to attend?
How many are needed to attend to break even in some manner?

~~~
josevalim
It is hard to compare communities of programming languages (even though I
would be extremely interested in such data!). The only data I have seen around
is this graph comparing the popularity on Github and the number of issues in
Stack Overflow: [http://redmonk.com/sogrady/2014/01/22/language-
rankings-1-14...](http://redmonk.com/sogrady/2014/01/22/language-
rankings-1-14/)

Note Julia, Rust and Elixir are quite close to each other (which is nice
considering they are about the same age). So, based on this data, I wouldn't
classify Rust's community as considerably larger than Elixir's. Although
Mozilla definitely helps Rust get some exposure!

Also I believe Elixir is more stable than Rust since Elixir runs on top of an
existing Virtual Machine which helps us bootstrap the ecosystem and also skip
a lot of "infrastructure work". We have also been avoiding breaking changes
and doing deprecation cycles for almost a year now (sometimes it is
unavoidable though) and Elixir has already 3 books in development (by
O'Reilly, Manning and Pragmatic Programmers) with Elixir v1.0 planned for this
summer.

Just to be clear, I am not knocking on Rust, just assessing the development
stage of both languages (and please correct me if I got something wrong).

I am not sure about the conference details though, as I am just helping
promote it, but wasn't there something like 20 or 30 people at the first
RubyConf in US? We all need to start somewhere. :)

~~~
chrismorgan
I just did some quick comparisons of my own.

Rust, by the way, goes back further than 2012; it became public in 2010.

IRC:

\- irc://irc.mozilla.org/#rust: 480 people

\- irc://chat.freenode.net/#elixir-lang: 158 people

On GitHub:

\- mozilla/rust: 414 watchers, 4,776 stargazers, 993 forks.

\- elixir-lang/elixir: 217 watchers, 2,317 stargazers, 323 forks.

Reddit:

\- /r/rust: 3,754 rustaceans, ~30 users here now, 172 posts in the last month

\- /r/elixir: 448 developers, ~6 users here now, 14 posts in the last month

Mailing lists:

\- rust-dev (it hasn't been split yet like elixir's are and is mostly
development stuff; /r/rust is used more for other talk): 50 threads this month

\- elixir-lang-talk: 45 threads this month

\- elixir-lang-core: 23 threads this month

Stack Overflow

\- [rust]: 294 questions

\- [elixir]: 119 questions

Google Trends:
[https://www.google.com/trends/explore#q=rust%20programming,e...](https://www.google.com/trends/explore#q=rust%20programming,elixir%20programming)
shows "rust programming" at around 3× "elixir programming"

I agree that elixir is a little closer to being a mature language (for Rust,
1.0 is not expected for some months yet, though probably still this year), and
the elixir community does appear to be more active and mature than I had
thought, but overall it still looks to me as though Rust has at the very least
the _larger_ community (I'll drop the _active_ claim out of laziness and the
_mature_ claim for insufficient evidence) by a considerable way.

~~~
josevalim
Oh wow, thank you for the data, that's great! I agree with your conclusion
too.

I thought Rust was from 2012 based on Wikipedia. It seems they choose 2012 due
to the first alpha release. Elixir is theoretically from 2011 but you couldn't
really use it for anything... the first actual release was in May 2012.
Anyway, it doesn't matter much, just curiosities!

