HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
elixir-lang
elixir
Elixir2012–2026
elixir-lang / elixir

elixir

Simple from zero to scale

87Distinct people
109Mentions
1Explicit recommenders
26.7KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Simple from zero to scale

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

If you haven't read the code for how Elixir handles Unicode support [0] I highly recommend doing so. At compile time it reads from several Unicode Character Database text files…

careersuicide used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 6:01:08 PM UTC.

Try Gleam direct repository linkDebated

The discussion centers on whether Gleam's ergonomic design and type safety make it a superior choice for AI-assisted development compared to mainstream languages, despite its smaller ecosystem. A significant portion of the conversation is dedicated to debating the community's political activism and code of conduct, with some users citing these as deterrents while others defend them as standard anti-harassment measures.

137 readable replies · Supporting reply 1 · Supporting reply 2 · Supporting reply 3 · Supporting reply 4

Mentions over time

HN mentions by year109 dated mentions

Observed mentions: 2012-05-25 17:27:18 UTC to 2026-02-21 11:01:10 UTC.

0369122012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20122013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 7 mentions; 5 submissions, 2 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 9 mentions; 4 submissions, 5 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 12 mentions; 7 submissions, 5 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 12 mentions; 3 submissions, 9 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 10 mentions; 2 submissions, 8 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 7 mentions; 2 submissions, 5 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 9 mentions; 5 submissions, 4 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 7 mentions; 2 submissions, 5 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 5 mentions; 2 submissions, 3 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 12 mentions; 5 submissions, 7 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 7 mentions; 2 submissions, 5 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC202
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC312
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC752
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC945
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC1275
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC1239
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC1028
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC725
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC954
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC725
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC523
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC615
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC1257
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC725
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC110

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Elixir is a programming language designed for building scalable and maintainable applications. For more about Elixir, installation and documentation, check Elixir's website. Bug reports For reporting bugs, visit our issue tracker and follow the steps for reporting a new issue. Please disclose security vulnerabilities privately in our Security page. All currently open bugs related to Elixir are listed in the issues tracker. The Elixir team uses the issues tracker to focus on actionable items, including planned enhancements in the short and medium term. We also do our best to label entries for clarity and to ease collaboration. Our actionable item policy has some important consequences, such as: Proposing new features as well as requests for support, help, and guidance must be done in their own spaces, detailed next. Issues we have identified to be outside of Elixir's scope, such as an upstream bug, will be closed (and requested to be moved elsewhere if appropriate). We actively close unrelated and non-actionable issues to keep the issues tracker tidy. If you believe we got something wrong, drop a comment and we can always reopen the issue. By keeping the overall issues tracker tidy and organized, the community can easily peek at what is coming in new releases and also get involved by commenting on existing issues and submitting pull requests. Please remember to keep the tone positive and be kind! For more information, see the Code of Conduct. Proposing new features You can submit proposals to the Elixir Core mailing list, either through the web interface or by subscribing to it at elixir-lang-core+subscribe@googlegroups.com. Remember to include a clear problem description, compare the proposed solution to existing alternatives in the Elixir ecosystem (and in other languages if possible), and consider the potential impact your changes will have on the codebase and community. For these reasons, we strongly advise you to refine ideas and gather feedback in community spaces (ElixirForum, Discord, etc) before submission. Our website includes a general outline of the language history and its current development focus. Once a proposal is accepted, it will be added to the issue tracker. Features and bug fixes that have already been merged and will be included in the next release are then "closed" and added to the changelog before release. Compiling from source For the many different ways to install Elixir, see our installation instructions on the website. However, if you want to contribute to Elixir, you will need to compile from source. First, install Erlang. After that, clone this repository to your machine, compile and test it: git clone https://github.com/elixir-lang/elixir.git cd elixir make Note: if you are running on Windows, this article includes important notes for compiling Elixir from source on Windows. In case you want to use this Elixir version as your system version, you need to add the bin directory to your PATH environment variable. When updating the repository, you may want to run make clean before recompiling. For deterministic builds, you should set the environment variable ERL_COMPILER_OPTIONS=deterministic. Contributing Contributions to Elixir are always welcome! Before you get started, please check out our CONTRIBUTING.md file. There you will find detailed guidelines on how to set up your environment, run the test suite, format your code, and submit pull requests. Note you must disclose the use of coding agents and AI written code in your contributions. See the "Using AI and coding agents" in CONTRIBUTING.md. Important links Elixir Documentation Elixir Core Mailing list (development) Code of Conduct Issues tracker Changelog Security Policy Open Source Policy License "Elixir" and the Elixir logo are registered trademarks of The Elixir Team. Elixir source code is released under Apache License 2.0. Check LICENSE file for more information.
Read the full README on GitHub

