写点什么

Elixir 1.2 带来多项功能增强和性能提升

  • 2016-01-07
  • 本文字数:2112 字

    阅读完需:约 7 分钟

José Valim宣布 Elixir 这门动态、函数式编程语言的 1.2 版本。

Valim 是 Elixir 的创建者。他表示,1.2 版本“带来了功能增强、Bug 修复、性能提升等等”。同时,他还指出,该版本需要 Erlang 18 及以上版本。

在宣布 Elixir 1.2 发布的博文中,Valim 列出了该版本对这门语言所做的若干值得注意的改进。这些改进包括增加了多 aliases/imports/require语法,映射键支持变量,在映射键和函数子句中支持“销(pin)”操作符,增加with的特殊形式,用于多表达式匹配,将下面的代码:

复制代码
case File.read("my_file.ex") do
{:ok, contents} ->
case Code.eval_string(contents) do
{res, _binding} ->
{:ok, res}
error ->
error
error -> error
error
end

替换为下列更为简洁的形式:

复制代码
with {:ok, contents}
<p>Elixir 工作流的改进包括使“综合(umbrella)”应用程序具备了共享构建和配置文件的能力,Valim 指出,这样做的目的是在综合项目中“极大地缩短编译时间”。通过向每个综合应用程序的 <code>mix.exs</code> 文件增加如下配置信息即可实现共享目的:</p>
build_path: "../../_build",
config_path: "../../config/config.exs",
<p>Valim 继续写道,“Mix 现在默认会自动合并协议,而且,我们现在可以并行合并及缓存合并结果,从而在所有的环境中都能提供最好的性能,而又不影响编译时间”。</p>
<p>Elixir 1.2 还提供了一个试验性特性,就是开发人员可以选择允许 Mix 获取和编译 Rebar 3 依赖。</p>
<p> 在 Hacker News 上,在有关 <a href="https://news.ycombinator.com/item?id=10821679">Elixir 1.2 发布 </a> 的讨论中,针对此次发布和 Elixir 的观点一般来说都是正面的,这使得用户 <a href="https://news.ycombinator.com/item?id=10823116">cxz</a> 评论说:</p>
<blockquote>
<p> 我很期待从更有经验的人那里听到一些批评、负面体验和缺点。这里的观点 100% 都是正面的、表扬性的,这在 HN 上是非常不正常的。</p>
</blockquote>
<p> 尽管如此,最初的观点始终还是正面的,用户 <a href="https://news.ycombinator.com/item?id=10823204">elteto</a> 评论道,“以我的经验来看,这种正面性并不是没有道理的,Elixir 是一门非常优秀的、年轻的语言,它有一个给力的社区(像大多数新语言那样)。”</p>
<p> 唯一一点批评的信号来自用户 <a href="https://news.ycombinator.com/item?id=10824341">gleb</a>,他在评论中指出了一些小“问题”,如下:</p>
<blockquote>
<p> 唯一真正让我担心的问题是 Ecto 及它同 Phoenix 的集成。那让简单的事情变得困难,让困难的事情变得不可能。
<br></br> 更主要的是,我不觉得 Phoenix 像 Rails 那样是“从一个生产环境中的 Web 应用提炼而来”。对于 Rails,你知道至少有一个应用 Basecamp 运行在它上面。对于 Phoenix,我就不敢说了。这只是一个非常初步的看法,但第一印象很重要。</p>
</blockquote>
<p>José Valim 以行动彰显了社区的名誉,他 <a href="https://news.ycombinator.com/item?id=10825786"> 亲自回复了 gleb</a>,表示“愿意听取更多关于 Ecto/Phoenix 集成的信息,什么让他觉得困难以及什么让他觉得不可能,”并邀请该用户给他发电子邮件。</p>
<p> 要了解更多有关 Elixir 1.2 的信息,请查看 <a href="https://github.com/elixir-lang/elixir/blob/v1.2.0/CHANGELOG.md"> 变更日志 </a>。Elixir 遵循 Apache 2 许可协议。希望为这门语言做贡献的 InfoQ 读者,可以查看 <a href="https://github.com/elixir-lang/elixir/blob/v1.2.0/CODE_OF_CONDUCT.md">CODE_OF_CONDUCT.md</a><a href="https://github.com/elixir-lang/elixir/blob/v1.2.0/CONTRIBUTING.md">CONTRIBUTING.md</a> 这两份指南来了解更多信息。</p>
<p><strong> 查看英文原文:</strong><a href="http://www.infoq.com/news/2016/01/elixir-12" title="http://www.infoq.com/news/2016/01/elixir-12">Elixir 1.2 Brings Enhancements, Performance Improvements</a></p>
<hr></hr><p> 感谢 <a href="http://www.infoq.com/cn/author/%E8%B0%A2%E4%B8%BD"> 谢丽 </a> 对本文的审校。</p>
<p> 给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 <a href="mailto:editors@cn.infoq.com">editors@cn.infoq.com</a>。也欢迎大家通过新浪微博(<a href="http://www.weibo.com/infoqchina">@InfoQ</a><a href="http://weibo.com/u/1451714913">@丁晓昀 </a>),微信(微信号:<a href="http://weixin.sogou.com/gzh?openid=oIWsFt0HnZ93MfLi3pW2ggVJFRxY">InfoQChina</a>)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群 <a href="http://shang.qq.com/wpa/qunwpa?idkey=cc82a73d7522f0090aa3cbb6a8f4bdafa8b82177f481014c976a8740d927997a" target="_blank"><img src="https://static001.infoq.cn/resource/image/06/9f/06e1fec4a87eca3142d54d09844c629f.png"></img></a>(已满),InfoQ 读者交流群(#2)<a href="http://shang.qq.com/wpa/qunwpa?idkey=7fbcba68eeac78cb6eb76751b8ba1b23ba970ac342dd32ffc2e57b7bed9cc85a" target="_blank"><img src="https://static001.infoq.cn/resource/image/06/9f/06e1fec4a87eca3142d54d09844c629f.png"></img></a>)。</p>
2016-01-07 18:002796
用户头像

发布了 1008 篇内容, 共 422.7 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

Flink的函数体系

阿泽🧸

flink 三周年连更

测试环境

乌龟哥哥

三周年连更

只需要六步!快速开启专属的风控系统

极客天地

使用MASA全家桶从零开始搭建IoT平台(三)管理设备的连接状态

MASA技术团队

IoT MASA .NET 7

平台工程助力企业提升研发效能

SEAL安全

研发效能 平台工程

linux上SVN出现 "Unable to connect to a repository at URL 'svn://xx.xx.xx.xx/xxx' 和 No repository ...

北桥苏

svn linux\

Zebec 生态旗下 NFT协议 PlazaDAO宣布进军BRC20生态,有什么规划?

股市老人

音视频八股文(11)-- ffmpeg avio 内存输入和内存输出。内存输出有完整代码,网上很少有的。

福大大架构师每日一题

c ffmpeg 福大大

AI 大底座,大模型时代的答卷

Baidu AICLOUD

大模型训练

小程序开发中的插件、组件、控件,傻傻分不清楚

没有用户名丶

解决easyswoole的swServer_start_check: onTask event callback must be set at报错

北桥苏

php swoole

Shell脚本中的echo命令

芯动大师

echo Shell命令 三周年连更

Java 如何在 Array 和 Set 之间进行转换

HoneyMoose

万字长文——Go 语言现代命令行框架 Cobra 详解

江湖十年

golang 后端 命令行 命令行工具

Java实现多用户即时通信系统

timerring

Java

持续交付下的分层自动化测试

单东东

DevOps 持续交付 持续测试 测试自动化 junit5

2分钟快速上手流水线的创建与运行

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 5 月 PK 榜

C++异常和错误处理机制:如何使您的程序更加稳定和可靠

小万哥

c++ 程序员 面试 后端 开发

怎样成为优秀的后端工程师

越长大越悲伤

后端、 java‘

使用NineData定制企业级数据库规范

NineData

数据库 dba 企业管理工具 数据库开发工具 企业级数据库规范

并发编程:ErrGroup的正确使用

Jack

简单好用的网页设计工具:EverWeb中文版

真大的脸盆

Mac 网页设计 Mac 软件 网页布局 网页制作

ChatGPT 中文指令指南,教会你如何使用chatgpt实现中文你想要的答案

汀丶人工智能

ChatGPT

深入解析PHP代码审计技术与实战【网络安全】

网络安全学海

编程 网络安全 信息安全 渗透测试 WEB安全

Django笔记二十四之数据库函数之比较和转换函数

Hunter熊

Python MySQL django cast

怎么在 vue 中使用 form 清除校验状态?

海拥(haiyong.site)

三周年连更

Java 如何在 Array 和 List 之间进行转换

HoneyMoose

什么是人工智能领域的深度学习?

汪子熙

人工智能 深度学习 强化学习 三周年连更

小度搭载AI技术进军手机市场:AI技术会是手机市场的一剂强心针吗

石头IT视角

云原生日志收集机制和日志处理流程规范

穿过生命散发芬芳

日志分析 三周年连更

Elixir 1.2带来多项功能增强和性能提升_后端_James Chesters_InfoQ精选文章