Elixir 是一种动态的函数式语言,旨在构建可扩展且可维护的应用程序。
有关 Elixir、安装和文档的更多信息,请访问 Elixir 的网站。
新版本在公告邮件列表中发布。您可以通过发送电子邮件至 [email protected] 并回复确认电子邮件来订阅。
所有安全版本都将带有[security]
标签。欲了解更多信息,请阅读我们的安全政策。
我们官方沟通渠道中的所有互动均遵循我们的行为准则。
要报告错误,请访问我们的问题跟踪器并按照报告新问题的步骤进行操作。请通过 [email protected] 私下披露安全漏洞。
所有当前与 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
。对于确定性构建,您应该设置环境变量ERL_COMPILER_OPTIONS=deterministic
。
我们邀请大家为 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 团队可以选择指派某人来审查拉取请求。如果分配了某人,他们必须明确批准该代码,然后其他团队成员才能合并该代码。
审核完成后,您的拉取请求将被压缩并合并到存储库中。如果您仔细组织了您的提交并认为它们应该合并而不被挤压,请在评论中提及。
构建文档需要 ExDoc 与 Elixir 一起安装和构建:
# After cloning and compiling Elixir, in its parent directory:
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 # to generate HTML pages
make docs DOCS_FORMAT=epub # to generate EPUB documents
这将在doc
目录下生成elixir
、 eex
、 ex_unit
、 iex
、 logger
和mix
的文档集。如果您打算贡献文档,请查看我们编写文档的最佳实践。
“Elixir”和 Elixir 徽标是 Elixir 团队的注册商标。
Elixir 源代码在 Apache License 2.0 下发布。
检查通知和许可证文件以获取更多信息。