2026.06.30
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