Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion _includes/top.html
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
<li class="menu-item install"><a class="spec" href="/install.html">Install</a></li>
<li class="menu-item learning"><a class="spec" href="/learning.html">Learning</a></li>
<li class="menu-item docs"><a class="spec" href="/docs.html">Docs</a></li>
<li class="menu-item getting-started"><a class="spec" href="https://hexdocs.pm/elixir/introduction.html">Guides</a></li>
<li class="menu-item getting-started"><a class="spec" href="https://elixir.hexdocs.pm/introduction.html">Guides</a></li>
<li class="menu-item cases"><a class="spec" href="/cases.html">Cases</a></li>
<li class="menu-item blog"><a class="spec" href="/blog/">Blog</a></li>
</ul>
Expand Down
8 changes: 4 additions & 4 deletions _layouts/redirect.html
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<!DOCTYPE html>
<html>
<head>
<link rel="canonical" href="https://hexdocs.pm/elixir/{{ page.redirect_to }}.html"/>
<link rel="canonical" href="https://elixir.hexdocs.pm/{{ page.redirect_to }}.html"/>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="0;url=https://hexdocs.pm/elixir/{{ page.redirect_to }}.html" />
<meta http-equiv="refresh" content="0;url=https://elixir.hexdocs.pm/{{ page.redirect_to }}.html" />
</head>
<body>
<h3>Redirecting...</h3>
<a href="https://hexdocs.pm/elixir/{{ page.redirect_to }}.html">Click here if you are not redirected.<a>
<script>location='https://hexdocs.pm/elixir/{{ page.redirect_to }}.html'</script>
<a href="https://elixir.hexdocs.pm/{{ page.redirect_to }}.html">Click here if you are not redirected.<a>
<script>location='https://elixir.hexdocs.pm/{{ page.redirect_to }}.html'</script>
</body>
</html>

4 changes: 2 additions & 2 deletions _posts/2012-05-25-elixir-v0-5-0-released.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ excerpt: We have finally released Elixir v0.5.0! This marks the first release si

We have finally released [Elixir](/) v0.5.0! This marks the first release since the language was rewritten. In this blog post, we will discuss what we achieved during this time and what are the next steps!

If you don't care about any of these, you can go straight to our [Getting Started guide](https://hexdocs.pm/elixir/introduction.html). If you do, keep on reading!
If you don't care about any of these, you can go straight to our [Getting Started guide](https://elixir.hexdocs.pm/introduction.html). If you do, keep on reading!

## Looking back

