- 博客(1745)
- 收藏
- 关注
原创 Wasm 内存涨了,先别在分配器回调里塞 HashMap
想记录每次分配的地址和大小,就在alloc回调里向HashMap插一条记录——这个念头看起来直接,却可能让记录动作自己再次分配内存,形成递归。打印日志、格式化字符串、争抢锁,也可能在这个敏感位置引入新问题。展示了池和映射相关策略。Wasm线性内存、宿主缓冲、运行时池与系统分配器不是同一份账;把进程全部分配都归到某个guest,会把正常缓存也写成泄漏。资料于2026-10-23访问。
2026-10-28 09:19:57
150
原创 Agent 等 GPU 时还占着仓库锁,Rust 怎么帮忙查出来?
一个任务拿着repo锁等待GPU,另一个任务拿着GPU锁等待repo。两把锁都被Mutex安全保护,也仍可能形成死锁。借用检查能约束引用,不会自动替多资源任务选择一个无环等待顺序。
2026-10-28 09:19:01
162
原创 收到 SIGTERM 后,流式推理究竟还要等谁结束?
进程收到停止信号后,马上退出最干净,却也最容易让已经接住的响应只剩半截。反过来,无期限等待所有请求结束,也会把关机卡住。我需要的是明确的阶段和截止时间,不能只加一个cancel变量。把问题拆成识别关机条件、通知各部分、等待它们结束。它没有承诺一枚CancellationToken能自动让外部模型停止计算。
2026-10-28 09:17:55
102
原创 模型卡上分数更高,为什么我的 Rust 小任务还得重测?
2026-10-13发布的列出了多类评估,也披露了已知限制。它能告诉我官方测了什么,不能直接告诉我“这次FFI修复一定正确”。本文没有调用该模型,也没有给模型重新排名。
2026-10-28 09:16:49
124
原创 同一段点积代码跨平台:先保证回退路径也能编译
给函数加上AVX2,并不能让ARM机器理解x86指令。我想保留的最小结构是:任何平台都有标量实现,特定架构下才编译加速函数,运行时再检查相应CPU能力。编译条件与运行条件各管一层。
2026-10-28 09:14:35
93
原创 推理请求太多时,Semaphore 为什么还会越排越久?
限制同时推理的请求数,不等于限制系统已经接住的请求数。如果每来一个请求就spawn一个任务,然后在任务里等Semaphore,执行中的数量受控,等待中的任务仍可能不断增长。描述许可与等待机制。许可适合表达“可以同时占用几份资源”,队列容量、等待期限和拒绝策略仍要由应用定义。本文滚动文档的版本号不等于本地依赖版本。
2026-10-27 21:52:28
160
原创 Wasm 线性内存能借给宿主多久?从一次 memory.grow 看起
宿主拿到Wasm内存指针后,把它存进结构体以便下次复用,看起来省了一次查询。但只要中间还可能调用guest,就必须重新判断这份视图是否有效,不能只看Rust结构体还活着。明确提醒,普通内存增长可能搬迁底层存储,之前构造的原始指针或切片可能失效。2026-10-23读到的页面标记51.0.0-dev;它不是本机已经编译验证的50.0.0接口。
2026-10-27 21:51:39
99
原创 INT8 量化快之前,先统一标量与 SIMD 的舍入规则
标量结果和SIMD结果差一个整数,未必是浮点精度不稳定,也可能是两条路径根本用了不同舍入规则。2.5到底变成2还是3,是可以先查合同、再用断言确认的事。规定了相应整数输出范围与nearest-even舍入。本文取最简单的per-tensor INT8规则作参考,不实现完整ONNX算子,也不把页面版本当成十月发布新闻。访问日2026-10-23。
2026-10-27 21:49:42
154
原创 两个 Agent 都说自己是 Leader,Rust 所有权能管住吗?
旧Agent暂停太久,新Agent接管了任务;旧Agent恢复后,又把结果写回。两个进程的Rust编译器都可能没有任何借用错误,远端资源却仍会收到冲突写入。编译期唯一引用只在相应程序的内存模型里有意义,不是跨机器的Leader证书。讨论复制日志如何达成一致。只数几个ACK,不足以实现任期、投票、日志匹配和提交规则。本文不实现Raft,只检查旧持有者恢复后的一个写入边界。
2026-10-27 20:07:29
191
原创 读完 Rust 1.99.1,我把学习清单缩成了一个 FFI 回归例
十月版本公告里,我最想追问的不是“又快了多少”,而是一个bool返回值为什么值得修复。2026-10-15的说明:x86_64上的FFI bool返回值曾存在高位未正确零扩展的问题。该结论来自官方修复说明,本文没有复现那个编译器缺陷。
2026-10-27 20:05:51
119
原创 把空格扫描提速,不等于写好了 BPE 分词器
看到一段循环每秒能扫描多少字节,我会先确认它输出的是什么。如果输出只有空格位置,就算换成SIMD,也还没有实现模型需要的token IDs。把归一化、预分词、模型分词与后处理分开说明。则介绍字节搜索。两者在文本流水线里都可能有用,但承担的契约不同。这些是持续维护的资料,本轮2026-10-23访问,不能当作十月新品新闻。
2026-10-26 22:35:46
553
原创 Rust 的 Arena 能接管 llama.cpp 的 KV Cache 吗?先画清所有权
在Rust网关里集中分配几个Vec,很容易写出一个叫Arena的结构体。但如果模型推理由llama.cpp完成,网关的分配器并没有因此接管模型权重、KV缓存或GPU工作区。名字相同不等于分配路径相同。是核对实际服务参数和内存配置的入口;发表于2023年,讨论的是另一套KV管理设计。论文不是“任意Rust Arena能插入llama.cpp”的证明,本文也没有复现它的结果。
2026-10-26 22:35:08
241
原创 Agent 检查点真的落盘了吗?把内存快照放进重启实验
把状态clone进Vec,调试时确实能“回到上一帧”。但进程退出后,这份Vec不会替我重建任务。Agent检查点如果承诺重启恢复,就必须把恢复放到另一个进程里验。
2026-10-26 22:34:29
240
原创 用 Rust 读一份短剧素材清单:失效端点和缺失来源怎样报错
本例每行六列:shot_id、channel、model、prompt_ref、source、endpoint_ref,用竖线分隔。字段内禁止竖线和换行;若要容纳任意提示词,就应改用有转义规则的成熟格式,不能继续拼字符串。prompt_ref指向提示词记录,不在清单里塞完整长提示词。source要求非空HTTPS引用,但字符串通过不表示链接可访问或具有授权;endpoint_ref也只是记录,不是可调用URL白名单。校验器不会发网络请求,不会读取凭证。if f.len()!continue;if!
2026-10-26 21:32:06
488
原创 Wasmtime 实例销毁后,谁还持有内存:一张 Rust owner 账本
drop了实例,RSS怎么没回来?”这个问题里至少混着三件事:句柄是否消失、实例资源是否归还、操作系统是否回收物理页。我先查owner,不从一张RSS截图判断泄漏。2026-10-20发布的新增了Engine::release_idle_pool_memory,用于释放池中空闲槽位保留的驻留内存。这正说明“槽位空闲”和“全部驻留页已归还”需要分别观察。本文没有调用或实测该API。
2026-10-26 21:31:03
335
原创 模拟 sleep 不是推理压测:给 llama-server 重建 TTFT 采集
我想比较两个推理后端,第一步却不是让请求并发跑起来,而是写清楚“第一”指什么。响应头先到、SSE角色字段先到、第一段非空文本先到,是三个不同的时刻。用固定 sleep 替代模型,只能测试客户端的等待逻辑。提供流式接口及服务端计时相关字段。仓库页面日期为 2026-10-22,标记为预发布;它不是模型新版本,也不能替代本地二进制的提交记录。
2026-10-25 14:06:14
129
原创 Envoy 的 Wasm 插件,为什么不能直接写成 Pingora 也能用
同样是Rust写代理,同样能编译出Wasm,不代表插件可以直接互换。我容易忽略的是:Wasm文件能被解析,只说明字节码格式过关;模块需要的宿主函数如果不存在,实例化仍然会失败。截至2026-10-23,展示了插件配置,并仍标记该过滤器为实验性。这里读到的是1.41.0-dev文档,不能当成某个稳定部署版的完整能力表。介绍的是构建网络服务的Rust框架;这份材料不足以证明它默认提供相同的Proxy-Wasm或WASI-NN宿主接口。
2026-10-25 14:05:02
181
原创 IVF-PQ 快了多少之前,先看少找回了谁
向量搜索少算了距离,延迟可能下降;但对检索增强应用来说,漏掉证据也会改变回答。我不想再只画一张“比全量扫描快”的图,然后跳过正确性。列出Flat、IVF、PQ等索引及存储方式,页面编辑日期为2025-07-28,不是今年十月新发布。它适合用来理解结构,不能替代当前版本、当前数据上的测量。本轮于2026-10-23重新阅读。
2026-10-25 14:03:50
159
原创 编译通过以后,我还不能说这段 Rust 安全
对刚转Rust的我来说,编译器是很可靠的老师,但老师不会替我理解全部题意。一段代码可以完全不用unsafe,仍然把负偶数漏掉;另一段代码通过编译,也可能把不满足约定的指针传进C库。两种错误不能混成一句“Rust也不安全”。
2026-10-25 14:02:42
83
原创 Agent 改了文件又调用远端接口,WAL 能一起回滚吗?
假设Agent先更新本地任务状态,再向远端提交一次素材处理,最后回复丢了。本地事务回滚以后,远端任务会跟着消失吗?这个问题不能靠把日志叫作WAL来回答。描述的是数据库文件的提交与检查点机制。它并不把HTTP服务或普通文件写入纳入同一个事务。该页面是持续维护的技术文档,本轮访问日为2026-10-23,不能把访问日写成WAL的发布日期。
2026-10-25 14:01:29
145
原创 BF16 点积先算对:Rust intrinsic 的类型和误差怎么验
点积内核一出现“7纳秒”,我会先停下来问两件事:输入是不是同一组数,调用的指令签名是不是对的。任一项没有说清,后面的加速比都难以解释。BF16 保留8位指数、7位显式尾数。它能减少存储位宽,却不能保留FP32的全部有效位。把输入先舍入到BF16,再用FP32累加,丢掉的输入信息不会因为累加器更宽自动回来。
2026-10-24 23:12:22
633
原创 Rust 流式网关的许可何时归还:EOF、错误与 Drop 三条路径
把请求转发出去,收到响应头,再把并发计数减一,这段代码看起来很顺。但对流式推理而言,响应头后面可能还有很长一段正文。计数先归还,新的请求就能进来;正在生成的请求却没有结束。不讨论智能路由,也不拿客户端断开推断远端已停止计算。
2026-10-24 23:11:23
540
原创 WIT 接口能组合组件,但 list<f32> 真能零拷贝吗?
WIT 让两个组件约定“传一个浮点列表”,不再靠双方口头猜结构。读到这里,很容易再多走一步:既然类型统一,列表应该也不用复制了吧?这一步没有依据。Canonical ABI 规定值怎样降到二进制表示、怎样恢复为接口类型;具体路径的分配、复制和适配仍要看生成绑定与运行时。解释了标量展平、线性内存指针和异步缓冲区。这不是对任意跨组件字符串、列表作“零开销”承诺。页面没有给可确认的首发日期。
2026-10-24 23:10:26
619
原创 Agent 进度合并能用 CRDT,预算扣减也能吗?
用时间戳选一个最后写入的值,可能让界面上只显示一个答案,但会把另一次已经发生的消费藏起来。真实外部调用不会因为本地账本选了另一个值而撤销。如果使用LWW结构,相同时间戳的不同值还需要确定的平局规则。仅写“时间晚的赢”,不足以说明时间一样时怎么收敛。逻辑时钟、唯一actor ID和事件身份也各有用途,不能随手拿系统时间拼成正确协议。作者提交的CRDT论文摘要讨论并发操作的可交换性、收敛及局限,发表于2009-07-06,是这里的基础概念来源,不是2026年10月新技术。
2026-10-24 23:09:29
969
原创 Haiku 5.5 的宣传页读完,我给 Rust 学习任务列了三道验收题
新模型的发布页很容易让人想直接换工具。我更想先固定一件小事:如果拿它辅助学Rust,什么结果才算帮上忙?Anthropic于2026-10-07发布Haiku 5.5,官方将它定位于高频、成本敏感任务,也提到在编码工作中作为子Agent使用。这些是厂商对产品的介绍,不能直接换成“它能正确教会我所有权”。没有调用Haiku,没有做模型横评,也没有采用发布页上的客户引语当作个人体验。下面是一份可以拿给任何助手、也可以自己完成的学习验收。
2026-10-24 23:08:28
1032
原创 llama.cpp 动态负载均衡调度器:基于加权最小连接数与 TTFT 反馈的 Rust 智能路由实战
在现代大模型基础设施的演进中,系统的高可用与极致低延迟从来不是单点硬件算力的独奏,而是一场由精密的网络调度器指挥的交响乐。利用 Rust 的强类型状态机与原子自适应指标闭环,将冷冰冰的静态配置转变为能够实时呼吸、动态感知异构硬件微观状态的智能网关——这是每一位深耕系统底层架构的工程师,化解算力供需矛盾的终极智慧。
2026-10-23 22:09:57
588
原创 WebAssembly 边缘微模型 A/B 测试:基于 Rust 网关插件的灰度推理流量分配与性能对比
在边缘人工智能体系中,任何脱离实际物理硬件环境的推断指标都是虚幻的。通过将 A/B 测试逻辑使用 Rust 编译为极轻量的 WebAssembly 插件,直接嵌入到离端侧设备最近的边缘网关中,我们不仅消除了中心化云端调度的网络时延,更建立起了直面真实芯片物理特性的科学持续演进体系。这种对确定性与真实数据的执着,正是推动边缘 AI 从粗放走向工业化成熟的关键基石。
2026-10-23 22:08:58
613
原创 百万级向量内积与曼哈顿距离吞吐横评:AVX-512 掩码加载(Masked Load)与尾部优化秘籍
高维向量计算的终极性能调优,从来不是简单的“把循环套上 SIMD 宏”,而是要直面数据在非对称物理边界上的每一个微小瑕疵。善用 AVX-512 硬件掩码寄存器,用纯代数位运算代替昂贵的分支跳转,把每一行向量从首字节到末字节都驯服进冷酷坚挺的机器码流水线中——这正是每一位深耕算子内核的系统极客,将计算性能推向物理理论天花板的硬核内功。
2026-10-23 22:08:14
631
原创 分布式多 Agent 跨节点事务与两阶段提交(2PC):在 Rust 中保证跨模型决策的状态原子性
当人工智能从“单机对话玩具”迈向“多机自治工业集群”时,传统的概率思维必须向严密的分布式一致性科学低头。两阶段提交协议虽然诞生于上世纪的经典数据库理论,但它所确立的“分权准备、全票提交、异常全量回滚”的核心哲学,恰恰是驯化现代不可预测的大模型、让跨节点复杂协同具备工业级严谨度最坚固的类型学锚点。
2026-10-23 22:07:34
624
原创 1024 倒计时 24 小时:一个系统级极客的数字生存指南与 Rust 心灵礼物
再过 24 个小时,就是 1024 程序员节。朋友圈里已经开始被各大互联网大厂的公关通稿刷屏:抽奖、格子衫玩偶、免费下午茶、以及各路大 V 关于“AI 时代程序员会不会被淘汰”的焦虑贩卖。作为一个在考研泥潭里挣扎过、二本非科班自学转码、靠死磕底层编译原理和内存模型一路摸爬滚打出来的系统工程师,我看着屏幕上闪烁的光标,内心却只有出奇的平静。在这个算法迭代以周为单位、框架名词日新月异、AI 生成代码以每秒数百行狂暴倾泻的时代,程序员这个职业似乎正站在一个前所未有的十字路口。
2026-10-23 22:06:39
602
原创 百万级向量余弦相似度极限压测:AVX-512 与 ARM Neon 跨平台 SIMD 算子吞吐横评
在现代超大规模分布式存储与智能计算系统的较量中,单纯依赖高级抽象的时代已经结束。无论是 x86 阵营的 AVX-512 暴风雨般的宽位计算,还是 ARM 阵营的高效 Neon 流水线,Rust 都以其对底层汇编与硬件固有指令毫无妥协的原生支持,为开发者提供了直面硬件微架构的终极权力。掌握这套跨平台异构算子调优内功,无论未来的硬件基础设施如何迁移演化,你的核心系统都能永远屹立在算力吞吐的最巅峰。
2026-10-22 21:50:32
584
原创 llama.cpp 多实例并发压测实战:在 Rust 中构建万级 QPS 高并发推理压测发生器
高并发压测工具的编写,是对系统级异步 I/O、内存开销与统计精度的一次全面大考。通过 Rust 赋予的轻量级协程与零抽象损耗网络协议栈,我们仅用单台 8 核 16GB 的普通测试主机,就能轻而易举地模拟出上万名真实用户同时在线高频流式交互的极端负载。只有用最严密的压测工具将生产集群推向物理极限,我们才能在大规模流量洪峰真正降临之时,拥有稳如磐石的系统底气。
2026-10-22 21:49:55
494
原创 边缘 API 网关中的轻量推理插件:基于 Rust + WebAssembly 在 Envoy/Pingora 中实现动态内容风控
在 AI 大模型重塑企业核心业务的今天,传统的四层/七层静态规则 WAF 已完全无法应对狡黠多变的语义级提示词攻击。将轻量模型推到最前线的边缘网关,利用 Rust 编写出的 WebAssembly 插件在毫秒不差的瞬间截断恶意流量——这种“在离炮火最近的地方完成精准防御”的架构理念,正在成为新一代云原生 AI 基础设施的标准范式。
2026-10-22 21:49:15
627
原创 复杂多 Agent 状态机异常回滚:基于 Event Sourcing(事件溯源)与不可变快照的事务性恢复
在复杂多智能体协同架构的演进中,状态管理的最高法则不是“如何祈祷程序不犯错”,而是**“如何让每一次错误都具备确定性回滚与事后审计的能力”**。通过将事件溯源的不可变哲学与 Rust 严密的代数类型系统深度绑定,我们赋予了系统“时间旅行”的超能力。让过去的每一步都有据可查,让未来的每一步错误都能从容撤回——这才是构建真正具备工业级坚固度的自治智能体底座的终极之道。
2026-10-22 21:48:36
609
原创 1024 程序员节前夕的思考:代码的坚固性,是系统极客对数字世界的最高致敬
我们到底该如何定义一名系统级极客的专业尊严?是写出了多么花哨的前端动画?还是在简历上堆砌了多少个时髦的云原生框架名词?都不是。一名程序员真正的硬核尊严,刻在他写下的每一行代码的“坚固性(Robustness)”之中。这就是为什么即便被借用检查器折磨得体无完肤,我也依然不可救药地深爱着 Rust 的根本原因。它拒绝妥协:如果你无法在数学上证明一个引用在它的生命周期内是百分之百有效的,编译器宁可拒绝生成机器码,也绝不给你任何制造 Use-After-Free 的机会;
2026-10-22 21:47:55
603
原创 从编译器死磕到系统敬畏:一个二本转码者在 Rust 严密规则下的涅槃心路
十月下旬的北方深夜,窗外的银杏树叶已经落满了一地,风声在寂静的街道上呜咽作响。显示器右下角的时间跳到了凌晨三点。看着终端里整整齐齐跑通的 Criterion 性能压测曲线,以及那一行行被 LLVM 优化得宛如教科书般的紧凑汇编,我长长地舒了一口气,点燃了一支烟。四年前的这个时候,我也在经历着人生中最冷的一个深秋。那一年考研初试成绩出来,总分差了国家线十几分,面对着调剂无门的残酷现实和周围人异样的眼光,我拎着一个编织袋,从那所偏僻的普通二本院校灰头土脸地搬了出来。
2026-10-21 16:15:07
499
原创 突破内存墙:向量距离计算中的矩阵分块(Tiling)与 L3 缓存亲和性最大化实战
在现代高并发与大规模数据计算中,单纯追求浮点峰值算力(FLOPS)只是初级阶段的浅层功夫。真正的工业级性能怪兽,是在洞悉了 CPU 缓存层级、主存延迟和物理总线带宽的硬件极限后,精心通过算法代数重组,把每一块数据都以最高的效率压榨在高速缓存里。学会矩阵分块,学会用空间换取时间局部性,你才能真正推开那堵横亘在每一个系统工程师面前的——沉重而残酷的“内存墙”。
2026-10-21 16:13:07
475
原创 深入 Tokio 信号通知机制:基于 AtomicWaker 的无锁跨线程唤醒微架构剖析
在异步系统软件的最深处,没有花哨的高级语法糖,只有冰冷的原子操作指令与内存屏障。用短短几十行极其优雅的代码,将一个曾经困扰无数多线程开发者的幽灵时序漏洞,彻底驯服在严格的形式化数学证明之中。深入剖析这颗螺丝钉的微观物理构造,是每一个有志于问鼎工业级异步底层开发的系统工程师,向着现代计算机体系结构核心迈进的必修一课。
2026-10-21 16:07:38
572
原创 无锁栈(Treiber Stack)与 ABA 问题的终极对决:基于 Hazard Pointer(风险指针)与 Epoch 的安全内存回收
在现代系统级软件工程中,无锁并发是一把极其锋利但极易弑主的手术刀。任何忽视了硬件微架构内存重排与 ABA 物理陷阱的无锁代码,都无异于在沙滩上修建摩天大楼。学会运用 Hazard Pointer 与 Epoch 分代回收这类工业级安全内存回收理论,在指针生命的每一微秒筑起坚固的防线——这正是从“代码编写者”淬炼为“系统级架构专家”最关键的一道淬火之路。
2026-10-21 16:04:28
598
原创 跨 FFI 边界的异常与恐慌穿透灾难:如何在 C-ABI 边界构筑绝对安全的 catch_unwind 隔离网
跨语言系统的坚固性,取决于系统边界最脆弱的那一环。在 Rust 的类型安全世界与外部荒野一般的 C-ABI 之间,必须时刻保持最极致的清醒与防御。把每一次可能发生的恐慌都牢牢锁在沙箱内部,让错误在边界转化为明确的协议契约——这是每一个编写工业级原生扩展库的 Rust 极客必须恪守的第一道安全准则。
2026-10-21 15:57:36
486
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