自制编程语言 Hulo —— 模块系统跳票,但Batch和Powershell对接、解释器初步

又到了每周的 Hulo 更新时刻!

这次 v0.3.0 的更新,让 Hulo 从一个"简单的转译器"进化成了"具有编译期求值能力的现代编程语言"。

听起来很酷对吧?让我来告诉你这次到底更新了什么。

🚀 本周重磅更新

1. 全平台转译器正式完成!

是的,你没看错!Hulo 现在支持四大平台的脚本转译了:

  • VBScript (.vbs) - Windows 经典脚本
  • Bash (.sh) - Linux/macOS Shell 脚本
  • Batch (.bat/.cmd) - Windows 批处理脚本
  • PowerShell (.ps1) - Windows 现代脚本

这意味着你可以用同一套现代语法,生成所有主流平台的脚本!

目前支持基础语句转换,更多高级特性正在开发中

2. 编译期求值系统 - comptime 来了!

这是本次更新的最大亮点!Hulo 现在支持编译期求值,可以在编译时执行代码并基于结果生成不同的 AST。

来看几个实际例子:

编译期计算

hulo 复制代码
let a = comptime {
    let sum = 0
    loop $i := 0; $i < 10; $i++ {
        echo $i;
        $sum += $i;
    }
    return $sum
}

// 编译期计算的结果:a = 45
echo $a

条件编译

hulo 复制代码
comptime when $TARGET == "powershell" {
    Write-Host "Hello, PowerShell"
} else when $TARGET == "batch" {
    echo "Hello, Batch"
} else when $TARGET == "bash" {
    echo "Hello, Bash"
} else when $TARGET == "vbs" {
    MsgBox "Hello, VBScript"
}

生成的 PowerShell 代码:

powershell 复制代码
Write-Host "Hello, PowerShell"

生成的 Batch 代码:

batch 复制代码
echo "Hello, Batch"

生成的 Bash 代码:

bash 复制代码
echo "Hello, Bash"

生成的 VBScript 代码:

vb 复制代码
MsgBox "Hello, VBScript"

🔧 技术架构升级

编译期求值引擎

新的 comptime 系统提供了:

  • 运行时求值 - 在编译期执行代码
  • AST 转换 - 基于计算结果修改语法树
  • 动态代码生成 - 根据条件生成不同代码

🚧 下一步计划

  1. 模块系统 - 支持第三方库导入(跳票到 v0.4.0)
  2. 命令体操 - 更智能的跨平台命令适配
  3. 包发布系统 - 让社区能分享和复用代码
  4. 语言服务器 - 更好的 IDE 支持

💭 写在最后

这次更新让 Hulo 从一个简单的转译器,变成了一个具有编译期求值能力 的现代编程语言。comptime 系统的加入,为 Hulo 带来了无限的可能性。

虽然模块系统跳票了,但技术栈更加完整和强大。相信在 v0.4.0 中,模块系统会以更优雅的方式呈现给大家。

项目地址:github.com/hulo-lang/h...

如果你觉得这个项目有意思,欢迎在 GitHub 提 issue 或参与讨论!给个 Star 支持一下,让更多人看到这个项目。

你觉得这种"编译期求值 + 多平台转译"的方式怎么样?有什么建议或想法吗?

相关推荐
fcu3dx8 小时前
Go + PostgreSQL 餐饮SaaS后端架构:从单体到多租户的实战重构
go
程序员爱钓鱼10 小时前
Go 开发环境安装(Windows、macOS、Linux)
后端·面试·go
Quz1 天前
QML 信号与槽:直接绑定与跨文件通信
qt·编程语言·设计
ArixBit1 天前
用 Go 手撸 Agent 框架 #11:工具从哪里来——内置工具、MCP 与 Skills
go·agent
程序员爱钓鱼1 天前
为什么学习 Go?Go 能做什么?
后端·面试·go
用户095367515832 天前
在系统的学习 redis 前的疑惑
redis·go
名字还没想好☜2 天前
Go 用 errgroup 管理并发子任务:错误收敛、取消传播与限流
开发语言·后端·golang·go·并发
labixiong2 天前
TypeScript 7.0 编译器用 Go 重写,速度暴增10倍——背后到底做了什么?
前端·javascript·go
名字还没想好☜3 天前
Go 的 time.Ticker 陷阱:定时任务里被忽略的内存泄漏与正确关闭
java·数据库·golang·go·定时器
wenb1n3 天前
MySQL诊断系列(3/6):索引分析——5个SQL揪出“僵尸索引”
数据库·人工智能·编程语言