Expand Down Expand Up @@ -46,4 +46,4 @@ In parallel, we will improve our [documentation generation tool](https://github.

Finally, we will continue improving the Standard Library. Although Elixir's goal is to rely on Erlang the most as possible, we also want to provide a small Standard Library which makes better use of Elixir semantics. For the next weeks, we will focus on improving the IO and File manipulation modules. New data types may also appear, for example, ranges come to my mind.

Check out our [home page](/) and the [getting started guide](https://hexdocs.pm/elixir/introduction.html) for more information. Welcome aboard and grab a cup of Elixir, because you are certainly going to enjoy the ride!
Check out our [home page](/) and the [getting started guide](https://elixir.hexdocs.pm/introduction.html) for more information. Welcome aboard and grab a cup of Elixir, because you are certainly going to enjoy the ride!
2 changes: 1 addition & 1 deletion _posts/2012-08-01-elixir-v0-6-0-released.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@ Our interactive shell (IEx) also had many improvements, thanks to the Elixir dev

That's it. For the next months, we will continue improving Elixir (you can see some ideas floating around in the [issues tracker](https://github.com/elixir-lang/elixir/issues)) but we will start to focus on other tools and libraries for the community.

Thank you and don't forget to [give Elixir a try](https://hexdocs.pm/elixir/introduction.html)!
Thank you and don't forget to [give Elixir a try](https://elixir.hexdocs.pm/introduction.html)!
2 changes: 1 addition & 1 deletion _posts/2012-10-20-elixir-v0-7-0-released.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ This release also includes some backwards incompatible changes, but the majority

For more information, read out the [CHANGELOG](https://github.com/elixir-lang/elixir/blob/v0.7.0/CHANGELOG.md).

Thank you and don't forget to [give Elixir a try](https://hexdocs.pm/elixir/introduction.html)!
Thank you and don't forget to [give Elixir a try](https://elixir.hexdocs.pm/introduction.html)!
2 changes: 1 addition & 1 deletion _posts/2012-11-18-elixir-v0-7-1-released.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ During this time traveling around, we have spoken at many conferences, as [Stran

In case you missed any of those conferences, [the talk I presented at Øredev is available and you can watch it now](https://vimeo.com/53221562). The slides are also available below.

If you want to hear more about Elixir at a conference or an event, please let us know. Thank you and don't forget to [give Elixir a try](https://hexdocs.pm/elixir/introduction.html)!
If you want to hear more about Elixir at a conference or an event, please let us know. Thank you and don't forget to [give Elixir a try](https://elixir.hexdocs.pm/introduction.html)!

<script async class="speakerdeck-embed" data-id="cf4727401449013077d112313d1a82a3" data-ratio="1.2994923857868" src="//speakerdeck.com/assets/embed.js"></script>

2 changes: 1 addition & 1 deletion _posts/2012-12-04-elixir-v0-7-2-released.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,4 @@ under some circumstances when using records.

Lastly, but not least importantly, I'd like to mention that we're very excited about how the community around Elixir is building up. Thank you all for being around and supporting us!

[Learn more about Elixir](https://hexdocs.pm/elixir/introduction.html)!
[Learn more about Elixir](https://elixir.hexdocs.pm/introduction.html)!
10 changes: 5 additions & 5 deletions _posts/2013-01-27-elixir-v0-8-0-released.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ And applications can be started directly from the command line as well:

elixir --app my_app

We have written a whole [guide chapter about creating OTP applications, supervisors and servers](https://hexdocs.pm/elixir/supervisor-and-application.html). Give it a try!
We have written a whole [guide chapter about creating OTP applications, supervisors and servers](https://elixir.hexdocs.pm/supervisor-and-application.html). Give it a try!

## Improved Unicode support

Expand All @@ -31,7 +31,7 @@ String.capitalize("fiN") #=> "Fin"

The example above contains a string with only two codepoints, [the codepoint fi](http://www.fileformat.info/info/unicode/char/FB01/index.htm) and [the codepoint n](http://www.fileformat.info/info/unicode/char/006E/index.htm). Look how Elixir properly capitalizes the string, returning a new string made of three codepoints (all ascii letters).

Learn more about [Unicode support with the String module](https://hexdocs.pm/elixir/String.html).
Learn more about [Unicode support with the String module](https://elixir.hexdocs.pm/String.html).

## AST metadata

Expand Down Expand Up @@ -71,11 +71,11 @@ When some code call the `unless` macro above, in previous Elixir versions, it wo

Elixir v0.8 ensures that the `unless` macro above will expand to the same `if` macro available when quoted, guaranteeing different libraries can integrate easily without imposing hidden requirements.

You can read more about [macros in the getting started guide](https://hexdocs.pm/elixir/case-cond-and-if.html) or [go deep into the quote macro docs](https://hexdocs.pm/elixir/Kernel.SpecialForms.html#quote/2).
You can read more about [macros in the getting started guide](https://elixir.hexdocs.pm/case-cond-and-if.html) or [go deep into the quote macro docs](https://elixir.hexdocs.pm/Kernel.SpecialForms.html#quote/2).

## A new way to manipulate pathnames

Elixir v0.8 contains a bit of house cleaning too. We have created [the Path module](https://hexdocs.pm/elixir/Path.html) to accommodate functions used to manipulate filesystem paths and have also added functions like [`System.tmp_dir` and `System.user_home`](https://hexdocs.pm/elixir/System.html) which are meant to work across different operating systems and are very handy when scripting.
Elixir v0.8 contains a bit of house cleaning too. We have created [the Path module](https://elixir.hexdocs.pm/Path.html) to accommodate functions used to manipulate filesystem paths and have also added functions like [`System.tmp_dir` and `System.user_home`](https://elixir.hexdocs.pm/System.html) which are meant to work across different operating systems and are very handy when scripting.

## The new HashDict

Expand All @@ -101,4 +101,4 @@ We continue actively working on Elixir and this release is the [result of our ef

Also, we previously announced Elixir is going to be released frequently, every 2 to 4 weeks. We have made a small detour to get v0.8.0 out of the door, but we are back to our regular schedule as of today!

[Celebrate with us and give Elixir a try](https://hexdocs.pm/elixir/introduction.html)!
[Celebrate with us and give Elixir a try](https://elixir.hexdocs.pm/introduction.html)!
4 changes: 2 additions & 2 deletions _posts/2013-04-29-elixir-v0-8-2-released.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,6 @@ defmodule MathTest do
end
```

You can learn more about [doctests on our documentation page](https://hexdocs.pm/ex_unit/ExUnit.DocTest.html) and get more information about our latest release [on the CHANGELOG](https://github.com/elixir-lang/elixir/blob/ed27611f48ba150404c95fe15f1d6058a4287330/CHANGELOG.md).
You can learn more about [doctests on our documentation page](https://ex-unit.hexdocs.pm/ExUnit.DocTest.html) and get more information about our latest release [on the CHANGELOG](https://github.com/elixir-lang/elixir/blob/ed27611f48ba150404c95fe15f1d6058a4287330/CHANGELOG.md).

If you are new to Elixir, [it's easy to get started with](https://hexdocs.pm/elixir/introduction.html)!
If you are new to Elixir, [it's easy to get started with](https://elixir.hexdocs.pm/introduction.html)!
4 changes: 2 additions & 2 deletions _posts/2013-05-23-elixir-v0-9-0-released.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -124,11 +124,11 @@ A special thanks to [Eric Meadows-Jonsson](https://github.com/ericmj) for implem
We have also many other smaller improvements:

* Our CLI now supports `--hidden` and `--cookie` flags which are useful for distributed modes;
* Our test framework, ExUnit, is now able to capture all the communication that happens with a registered IO device, like `:stdio` and `:stderr`, via [`ExUnit.CaptureIO`](https://hexdocs.pm/ex_unit/ExUnit.CaptureIO.html). This is very useful for testing how your software reacts to some inputs and what it prints to the terminal;
* Our test framework, ExUnit, is now able to capture all the communication that happens with a registered IO device, like `:stdio` and `:stderr`, via [`ExUnit.CaptureIO`](https://ex-unit.hexdocs.pm/ExUnit.CaptureIO.html). This is very useful for testing how your software reacts to some inputs and what it prints to the terminal;
* `IEx` now allows files to be imported into the shell with `import_file` and also loads `~/.iex` on startup for custom configuration;
* The `String`, `Enum` and `Dict` modules got more convenience functions that goes from checking unicode character validity to taking values out of a dictionary;
* And many, many more!

A huge thank you to our community for sending bug reports, providing bug fixes and contributing all those amazing features. And when are **you** joining us? :)

Give Elixir a try! You can start with our [getting started guide](https://hexdocs.pm/elixir/introduction.html), or [check this 30 minute video from PragProg](https://www.youtube.com/watch?v=a-off4Vznjs&feature=youtu.be) or buy the beta version of [Programming Elixir](https://pragprog.com/book/elixir/programming-elixir).
Give Elixir a try! You can start with our [getting started guide](https://elixir.hexdocs.pm/introduction.html), or [check this 30 minute video from PragProg](https://www.youtube.com/watch?v=a-off4Vznjs&feature=youtu.be) or buy the beta version of [Programming Elixir](https://pragprog.com/book/elixir/programming-elixir).
10 changes: 5 additions & 5 deletions _posts/2013-07-13-elixir-v0-10-0-released.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -55,19 +55,19 @@ Stream.repeatedly(fn -> :random.uniform end) |> Enum.take(3)
#=> [0.4435846174457203, 0.7230402056221108, 0.94581636451987]
```

`Stream.repeatedly/1` returns an infinite stream but that's ok we just need its first three elements. You can learn more about [stream and related functions in `Stream` module documentation](https://hexdocs.pm/elixir/Stream.html).
`Stream.repeatedly/1` returns an infinite stream but that's ok we just need its first three elements. You can learn more about [stream and related functions in `Stream` module documentation](https://elixir.hexdocs.pm/Stream.html).

## Sets

This release also adds [the Sets API](https://hexdocs.pm/elixir/Set.html) to Elixir and a HashSet implementation. The HashSet implementation follows [the same design goals as the HashDict implementation](/blog/2013/01/27/elixir-v0-8-0-released/) released at the beginning of this year, starting with a compact representation and expanding and contracting as needed.
This release also adds [the Sets API](https://elixir.hexdocs.pm/Set.html) to Elixir and a HashSet implementation. The HashSet implementation follows [the same design goals as the HashDict implementation](/blog/2013/01/27/elixir-v0-8-0-released/) released at the beginning of this year, starting with a compact representation and expanding and contracting as needed.

This feature was a contribution from [Joseph Wilk](https://github.com/josephwilk) and he talks about its implementation and provides some benchmarks [on his blog](http://blog.josephwilk.net/elixir/sets-in-elixir.html).

## Pretty printing

Another addition to this release is pretty printing. The pretty printing started as an implementation of the [Wadler paper](http://homepages.inf.ed.ac.uk/wadler/papers/prettier/prettier.pdf) by [Jonns Mostovoys](https://github.com/manpages) which was then improved by [Gustavo Brunoro](https://github.com/brunoro) under his Google Summer of Code project as described in [Lindig's _Strictly Prettier_ paper](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.34.2200).

As soon as you upgrade to Elixir v0.10.0 and start IEx, you will get pretty printing for all data structures provided by Elixir. We have also added documentation to the `Inspect` module about [adding pretty printing to your own structures](https://hexdocs.pm/elixir/Inspect.html) as well as [using the document algebra for any other kind of formatting](https://hexdocs.pm/elixir/Inspect.Algebra.html).
As soon as you upgrade to Elixir v0.10.0 and start IEx, you will get pretty printing for all data structures provided by Elixir. We have also added documentation to the `Inspect` module about [adding pretty printing to your own structures](https://elixir.hexdocs.pm/Inspect.html) as well as [using the document algebra for any other kind of formatting](https://elixir.hexdocs.pm/Inspect.Algebra.html).

## Other improvements

Expand All @@ -79,8 +79,8 @@ Other notable improvements are:

* We are also working hard on Windows support, improving its command-line tools and working towards a green test suite, thanks to [Tom Jansens](https://github.com/tojans);

* Meta-programming in Elixir was also improved by the addition of the `binding/0` and `binding/1` macros plus the additions of `Macro.expand_once/2` and `Macro.expand_all/2` to the [`Macro` module](https://hexdocs.pm/elixir/Macro.html);
* Meta-programming in Elixir was also improved by the addition of the `binding/0` and `binding/1` macros plus the additions of `Macro.expand_once/2` and `Macro.expand_all/2` to the [`Macro` module](https://elixir.hexdocs.pm/Macro.html);

There are also improvements to typespecs, error messages, many bug fixes and some backwards incompatible changes. We have posted a detailed [upgrade instructions on the mailing list](https://groups.google.com/forum/?fromgroups#!topic/elixir-lang-talk/ksrefrgK1eY). For a general overview, [check out the CHANGELOG](https://github.com/elixir-lang/elixir/blob/v0.10.0/CHANGELOG.md).

Give Elixir a try! You can start with our [getting started guide](https://hexdocs.pm/elixir/introduction.html), or check out our sidebar for other learning resources.
Give Elixir a try! You can start with our [getting started guide](https://elixir.hexdocs.pm/introduction.html), or check out our sidebar for other learning resources.
6 changes: 3 additions & 3 deletions _posts/2013-08-08-elixir-design-goals.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -203,14 +203,14 @@ Enum.map set, fn(x) -> x * 2 end
#=> [2, 4, 6]
```

Not only that, any developer can **extend** the `Enum` module to work with any data type as long as the data type implements [the `Enumerable` protocol](https://hexdocs.pm/elixir/Enumerable.html) (protocols in Elixir are based on Clojure's protocol). This is extremely convenient because the developer needs to know only the `Enum` API for enumeration, instead of memorizing specific APIs for sets, lists, dicts, etc.
Not only that, any developer can **extend** the `Enum` module to work with any data type as long as the data type implements [the `Enumerable` protocol](https://elixir.hexdocs.pm/Enumerable.html) (protocols in Elixir are based on Clojure's protocol). This is extremely convenient because the developer needs to know only the `Enum` API for enumeration, instead of memorizing specific APIs for sets, lists, dicts, etc.

There are many other protocols exposed by the language, like [the `Inspect` protocol](https://hexdocs.pm/elixir/Inspect.html) for pretty printing data structures and [the `Access` protocol](https://hexdocs.pm/elixir/Access.html) for accessing key-value data by key. By being extensible, Elixir ensures developers can work **with** the language, instead of **against** the language.
There are many other protocols exposed by the language, like [the `Inspect` protocol](https://elixir.hexdocs.pm/Inspect.html) for pretty printing data structures and [the `Access` protocol](https://elixir.hexdocs.pm/Access.html) for accessing key-value data by key. By being extensible, Elixir ensures developers can work **with** the language, instead of **against** the language.

## Summing up

The goal of this post was to sumarize the language goals: compatibility, productivity and extensibility. By being compatible with the Erlang VM, we are providing developers another toolset for building concurrent, distributed and fault-tolerant systems.

We also hope to have clarified what Elixir brings to the Erlang VM, in particular, meta-programming through macros, polymorphic constructs for extensibility and a data-focused standard library with extensible and consistent APIs for diverse types, including strict and lazy enumeration, unicode handling, a test framework and more.

Give Elixir a try! You can start with our [getting started guide](https://hexdocs.pm/elixir/introduction.html), or check out our sidebar for other learning resources.
Give Elixir a try! You can start with our [getting started guide](https://elixir.hexdocs.pm/introduction.html), or check out our sidebar for other learning resources.
Loading