
团队 Scarfaze 发布 Statically typed 编译语言 ScarScript
来源标题:Show HN: ScarScript – A statically typed language built in Go
Team Scarfaze 发布了 ScarScript,一款用 Go 构建的静态类型编译型脚本语言,可转译为 Go。其 v1.0.2 版本已为 VS Code 提供初步 LSP 支持,v1.0.3 正在进行基准测试,并已提供基于 Wasm 的浏览器交互测试环境。该语言结合了 Express.js 风格的语法与 Go 的性能和安全性。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
巴基斯坦首个高性能编译型语言,语法类似 Express ScarScript v1.0.3(测试与基准评估中) ScarScript 由 Team Scarfaze 正在积极开发中。在发布 v1.0.2(该版本为 VS Code 引入了初步的 LSP 服务器支持)之后,我们的工程团队目前正在为即将发布的 v1.0.3 进行严格的基准测试与验证。 一旦测试与性能稳定工作最终完成,v1.0.3 将正式部署。我们衷心感谢大家提交的 bug 报告、反馈与贡献,让我们得以继续打造巴基斯坦首个高性能编译型语言! 想无需在本地安装任何东西就能立即试用 ScarScript 吗?现在你可以直接在浏览器中测试 beta 版本,由 WebAssembly(Wasm)驱动,并内置 Emmet 系统支持: 👉 启动 ScarScript 交互式演练场 ScarScript 是一门静态类型、编译型的脚本语言,可转译为 Go。它结合了 Express.js 风格语法的可读性与 Go 的性能和安全性。 特性 说明 类 Express 语法 func、val/mut/const、for ... in、带花括号的 if/else 静态类型检查 完整的编译期类型推断,规则严格 多返回值 Go 风格 func() (int, bool),配合 val a, b = f() 匿名函数 支持捕获的闭包:val h = func(x) { ... } dec 类型 64 位浮点数,支持整数字面量拓宽(val x: dec = 4) 内置模块 math、file、sys、time——零依赖 转译为 Go 自包含的 .gen.go → go build / go run 零运行时 无解释器、无 VM——纯 Go 二进制 ⚡ 性能与基准 ScarScript 直接转译为 Go 并编译为原生二进制——以更简洁的语法带来 Go 级别的性能。 基准:10,000,000 次循环迭代(for i in 1..10_000_000 { }) 关键结论:相比手写 Go,ScarScript 仅增加不到 7% 的开销,同时比流行的解释型/JIT 语言快 6–23 倍。无需预热,无需 JIT——只有即时的原生速度。
复现基准测试
cat > bench.scar << 'EOF' mut sum = 0 for i in 1..10_000_000 { sum = sum + i print("Sum: {sum}") EOF scar build bench.scar -o bench time ./bench 🚀 快速开始 方式一——下载二进制(无需 Go): go install github.com/ScarfazeCompany/scar-script/cmd/scar@latest 编写你的第一个脚本(hello.scar): func greet(name: str) { print("Hello, {name}!") greet("Zawiyar") 运行它: scar run hello.scar
Hello, Zawiyar!
构建二进制
scar build hello.scar -o hello ./hello 或者自行构建所有平台:
Windows
.\scripts\build.ps1
Linux / macOS
./scripts/build.sh 📖 语法概览 // 变量(默认不可变) val name: str = "Zawiyar" mut count: int = 0 const API_URL: str = "https://api.scar.com" // 类型推断 val inferred = 42 // int val price = 99.99 // dec val flag = true // bool // 函数 func add(a: int, b: int) int { return a + b // 多返回值(Go 风格) func divide(a: int, b: int) (int, bool) { if b == 0 { return 0, false return a / b, true val result, ok = divide(10, 2) // 匿名函数 / 闭包 val multiply = func(x: int, y: int) int { return x * y // 控制流 if age >= 18 and active { print("Access granted") } else { print("Denied") // 通用 for 循环 for i in 1..10 { ... } for item in items { ... } for k, v in map { ... } for condition { ... } // 字符串插值 print("User {name} is {age} years old") // 智能默认值(JS 风格的 'or') val port = sys.env("PORT") or "8080" val status = data.status or "unknown" // 模块 val root = math.sqrt(16) // 4.0 val rnd = math.rand(1, 100) file.write("log.txt", "started") val cfg = file.read("config.json") time.sleep(1000) val now = time.now() 📦 内置模块 模块 函数 math sqrt(dec) dec、pow(dec, dec) dec、abs(int) int、round(dec) int、rand(int, int) int file write(str, str)、append(str, str)、read(str) str、exists(str) bool、delete(str) sys env(str) str time now() str、sleep(int) 🛠 CLI 参考 scar run <file.scar> # 编译并运行(使用临时目录) scar build <file.scar> [-o out] # 构建静态二进制 scar version # 显示版本 scar help # 显示帮助 🏗 工作原理 scar run hello.scar │ ▼ ┌───────────────────┐ │ 词法分析器 → 语法分析器 │(基于 panic 的错误处理,精确定位) └─────────┬─────────┘ │ ▼ ┌───────────────────┐ │ 类型检查器 │(第一阶段函数注册表,完整静态分析) │ • 分配类型 │ │ • 检查返回值 │ │ • 跟踪未使用项 │ └─────────┬─────────┘ │ ▼ ┌───────────────────┐ │ 代码生成 │(生成自包含的 .gen.go) │ • Go 函数 │ │ • 前置辅助函数 │ │ • gofmt 校验 │ └─────────┬─────────┘ │ ▼ go run / go build → 原生二进制 📚 文档 🌐 文档站点——带侧边栏导航的完整文档 入门指南 语言语法 类型系统 函数 标准库 CLI 参考 🤝 贡献 请参阅 CONTRIBUTING.md 了解相关准则。 ScarScript 采用双许可证。你可以依据以下任一许可证的条款使用它: 请选择最适合你使用场景的许可证。 Zawiyar Awan——Scarfaze 创始人 巴基斯坦首个高性能编译型语言,语法类似 Express
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。