Jaithon 3:语法完美的快速编程语言

Hacker News Top 工具

摘要

Jaithon 3是一种动态执行和垃圾回收的编程语言,融合了Java、Rust和Python的精华,并在开发中使用了AI辅助编码。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/08/16 00:39

abhiramasonny/jaithon 源代码:https://github.com/abhiramasonny/jaithon

Jaithon

Java 的优点与 Python 融合
语言指南

Jaithon 是什么

Jaithon 是一种动态执行、具有垃圾回收机制的语言,运行于字节码虚拟机之上。它的架构深受 Java 结构启发,而其他部分则融合了 Rust 和 Python 的设计理念。除核心原生实现部分外,几乎所有功能都由 Jaithon 自身编写实现,这使得语言高度自举,且易于扩展新功能。

AI 使用情况

.jai 和 .c 文件中的大部分文档目前由 AI 生成以加快开发进度,但会随语言迭代逐步重写。README 和大部分 LANGUAGE.md 为人工撰写、经过仔细审核,当前内容完全准确。代码中的文档字符串可能仍存在不准确之处,因其由大语言模型生成。此外,本仓库中约 80% 的原始代码通过智能编程工具(Claude Code)生成。我的工作流程是:首先完全手动设计功能或修复缺陷,然后借助大语言模型协助完成代码、集成到代码库、在推送前发现额外错误、优化性能,或纠正我的错误假设。最终代码是我完全理解并认可的成果,完全属于我。架构设计也百分百由我个人原创,未借助 AI。我认为智能辅助编程是软件工程的未来。它让我能比独自开发更快构建 Jaithon 3,同时在重要决策中保持人类的主导地位。若无智能编程工具,Jaithon 3 可能不会存在,语言功能也会停留在初级阶段。整个代码库由我亲自审核,我不会称自己为“氛围程序员”,也不会视 Jaithon 为“AI 流水线产物”;这是与 LLM 协作的工程实践,LLM 作为效率倍增器提升了我的生产力。

快速开始

git clone https://github.com/abhiramasonny/jaithon  
cd jaithon  
make                  # 构建 ./jaithon  
make test             # (可选)运行基准测试和测试套件  
./scripts/install.sh  # (可选)安装到 /usr/local  

运行 Jaithon 需要 C11 编译器和 make 工具,若系统存在 readline 库,REPL 将支持其功能。在 macOS 上,Metal 和 Cocoa 框架可启用 GUI 和 GPU 模块,其他功能无需这些框架即可编译运行。

jaithon run program.jai    # 运行文件  
jaithon                    # 启动 REPL  
jaithon check src/         # 仅类型检查不运行  
jaithon fmt .              # 标准格式化(无参数)  
jaithon test               # 发现并运行测试  
jaithon doc --out docs/api # 生成 API 文档  
jaithon disasm program.jai # 字节码列表  

REPL 可跨行保持绑定状态,在 ... 提示符下继续未完成的输入,并支持元命令。输入 :help 可查看所有命令。

.jai 代码示例

# let 为不可变绑定,var 为可变,const 为编译时常量  
let name = "Jaithon"  
var count = 0  
const MAX = 1 << 16  

# 类型可选,但若声明则会检查  
let ratio: float = 0.5  
let names: list[str] = []  
let lookup: dict[str, int] = {}  
let maybe: int? = null     # T? 表示 T | null  

if names.len() > 0 {  
    print(names[0])  
}  
print(maybe ?? -1)         # 空值合并操作  

# 循环与区间  
for i in 0..10 {  
    count += i  
}  

'outer: for row in grid {  
    for cell in row {  
        if cell == target {  
            break 'outer  
        }  
    }  
}  

# 模式匹配  
let kind = match code {  
    200 => "ok",  
    301 | 302 => "redirect",  
    400..=499 => "client error",  
    n if n >= 500 => "server error",  
    _ => "unknown",  
}  

