EYG 迎来一次异常实用的更新
摘要
EYG 编程语言迎来了实用性更新,包括已文档化的文本语法、CLI 中新增的文件系统操作,以及改进的解析器错误提示,便于 Shell 脚本编写。
<p><a href="https://lobste.rs/s/cnydxv/unusually_practical_update_for_eyg">评论</a></p>
查看缓存全文
缓存时间: 2026/05/11 21:10
# EYG 新闻:一次极其实用的 EYG 更新。
来源:https://eyg.run/news/editions/8
EYG 的文本语法现已得到完整的文档记录 (https://github.com/CrowdHailer/eyg-lang/blob/main/guides/simple_syntax.md)。CLI 中新增的文件系统 effect 使得编写实用的 shell 脚本成为可能。从源码安装 CLI 也有了自己的专属指南 (https://github.com/CrowdHailer/eyg-lang/blob/main/guides/install_from_source.md)
所有这些改进让 EYG 的使用变得更加简单,也让我们离打造“更好的 bash”这一目标更近了一步。
## EYG 的文本语法
编写 EYG 的主要方式一直是结构化编辑器,正如官网 (https://eyg.run/) 所示。这仍然是创建 EYG 程序的受支持方式。话虽如此,提供文本语法也有充分的理由。EYG 的文本解析器其实已经作为项目的一部分存在了相当长一段时间,只是之前没有文档说明。
有文本语法却不提供文档简直是浪费机会。因此,简易语法指南 (https://github.com/CrowdHailer/eyg-lang/blob/main/guides/simple_syntax.md) 现已编写完成,涵盖了解析器支持的每一项功能。
我要强调的是,从现在开始这两种方式都将得到支持。此外,无论使用哪种方式,语言的语义都完全一致。
扩展名为 `.eyg` 的文件是文本格式,扩展名为 `.eyg.json` 的文件是 IR(中间表示)。两者都可以传递给 `eyg run` 并产生相同的结果。
## 解析器错误
既然文本语法已成为 EYG 工具链中完全受支持的一部分,现在是改进解析器的好时机。解析器现在会提供有意义的错误提示。
```
error: expected a string path after `import` at position 7
hint: import paths must be string literals, e.g. `import "./module.eyg.json"`
1 | import 42
^
```
## 文件系统 effect
CLI 现已实现 `ReadFile`、`WriteFile`、`AppendFile` 和 `ReadDirectory`。结合现有的 `Print` 和 `Fetch` effect,这已经足以编写能在你的电脑上完成实际工作的小型脚本了。
CLI 实现的 effect 完整列表已记录在 effect 参考文档 (https://github.com/CrowdHailer/eyg-lang/blob/main/guides/cli_effects_reference.md) 中。
修改文本指南 (https://github.com/CrowdHailer/eyg-lang/blob/main/guides/modifying_text_files.md) 展示了如何使用脚本来替代 `ls`、`find` 和 `grep` 等 shell 工具。要完全媲美这些工具可能还需要编写更多指南,但基础已经打好。当然,EYG 是一门用起来很顺手的语言,因此创建你自己的工具模块也是一个不错的方向。
## 二进制内置函数
在使用最新的 effect 时,我注意到一些缺失的内置函数导致任务难以完成。现已新增内置函数 `binary_size` 和 `binary_concat`。
## CLI 细节打磨
CLI 进行了一轮细节打磨。`eyg help` 和 `eyg --version` 命令现在都能按预期正常工作了。
CLI 的安装方法详见从源码安装指南 (https://github.com/CrowdHailer/eyg-lang/blob/main/guides/install_from_source.md)。
## 底层实现
REPL、解释器和网站现在共享同一套模块与包缓存实现。这是对运行器工作方式的一次重大改动,我很高兴能顺利完成该改动。
## 下一步计划
随着拉取包和模块的后端工作已完成,编写实用的 EYG 脚本变得容易多了。当你开始编写脚本后,下一步自然就是分享它们。目前的开发重心将转向构建围绕分享和发布包的相关功能。
相似文章
你这周在做什么?
一位开发者分享了可嵌入类型化语言 Ekto 的最新进展,该语言受 Lua、Koka 和 Erlang 启发,并讨论了为 Casper VM 实现引用计数、内存管理及有界续体时面临的挑战。
Zig 0.16.0 发布说明:"Juicy Main"
Zig 0.16.0 发布了一个名为 'Juicy Main' 的新特性,它为 main() 函数提供了依赖注入功能,方便地访问分配器、IO、环境变量和命令行参数。
@FinanceYF5: Grok Computer 近期发布,支持完整的文件系统和 CLI 访问。 这是大家一直在等待的升级。 普通的 Grok 聊天只能给你建议,而 Grok Computer 会真正替你完成工作。
Grok Computer 近期发布,支持完整的文件系统和 CLI 访问。 这是大家一直在等待的升级。 普通的 Grok 聊天只能给你建议,而 Grok Computer 会真正替你完成工作。 https://t.co/Ljf3G5eZfJ
Erlang/OTP 29.0 发布
Erlang/OTP 29.0 是一个重要版本,引入了原生记录、多值推导式、改进的编译器警告,以及增强的安全默认设置(如禁用 SSH 守护进程)。此外,该版本还包含了 JIT 改进以及诸如后量子加密支持等实验性功能。
@QuixiAI: With 编程语言取得了重大里程碑。PCRE2 已集成。正则表达式已整合。隐式 main 函数,单行命令已实现…
With 编程语言通过集成 PCRE2 支持正则表达式并实现隐式 main 函数,达到了一个重要里程碑。该更新支持单行命令,并包含具有内置 LSP 支持的自托管编译器。