ref: 2006e2e07f073a79a84194a304e4958a8739d645
parent: e3de5932e7f2296c59804576746a3ff28c59b736
author: Runxi Yu <runxiyu@umich.edu>
date: Sun Mar 29 09:26:10 EDT 2026
format/commitgraph: Remove MT-ReadSafe; use MT-Safe/Unsafe
--- a/format/commitgraph/read/bloom.go
+++ b/format/commitgraph/read/bloom.go
@@ -8,6 +8,8 @@
)
// HasBloom reports whether any layer has changed-path Bloom data.
+//
+// Labels: MT-Safe.
func (reader *Reader) HasBloom() bool { for i := range reader.layers {layer := &reader.layers[i]
@@ -20,6 +22,8 @@
}
// BloomVersion returns the changed-path Bloom hash version, or 0 if absent.
+//
+// Labels: MT-Safe.
func (reader *Reader) BloomVersion() uint8 { for i := len(reader.layers) - 1; i >= 0; i-- {layer := &reader.layers[i]
@@ -43,7 +47,7 @@
//
// Returns BloomUnavailableError when this commit graph has no Bloom data.
//
-// Labels: Life-Parent.
+// Labels: MT-Safe, Life-Parent.
func (reader *Reader) BloomFilterAt(pos Position) (bloom.Filter, error) {layer, err := reader.layerByPosition(pos)
if err != nil {--- a/format/commitgraph/read/commitat.go
+++ b/format/commitgraph/read/commitat.go
@@ -9,7 +9,7 @@
// CommitAt returns decoded commit-graph metadata at one position.
//
-// Labels: Life-Independent.
+// Labels: MT-Safe, Life-Independent.
func (reader *Reader) CommitAt(pos Position) (Commit, error) {layer, err := reader.layerByPosition(pos)
if err != nil {--- a/format/commitgraph/read/commits.go
+++ b/format/commitgraph/read/commits.go
@@ -15,6 +15,8 @@
}
// NumCommits returns total commits across loaded layers.
+//
+// Labels: MT-Safe.
func (reader *Reader) NumCommits() uint32 {return reader.total
}
--- a/format/commitgraph/read/hash.go
+++ b/format/commitgraph/read/hash.go
@@ -9,6 +9,8 @@
)
// HashVersion returns the commit-graph hash version.
+//
+// Labels: MT-Safe.
func (reader *Reader) HashVersion() uint8 {return reader.hashVersion
}
--- a/format/commitgraph/read/iterators.go
+++ b/format/commitgraph/read/iterators.go
@@ -9,7 +9,7 @@
// AllPositions iterates all commit positions in native layer order.
//
-// Labels: Life-Parent.
+// Labels: MT-Safe, Life-Parent.
func (reader *Reader) AllPositions() iter.Seq[Position] { return func(yield func(Position) bool) { for layerIdx := range reader.layers {@@ -31,7 +31,7 @@
// AllOIDs iterates all commit object IDs in native layer order.
//
-// Labels: Life-Parent.
+// Labels: MT-Safe, Life-Parent.
func (reader *Reader) AllOIDs() iter.Seq[objectid.ObjectID] { return func(yield func(objectid.ObjectID) bool) {positions := reader.AllPositions()
--- a/format/commitgraph/read/layerinfo.go
+++ b/format/commitgraph/read/layerinfo.go
@@ -9,7 +9,7 @@
// Layers returns loaded layer metadata in native chain order.
//
-// Labels: Life-Independent.
+// Labels: MT-Safe, Life-Independent.
func (reader *Reader) Layers() []LayerInfo {out := make([]LayerInfo, 0, len(reader.layers))
for i := range reader.layers {--- a/format/commitgraph/read/lookup.go
+++ b/format/commitgraph/read/lookup.go
@@ -6,6 +6,8 @@
)
// Lookup resolves one object ID to one graph position.
+//
+// Labels: MT-Safe.
func (reader *Reader) Lookup(oid objectid.ObjectID) (Position, error) { if oid.Algorithm() != reader.algo { return Position{}, &NotFoundError{OID: oid}--- a/format/commitgraph/read/oidat.go
+++ b/format/commitgraph/read/oidat.go
@@ -7,7 +7,7 @@
// OIDAt returns object ID at one position.
//
-// Labels: Life-Independent.
+// Labels: MT-Safe, Life-Independent.
func (reader *Reader) OIDAt(pos Position) (objectid.ObjectID, error) {layer, err := reader.layerByPosition(pos)
if err != nil {--- a/format/commitgraph/read/reader.go
+++ b/format/commitgraph/read/reader.go
@@ -4,7 +4,7 @@
// Reader provides read-only access to one mmap-backed commit-graph snapshot.
//
-// Labels: MT-ReadSafe, Close-Caller.
+// Labels: MT-Safe, Close-Caller.
type Reader struct {algo objectid.Algorithm
hashVersion uint8
--- a/furgit.go
+++ b/furgit.go
@@ -27,7 +27,6 @@
// Concurrency labels:
//
// - MT-Safe: safe for concurrent use.
-// - MT-ReadSafe: safe for concurrent read-only use.
// - MT-Unsafe: not safe for concurrent use without external synchronization.
//
// Dependency labels:
--
⑨