Elixir 是一种动态的函数式语言,旨在构建可扩展和可维护的应用程序。
有关 Elixir 的更多信息、安装和文档,请访问 Elixir 的官方网站。
政策
新版本发布会在通告邮件列表中宣布。您可以通过发送邮件至 elixir-lang-ann+subscribe@googlegroups.com 并回复确认邮件来订阅。
所有安全相关的发布都会标记为 [security]
。更多信息请阅读我们的安全政策。
我们所有官方沟通渠道中的互动都遵循我们的行为准则。
错误报告
要报告错误,请访问我们的问题追踪器并按照报告新问题的步骤进行操作。请通过 elixir-security@googlegroups.com 私下披露安全漏洞。
问题追踪器管理
所有当前与 Elixir 仓库相关的未解决错误都列在问题追踪器中。Elixir 团队使用问题追踪器专注于可操作项目,包括短期和中期的计划改进。我们还尽最大努力为条目添加标签以提高清晰度并便于协作。
我们的可操作项目政策有一些重要影响,例如:
-
提出新功能以及寻求支持、帮助和指导的请求必须在各自的专门空间进行,详见下文。
-
我们已确定超出 Elixir 范围的问题,如上游错误,将被关闭(如果适当,会要求移至其他地方)。
-
我们积极关闭不相关和无法操作的问题以保持问题追踪器的整洁。我们可能偶尔会出错,并会乐意重新审视问题,必要时重新打开。
保持积极的语气并友善相处!更多信息,请参阅行为准则。
提议新功能
要提议新功能,请在 Elixir Core 邮件列表中开始讨论。语言开发历史及其重点在我们的网站上有描述。
请记住,你有责任论证和解释为什么某个功能是有用的,以及它将如何影响代码库和社区。一个好的提案包括问题描述以及提议的解决方案与 Elixir 生态系统(以及其他语言)中现有替代方案的比较。为了在提交前完善提案,可以考虑使用并收集Elixir 网站侧边栏列出的社区空间的反馈。
一旦提案被接受,它将被添加到问题追踪器中。已经合并并将包含在下一个版本中的功能和错误修复会被"关闭"并添加到更新日志中。
讨论、支持和帮助
对于一般讨论、支持和帮助,请使用Elixir 网站侧边栏列出的社区空间,如论坛、聊天平台等,在那里更广泛的社区将能够帮助你。
从源码编译
关于安装 Elixir 的多种不同方法,请参阅我们网站上的安装说明。但是,如果你想为 Elixir 做出贡献,你需要从源码编译。
首先,安装 Erlang。之后,将此仓库克隆到你的机器上,编译并测试它:
git clone https://github.com/elixir-lang/elixir.git
cd elixir
make
注意:如果你在 Windows 上运行,这篇文章包含了在 Windows 上从源码编译 Elixir 的重要说明。
如果你想将这个 Elixir 版本作为你的系统版本,你需要将 bin
目录添加到你的 PATH 环境变量中。
此外,你可以选择运行 make clean test
来执行测试套件。
贡献
我们欢迎对 Elixir 的贡献。要贡献,你需要了解一些关于代码的事情。首先,Elixir 代码按每个应用程序分布在 lib
文件夹中:
-
elixir
- Elixir 的内核和标准库 -
eex
- EEx 是允许你嵌入 Elixir 的模板引擎 -
ex_unit
- ExUnit 是随 Elixir 一起提供的简单测试框架 -
iex
- IEx 代表 Interactive Elixir:Elixir 的交互式 shell -
logger
- Logger 是内置的日志记录器 -
mix
- Mix 是 Elixir 的构建工具
你可以在根目录下运行 make test
来运行所有测试。你也可以通过 make test_#{APPLICATION}
来运行特定框架的测试,例如 make test_ex_unit
。如果你只改变了 Elixir 标准库中的内容,你可以通过 make test_stdlib
只运行该部分的测试。
如果你只更改一个文件,你可以选择只编译并运行该特定文件的测试,以加快开发周期。例如,如果你正在更改 String 模块,你可以这样编译它并运行其测试:
bin/elixirc lib/elixir/lib/string.ex -o lib/elixir/ebin
bin/elixir lib/elixir/test/elixir/string_test.exs
某些测试文件需要在之前显式地要求它们的 test_helper.exs
,例如:
bin/elixir -r lib/logger/test/test_helper.exs lib/logger/test/logger_test.exs
你也可以使用 LINE
环境变量来运行单个测试:
LINE=123 bin/elixir lib/elixir/test/elixir/string_test.exs
要重新编译所有内容(包括Erlang模块):
make compile
完成修改后,请记得运行 make format
以确保所有文件都格式正确,然后运行完整的测试套件 make test
。
如果你的贡献在语言引导过程中失败,你可以通过以下命令从头重新构建语言:
make clean_elixir compile
同样,如果在更新现有检出后无法编译Elixir或通过测试,请运行 make clean compile
。你可以查看官方构建状态。更多任务可以通过阅读Makefile找到。
测试运行并通过后,你就可以为Elixir做出贡献并发送拉取请求了。我们保存了一些过去收到的优秀拉取请求,以供参考:
审查变更
一旦发送了拉取请求,Elixir团队将审查你的更改。我们在下面概述了我们的流程,以明确每个参与者的角色。
所有拉取请求在合并到仓库之前必须得到两名提交者的批准。如果需要更改,团队将留下适当的评论,要求对代码进行修改。遗憾的是,即使要求进行修改,我们也不能保证拉取请求一定会被合并,因为Elixir团队会在贡献发生变化时重新评估。
提交者也可以直接将样式更改推送到你的分支。如果你更愿意自己管理所有更改,可以在提交拉取请求时禁用"允许维护者编辑"功能。
Elixir团队可以选择指派某人审查拉取请求。如果有人被指派,他们必须在另一个团队成员合并之前明确批准代码。
审查结束后,你的拉取请求将被压缩并合并到仓库中。如果你已经仔细组织了提交,并认为它们应该在不压缩的情况下合并,请在评论中说明。
构建文档
构建文档需要安装并与Elixir一起构建ExDoc:
# 克隆并编译Elixir后,在其父目录中:
git clone https://github.com/elixir-lang/ex_doc.git
cd ex_doc && ../elixir/bin/elixir ../elixir/bin/mix do deps.get + compile
现在回到Elixir的根目录并运行:
make docs # 生成HTML页面
make docs DOCS_FORMAT=epub # 生成EPUB文档
这将在 doc
目录下为 elixir
、eex
、ex_unit
、iex
、logger
和 mix
生成文档集。如果你计划贡献文档,请查看我们编写文档的最佳实践。
开发链接
许可证
"Elixir"和Elixir标志是Elixir团队的注册商标。
Elixir源代码以Apache License 2.0发布。