主要更新内容
- JS 运行时迁移至 moejs:插件引擎从
dop251/goja+goja_nodejs全面迁移到Calcium-Ion/moejs,涉及插件路由、RPC、Hook、WebSocket Hook、通知通道、定时任务及所有 Node.js 兼容模块(buffer、child_process、console、crypto、events、fetch、fs、http、url、require)的重写。 - 新增统一指标查询层(
internal/metricstore/query.go):支持 points / series / latest_before 三种查询模式、raw / rollup 数据源选择、实体范围限定、点数预算与自适应降采样,替代原先分散的查询路径。 - 查询性能优化:新增
LoadProjection按load_type仅选取所需字段;RecordQueryOptions支持按指标名过滤和总点数预算,减少全量物化;查询路径减少对象分配,降低 CPU 开销。 - Ping 汇总一次性聚合(
database/tasks/ping_summary.go):单次遍历同时计算客户端与任务维度的 min/max/avg/p50/p99/loss 等统计,供 legacy 与 public ping 接口共用。 - 新增确定性比例降采样包(
internal/sampling):按组长度比例分配点数目标,用于历史响应。 - 插件可修改自身内建对象:运行时启用
MutableIntrinsics,各插件实例的内建对象修改互不泄漏(新增隔离回归测试)。 - 新增原生 Buffer 模块(
pkg/jsruntime/buffer):基于 TypedArray 实现 Node.js Buffer 兼容层,含完整编解码与大小端读写。 - 新增事件循环封装(
pkg/jsruntime/loop):包装 moejs eventloop,提供宿主侧定时器、终止与错误上报。 - 新增 native 辅助包(
pkg/jsruntime/native):提供类型安全的 JS 值读写、函数绑定与脚本执行入口。
Bug修复
- Ping 队列独立容量:ping 写入队列容量从与 report 队列共享的 512 提升至独立的 4096,避免高并发 ping 上报时阻塞常规指标写入(PR #695)。
其他
- 数据库层代码精简:accounts、clients、tasks、oauth 等模块移除冗余错误分支与注释,统一返回风格。
- 2FA 校验逻辑简化为单行表达式。
- Store 迁移与 Restructure 流程重构:提取
openWithoutMigration辅助函数,迁移停止逻辑统一为awaitStoreMigrationStop。 - Report batcher 改用通用
drainQueue替代原先两个专用 drain 函数。 - 移除
cmd/flags/config_test.go与internal/sqlitetune/connector_test.go。 go.mod更新:移除 goja / goja_nodejs 依赖,引入 moejs;stretchr/testify升级至 v1.12.1。.gitignore新增.gocache/。- README 新增 MooProxy 赞助商条目。
What's Changed
- fix(metricstore): give the ping queue its own capacity by @cristianchiriac in #695
Commits
- Update payment options in README (5006f55) @Akizon77
- Update README_zh-cn.md (4b24f1e) @Akizon77
- fix(metricstore): give the ping queue its own capacity (fa5a04d) @cristianchiriac
- 让opus5.5 简化、优化1下代码 (b38b0b2) @Akizon77
- 优化单次查询性能 (3cf8445) @Akizon77
- 查询时对象分配数量可以少一点 (48af63c) @Akizon77
- 感谢新的金主 MooProxy (dc7f4cb) @Akizon77
- 感谢新的金主 MooProxy (7468dcb) @Akizon77
- Merge main into PR 695 and remove added queue test (b704267) @Akizon77
- Merge pull request #695 from cristianchiriac/fix-ping-queue-size (528cea2) @Akizon77
- JS运行时换成moejs (d50cc0a) @Akizon77
- 允许插件修改自己的内建对象 (c24c4b9) @Akizon77
- 优化查询性能 (d5689ef) @Akizon77
- 优化查询的CPU性能,但是稍微牺牲一点点内存 (e30b9fd) @Akizon77
- 支持了新功能在pgsql和mysql的兼容 (70bbcea) @Akizon77
New Contributors
- @cristianchiriac made their first contribution in #695
Full Changelog: 1.6.0...Snapshot-2610231657