jaseci-labs/jac
The Jac Programming Language -- The language for any human or AI looking to use one language for everything
解决的问题
Jac 解决了现代全栈开发中的碎片化问题,开发者需要管理多种语言(TypeScript、Python、SQL 等)、包管理器以及配置文件(YAML、Dockerfile)来构建一个单一应用。这种碎片化产生了“胶水代码”——序列化器、ORM 模型和 API 客户端——这些代码未被任何单一编译器检查,导致 bug 和高维护成本。
工作原理
Jac 是一种“协同式”(Synechic)和“拓扑动力式”(Topokinetic)编程语言,使用单一的 Python 风格语法编译为 Python 字节码、JavaScript 和原生机器码。
- 协同式(连续性): 在前端、后端和原生层之间提供连续的介质。一个编译器检查整个栈,因此数据模型中的字段重命名会在所有层级触发编译错误,而不是生产环境故障。
- 拓扑动力式(运动): 采用对象空间编程,数据是节点和边的持久拓扑结构。"行走者"(Walkers)在该图中携带计算,持久化直接内置于语言中,无需外部数据库或 ORM。
- 多编译器(Polypiler):
jac二进制文件充当完整的工具链,捆绑了私有的 CPython、Bun(JS 运行时)、LLVM 和 Kubernetes 部署器,无需单独安装解释器或编译器。
适用人群
Jac 专为人类和 AI 代理共同构建全栈应用而设计。特别适合希望减少样板胶水代码的开发者,以及能从单一、类型检查的代码库中受益的 AI 编码代理(该代码库可容纳在上下文窗口内)。
特色亮点
- 统一工具链: 单个二进制文件替代 Python 解释器、JS 运行时、C 编译器和包管理器。
- AI 集成: LLM 调用被视为类型化函数调用,编译器从函数签名生成提示,并强制返回类型。
- 渐进借用检查: 通过
own和借用注解,允许开发者从完全管理的代码逐步过渡到零引用计数的原生制品。 - 零胶水全栈: 自动生成 API 端点、路由表和迁移文件。
- 代理就绪: 内置 MCP 服务器和可导出的「代理技能」,可直接集成至 Claude Code、Cursor 等 AI 编码工具。
相关
- 项目
- 项目
- 项目
- 项目
- 项目