Hulo 编程语言重磅更新:VBScript + Bash 同时支持!REPL、包管理器也来了!
嘿,脚本开发者们!
还记得我上周介绍的那个可以编译成 VBScript 的现代编程语言 Hulo吗?
这周它又迎来了一波超猛更新,尤其是这个:
Bash 转译器正式上线!
是的,你没看错!
Hulo 现在不仅能生成 Windows 下的 VBScript 脚本,还支持转译成 Bash 脚本,一套代码,同时跑在 Linux/macOS 和 Windows 上!
看看这段 Hulo 代码:
// main.hl
class User {
pub name: str
pub age: num
pub fn to_str() -> str {
return "User(name: $name, age: $age)"
}
pub fn greet(other: str) {
MsgBox "Hello, $other! I'm $name."
}
}
let u = User("John", 20)
MsgBox $u.to_str();
$u.greet("Jane");
然后你只需要执行:
hulo main.hl
即可同时生成:
Bash 版本:
#!/bin/bash
function create_user() {
local name=$1
local age=$2
declare -A user
user["name"]=$name
user["age"]=$age
echo "$(declare -p user)"
}
function user_to_str() {
eval "declare -A user=${1}"
echo "User(name: $name, age: $age)"
}
function user_greet() {
eval "declare -A user=${1}"
local other=$2
MsgBox "Hello, $other! I'm $name."
}
u=$(create_user "John" 20)
MsgBox $(user_to_str $u)
user_greet $u "Jane"
VBScript 版本:
Class User
Public name
Public age
Public Function to_str()
to_str = "User(name: " & name & ", age: " & age & ")"
End Function
Public Function greet(other)
MsgBox("Hello, " & other & "! I'm " & name & ".")
End Function
End Class
Set u = New User
u.name = "John"
u.age = 20
MsgBox(u.to_str())
u.greet("Jane")
BUT!问题也来了——
Bash 里没有 MsgBox!
所以转译后的 Bash 脚本执行时会出错!你需要手动将 MsgBox 改成 echo,是不是有点破坏跨平台的梦想?
别急!这个问题 Hulo 早就注意到了,团队正在开发一种称为:
命令体操(Command Gymnastics)
use MsgBox = If<$platform == "vbs", MsgBox, If<$platform == "powershell", Write-Host, echo>>
类似 TypeScript 的类型体操,它将支持条件命令、平台重定向等强大功能!
未来你写的 MsgBox 会自动变成 echo / Write-Host / MsgBox!
敬请期待!
HLPM 包管理工具上线!
Hulo 的包管理工具 hlpm 也来了!
虽然模块 import 机制还在开发中,但你已经可以:
hlpm init my-project
hlpm run main.hl
自动创建 huloc.yaml 和 hulo.pkg.yaml
项目结构更规范了,有点像 JavaScript 中的 package.json + tsconfig.json。
交互式开发环境 Hulo-REPL 上线!
想快速试代码?命令补全?现在支持:
hulo-repl
- 支持命令补全
- 支持主题切换
- 即将支持实时语法分析、实时转译!
技术更新一览
- 重构 VBScript 转译器,结构更清晰
- 修复字符串转译 Bug
- 配置系统升级,支持读取 huloc.yaml
注意:这是一次破坏性更新,v0.1.0 写的部分代码可能无法在 v0.2.0 跑通!
下一步计划抢先看
- 支持 Windows 下的 Batch 脚本转译
- 上线包发布系统,复用更方便
- 第三方库导入系统
- 命令体操系统上线!更智能跨平台!
项目地址
GitHub 项目传送门,搜索 hulo-lang/hulo
如果你觉得 Hulo 有趣,欢迎 Star + Issue 支持一下!
或者留言说说你觉得这种“一次编写,多平台运行”的方式有没有前途?
欢迎转发、关注、交流~
让我们一起把脚本开发做得更优雅、更现代!