What Hacker News says

10 sources
Erlang macros are basically text substitution. It's similar to C pre-processor directives. Elixir macros are a completely different beast, they can manipulate the AST Lisp-style. A very elegant example is Elixir's unicode module, which reads unicode data tables and turns them into function definitions at compile time [1]. Compare this to the equivalent module in plain old Erlang, which has to be generated by a separate script, in a pre-compilation step in the Makefile, that literally prints blocks of code [2]. [1] https://github.com/elixir-lang/elixir/blob/v1.7.4/lib/elixir... [2] https://github.com/erlang/otp/blob/OTP-21.2/lib/stdlib/uc_sp...
In Twenty Years of Open Source Erlang: A Retrospective from the trenches
Going to throw Elixir Lang into the mix. - The tooling is excellent. - The code is well-documented and readable. - The core team committed to never needing to introduce breaking changes. The Elixir community tends to produce work that is actually considered "Done". An elixir package is not stale when it hasn't seen a commit in a few months. Instead, the feeling is: "It's feature complete and only needs maintenance from here on out." https://github.com/elixir-lang/elixir
In Ask HN: What open source project, in your opinion, has the highest code quality?
Also worth reading, the blog post with highlights for the release: http://blog.erlang.org/My-OTP-21-Highlights/ and the release notes with all the technical details you'd like to know: http://erlang.org/download/otp_src_21.0.readme A few of the things I noticed: > Two new guards BIFs operating on maps have been added: map_get/2 and is_map_key/2. They do the same as maps:get/2 and maps:is_key/2, respectively, except that they are allowed to be used in guards. This is great and further enhances usefulness of both the maps, and the guards, which is always a good thing. > There is a new syntax in 'try/catch' for retrieving the stacktrace without calling 'erlang:get_stacktrace/0'. See the reference manual for a description of the new syntax. The 'erlang:get_stacktrace/0' BIF is now deprecated. You can now get the stacktrace when matching exce
Read the rest
ptions in the `catch` section of `try`, like `error:Exception:Stacktrace -> handler_code()`. > A new logging API is added to Erlang/OTP, see the logger(3) manual page, and section Logging in the Kernel User's Guide. I felt for a long time that configuring logging on the BEAM was a kind of dark art, and never really understood what goes where between SASL, error_logger, lager, and other tools. Now it got properly unified, from what I read, which should make it much easier to configure and use proper logging. That's great! As a bonus, Elixir already supports the new logger[1], apparently. Other than that there seem to be a lot of optimizations, in the compiler, in the emulator, in the IO system, and in signal handling. Also a lot of bugfixes, and some smaller conveniences like an iterator for maps. All in all nothing as exciting as the introduction of maps (unless I'm missing something), but a pretty solid release anyway. [1] https://github.com/elixir-lang/elixir/pull/7649
In Erlang OTP 21.0 is Released
I've been keeping my eye on Crystal for a while now thinking about making the plunge and writing something production ready in it. But I'm a bit vary as for the casual observer the Crystal project github (https://github.com/crystal-lang/crystal) seems brim with unsolved issues (over 500 issues!) and stale PR-s (over 105!). I'm not sure if this is a sign of poor project managment, development stall or poor community engagement but still it leaves a bad first impression. Contrast this to elixir project page (https://github.com/elixir-lang/elixir). Maybe someone who is actively involved in the development of Crystal could shine a light?
In Why Crystal is the most promising programming language of 2018
You can follow my development even further—the lingering question in that gist is how to expand the guard code to see if it is valid in a guard. I tried my hand at a pure-Elixir guard expansion in an earlier PR, documenting my thoughts as I went: https://github.com/elixir-lang/elixir/pull/5854 After José gave me some direction in response to that, I produced the ultimate PR: https://github.com/elixir-lang/elixir/pull/5857 It simply relies on calling the :elixir_expand.expand function that the compiler uses, with a guard context—so the defguard implementation is always up-to-date with what the compiler allows in guards. Waaay more elegant than munging AST myself. Funnily enough, the tests I wrote for defguard actually uncovered some missing assertions in that function. Some invalid expressions would make it past that step and return a diff
Read the rest
erent error much deeper in. It's kinda cool I indirectly contributed to the compiler. I took on the feature mostly because over 4 years ago I'd made a gist to do exactly that, minus the validation, and when I found the issue on github for it, it gave me a lot of pleasant closure to get it merged in! https://gist.github.com/christhekeele/8284977/revisions#diff...
In Elixir v1.6 released: code formatter, dynamic supervisors, and more

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.