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 脚本变得容易多了。当你开始编写脚本后,下一步自然就是分享它们。目前的开发重心将转向构建围绕分享和发布包的相关功能。
相似文章
EYG:大量CLI改进、新指南和新效果
EYG CLI 新增了命令(eval、check、script、shell)、标志、通过 glam 库实现的漂亮打印、改进的错误输出、更简便的安装,以及新的效果,如 DeleteFile、Env、Hash、Now、Random、Sleep。同时发布了新的指南。
一种为人类设计的编程语言
Eat Your Greens(EYG)是一种静态类型函数式编程语言,旨在通过消除系统级关注点来简化终端用户编程,让创客能够专注于问题逻辑。
FEXPRs vs. vtable:LispE 解释器的工作原理
LispE 是 NAVER 开发的一个紧凑的 Lisp 方言,结合了函数式和数组语言特性,提供了针对 PyTorch、GGUF、MLX 和 tiktoken 的 AI 库,并附带一个基于浏览器的测试环境。
你这周在做什么?
一位开发者分享了可嵌入类型化语言 Ekto 的最新进展,该语言受 Lua、Koka 和 Erlang 启发,并讨论了为 Casper VM 实现引用计数、内存管理及有界续体时面临的挑战。
我可以推荐 Emacs 的创新 UI——eww 吗?
文章推荐使用 Emacs 的 eww 网页浏览器,强调其缺少 JavaScript 的特性改善了许多网站的体验,并指出 Emacs 提供了独特的 UI 创新,如逐张图片调整大小和键盘导航。