Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Elixir v1.0.0 released (elixir-lang.org)
207 points by petercooper on Sept 18, 2014 | hide | past | favorite | 54 comments


I'm constantly impressed by the level of execution of the Elixir project. In ~3 years they have accomplished much more than many other language ecosystems have to date.

It's great to see the core maintainers understand that you need MUCH more than just a compiler, runtime, and std lib to create a truly vibrant ecosystem. The Elixir project includes a standard way to do templating, a powerful and robust shell, a very full-featured unit testing library (not just assert statements), a standard logging system (this is sooo often overlooked), and, to top it all off, a build system that also lets you manage dependencies!

I honestly can't name any other ecosystem where you can just jump in and all these problems are already solved for you by the core project maintainers, instead of by 3rd parties competing for mindshare. It's truly refreshing because it gives the community a common language and toolchain to work with and get stuff done.

Hats off to everyone involved! You guys continue to amaze me.


I couldn't have said it any better myself. On my way to Elixir I made short stops to Go and Rust. I was immediately impressed by the quality of mix (Elixir's build tool, task runner and dependency manager) and how easy it made getting started with Elixir. José's experience in the Ruby and Rails communities are really evident when you see the quality of tooling in Elixir.


> I honestly can't name any other ecosystem where you can just jump in and all these problems are already solved for you by the core project maintainers

I'm on the Dart team. We ship the SDK with a native VM, dart->js compiler, set of core libraries, package manager, and build system. There are canonical packages managed by the team for unittesting (using a Jasmine-style API) and logging.

I do have to admit the logging stuff isn't that baked, but the rest of the pieces are heavily used and have a lot of community-wide mindshare.

Not that I'm trying to steal any of Elixir's thunder here. I'm continually impressed by how polished everything they do looks. As someone who went through a language's 1.0 announcement, I really like how they clearly listed their compatibility expectations going forward.


Hats off to you guys as well. That's a TON of work. :)

What % of Dart's development is sponsored by Google? Not trying to get a dig in at you guys, but it's also interesting to note that Elixir has come this far without the financial backing of one of the wealthiest tech companies in the world.


well, maybe not one of the wealthiest, but Platformatec[1] does (at the very least) sponsor José to work on Elixir.

1: http://plataformatec.com.br/


And with Elixir, there is no chance for a future 'runs best on Chrome' campaign, no chance that you'll be trapped in a corporate-controlled walled garden. Not that I'm trying to raise doubts about Dart. Jose and team have delivered one of the most amazing projects ever - look forward to using Elixir for years to come.


Well Dart runs in a VM outside of Chrome now and could be compared to NodeJS in that regard.


Don't know or have plans to use Elixir for now since I have always seen the Erlang VM as tackling only the problem domain of requiring high fault tolerance and distributed computing systems but no so much for general purpose programming as languages like ruby/python/js/clojure etc. For example: how may programmers are writing systems like Riak, Amazon's SimpleDB, CouchDB, RabbitMQ every day?

That said, from reading the article you forgot to mention Hex, the package manager.


Whether you - as a programmer writing them - realize it or not, many complex web apps would benefit greatly from Erlang concurrency, distributed computing and fault tolerance support. Every time I'm forced to use Celery or multiprocessing or a cronjob - and that happens quite often in nontrivial projects - I wish I worked with Erlang.

I learned to love Erlang some time ago and its various quirks are mostly invisible to me, as I generally know them well and am working around them reflexively. However, I recognize that for people who don't know Erlang yet, Elixir provides a much easier path to obtaining full power of Erlang VM and ecosystem. It can also benefit more experienced erlangers, as it improves some Erlang features and then adds some totally new ones.

Elixir is a language which makes Erlang better suited to high-level, glue-like scripting purposes, while still providing full access to things Erlang does exceptionally well. In a way it's an effort to make Erlang reach outside of its specific niche by making many things traditionally hard or unpopular in Erlang easy to do in Elixir.

In short, if you're a serious programmer who works on anything that has a server or is related to network in some way (which includes all web apps, most mobile apps backends, all IM software, many different services like Dropbox and many more) - you owe it to yourself to try Elixir out. Now that the "awkward syntax" and many (admittedly) irritating quirks of Erlang are gone and you're left with just the good parts you have really no reason not to learn and use it.


> I have always seen the Erlang VM as tackling only the problem domain of requiring high fault tolerance and distributed computing systems

I think the reason for Erlang and Elixir's increase in adoption is that a lot of modern day Web applications have these same needs. Don't you want your web application or mobile app to handle failure in a way that doesn't bring the entire system down, and be scaled across several nodes easily?


Elixir runs on the Erlang VM, and has all of the same attributes of fault tolerance and distributed computing.

The point about a lot of quality applications being in Erlang is well taken, though the interop is effortless.


I agree. The tooling that is released WITH the language is an amazing bonus. Of course, no one is forcing you to use ExTest, but it's amazing that they decided to just give it to you with the platform itself.



Elixir reminds me a lot of Clojure.

- It's a language that sits on top of another language's bytecode (Erlang vs JVM)

- It has its own task runner and dependency manager (mix vs lein)

- It has homoiconicity and macros!

- One of its main features is amazing concurrency support.

But Elixir has been in development for a much shorter time than Clojure. Yet it's approaching the same level of maturity of Clojure very quickly.

