uptrace/bun

Replace unmaintained github.com/tmthrgd/go-hex with stdlib encoding/hex

开放

#1,385 创建于 2026年6月18日

 (2 条评论) (2 个反应) (0 位负责人)Go (279 个派生)user submission
good first issue

仓库指标

星标
 (4,826 个星标)
PR 合并指标
 (平均合并 76天 17小时) (30 天内合并 1 个 PR)

描述

github.com/tmthrgd/go-hex has been unmaintained for ~7 years (last commit 2019). We'd love to use bun but our SBOM/supply-chain scanning flags it as an abandoned dependency. Since bun uses only two API-compatible functions from it afaik, I'd like to propose to replace it with the standard go library encoding/hex.

Where it's used (quick search in the repo)

The dependency is imported in internal/hex.go - aliased as fasthex, using:

  • fasthex.EncodedLen(...)
  • fasthex.Encode(...) Every other hex reference in the codebase (again quick search in the repo) already uses stdlib encoding/hex. It's listed as a direct dependency in the root go.mod and as // indirect across the dialect/example modules.

Why we'd want to replace it

  • It's currently unmaintained: if a defect/vulnerability were found, there's no upstream to patch it. (There are no known CVEs today — currently this is only a maintenance/supply-chain concern)
  • A dependency could be droppen: rather than swapping one third-party lib for another - encoding/hex is maintained by the Go team and patched through normal Go releases.
  • AFAIK it would be API- and behavior-compatible: EncodedLen and Encode have identical signatures and semantics, so the SQL output should be unchanged.

The only tradeoff I can see

go-hex provides SIMD-accelerated encoding, so stdlib encoding/hex may be slower when serializing large []byte/bytea blobs. I guess for most workloads this is is probably negligible, but maybe someone can include a benchmark on a representative blob size if maintainers want to quantify it before deciding.

Happy to open a PR if this direction is acceptable.

贡献者指南