惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
阮一峰的网络日志
阮一峰的网络日志
G
Google Developers Blog
J
Java Code Geeks
Blog — PlanetScale
Blog — PlanetScale
大猫的无限游戏
大猫的无限游戏
云风的 BLOG
云风的 BLOG
Vercel News
Vercel News
L
LangChain Blog
Hugging Face - Blog
Hugging Face - Blog
T
The Blog of Author Tim Ferriss
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Stack Overflow Blog
Stack Overflow Blog
P
Proofpoint News Feed
腾讯CDC
博客园_首页
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
D
DataBreaches.Net
Microsoft Security Blog
Microsoft Security Blog
有赞技术团队
有赞技术团队
博客园 - 叶小钗

News Hacker | 极客洞察

Rockstar GTA 6 团队组工会:薪酬透明、灵活工时、反 crunch 古罗马公寓:日常、城市规划与沉浸式体验 AI时代的专家价值:验证、经验与大学角色 Chad Whitacre 退 tech 转离线:Home Depot、印刷杂志、东正教社区 本地 Git remote:共享、隔离与 GitHub 误解 AI只该做琐事,别替代人情与创作 AISlop:检测 AI 生成代码坏味道的多语言 CLI 英国低价值采购系统:每月零申报的官僚负担 郁金香狂热:泡沫神话与理性争议 用 LLM 写代码,也要让人比模型更累 AI会重演前端“失去的十年”吗? AI 编程提产却压缩思考,工程质量与协作承压 Cloudflare 多 agent AI 代码评审引发成本与流程争议 500K AI电影“戛纳首映”被质疑只是公关噱头 8×H200跑2B模型到3k tok/s,“标准GPU”标题引争议 防水夹克演化:材料回潮、帽兜变迁与AI争议 意大利人与荷兰人教学时共享手势本能 Claude Code 隐藏配置考古:文档滞后、版本易碎与自动执行争议 大众汽车用 client assertion 阻断 Home Assistant 接入 Zot 支持 Claude Opus 4.8,评论聚焦 Claude Code 计费与 harness 神秘 Hy3 LLM 在 OpenRouter 霸榜:便宜、刷量与隐私争议 佛州 Blue Origin New Glenn 静态点火爆炸,堪比 N1 联网汽车监控升级:数据售卖、监管失灵与断网自保 Blue Origin New Glenn静态点火爆炸,发射台损毁恐延一年 住宅建造为何难规模化:地段、法规、偏好与收入 十种基础云:观云分类、光学现象与云计算误会 据称被 Shopify 收购后,Garnix 关停并开源 Bot Company疑借Airbnb私测家务机器人,致房屋受损 Coalton:Common Lisp 上的静态类型 Lisp,讨论集中在上手与类型建模 ktx:面向 data agents 的开源可执行上下文层,自动生成语义层与业务 wiki
Bijou64:用首字节定长的 uint64 变长整数编码
2026-05-30 · via News Hacker | 极客洞察

🎯 讨论背景

Bijou64 是一篇讨论新的 variable-length integer encoding 的设计:前 1 个字节直接给出长度,0x00–0xF7 用作单字节值,较大的值则用首字节指明后续字节数,因此每个整数只有一种 canonical representation。评论把它放到 LEB128(DWARF 调试信息和 WASM(WebAssembly,一种在浏览器与运行时里使用的字节码格式)常用的变长整数)这个老问题上比较,因为 LEB128 允许 overlong encoding,而这会牵涉链接、签名、内容寻址和解析一致性。很多人又把话题扩展到 protobuf、QUIC、SQLite 的 varint 以及 BER-TLV(ASN.1 相关的长度-值编码),讨论它们在压缩率、SIMD 解码、边界检查和可补丁性之间的权衡。还有人指出,编译器链接、流式写入和协议封装等场景会故意保留“多字节但不唯一”的表示,以便先预留空间、后回填长度。

📌 讨论焦点

SIMD 与解码并行性

一部分评论认为 Bijou64 在 SIMD 场景下并不占优,因为它的后续字节依赖首字节,边界信息不如 ULEB128 那样固定、可提前批量探测。相比之下,ULEB128 可以用 continuation bit 很快找出多个边界,更容易在一个向量窗口里并行处理。也有人反驳说,单值解码本身仍然可以用 SIMD 指令完成,只是它和真正的 byte-parallel codec 属于不同设计空间。讨论最后基本收敛到:如果是批量解析大量整数、搜索倒排表或类似场景,边界可预测性比“第一字节看出长度”更关键。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9] [来源10] [来源11]

规范化编码与安全

很多评论把焦点放在 canonicality 上,认为同一数值只有一种合法表示,能减少解析器分歧和隐藏 bug。有人举出 UTF-8 overlong encoding、ASN.1 BER/DER、SAML XML signature wrapping 和 Bitcoin transaction malleability 之类的经典问题,说明非唯一编码会给签名、内容寻址和互操作带来麻烦。还有人提到 fuzzing 时,只有单一编码时更容易做 round-trip 检查,因为测试工具不会很快被“替代表示”分流。也有人指出,严格规范化并不自动消灭漏洞,range check、overflow check 和边界验证仍然必须做。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9] [来源10] [来源11] [来源12]

预留空间、链接与流式写入

另一组评论强调,非规范编码在工程上是有用的,尤其是在先占位、后回填长度的场景里。编译器链接时常常不知道最终地址,先用最宽形式写入可以避免把后面的代码整体挪位;流式写入 msgpack、重写媒体容器、或在缓冲区里预留长度字段时也会用到类似技巧。有人认为这类设计的核心价值不是“省字节”,而是让写入流程不必做两遍编码。也有人提醒,若把这种技巧当成默认方案,容易掩盖更好的数据布局选择。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9]

与现有格式的比较

评论区不断拿 Bijou64 和现有 varint 方案做横向对比,尤其是 LEB128、protobuf varints、SQLite varints 和 QUIC varint。有人指出 SQLite3 的 varint 是 big-endian 的 1-9 字节方案,而 SQLite4 的思路更接近这里讨论的方向;也有人提到 vu128、VByte、Elias omega coding 和 metric/imperial varint 作为相关探索。讨论普遍认为,Bijou64 的优点是小整数表示更直观、uint64 范围内不需要第 10 个字节,但代价是放弃了 LEB128 那种从任意位置快速定位边界的能力。整体上,大家承认没有一种 varint 能同时在压缩率、速度、可流式解析和实现简单性上都赢。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9] [来源10] [来源11] [来源12] [来源13]

64 位上限与实现风险

还有人专门盯住这个设计的上限:它只面向 uint64,而不是任意精度整数,因此在 bigInt 风格用途上会显得局促。更大的担忧是实现细节:如果忘了处理首字节的最大值分支,或者没有把 end_address / max_read 之类的限制传进去,就可能出现越界读、wraparound 或错误偏移。评论里有人认为这种风险并不比 LEB128 更低,只是把错误形态换了一种;也有人觉得只要 decoder 写得足够严格,这些都只是普通的边界检查问题。总体看,这种格式的“简化”会把压力从 canonicality 转移到 overflow 和 buffer validation 上。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9]

📚 术语解释

varint: variable-length integer 的简称,用可变字节数表示整数以节省小数值空间。

LEB128: Little Endian Base 128,一种常见的变长整数编码,靠 continuation bit 连接多个字节。

ULEB128: unsigned LEB128,LEB128 的无符号版本,常用于 DWARF、WASM 等格式。

SIMD: Single Instruction, Multiple Data,用向量指令并行处理多个数据。

canonicality: 规范化/唯一表示属性;同一个值只有一种合法编码。

overlong encoding: 用比必要更多的字节表示同一值的非规范编码。