EYG 迎来一次异常实用的更新

Lobsters Hottest 工具

摘要

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 脚本变得容易多了。当你开始编写脚本后,下一步自然就是分享它们。目前的开发重心将转向构建围绕分享和发布包的相关功能。

相似文章

你这周在做什么?

Lobsters Hottest

一位开发者分享了可嵌入类型化语言 Ekto 的最新进展,该语言受 Lua、Koka 和 Erlang 启发,并讨论了为 Casper VM 实现引用计数、内存管理及有界续体时面临的挑战。

Zig 0.16.0 发布说明:"Juicy Main"

Simon Willison's Blog

Zig 0.16.0 发布了一个名为 'Juicy Main' 的新特性,它为 main() 函数提供了依赖注入功能,方便地访问分配器、IO、环境变量和命令行参数。

Erlang/OTP 29.0 发布

Lobsters Hottest

Erlang/OTP 29.0 是一个重要版本,引入了原生记录、多值推导式、改进的编译器警告,以及增强的安全默认设置(如禁用 SSH 守护进程)。此外,该版本还包含了 JIT 改进以及诸如后量子加密支持等实验性功能。