作者对 PyCharm 的“全行代码补全”(Full Line Completion)功能进行了评估,指出该 AI 工具经常建议不安全的代码模式,例如在 `urllib3` 中禁用 SSL 警告和证书验证。如果开发人员采纳这些建议,可能会无意中给代码库引入严重的漏洞。 在报告此问题后,作者发现 JetBrains 对这种行为是否构成正式的安全漏洞态度模糊。虽然 JetBrains 最初为了披露目的将其标记为漏洞,但后来似乎不愿将其列为优先处理事项。尽管经过了 90 天的等待并确认问题在最新更新中依然存在,作者指出该功能并未得到实质性改进。 作者认为,虽然为 AI 代码生成错误分配 CVE 编号可能不是合适的解决方案,但目前的状况确实存在问题。由于开发人员为了提高效率而依赖 IDE 的建议,这些模型中普遍存在的“不安全默认设置”构成了系统性风险。作者总结称,这些工具必须进行改进以优先考虑安全性,因为忽视这一问题会迫使开发人员承担风险,而这些风险正是由本应提供辅助的工具所引入的。
WebAssembly (Wasm) 生态系统正朝着稳定且正式规范的 **组件模型 1.0 (Component Model 1.0)** 迈进。作为 Wasm 的基础“微内核”,组件模型定义了二进制文件如何进行链接与通信,而 WASI 则在此架构之上提供系统级服务。
通往 1.0 版本之路围绕五个战略支柱展开:
1. **ABI 改进**:过渡到“惰性 (lazy)”ABI 以消除内存碎片和性能开销,同时提供更好的多值返回支持。
2. **原生浏览器集成**:通过 `jco` 跟踪的“使用组件 (use components)”遥测数据,证明在 V8 和 SpiderMonkey 等引擎中进行原生实现的必要性,这将带来显著的性能提升。
3. **易于实现**:简化规范并提供 C-ABI 头文件,使实现组件模型变得像 WASI P1 一样直接。
4. **生态系统增长**:扩展文档、跨语言工具,以及录制/重放 (record/replay) 等创新调试工作流。
5. **表达力差距**:扩展 WebAssembly 接口类型 (WIT) 语言,以更好地支持回调、Getter/Setter 和运行时实例化等常见编程模式。
尽管协作式线程和流拼接 (stream splicing) 等功能将在初始版本发布后跟进,但字节码联盟 (Bytecode Alliance) 目前专注于构建一个稳定、高性能的基础,使开发者能够放心地在当下采用这些技术。
对于他的韩语学习应用 *Kimchi Reader*,开发者需要一种快速且准确的方法来解决词形还原(lemmatization)中的歧义问题——即同一个词可能有多个词典基本形式(例如 *듣다* 和 *들다*)。
虽然他最初编写的基于规则的 Rust 词形还原器速度极快,但无法解决依赖上下文的歧义问题。初期尝试使用大语言模型(序列到序列转换)和嵌入(embeddings)的方法,要么速度太慢、准确度不足,要么需要昂贵的 GPU 基础设施。
通过重新构建问题,他取得了突破:利用 BERT 风格的架构,从规则引擎已识别出的“闭集”候选词中进行选择。这防止了模型产生无效的词形。通过使用 14M 参数的 *KoELECTRA-small* 模型、进行 int8 量化,并编写自定义的 SIMD 优化 Rust 推理库,开发者实现了极高的效率。
最终的系统完全运行在他现有的 16 核 CPU 上,每秒可解决约 7,300 个歧义。这使得该应用无需额外的 GPU 硬件,即可在几分钟内处理整本书以生成用户统计数据,显著提高了频率列表、语法追踪和整体用户体验的准确性。
Oscar Toledo G. 分享了他为第 29 届国际混乱 C 代码大赛(IOCCC)开发空当接龙游戏的经历。该比赛的目标是编写出功能完备且复杂的 C 程序,同时通过严格的长度和字符限制,使其在刻意设计的干扰下难以阅读。
Toledo 选择空当接龙是出于他对该游戏的深厚感情,以及它作为 Windows 3.1 拖拽操作教学案例的历史意义。为了将逻辑压缩成紧凑且混乱的格式,他利用 `ncurses` 库进行终端交互,并结合 Unicode 符号和颜色来呈现卡牌。他将操作简化为 Tab 和空格键,并添加了发三张牌以及 Windows 风格的计分系统等功能。
该项目突显了在处理跨平台 `ncurses` 差异和 UTF-8 限制时所面临的技术挑战。尽管他的作品未获奖,但 Toledo 展示了他极具创意的混淆技术——例如交换数组索引和替换标准运算符——旨在以此向其他 C 程序员发起挑战。源码现已开放,供那些有兴趣体验这一紧凑版控制台经典游戏的用户使用。
这篇文章分析了 Linux 内核的 `AF_UNIX` 垃圾回收机制,该机制旨在回收那些在用户空间已不可达但仍处于“传输中”(通过 `SCM_RIGHTS` 传递)的内核对象。
内核最近用一种基于 Tarjan 算法、更高效的实现取代了传统的垃圾回收器。该新系统将传输中的套接字表示为图中的顶点,并利用强连通分量(SCC)来识别可回收的循环引用。通过为稳定的图状态维护快速路径,它避免了不必要的开销。
然而,此次重写引入了一个严重的释放后使用(Use-After-Free)漏洞(CVE-2025-40214)。其根本原因是 `unix_vertex` 结构体中的 `scc_index` 字段未初始化。由于该结构体是通过 `kmalloc` 分配的,新分配的顶点可能会意外继承之前被释放对象中残留的 `scc_index` 值。如果该残留值与某个活跃套接字的 `scc_index` 相匹配,垃圾回收器就会错误地将该活跃套接字标记为“已失效”,进而清除其接收队列并触发释放后使用漏洞。
修复方案确保了每个新顶点都会被分配一个唯一的、单调递增的 `scc_index`,从而避免了导致此次漏洞的意外别名问题。