enum Shape {  
    Circle(radius: float),  
    Rect(w: float, h: float),  
}  

fn area(s: Shape) -> float {  
    return match s {  
        Shape.Circle(r) => math.PI * r ** 2,  
        Shape.Rect(w, h) => w * h,  
    }  
}  

# trait 是带默认方法的接口,同时作为类型  
trait Printable {  
    fn to_str(self) -> str  
    fn describe(self) -> str {  
        return f"<{self.to_str()}>"  
    }  
}  

# 错误作为类  
fn load(path: str) -> str {  
    let file = io.open(path, "r")  
    defer { file.close() }  
    return file.read()  
}  

# 推导式与惰性迭代器  
let squares = [x ** 2 for x in 0..10 if x % 2 == 0]  
let first_ten = iter(source).map(parse).filter(is_valid).take(10).collect()  

更多示例详见 LANGUAGE.md,也可查看 examples 目录。

包管理

可独立于 Jaithon 标准库分发的库位于 packages/。每个包包含独立的源码、测试、版本和依赖清单。Jaithon 从工作区目录和已安装的 share/jaithon/packages 目录中查找包。

jaiplot 是类 Matplotlib 的绘图库,支持文件和窗口后端。
jaitensor 提供基于 Metal 的 float32 张量和 Keras 风格 API,包含常用张量运算、格式无关的数据集、密集模型、ReLU/sigmoid/tanh/softmax 激活函数、动量 SGD、Adam 优化器、验证、预测及 JSON 权重文件。示例涵盖 MNIST 和 非线性螺旋分类器。

错误信息

所有错误均采用以下格式,便于调试:

error[E0301]: cannot assign to immutable binding `x`  
  --> examples/demo.jai:7:5  
   |  
 5 | let x = 1  
   | - `x` declared immutable here  
...  
 7 | x = 2  
   | ^^^^^ assignment to immutable binding  
   |  
help: change the declaration to `var x = 1`  

错误代码含义:

代码领域
E00xx词法分析
E01xx语法
E02xx名称解析
E03xx绑定规则
E04xx类型系统
E05xx模式匹配
E06xx函数
E07xx类
E08xx模块

架构

源码 → 词法分析 → 语法分析 → 名称解析 → 类型检查 → 代码生成 → 虚拟机  
  │        │         │         │         │         │         │  
  tokens   AST       符号+类型+字节码  值槽位  类型转换+缓存+GC  

贡献指南

make debug        # -O0 -g,启用断言  
make check        # 类型检查整个代码树  
make test         # 运行完整测试套件  
make bootstrap    # 前端差异验证  
jaithon fmt --check .  # 格式检查  

许可证

MIT 许可证。详见 LICENSE。
由 Abhirama Sonny 创建 (https://abhiramasonny.com/)。

相似文章

Jam 编程语言

Lobsters Hottest

Raphael Amorim 宣布了 Jam,一种旨在结合 Rust 的安全性和 Zig 的简洁性的新编程语言,解决了在 AI 生成代码时代现有系统语言的复杂性和验证开销。

编程语言中的一些好点子

Hacker News Top

本文讨论了三种编程语言特性:用于在Crystal和TypeScript等静态语言中实现动态感觉的流类型、用于确保Rust内存安全的借用检查,以及用于D语言中不变性检查的契约编程。

JIT编译代码在5μs内完成

Hacker News Top

文章探讨了AI辅助如何简化了创建具有亚微秒级编译时间的快速JIT编译器的过程,并通过一个基于Rust的正则表达式引擎示例进行了演示。

@QuixiAI: https://x.com/QuixiAI/status/2106986029383315840

X AI KOLs Following

With 是一门以人体工学/极简仪式感为先的系统编程语言,主打 Rust 级安全(单所有权、生成式引用)与 C 级可达性,通过强推断减少样板代码,并内建对 C 库的直接建模导入,可编译为原生单二进制、无需系统 LLVM。