Hacker News 中文摘要

RSS订阅

Show HN: 我用Go实现了一个类似Clojure的语言,启动仅7毫秒 -- Show HN: I made a Clojure-like language in Go, boots in 7ms

文章摘要

这是一个用Go语言实现的类Clojure方言编译器与虚拟机项目,特点是轻量快速(10MB二进制文件、7ms冷启动),支持编译为独立可执行文件或WASM网页应用,内置丰富功能库,并能与Go语言互操作。

文章总结

项目名称:let-go - 用Go实现的类Clojure语言

项目简介: let-go是一个采用Go语言编写的Clojure方言,包含字节码编译器和虚拟机。其主要特点包括: - 单文件二进制(约10MB) - 冷启动仅需7ms - 支持将程序编译为独立可执行文件或WASM网页应用

核心优势: 1. 高效部署 - 生成独立可执行文件(无需运行时环境) - 支持WASM编译(含xterm.js终端模拟)

  1. 卓越性能

    • 启动速度:比Babashka快3倍,比JVM快48倍
    • 内存占用:空闲时仅14MB,比Babashka节省5.4倍
  2. 丰富功能

    • 完整支持Clojure核心特性(宏、惰性序列、持久数据结构等)
    • 内置标准库(HTTP服务、JSON处理、文件操作等)
    • 兼容Babashka生态(支持pod扩展机制)
    • 深度Go互操作(结构体/记录双向转换)

兼容性现状: 通过Clojure跨方言测试套件95.4%的断言(4696/4921),主要差异集中在: - 数值溢出处理 - BigDecimal精度控制 - 部分边缘特性未实现(如STM、Agents等)

应用场景: - 快速启动的CLI工具 - 浏览器端应用开发 - Go应用的脚本扩展层 - 资源受限环境下的Clojure开发

典型用例: - 跨平台游戏《xsofy》(同时支持浏览器和终端) - 轻量级容器运行时lgcr

获取方式: 1. Homebrew安装 2. 直接下载预编译二进制 3. 源码编译(需Go 1.22+)

项目定位: 非Clojure的完全替代品,而是提供近似开发体验的高效解决方案。适合需要Clojure语法但追求Go语言部署效率的场景。

(注:已剔除原文档中的幽默表达、图片链接、详细测试数据表格等非核心内容,保留技术参数和功能要点)

评论总结

评论内容总结:

  1. 技术兴趣与赞赏

    • 对Glojure项目表现出兴趣,认为其结合了Go语言的简洁API和Clojure的优点(评论3)。
      引用
      > "go's core library and channels abstractions hits a simpler/nicer base API"
      > "Thanks for your work will definitely check it out"
  2. 工具与资源分享

    • 推荐Glojure相关工具(如Wasm浏览器REPL和Gloat自动化工具),并提到协作开发进展(评论4)。
      引用
      > "Try out this Wasm browser REPL"
      > "working with...to get Gloat/Glojure/let-go all cooperating"
  3. 批评与不满

    • 对AI生成的项目文档表示厌倦,认为缺乏个性且枯燥(评论6)。
      引用
      > "absolutely sick of reading through obviously AI-slopped READMEs"
      > "it's severely boring & offputting"
  4. 需求与疑问

    • 询问是否能在保留Go的单二进制部署和高效特性的同时实现类似Rails的功能(评论7)。
      引用
      > "I am finding i need 'Rails' but i like single binary deployment of Go"
  5. 其他

    • 简短的技术调侃(评论1)、项目链接分享(评论2)及无实质内容的吐槽(评论5)。

总结特点:

  • 主要围绕Glojure生态展开,包含技术讨论、工具推荐和批评。
  • 评论3和4的开发者互动体现项目活跃性,评论6和7反映用户对文档质量和实用性的关注。
  • 无评分数据,观点以中性为主,批评集中在具体问题(如文档)。