早期原型 · 开源

一个运行时。 两个生态。

运行 TypeScript 或 Python,跨越两个生态导入模块,构建并交付一个 可执行文件。

// 目标 API
import { add } from "./math.py"
  with { type: "python" };

console.log(add(20, 22)); // 42
def add(left, right):
    return left + right
$ poly run main.ts 42
01个可执行文件
01个 OS 进程
02个语言生态
00个 sidecar 进程

一个项目,两个生态

运行任一语言。
导入两个生态。
交付一个文件。

Poly 正在 Bun 与 RustPython 之上构建统一的模块图、依赖工作流和 发布路径,而不是把任何一种语言变成独立服务。

01 / 运行时

两种语言都是入口

通过同一个可执行文件和同一份项目配置,运行 TypeScript 应用 或 Python 工具。

poly run app.ts · poly run tool.py
02 / 模块

Python 文件是模块,不是服务

目标模块系统让跨语言 import 显式、可分析,并成为项目的原生 组成部分。

import { add } from "./math.py" with { type: "python" }
03 / 依赖

保留 Bun,也保留 uv

npm 包留在 Bun 生态中,Python 包继续由 uv 锁定,再由 Poly 检查 RustPython 实际能够运行的内容。

poly sync
04 / 分发

一个应用产物

路线图将两种语言的模块图、依赖和项目资源组合成一个平台原生 可执行文件。

poly build app.ts

一个可执行文件,一个进程

两个运行时,一个 Rust host。

M0 原型把 RustPython 直接嵌入固定版本的 Bun 源码树。这个精简的 同步 bridge 先验证架构,再逐步构建更高层的模块系统。

  • Bun 运行 JavaScript 与 TypeScript
  • RustPython 运行 Python 与冻结的标准库
  • 没有子进程、sidecar、socket 或 stdio RPC
  • 从 JSON 调用演进到 import 与对象代理的清晰路径
Bun / JavaScriptCore JS / TS
Rust host Poly
RustPython Python
一个进程边界

项目状态

基础已经成形。
产品仍在前方。

Poly 仍是工程原型。目前已经具备源码集成和核心 bridge;模块系统、 依赖工作流和独立应用构建器仍在开发中。

Bun + RustPython 源码集成 已实现
TypeScript 与 Python 入口分派 验证中
RustPython JSON 调用桥 核心已测试
跨语言 import 与 callable proxy 计划中
Bun + uv 依赖工作流 计划中
独立应用构建 计划中

体验当前原型

从源码构建 Poly。

当前构建遵循 Bun 的原生工具链要求,在全新环境中可能需要较长 时间。请从仓库文档开始了解完整前置条件和已验证边界。

$ git clone https://github.com/liooil/poly
$ cd poly
$ pwsh ./scripts/bootstrap-bun.ps1 -Configuration Release