[分享创造] 我用 C 写了一门 Flow-first 系统脚本语言 HHY,现在能安全递归抓取网站

5 小时 49 分钟前
 hayesh

大家好,我最近把自己做的一门系统脚本语言 HHY 整理到了可以直接安装和运行的状态,想分享一下它为什么存在,以及目前真正做到了什么。

项目地址: https://github.com/hh696-wq/hhy-vm

5 分钟 Quick Start: https://hhylang.dev/zh/learn/quick-start

为什么又做一门脚本语言

我写系统自动化时,经常重复处理同一种流程:发现文件或 URL 、转换结构化记录、限制并发,最后执行文件、进程或网络操作。

Shell 很适合组合进程,但进入 JSON 、HTTP 、重试和并发后,数据与错误边界容易变得分散; Python 完全可以完成这些工作,不过我想试验一件事:把 Pipeline 、资源限制和副作用计划做成语言与 Runtime 的统一契约,而不是依靠不同库约定。

HHY 的核心表达一直是:

source |> transform |> filter |> action

例如:

path("./logs")
    |> files("**/*.log")
    |> flat_map { file -> read_lines(file.path) }
    |> where { line -> contains(line, "ERROR") }
    |> take(20)
    |> print

它不是自然语言或 AI 包装层,源码有确定的 grammar 、类型规则、执行语义和退出码。

目前实现的东西

扩展不是直接加载不稳定的 Native ABI 。Runtime 会验证 manifest 和 SHA-256 ,在最小环境中启动独立进程,再通过 stdin/stdout 完成 handshake 、call 和结构化错误交换。这样有序列化成本,但崩溃、权限和协议边界更明确。

最有挑战的实战:安全静态 Spider

HTML 扩展现在不只是“并发请求一组 URL”。它已经形成一个可以安全递归运行的最小闭环:

基于这些能力,我写了 SiteGraph Auditor:递归盘点文档站、构建规范化链接图,并把结构和内容质量变成稳定退出码。项目自测会启动确定性 fixture ,同时覆盖健康站点、404 、重复链接、越界路径和 SSRF 负向用例。

SiteGraph 项目: https://github.com/hh696-wq/hhy-vm/tree/main/practical-projects/sitegraph-auditor

一键体验

curl -fsSL https://hhylang.dev/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
hhy --version

安装器会识别平台、读取最新稳定 Release 、下载对应的 .sha256,校验通过后才切换版本,默认不需要 sudo 。

已知边界

目前还是早期项目:Runtime 是 AST 解释器和 conservative GC ,没有 JIT ; HTTP body 是有界缓冲而不是 streaming body ;不支持 Windows 和 Intel Mac ;第三方扩展暂时只能交换有界 JSON-like values ,还没有 Stream credit 和 opaque handle 。我也没有宣称它比 Python 更快,或者应该替代通用语言。

我现在最想听到的不是“支持”,而是具体批评:

  1. Flow 与单次消费 Stream 的语义是否容易理解?
  2. 独立进程扩展这个边界是否值得序列化成本?
  3. 安全 Spider 还缺少哪个会阻止你实际使用的能力?

项目采用 Apache-2.0 ,源码、规范、Release 、测试和已知限制都在仓库中。

214 次点击
所在节点    分享创造
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1237877

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX