2026.07.19
++ / --,正确区分旧值/新值返回语义,仅允许 Int/Float;非法左值和常量在编译期报错,只读属性继续由运行时 setter 明确拒绝
/= 被词法器拆成 / 与 = 的问题,并补齐十种运算符、全部可写目标、类型规则、求值顺序和单次副作用回归矩阵
/ai/version 最小版本接口
fs.real_path(),返回操作系统解析符号链接、Windows junction 和 .. 后的真实绝对路径
fs.atomic_write(content, expected_sha256),使用同目录临时文件原子替换,并可按旧内容 SHA-256 拒绝外部修改冲突
ffi Cargo feature,完成原生动态库标准库第一阶段:支持严格完整 schema、精确符号缓存、void/i32/u32/ptr 参数与返回、cstr/wstr 输入、同步调用和显式关闭;未启用时不编译 FFI 依赖或 VM 分支
BT_BYTES_LIMIT 输入约束和 Value 布局基线测试,并提供保持跨平台兼容的 cdylib 测试库;阶段验收仅在 Windows 运行,同时提供 user32 完整签名示例
i8/i16/i64/u8/u16/u64/isize/usize/f32/f64,支持 cstr/wstr 有界返回复制、16 字节对齐固定 FfiBuffer、Pointer owner 继承、关闭失效和 BT.stats().ffi 最小资源统计
--no-default-features 最小核心裁剪;Windows x64 release 体积增量 41,984 字节且无额外 libffi 动态依赖,普通执行、百万次调用、重复 load/close、App shutdown、RSS 和可见 MessageBoxW 冒烟均通过
THIRD_PARTY_LICENSES_FFI.txt 作为发布随附文件,官方 release 与桌面 App 构建会自动把它写入产物目录
process.suspend() / process.resume(),Windows 下可暂停和恢复托管子进程树;bt_app 关闭窗口或热重载替换运行时时会显式关闭长期 VM 并等待资源释放,避免后台转换进程遗留
BT_PROCESS_PIPE_LIMIT 改为限制未读缓冲而非历史累计输出,新增 process.pipe_limit(bytes) 覆盖单个进程上限;Windows 下 process.kill() 和 Process 释放会尽量递归终止子进程树,bt_app 在 WebView2 缺失时弹窗后直接退出
process.window_hidden() 显式链式配置
manifest.permissions 改为字符串数组,只声明实际需要的权限能力;脚手架、校验、官网元数据和文档同步移除 true/false 权限对象写法
query(sql).bind()/binds().one/all/exec() 链式 API,exec() 返回 rows_affected、last_insert_id、batch 等统计对象
bt install 官方扩展远程安装输出,显示下载进度、SHA-256 校验和安装完成状态
bt install <name> [version] --project <dir> 从官网元数据下载 .bts,校验 SHA-256、文件大小和包内 manifest 后写入 extensions/<name>/<name>-<version>.bts
/api/ext/<name>、/api/ext/<name>/<version>、/api/ext/<name>/download/<version> 扩展库 API,并将 SQLite 1.0.0 官方扩展入库到 web/db/ext/
/ext 扩展库列表页和 /ext/<name> 详情页,展示扩展版本、权限、开发者、源码地址和安装命令
extensions/<name>/*.bts 子目录,同时保留旧的 extensions/*.bts 顶层包加载能力
window.bt.app.watch_path() 目录文件监听能力
app.main=false 但旧 resources 残留 main.bt 时构建仍要求 main.bt 存在的问题,缺失的旧主脚本资源会被跳过
app.storage=private 在 WebView2 下仍可能复用登录态的问题,改为每次启动使用唯一临时 data_directory,确保双开进程 Cookie/localStorage 隔离
app.storage WebView 存储策略,默认按应用名称隔离持久 profile,支持 private 双开独立登录态和 global 旧版共享 profile
dev.devtools=true 时可通过 F12、Ctrl+Shift+I 或 window.bt.window.open_devtools() 打开 WebView 开发者工具
index.html 入口改为通过 bt://app/ 加载,并对无扩展名路径提供入口 HTML 回退,兼容 Vue/Vite 等 SPA history 路由根路径部署
index.html 的桌面项目自动生成默认 app.json 时,资源列表补齐 assets/**,避免 Vite 默认构建产物打包后漏收脚本和样式
bt ext check 可复用缓存,避免每次重复 JIT 编译
extensions feature,bt.exe 可直接使用 bt ext 并加载项目 extensions/*.bts;需要轻量无扩展构建时改用 --no-default-features
bt ext build/check/install 校验 runtime.mode=shared 的 WASM 扩展时误走线程本地 Runner 的问题,shared 扩展现在会使用 shared WASM 模块校验路径,SQLite 扩展库可正常打包为 .bts
@/data 目录,避免首次运行 demo 时数据库父目录不存在
examples/extensions/sqlite shared WASM SQLite 扩展库,覆盖 sqlite_open、one/all/exec/transaction/close 和链式 query().bind(),并用 Rust 单测验证 WAL、busy_timeout、并发读、结果上限、BLOB/NULL/empty 边界和 close 后失效
any,用于 bind(value) 这类需要接收多种 BT 基础值的参数;any 仅用于参数声明,不作为返回类型
object 返回类型允许返回 empty 表示没有对象结果,具体扩展对象返回类型仍保持同模块、同类型句柄严格校验
call_timeout_ms 超时后会标记目标 worker、触发 WASM trap 并重建 Store/Instance,避免超时调用永久占用服务容量
bt-extension-sdk 新增可选 bts_init、bts_shutdown、bts_stats 生命周期 helper,Runner 会识别可选导出并在 worker 生命周期中调用,旧 WASM 扩展不导出这些函数仍保持兼容
lifecycle=dispose 成功后旧句柄失效
max_objects 或 max_worker_objects 时返回中文错误,避免常驻对象无控增长
runtime.mode=shared 的 WASM 扩展会创建独立有界 worker 队列,支持入口函数返回原始值、队列满拒绝统计和 shutdown 后拒绝新调用
runtime 配置,支持解析和校验 thread_local / shared 模式以及 workers、queue_limit、call_timeout_ms、idle_ttl_ms、对象数和执行中调用数等资源上限
runtime.mode=shared 第一版只允许 kind=wasm,纯 BT 扩展会在 manifest 校验阶段拒绝;普通 WASM 扩展仍走线程本地 Runner,shared WASM 扩展不会静默落回线程本地 Runner
2026.06.26
lifecycle: "dispose" 生命周期元信息,支持 close() / dispose() 成功后释放对象句柄,避免长期运行中扩展对象无控增长
bt-extension-sdk 的 ObjectStore 新增 required 读写和移除 helper,WASM 脚手架默认生成 close() 并使用类型校验与显式释放
bt-extension-sdk Rust SDK,支持 WASM 扩展显式注册调用 ID、BtValueBinary 编解码、真实 bts_alloc / bts_free 内存释放和 bts_set_module_id 模块 ID 初始化,并跑通 Rust SDK 生成 .bts 后的链式调用
bt ext new --kind wasm 现在生成 Rust SDK 项目骨架,bt ext build 会跳过 target/、.git/、.hg/、.svn/ 和 node_modules/,避免把构建产物打进 .bts
bt ext new/build/install/info/check 创建本地扩展项目、打包 .bts、安装到项目 extensions/、查看包信息并复用运行时校验
path_read、path_write、path_dir 路径能力,支持按 BT 路径规则解析 @ 和相对路径、校验项目根边界、转换为 WASI 相对路径并预打开项目目录
kind=wasm / bts-wasi-1 扩展加载 module.wasm、校验 ABI 导出、延迟实例化、BtValueBinary 参数/结果传输和 calc(1).add(2).value() 链式调用
empty、null、bool、int、float、string、bytes、array、object 和扩展对象句柄的二进制 ABI 往返,并加入深度、长度和总字节数限制
kind=bt / bts-bt-1 的受限导出校验、线程本地编译缓存、真实导出函数调用和对象句柄方法分发,跑通真实纯 BT calc(1).add(2).value()
Value::ExtensionFunction、Value::ExtObject 和 VM 分发接入,支持启动注入扩展入口、保护入口只读,并用假 runner 验证 calc(1).add(2).value() 链路
.bts zip 包解析、manifest.json / bindings.json 校验和扩展注册表元信息,当前只校验和建表,不执行扩展代码
extensions Cargo feature 和 src/extensions 编译边界,为后续 .bts 包解析、注册表和 WASM/WASI 后端隔离做准备
BT.stats() 快照序列和 1h/8h/24h 画像,新增 examples/compat/ 语义兼容回归
BT.stats().cache 暴露命中、失效、淘汰和内容指纹复核统计
mysql(dsn).begin() 返回事务句柄,支持事务内 query/bind/all/one/exec/commit/rollback/close/status,并在 BT.stats().mysql 暴露事务统计
BT_PERMISSION_ALLOW 和 BT_PERMISSION_DENY 收紧 fs、process、net、HTTP、MySQL、device、env、desktop 能力,desktop 会限制 bt_app 桌面桥接命令和拖入文件事件,并在 BT.stats().permission 暴露配置和拒绝次数
BT.stats().permission 配置快照
static.cache_control 可写入缓存策略,static.chunk_size 可控制分块读取大小
web.send_file() / send_file() 文件直出能力,复用分块文件响应、ETag、Last-Modified 和 Range,避免大响应一次性进入动态响应字符串
examples/net-stress-*.bt 压测脚本覆盖批量消息和断线重连场景
text.match() 等链式 API 可正常解析
{} 多行代码块,代码块返回值由最后一条语句决定
2026.06.13
&&、||、?? 逻辑运算符提前执行右侧表达式的问题,确保遵守短路求值规则
let 只用于变量声明,不能用于常量定义
use 导入字段按变量绑定处理,显式导入和全量导入都遵守变量命名规则,并移除重复的 use obj{*} 语法
~ 按位取反运算符的词法、语法、字节码和运行时执行
for key value in obj 与 for key, value in obj 等价
for i in count step step_value,固定循环 count 次并让变量按步长递增
for (name age) in users 直接读取每轮 value 的字段
for {}、次数循环、整数闭区间、..end、start..、正整数 step 和 _ 丢弃绑定
2026.05.26
2026.05.09
2026.04.18
envs系统函数,用于获取系统全局变量
env系统函数,用于获取用户全局变量
has_envs系统函数,用于检查系统变量是否存在
has_env系统函数,用于检查用户变量是否存在
pause系统函数,暂停程序,等待用户按回车继续(针对控制台程序)
echo系统函数,用于控制台打印消息
2024.11.24
reqwest标准库
process标准库
fs标准库新增lines函数
md5标准库
base64标准库
call系统函数,用于函数回调
number系统函数,用于转为数字类型
string系统函数,用于转为字符串类型
float系统函数,用于转为浮点类型
int系统函数,用于转为整数类型
array系统函数,用于转为数组类型
object系统函数,用于转为对象类型
json系统函数,用于转为JSON字符串
parse_json系统函数,用于解析JSON字符串
regex系统函数,用于字符串转为正则对象
is_null系统函数,用于判断数据是否为Null
is_empty系统函数,用于判断数据是否为空
rand系统函数,用于生成随机数
Env和Envs系统环境变量
math标准库
v->v*2 v->{v*2} (v,k)->v*2 (v,k)->{v*2} 几种写法
(title,content,time) = article
eval
http标准库增加session
http标准库增加cookie
file标准库正式更名为fs
fs标准库增加move函数
http标准库增加files,用于文件上传,支持多文件上传
FILE_TEMP_PATH
http标准库,将旧有的Web端相关变量与函数放入http中
use关键字,用于在当前作用域中引入库函数
2024.10.29
Exit、Return、Break、Continue无效的BUG
Object对象的下标只能为String类型的BUG
to_number原型函数
to_number原型函数
to_string原型函数
class类,支持成员变量预定义
object一系列原型函数
exit函数,用于退出程序
# TPL 关键字,用于声明字符串模板
basename 用于获取文件名
filename 用于获取文件名称
extension 用于获取文件后缀
+= ^= 等
2024.10.22
{% %}标签用于执行BT代码
? :
parse
escape_html
unescape_html
?
? :
+=
-=
*=
/=
%=
<<=
>>=
&=
^=
|=
2024.09.15
2024.02.16
2022.01.03