author: Sean Callan author_link: https://github.com/doomspork categories: general date: 2018-04-02 layout: post title: A look at Elixir 1.6 excerpt: > Follow along as we take a peek at what’s inside the latest Elixir release.

Learn more about the all new code formatter, exciting dynamic supervisors, and changes coming to your code editors that make working in Elixir even better!

1.6 前瞻

1 月 17 号和其他往常的日子一样,直到一个令人激动的事情发生:José 发布了 Elixir 1.6

就像之前的版本一样,这个版本延续了在众多合作者的共同努力下,功能日趋丰富。

让我们一起看看 1.6 版本中令人激动的功能,以及它们如何在我们的应用中发挥作用。

代码格式化

虽然有些人可能不认为代码格式化是必要的,但新的 mix format 任务确保了一件事:关于哪种样式指南或格式是 “正确的” 的辩论和争论已经消失了。

如果你使用的是 1.6 版本,那么将 formatter 应用到你的项目中就很容易了。

  1. $ mix format lib/**/*.ex

新生成的项目将包含 .formatter.exs 配置文件,同时也允许你微调 formatter 如何应用到你的代码中。

在社区的共同努力下,我们已经能够将 formatter 应用到 整个 Elixir 代码库中。 如果你有兴趣看到所有的变化,请访问 Elixir Issue #6643

如果你不想翻阅提交的内容,也不用担心,我们已经为你准备好了。 让我们来快速浏览一下核心项目中对 formatter 的一些改动。

  • 在函数调用中加入括号:

    以前

    1. file = Keyword.get opts, :file, "nofile"
    2. line = Keyword.get opts, :line, 1

    现在

    1. file = Keyword.get(opts, :file, "nofile")
    2. line = Keyword.get(opts, :line, 1)
  • 重新调整和组织复杂的声明:

    以前

    1. valid = is_list(aliases) and Enum.all?(aliases, fn {k, v} ->
    2. is_atom(k) and is_atom(v)
    3. end)

    现在

    1. valid =
    2. is_list(aliases) and
    3. Enum.all?(aliases, fn {k, v} ->
    4. is_atom(k) and is_atom(v)
    5. end)

动态监督器

动态监督器很显而易见地成为 1.6 版最令人激动的功能之一,它为 Elixir 开发人员提供了一个强大的新工具。

使用传统的监督器,我们需要在初始化时提供一个静态的子进程列表。

虽然这在许多情况下是可行的,但它要求我们在启动时知道我们所需要的监督进程的确切数量,而这并不总是可以预见的。

门打开了,一个新来的孩子走了进来:DynamicSupervisor.

有了我们的新朋友 “动态监控器”,这些限制因素就成了过去。

与其他监督器不同,动态监督器在启动时没有子进程。

相反,我们使用start_child/2函数根据需要添加那些子进程。

很快就会有全新的 动态监控器 课程,敬请期待。

编译器行为

新的 Mix.Task.Compiler 行为对大多数终端用户来说不会立即被察觉或是有用,但它还是令人激动。

通过这一变化,Elixir 能够确保所有编译器都符合规范,并在出现错误时提供足够的诊断。

这种改进后的诊断程序使得与代码编辑器的集成更加容易。

最终的结果是为 Elixir 用户提供更好的工具支持。

如果你有兴趣仔细看看这些变化,我们建议你看看功能贡献者之一 Jake Becker, 在他的博客文章ElixirLS 0.2: Better builds, code formatter, and incremental Dialyzer中所谈到的内容。

虽然乍一看似乎并不多,但这只是构成 1.6 版本的几个关键特性。 数十项修复、调整和其他改进使这个版本成为最好的版本。

非常感谢那些为这个版本做出贡献的人,你们的工作非常出色!

我们想听到您的意见!

您是否正在使用这些功能?

你最喜欢 1.6 中的哪些变化?

下次见!