I'm eager to see where is Elixir is adopted. I hope to see it gain some traction in the web development world.


Reading this comment makes me happy as Clojure is one of the top three Elixir influences alongside Ruby and Erlang itself.

PS: Elixir is not homoiconic but we do have Lisp-style macros.


> Elixir has been in development for a much shorter time than Clojure.

This is probably because Elixir is more like Erlang than Clojure is like Java.

You might see Clojure as a more impressive feat for that reason. But to me, it means that Elixir has less to re-invent and can focus on "programmer happiness".


I though Elixir was not a whole new compiler, more like coffeescript:javascript than clojure:java.


No, it is not like coffeescript:javascript. Coffeescript compiles to javascript source code, which is then turned into bytecode by the VM. Elixir is _NOT_ compiled to Erlang source code; rather, it is compiled directly to BEAM bytecode.

So the clojure:java comparison is accurate.


Actually, it compiles to Core Erlang, which compiles to BEAM bytecode.

Core Erlang is pretty unreadable though, so I do think it's a bit more complex than CoffeeScript.


Elixir also gives you really cool meta-programming tools, a way to extend the language, that aren't part of CoffeeScript.


I can't say for sure, but I don't think it would be impossible to add that kind of capability to coffeescript, but you are right that right now coffeescript can't do that


Some people tried IIRC but they never got very far. One reason could be that syntactic abstraction is generally not in great demand, but could be something else entirely. Also, take a look at Sweet.js


"Elixir compiles directly into BEAM byte code."

from http://elixir-lang.org/crash-course.html


Elixir currently compiles to the Erlang abstract parse tree. This then gets to be BEAM byte code later on.


Good catch. I will fix the crash course.


AFAICT, it reuses components of the Erlang compiler for emitting the actual BEAM code and instead targets an AST that the compiler makes use of. I believe the goal is to eventually target Core Erlang (a different but simpler language that Erlang can be compiled to, similar to Core Haskell). Other projects like LFE make use of Core Erlang already.


Ok, that makes sense and explains my vague memory. Not source->source transformation but very different from something like scala where it really is a totally ground-up new compiler.


What have you built with Elixir, HN?


We're working on Phoenix, a highly connected web framework that aims to serve as a backend for all devices, whether your web browser, native mobile client, or smart oven.

https://github.com/phoenixframework/phoenix http://www.confreaks.com/videos/4132-elixirconf2014-rise-of-...


Personally, in production I've used it for basic web apps, WebSockets and background workers that do the heavy lifting for a web application written in another language such as Ruby.

I've also talked to several others that are using Elixir for mobile game and Internet of Things back-ends.

Now that I'm more comfortable with the language I'm looking to use it for something more ambitious, such as a messaging layer that's specific to a cluster of application's needs.


Not product-y, but I've built a PEG interface [1]. Long term goal is to use it for parsing in an IMAP library.

[1] https://github.com/jtmoulia/neotomex


Professionally, we built ChatBlend[1], a live chat system that incorporates SMS conversations as well as standard web chats.

Personally, I've built a few projects, most recently a HTTP REST toolkit [2].

[1] https://www.chatblend.com/ [2] https://github.com/slogsdon/placid


I'm playing with replacing my Python analytics system with Elixir, piece by piece. Working on a little tool with it that'll convert our XML and JSON from two separate parts of the system to a common format.


Ultimately didn't move past the proof-of-concept phase, but I wrote an implementation of distributed latent Dirichlet allocation for NLP.


We are using Elixir to build the first server implementation of our new decentralized communication protocol.

Hit me up if that sounds interesting, we are looking to hire. Based in London/SF. ryan@spatch.co


I'm writing (professionally) a backend for the "internet of things".


Wow! I had the same idea not so long ago. Are you by any chance targetting Bluetooth Low Energy connectivity? If so, can you share a bit on how are you going to interface BLE with Elixir? If not, what kind of IoT connectivity are you targetting ?


Actually i'm not targetting any specific kind of devices — the core server is extensible, you add your own sources (tcp, udp, whatever) and your encoder/decoder. The original scope of the project was GPS beacons.


I've written a custom url shortener for a client.


Several web services in production right now.


Packet creation and manipulation library I hope to open up soon.


A Pusher server clone: https://github.com/edgurgel/poxa


I wrote an RSS feed aggregator.


Elixir is the #1 language I want to succeed. I can't imagine how amazing it would be if web development counted Elixir among its top 5 languages.


Congratulations to everyone involved! I have all of 7 commits in, all trivial, but huge thanks to everyone in the committer list! It's amazing.


I looked at erlang for a while and I really liked it, even if I never used it. Now I'd like to learn Elixir. However,I ask myself why should one prefers Elixir over scala+akka


Congratulations Valim, Eric and everyone else. Great work.


Wonder why the release announcement came days after it was available through homebrew?


The language creator and maintainers wanted to give package maintainers time to update their package dependencies to Elixir 1.0.


I have JUST finished Dave Thomas' excellent (beta) book, "Programming Elixir," and honestly I can't wait to start building great concurrent, network-aware processes with it!


Who is the biggest customer of Elixir?


Open source community.


I looked at Erlang for a while and I liked it. Now I want to learn Elixir. However I ask myself why one should prefer it over Scala+Akka


For one, Erlang has much better latency, as it has process-local garbage collection. In Akka, if the gc has to do a major collection then all threads must be paused.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: