返回资讯中心
外部精选
软件工程
#开发者实时流

团队 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 的性能和安全性。

Hacker News 最新aimabaig2026/11/12 · 今天13 分钟阅读

以下正文由 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 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →