Skip to content

Conversation

@renovate
Copy link

@renovate renovate bot commented Sep 15, 2025

Update Request | Renovate Bot

This PR contains the following updates:

Package Type Update Change Age Adoption Passing Confidence
actions/stale action minor v10.0.0 -> v10.1.0 age adoption passing confidence
github.com/brianvoe/gofakeit/v7 require minor v7.7.3 -> v7.9.0 age adoption passing confidence

Release Notes

actions/stale (actions/stale)

v10.1.0

Compare Source

What's Changed

New Contributors

Full Changelog: actions/stale@v10...v10.1.0

brianvoe/gofakeit (github.com/brianvoe/gofakeit/v7)

v7.9.0: ID Generator

Compare Source

New: ID() — Fast, Human-Readable Random Identifier

(GoFakeIt v7.9.0)

gofakeit.ID() is a new high-performance identifier generator designed for speed, readability, and practically zero collision probability.

Unlike UUID v4 or XID, this generator is intentionally random-first, not structure-based.
Perfect for mock APIs, test data, fixtures, seed data, and temporary identifiers.


Highlights

  • Human readable alphabet, no confusing characters
    23456789abcdefghjkmnpqrstuvwxyz (no 1, l, i or 0, o to alleviate confusion)
  • Fast
  • Memory Allocation
  • Generates from your rand source
  • Shorter than UUID, faster than XID, and requires no coordination

Example

id := gofakeit.ID()
fmt.Println(id)
// → "3t9qf4c92npxhw7bg6y0"

Performance Benchmarks

Measured on Go 1.25

Generator / Function Benchmark Name ops/sec ns/op B/op allocs/op
gofakeit.ID() BenchmarkID-10 31,383,146 37.8 ns 24 1
gofakeit.UUIDv4() BenchmarkUUIDv4-10 22,131,577 53.8 ns 48 1
github.com/rs/xid BenchmarkXID-10 16,190,817 74.2 ns 0 0
github.com/google/uuid (v4) BenchmarkGoogleUUIDv4-10 3,098,770 386.1 ns 64 2

Takeaway: gofakeit.ID() is ~2× faster than XID and ~10× faster than UUID v4, while being shorter and human-readable.


Collision Probability (Randomness Math)

  • ID length: 20 characters
  • Alphabet: 32 slots with one duplicated character (intentional) → avoids retries, maximizes speed
  • Effective entropy: ≈ 98.25 bits

Even under very large bursts, duplication is astronomically unlikely

Collision probability when generating n IDs within 1 second (birthday bound)
n (IDs in 1s) gofakeit.ID() collision probability
100,000 0.00000000000000000001326
1,000,000 0.000000000000000001326017
10,000,000 0.000000000000000132601736
100,000,000 0.000000000000013260173678
1,000,000,000 0.000000000001326017367838

For comparison (same n):

  • UUID v4 (122 bits): much lower probabilities (but significantly slower and longer)
  • XID: structural uniqueness (time + machine + pid + counter). Treat collisions as operationally zero when configured normally.

Need structural, sortable IDs? Use XID or Snowflake.
Want random, readable, fast? Use gofakeit.ID().


RNG Behavior

Mode Behavior
Default (gofakeit.ID()) PCG for speed, seeded via crypto/rand → fast + unpredictable
Full crypto (NewFaker(source.NewCrypto())) crypto/rand for every ID → maximum randomness (slower)
Deterministic (New(seed)) PCG with fixed seed → reproducible ID sequences (useful for tests/fixtures)

We seed PCG with a cryptographic seed when seed == 0. This prevents accidental identical streams across processes/containers.


Example Usage

package main

import (
	"fmt"

	"github.com/brianvoe/gofakeit/v7"
	"github.com/brianvoe/gofakeit/v7/source"
)

func main() {
	// Fast ID — PCG, automatically crypto-seeded
	fmt.Println("fast ID:", gofakeit.ID())

	// Cryptographically secure per-ID RNG
	crypto := source.NewCrypto()
	faker := gofakeit.NewFaker(crypto, true)
	fmt.Println("crypto ID:", faker.ID())
}

v7.8.2

Compare Source

v7.8.1

Compare Source

v7.8.0

Compare Source


Configuration

📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@talos-bot talos-bot moved this to In Review in Planning Sep 15, 2025
@smira smira removed this from Planning Sep 15, 2025
@renovate renovate bot force-pushed the renovate/dependencies branch 3 times, most recently from 01739da to f0636e7 Compare September 24, 2025 19:40
@renovate renovate bot force-pushed the renovate/dependencies branch 2 times, most recently from 575a70f to 97fbb8b Compare October 4, 2025 07:30
@renovate renovate bot changed the title chore: update dependencies chore: update actions/stale action to v10.1.0 Oct 6, 2025
@renovate renovate bot force-pushed the renovate/dependencies branch 3 times, most recently from 3319f71 to 8299b51 Compare October 13, 2025 12:07
@renovate renovate bot changed the title chore: update actions/stale action to v10.1.0 chore: update dependencies Oct 13, 2025
@renovate renovate bot force-pushed the renovate/dependencies branch 2 times, most recently from 10b4fe0 to 10bdcde Compare November 1, 2025 20:09
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@renovate renovate bot force-pushed the renovate/dependencies branch from 10bdcde to 63f1285 Compare November 9, 2025 07:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant