Repository navigation
Releases: npanel-dev/OmnXT
Release list
OmnXT Node v0.1.67
OmnXT Node v0.1.67
本版本更新 Node 与 CLI,程序版本均为 0.1.67。源码为
980139c32c0c6ba61fcbbff972b4603e47ead6dc,分支为 development。
修复内容
- SimNet SDK 会话在上传写入受到背压时,仍能接收下行数据、处理消费返窗和控制帧。发送保持有界,容量统计覆盖待编码、已编码和部分写入数据;OPEN 完整写出后才完成,Ping 超时从完整提交开始计时。
- SimNet Node 不再等待某条流的满上传队列,避免一个慢目标阻塞同会话其他流与 Pong。上传按目标 TCP 实际接受字节返还信用,保留待交付 DATA 的预算与顺序;FIN、Reset、接收端退出及 GOAWAY 后的回收均有回归。
- ClientOpen 通告客户端实际接收窗口,覆盖非对称窗口、AF 抖动、旧合同与恢复;StreamOpen 的既有合同保持。
- 包含上版发布后提交的 VLESS/REALITY 修复:完整处理 REALITY 记录及首批缓冲写入。
默认 H2/逻辑窗口、并发容量、AF 配置及 Release 优化参数保持原值。
构建与产物
沿用 v0.1.66 的双架构 GNU Linux 产物合同,本地构建并发布四个附件:
omnxt-node-x86_64-unknown-linux-gnu.tar.gz
omnxt-node-x86_64-unknown-linux-gnu.tar.gz.sha256
omnxt-node-aarch64-unknown-linux-gnu.tar.gz
omnxt-node-aarch64-unknown-linux-gnu.tar.gz.sha256
使用 Rust 1.94.1、cargo-zigbuild 0.22.3、Zig 0.14.0,目标指定 .2.28,默认 features 与仓库 Release 配置,显式注入 Node 源码 revision。本地构建,不使用 GitHub Actions。包内保留 bin/omnxt-node、bin/omncli、DEPLOY.md 和 manifest.json。
实际二进制和归档 SHA256、GLIBC 需求、构建身份及产物验证记录见 发布清单。
验证结果与限制
SimNet/proxy-stream 相关测试 421 项通过、12 项既有忽略,格式与 workspace 编译检查通过。旧实现的窗口方向、Node 阻塞上传和 SDK H2 回压问题已有失败复现及修复后通过记录;版本同步后再次通过 workspace 检查。发布产物另核对两架构 ELF、GLIBC 需求、程序版本、源码 revision、CLI 配置与有限 Node 启动。
相同依赖、编译参数及默认配置的真实 SDK + Node + TLS/H2/AF Release 对照,本地下载中位差异在 ±1% 内,上传未见下降;所有传输完整性校验通过。100Mbps、200ms RTT 合成链路五组交错对照,下载中位数 87.27→88.14Mbps,小请求中位数 356.9→384.7ms,最大约 1.34s。保留这项延迟疑点,不承诺高 Ping 已全部修复,也不能认定客户约 40Mbps 的全部原因已消除。
升级说明
本轮 Node 上传队列与生命周期修复需要升级 Node。完整 SimNet 修复还需要客户端采用从同一源码构建的新 SDK;本次附件交付 Node/CLI,未重新交付平台 SDK。本次发布没有升级或重启客户服务器,客户设备及真实链路复测仍待完成。
安装指定版本:
curl -fsSL https://raw.githubusercontent.com/npanel-dev/OmnXT/main/install.sh | sudo bash -s -- 0.1.67下载归档后,在同一目录手动校验:
sha256sum -c omnxt-node-x86_64-unknown-linux-gnu.tar.gz.sha256ARM64 替换为对应 .sha256 文件名。现有安装脚本没有自动执行该校验。
OmnXT Node v0.1.66
OmnXT Node v0.1.66
本版本更新 Node 与 CLI,程序版本均为 0.1.66。源码为
948b54ad450a6a27f02add92dc6f36358661b3f3,
包含本轮 SimNet 下载推进修复和基础 VLESS relay 修复。
修复内容
- 按 ClientOpen 中实际 offer 安装 Node 发送窗口,纠正 ServerAccept 的客户端窗口视角;
不对称窗口、真实抖动 offer、新旧线上合同夹具及完整闲置会话恢复均有回归。 - 消费信用可靠归还,队列满保留已消费债务,小尾债使用持久 deadline;reset 后迟到 DATA
不再因等待仅写 flush 卡住健康流。 - 待发数据按流轮转,target 读取前联合预留真实发送信用与物理预算;零信用仍能识别 EOF,
未读 payload 保持先 DATA 后 FIN。空闲 target 不提前占用读取信用;会话仍有信用时,
可绕过零信用流的待发队列。共享会话信用被耗尽时仍会对其他流形成背压。 - 载体由一个 owner 独立推进读写,采用有界就绪批处理和控制优先,保持部分帧与同流顺序;
在复制、编码和 HMAC 前检查队列容量,减少拥塞时的重复工作。 - 基础 VLESS 两方向独立推进,部分写更新活动计数,保持响应头、FIN、取消与超时策略。
默认逻辑窗口、H2 参数和 TCP 缓冲未调整,Vision/Encryption legacy relay 正文保持原实现。
构建与产物
按上一个正式版 v0.1.65 的 Linux 产物合同,本地构建两个 GNU Linux 架构,发布四个附件:
omnxt-node-x86_64-unknown-linux-gnu.tar.gz
omnxt-node-x86_64-unknown-linux-gnu.tar.gz.sha256
omnxt-node-aarch64-unknown-linux-gnu.tar.gz
omnxt-node-aarch64-unknown-linux-gnu.tar.gz.sha256
使用 Rust 1.94.1、cargo-zigbuild 0.22.3、Zig 0.14.0,目标指定 .2.28,默认 features 与
仓库 Release 配置。构建命令保持 --release --locked,显式注入 Node 源码 revision。
未使用 GitHub Actions 构建。包内保留顶层目录及 bin/omnxt-node、bin/omncli、
DEPLOY.md 和 manifest.json;归档不包含 macOS ._* 文件。
二进制与归档校验值、实际动态 GLIBC 需求及打包生成时间记录在 发布清单。
Node 诊断输出带源码 revision;CLI 的源码身份由构建清单与二进制 SHA256 固定。
验证结果与限制
传输修复完成了 407 项相关测试,12 项既有忽略;格式、diff check 与 Linux workspace check 通过。
版本同步后重新执行了 workspace check,发布产物另核对 ELF 架构、动态 GLIBC 需求、程序版本、
CLI 配置校验及 Node 启动诊断。具体产物验证状态见发布清单。
严格匹配依赖和编译参数的本地 H2 Release 对照,三轮吞吐中位数约 +0.13%,没有观察到稳定回退;
并发小响应由 336–529 ms 降至 5–18 ms,响应预算峰值约 69.3 MB 降至 2.13 MB。
Debug 吞吐中位数仍下降约 5.56%,默认窗口持续慢读的协议 Pong 仍等待约 14 秒。
该测试使用真实 H2 和 loopback TCP,慢读由载体应用包装器模拟;未包含 WAN、TLS、真实 SDK
连接池或客户设备,不能承诺现场提速。
升级说明
本轮服务端窗口、调度和载体修复需要更新 Node。客户端消费返窗修复还需要应用对应的新 SDK;
只升级 Node 不等于完整应用两端改动。旧合同互通由帧编解码与 runtime 夹具覆盖,不能替代旧版本
二进制和客户设备互通验收。本次发布没有重启或升级客户服务器。
安装指定版本:
curl -fsSL https://raw.githubusercontent.com/npanel-dev/OmnXT/main/install.sh | sudo bash -s -- 0.1.66下载归档后可在同一目录手动校验:
sha256sum -c omnxt-node-x86_64-unknown-linux-gnu.tar.gz.sha256ARM64 对应替换文件名为 omnxt-node-aarch64-unknown-linux-gnu.tar.gz.sha256。
现有安装脚本没有自动验证这个 checksum 文件,不把提供校验文件称为安装器已执行校验。
OmnXT Node v0.1.65
修复内容
- 为 Node 中全部 SimNet inbound 增加共享的 512 MiB 目标响应字节预算,避免慢客户端或 carrier 写阻塞时响应数据持续累积。
- 每次目标 TCP 读取前先申请 32 KiB 额度;预算耗尽时暂停读取并通过 TCP 接收窗口向目标端传播反压,不丢弃业务数据。
- 预算许可贯穿事件通道、pending 队列、scheduler 与 carrier 写任务,只在真实写入完成或连接关闭丢弃数据后释放。
- 控制帧不占响应预算,避免 WINDOW_UPDATE、FIN、RESET 与 keepalive 因数据预算耗尽而死锁。
- 新增当前占用、峰值、等待数、累计等待次数/时长等 Node metadata 指标,并直接合并运行中长连接的实时快照。
构建信息
- 源码 PR: SunGreatSage/OmnXT#65
- development merge:
a132fd4ee1f2ec7a62cd2a00a7c7eedc4b8e09c8 - 本地构建:cargo-zigbuild 0.22.3 / Zig 0.14.0(未使用 GitHub Actions 构建或发布)
- Linux 兼容基线:glibc 2.28
校验
cargo fmt --all -- --checkcargo check --locked -p omnxt-protocol-simnet -p omnxt-nodecargo test --locked -p omnxt-protocol-simnet --lib(137 passed)cargo test --locked -p omnxt-protocol-simnet --test e2e(5 passed)- Node SimNet 组装器、指标聚合、用户热更新与 H2 全链路定向测试通过
- 344,512 用户 SimNet Registry 发布前回归通过
- Node 全量 lib 测试中本次相关用例通过;既有 AnyTLS/Reality/控制面并行场景仍有失败,另一个 SimNet 重载用例因本机正在运行的 Node 占用 TCP 9080 无法执行,未停止该进程
- 双架构产物均验证为 stripped ELF,最高 GLIBC 符号版本为 2.28
SHA256
- x86_64:
61d7025dbd73c6cfbab02b8a19df4cbb24d42db4cf149edad31bcd5378dd9d28 - aarch64:
7fb26d3bb8ce6248c62ed3d45d4a7b6ce3fd1f3ee3d785aadc681ec1903592db
OmnXT Node v0.1.64
修复内容
- 将 Node 控制面 HTTP 总请求超时从 20 秒调整为 30 秒,并保留 timeout/connect/read 等结构化失败原因。
- 修复控制同步虽记录指数退避、但调度器仍每分钟请求的问题;失败期间现在真正停止重复拉取。
- 为 PPanel
/v1/server/user全量刷新持久化尝试/失败状态;全量失败后 30 分钟内退回条件请求,避免反复构造大用户快照。 - Linux Node 默认通过进程级
PR_SET_THP_DISABLE关闭透明大页,降低大快照和 SimNet Registry 临时分配对 RSS/AnonHugePages 的放大;可通过OMNXT_THP_DISABLE=0关闭该调优。 - 服务循环改用真实时钟;新增用户拉取大小/耗时、退避截止时间、SimNet Registry 构建耗时与变更量日志,且请求 URL/secret_key 不写入错误详情。
构建信息
- 源码 PR: SunGreatSage/OmnXT#64
- development merge:
bd0ecde69db3ace9a300bdfda781d4f9289a0c00 - 本地构建:cargo-zigbuild 0.22.3 / Zig 0.14.0(未使用 GitHub Actions 构建发布包)
- Linux 兼容基线:glibc 2.28
校验
cargo fmt --all -- --checkcargo test --locked -p omnxt-control(102 passed)cargo test --locked -p omnxt-state(50 passed)cargo test --locked -p omnxt-glibc(11 passed)cargo test --locked -p omnxt-runtime(5 passed)cargo test --locked -p omnxt-protocol-simnet --lib(127 passed)cargo check --locked -p omnxt-node- Node 控制同步、PPanel 用户热更新、SimNet Registry 热更新定向测试通过
- 固定 TCP 443 的重载测试因本机 Docker Desktop 占用端口无法执行,属于本机构建环境冲突
SHA256
- x86_64:
61f56291e7ec2dfd4afff5b62926691f0e841984186b8372c17c8be1636e87b7 - aarch64:
36c1be4e804c7af0ad6a3f179ba1f212395d9b63bc2c996624d42556d83bff2f
OmnXT Node v0.1.63
修复内容
- 修复 Node 服务重载时递归调用导致上一代 Registry、Listener、Tracker 与 SimNet 工作集持续存活的问题;现在旧一代资源会在下一轮启动前完整释放。
- 启动完成后立即释放大规模 SimNet 用户工作集;仅在最终退出时重新读取必要元数据。
- 释放大型工作集后主动归还 glibc 堆页,并增加默认每 900 秒一次的低频 trim;可通过
OMNXT_MALLOC_TRIM_INTERVAL_SECS调整或关闭。
构建信息
- 源码 PR: SunGreatSage/OmnXT#63
- development merge:
7325c98f1d4c68cf9bd92362432036859c940a65 - 本地构建:cargo-zigbuild 0.22.3 / Zig 0.14.0(未使用 GitHub Actions)
- Linux 兼容基线:glibc 2.28
校验
cargo check --locked -p omnxt-nodecargo test --locked -p omnxt-glibc(9 passed)cargo test --locked -p omnxt-protocol-simnet --lib(127 passed)- Node 重载相关定向测试通过
SHA256
- x86_64:
4c72531be9fa58299cc17c642755dce3df2cbd6639b7b0285f0d94982e8fcc0b - aarch64:
7997673486cdb6079e609fdbd1497f483e71db105301f989d97fdd168dfae1f9
OmnXT Node v0.1.62
Node memory stabilization
This release follows the production investigation of slow RSS growth on long-lived, busy SimNet Node servers.
- Reclaim an empty SimNet FrameQueue entry immediately after its final frame is written, so a long-lived H2 carrier no longer retains one allocation per historical stream.
- Avoid creating an empty stream queue when a stream first hits the scheduler buffer limit.
- After a large SimNet user-registry refresh (10,000 or more users), drop the temporary working set and ask GNU libc to return completely free heap pages with malloc_trim(0).
- Keep the existing bounded glibc arena configuration from v0.1.61.
Source: SunGreatSage/OmnXT PR #47, merged into development as c88c0bf1c51eceefc5b9df225102d575e790b556.
Local build and verification
- Built locally with cargo-zigbuild 0.22.3 and Zig 0.14.0; GitHub Actions was not used.
- Targets: x86_64-unknown-linux-gnu.2.28 and aarch64-unknown-linux-gnu.2.28.
- Both omnxt-node and omncli are stripped ELF binaries with a maximum required glibc symbol version of 2.28.
- SimNet protocol tests passed: 126 unit tests and 5 protocol E2E tests.
- A 100,000-stream long-lived scheduler regression proves completed stream queues return to zero retained entries.
- The Node SimNet user hot-reload test and full-stack H2/TLS E2E test passed.
- Package checksums were verified after copying to /Users/mac/Project/Go/NP/OmnXT.
OmnXT Node v0.1.61
Node memory stabilization
This release addresses the slow private-memory growth observed on busy Node servers.
- Replace one operating-system thread per session-release callback with one bounded dispatcher: 4 reusable workers and a queue capacity of 1024.
- Limit glibc allocator arenas to 4 by default on GNU/Linux to reduce retained heap amplification. Operators can override this with
OMNXT_MALLOC_ARENA_MAX=1..64, or disable it with0/off/false/disabled. - Bound global-limit user history at 256 retained users while preserving a cumulative enforcement counter.
- Bound the live upstream-success cache at 4096 entries.
Source: SunGreatSage/OmnXT PR #45, merged into development as 807cec4294fe84c8b7dd6ea63bb23a96286828e8.
Build and verification
- Built locally with cargo-zigbuild 0.22.3 and Zig 0.14.0; GitHub Actions was not used.
- Targets:
x86_64-unknown-linux-gnu.2.28andaarch64-unknown-linux-gnu.2.28. - Both
omnxt-nodeandomncliare stripped ELF binaries with a maximum required glibc symbol version of 2.28. - Targeted allocator, session-dispatcher, bounded-history, bounded-cache, listener-runtime, traffic-ledger, and SimNet generation tests passed before merge.
OmnXT Node v0.1.60
Node memory-retention fixes
- Streams large PPanel user-list responses into a bounded temporary file while calculating SHA256, avoiding a second full in-memory response copy for 300k+ users.
- Adds a semantic user hash so reordered or reformatted HTTP 200 responses no longer rebuild an unchanged SimNet user registry.
- Replaces per-refresh SimNet runtime generations with shared reloadable credential and identity registries. Existing long-lived HTTP/2 connections now follow the current registry, allowing obsolete 300k-user generations to be released.
- Preserves the active runtime, target handler, resource counters, and caches during user-only refreshes.
- Globally expires and bounds the target DNS and failure caches (16,384 entries each by default), and exposes their live entry counts in diagnostics.
- Demotes successful per-stream TCP dial logs from info to debug to reduce high-frequency allocation and log pressure.
Source: SunGreatSage/OmnXT PR #42, merged to development at 54723a33deb2f044b6047b00b75f0f8a9e071927.
Validation covered PPanel streaming and semantic-hash tests, SimNet credential/identity generation-release regressions, bounded target-cache tests, a 344,512-user registry regression, Node hot-reload behavior, and protocol/transport unit suites. Both Linux targets were compiled locally with cargo-zigbuild; no GitHub Actions build artifacts were used. The resulting binaries are stripped and require at most GLIBC 2.28.
OmnXT Node v0.1.59
SimNet Node throughput improvements
- Raises the Node-specific SimNet HTTP/2 receive windows to 4 MiB per stream and 16 MiB per connection, removing the previous 64 KiB client-to-Node flow-control bottleneck on higher-RTT links.
- Adds the
simnet_connection_window_sizeNode setting while preserving the existingsimnet_initial_window_sizeoverride. - Replaces one-new-TCP-connection-per-request Redis global-limit access with a bounded reusable connection pool.
- Adds
global_limit_redis_pool_sizeNode metadata configuration (default 8, accepted range 1-64).
Source: SunGreatSage/OmnXT PR #41, merged to development at f722fcd923969430cac4dd22af3ac5b8abff2280.
Validation included Redis pool unit tests, SimNet HTTP/2 configuration tests, seven real HTTP/2 socket tests, and the Node HTTP/2 full-stack E2E test. Both Linux targets were compiled locally with cargo-zigbuild; the release does not use GitHub Actions build artifacts. The resulting binaries are stripped and require at most GLIBC 2.28.
OmnXT Node v0.1.58
Node sustained-memory stability
- Bounds successful SimNet session histories and per-user diagnostics so long-running nodes do not retain an unlimited number of completed-session records.
- Rebases acknowledged PPanel traffic against the live counters, preserves traffic arriving while the report request is in flight, and prunes inactive zero-pending users.
- Removes the duplicate PPanel pull worker and reuses the existing control-sync schedule.
- Removes the full traffic-ledger JSON copy from runtime metadata and avoids large temporary string/hex maps during SimNet hot reload.
- Reuses one shared HTTP client and connection pool for control-plane requests.
Source: SunGreatSage/OmnXT PR #40, merged to development at 0ea42762762c76e0ffe28917f8be24f50386a719.
Validation included targeted Node/PPanel regression tests and a 344,512-user SimNet registry test. Both Linux targets were compiled locally with cargo-zigbuild; the release does not use GitHub Actions build artifacts. The resulting binaries are stripped and require at most GLIBC 2.28.