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

Jik 发布:自托管静态类型语言,用区域内存管理替代 GC

来源标题:Show HN: Jik – a self-hosted language using region-based memory management

Jik 是一款自托管的静态类型编程语言,编译为 C,采用基于区域的内存管理,既不用垃圾回收也不用手动堆分配。它支持类型推断、可选类型标注以及向量、字典、variant 等数据类型,编译器会检查跨区域引用的生命周期是否兼容。函数返回复合值时可由调用方指定目标区域。

Hacker News 最新scorched_soy2026/11/1 · 昨天8 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

一门可读的静态类型语言,可编译为 C,并通过区域(region)管理内存。 打开一个开箱即用的 Jik 开发环境。 Jik 是一门静态类型编程语言,采用直接的源码到 C 编译模型。它既不需要垃圾回收,也不需要手动堆分配。 它提供类型推断、可选的类型标注、vector、字典、option、variant、穷尽式 enum/variant 表、错误处理、标准库,以及不断壮大的包生态。由此得到的是简洁的源码和可预测的生成 C 代码。 Jik 的核心设计理念是它的内存模型:复合值被分配到区域中,区域决定其生命周期,而编译器检查会阻止跨生命周期不兼容区域的引用。 返回复合值的函数让调用方选择目标区域: func default_actions(r: Region) -> Vec[String]: return ["Open", "Save", "Quit"][r] end func main(): actions := default_actions(_) println("first action: ", actions[0]) end _ 表示当前函数的本地区域。若需要生命周期更长的结果,请传入显式的 Region,或另一个复合值所在的区域。 use "jik/string" func main(): text := "host = localhost\nport = 8080\nmode = dev\n" settings: Dict[String] for line in string::split(text, "\n", _): parts := string::split(line, "=", _) if len(parts) != 2: continue end key := string::trim(parts[0], _) value := string::trim(parts[1], _) settings[key] = value end host := settings["host"] port := settings["port"] if host is Some and port is Some: println("connecting to ", host?, ":", port?) end end 错误处理 throws func safe_div(x, y): if y == 0.0: fail("division by zero") end return x / y end func show_div(x, y): try value := safe_div(x, y): println(x, " / ", y, " = ", value) except: println("cannot divide ", x, " by ", y, ": ", error_msg()) end end func main(): show_div(12.0, 3.0) show_div(7.0, 0.0) end 仅测试过 gcc 和 clang 作为宿主编译器。MSVC 未测试。 参见 examples 目录,其中有 variant、表、更多错误处理、词频统计、Dijkstra、牛顿法、Game of Life、Forth,以及 C 互操作。 Jik 包提供可复用的库和 C 绑定,用于编写更大的程序。 试玩 Missile Defence —— 一个用 Raylib 封装构建的 Jik 游戏。 源码 注意:浏览器演示是一个独立的 WebAssembly 构建 你需要 Make 和 Clang 或 GCC。在仓库根目录下执行: make # 构建 jik make test # 构建并运行测试 make help # 显示构建命令 使用 make CC=gcc 以 GCC 构建;默认使用 Clang。构建使用 随附的 C seed,因此你无需下载 Jik 编译器。有关引导阶段和发布构建,请参阅 开发说明。 从最新 release 下载 jik-language-tools-*.vsix。在 VS Code 中打开扩展视图,选择 ... 菜单,选择 Install from VSIX...,然后选择下载的文件。 该扩展提供语法高亮、感知 import 的标准库补全,以及悬停文档和签名。

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →