浏览器里的“安全阴谋”:为什么 Go 1.27 的 UUIDv7 会离奇丧失随机性? (opens in new tab)
本文永久链接 – 大家好,我是Tony Bai。 在刚刚发布第一个候选版本(RC1)的 Go 1.27 中,一个让开发者感到贴心的特性升级,莫过于标准库终于原生内建了 uuid 包。我们终于可以告别第三方依赖,用最地道、最安全的方式在标准库里生成高并发、时间有序的 UUIDv7。 然而,新包刚上新,一桩诡异的“灵异事件”就在 WebAssembly(WASM)和浏览器生态中传开了。 知名 Go 游戏引擎 Ebitengine 的创造者 hajimehoshi 在测试 Go 1.27rc1 时,提交了一个 Bug(Issue #80084): 当他在浏览器环境(GOOS=js GOARCH=wasm)下调用 Go 1.27 新标准库的 uuid.NewV7() 时,生成的 UUID 居然极度规律。在代表随机数和亚毫秒时间戳的第三组字符中,无论运行多少次,永远雷打不动地包含“7000”! 019ee60f-29b3-7000-a12b-f817e25db8f4 019ee610-29c7-7000-bc34-f04bc09150bb 019ee610-2eb4-7000-884a-d...
Read the original article