{"id":35214700,"url":"https://github.com/sixafter/prng-chacha","last_synced_at":"2026-02-13T02:21:38.642Z","repository":{"id":305266670,"uuid":"1022424848","full_name":"sixafter/prng-chacha","owner":"sixafter","description":"A fast and efficient cryptographically secure pseudorandom number generator (CSPRNG) based on ChaCha20, designed for high-performance applications and written in Go.","archived":false,"fork":false,"pushed_at":"2026-01-22T21:20:24.000Z","size":358,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-29T03:46:57.352Z","etag":null,"topics":["chacha20","cipher-algorithms","crypto","csprng","go","golang","prng","stream-cipher"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sixafter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-19T03:49:51.000Z","updated_at":"2026-01-22T21:19:35.000Z","dependencies_parsed_at":"2025-07-19T08:52:53.085Z","dependency_job_id":"bde15f96-618f-4873-882f-7c0fba44c02c","html_url":"https://github.com/sixafter/prng-chacha","commit_stats":null,"previous_names":["sixafter/prng-chacha"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/sixafter/prng-chacha","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sixafter%2Fprng-chacha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sixafter%2Fprng-chacha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sixafter%2Fprng-chacha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sixafter%2Fprng-chacha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sixafter","download_url":"https://codeload.github.com/sixafter/prng-chacha/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sixafter%2Fprng-chacha/sbom","scorecard":{"id":1236716,"data":{"date":"2025-09-01T17:42:46Z","repo":{"name":"github.com/sixafter/prng-chacha","commit":"00fe7624feb377bfa87b295aa9e1d06caba977d2"},"scorecard":{"version":"v5.2.1","commit":"ab2f6e92482462fe66246d9e32f642855a691dc1"},"score":6.3,"checks":[{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#security-policy"}},{"name":"Code-Review","score":0,"reason":"Found 0/5 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"project was created within the last 90 days. Please review its contents carefully","details":["Warn: Repository was created within the last 90 days."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/ci.yaml:33","Info: jobLevel 'pull-requests' permission set to 'read': .github/workflows/ci.yaml:34","Warn: jobLevel 'checks' permission set to 'write': .github/workflows/ci.yaml:35","Info: jobLevel 'pull-requests' permission set to 'read': .github/workflows/release.yaml:25","Info: topLevel permissions set to 'read-all': .github/workflows/ci.yaml:28","Info: topLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yaml:10","Info: topLevel permissions set to 'read-all': .github/workflows/release.yaml:16","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:21"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yaml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/ci.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yaml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/ci.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/ci.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yaml:89: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/ci.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/ci.yaml:97: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/ci.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:76: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:82: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yaml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/codeql-analysis.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yaml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/release.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yaml:73: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/release.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/scorecard.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/scorecard.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/scorecard.yml:81: update your workflow using https://app.stepsecurity.io/secureworkflow/sixafter/prng-chacha/scorecard.yml/main?enable=pin","Warn: goCommand not pinned by hash: scripts/go-deps.sh:18","Warn: goCommand not pinned by hash: scripts/go-deps.sh:19","Warn: goCommand not pinned by hash: scripts/go-install.sh:18","Warn: goCommand not pinned by hash: scripts/go-install.sh:20","Info:   1 out of  13 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   6 third-party GitHubAction dependencies pinned","Info:   0 out of   4 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#pinned-dependencies"}},{"name":"Dependency-Update-Tool","score":0,"reason":"no update tool detected","details":["Warn: no dependency update tool configurations found"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#dependency-update-tool"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":10,"reason":"project is fuzzed","details":["Info: GoBuiltInFuzzer integration found: prng_fuzz_test.go:15","Info: GoBuiltInFuzzer integration found: prng_fuzz_test.go:42"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":8,"reason":"3 out of the last 3 releases have a total of 3 signed artifacts.","details":["Info: signed release artifact: checksums.txt.sig: https://github.com/sixafter/prng-chacha/releases/tag/v1.2.0","Info: signed release artifact: checksums.txt.sig: https://github.com/sixafter/prng-chacha/releases/tag/v1.0.1","Info: signed release artifact: checksums.txt.sig: https://github.com/sixafter/prng-chacha/releases/tag/v1.0.0","Warn: release artifact v1.2.0 does not have provenance: https://api.github.com/repos/sixafter/prng-chacha/releases/239834013","Warn: release artifact v1.0.1 does not have provenance: https://api.github.com/repos/sixafter/prng-chacha/releases/233657836","Warn: release artifact v1.0.0 does not have provenance: https://api.github.com/repos/sixafter/prng-chacha/releases/233657668"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#license"}},{"name":"Contributors","score":0,"reason":"project has 0 contributing companies or organizations -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#contributors"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 3 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#sast"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yaml:19"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":5,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'main'","Info: 'stale review dismissal' is required to merge on branch 'main'","Warn: required approving review count is 1 on branch 'main'","Info: codeowner review is required on branch 'main'","Info: 'last push approval' is required to merge on branch 'main'","Warn: 'up-to-date branches' is disabled on branch 'main'","Info: status check found to merge onto on branch 'main'","Info: PRs are required in order to make changes on branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#branch-protection"}},{"name":"CI-Tests","score":10,"reason":"3 out of 3 merged PRs checked by a CI test -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/ab2f6e92482462fe66246d9e32f642855a691dc1/docs/checks.md#ci-tests"}}]},"last_synced_at":"2025-09-01T19:31:45.370Z","repository_id":305266670,"created_at":"2025-09-01T19:31:45.371Z","updated_at":"2025-09-01T19:31:45.371Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29128621,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T17:12:17.649Z","status":"ssl_error","status_checked_at":"2026-02-05T17:11:23.670Z","response_time":65,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chacha20","cipher-algorithms","crypto","csprng","go","golang","prng","stream-cipher"],"created_at":"2025-12-29T21:22:58.305Z","updated_at":"2026-02-13T02:21:38.635Z","avatar_url":"https://github.com/sixafter.png","language":"Go","readme":"# prng-chacha\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/sixafter/prng-chacha)](https://goreportcard.com/report/github.com/sixafter/prng-chacha)\n[![License: Apache 2.0](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square)](LICENSE)\n[![Go](https://img.shields.io/github/go-mod/go-version/sixafter/prng-chacha)](https://img.shields.io/github/go-mod/go-version/sixafter/prng-chacha)\n[![Go Reference](https://pkg.go.dev/badge/github.com/sixafter/prng-chacha.svg)](https://pkg.go.dev/github.com/sixafter/prng-chacha)\n\n---\n\n## Status\n\n### Build \u0026 Test\n\n[![CI](https://github.com/sixafter/prng-chacha/workflows/ci/badge.svg)](https://github.com/sixafter/prng-chacha/actions)\n[![GitHub issues](https://img.shields.io/github/issues/sixafter/prng-chacha)](https://github.com/sixafter/prng-chacha/issues)\n\n### Quality\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=six-after_prng-chacha\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=six-after_prng-chacha)\n![CodeQL](https://github.com/sixafter/prng-chacha/actions/workflows/codeql-analysis.yaml/badge.svg)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=six-after_prng-chacha\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=six-after_prng-chacha)\n[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/sixafter/prng-chacha/badge)](https://scorecard.dev/viewer/?uri=github.com/sixafter/prng-chacha)\n\n### Package and Deploy\n\n[![Release](https://github.com/sixafter/prng-chacha/workflows/release/badge.svg)](https://github.com/sixafter/prng-chacha/actions)\n\n---\n## Overview \n\nThe `prng` package provides a high-performance, cryptographically secure pseudo-random number generator (CSPRNG) that implements the `io.Reader` interface. Designed for concurrent use, it leverages the ChaCha20 cipher stream to efficiently generate random bytes.\n\nTechnically, this PRNG is not pseudo-random but is cryptographically random.\n\nThe package includes a global `Reader` and a `sync.Pool` to manage PRNG instances, ensuring low contention and optimized performance.\n\nPlease see the [godoc](https://pkg.go.dev/github.com/sixafter/prng-chacha) for detailed documentation.\n\n---\n\n## Features\n\n* **Cryptographic Security:** Utilizes the [ChaCha20](https://pkg.go.dev/golang.org/x/crypto/chacha20) cipher for secure random number generation. \n* **Concurrent Support:** Includes a thread-safe global `Reader` for concurrent access. \n    * Up to 98% faster when using the `prng.Reader` as a source for v4 UUID generation using Google's [UUID](https://pkg.go.dev/github.com/google/uuid) package as compared to using the default rand reader.\n    * See the benchmark results [here](#uuid-generation).\n* **Efficient Resource Management:** Uses a `sync.Pool` to manage PRNG instances, reducing the overhead on `crypto/rand.Reader`. \n* **Extensible API:** Allows users to create and manage custom PRNG instances via `NewReader`.\n- **UUID Generation Source:** Can be used as the `io.Reader` source for UUID generation with the [`google/uuid`](https://pkg.go.dev/github.com/google/uuid) package and similar libraries, providing cryptographically secure, deterministic UUIDs using PRNG-CHACHA.\n\n---\n\n## Verify with Cosign\n\n[Cosign](https://github.com/sigstore/cosign) is used to sign releases for integrity verification.\n\nTo verify the integrity of the release tarball, you can use Cosign to check the signature against the public key.\n\n```sh\n# Fetch the latest release tag from GitHub API (e.g., \"v1.14.0\")\nTAG=$(curl -s https://api.github.com/repos/sixafter/prng-chacha/releases/latest | jq -r .tag_name)\n\n# Remove leading \"v\" for filenames (e.g., \"v1.14.0\" -\u003e \"1.14.0\")\nVERSION=${TAG#v}\n\n# ---------------------------------------------------------------------\n# Verify the source archive using Sigstore bundles\n# ---------------------------------------------------------------------\n\n# Download the release tarball and its signature bundle\ncurl -LO \"https://github.com/sixafter/prng-chacha/releases/download/${TAG}/prng-chacha-${VERSION}.tar.gz\"\ncurl -LO \"https://github.com/sixafter/prng-chacha/releases/download/${TAG}/prng-chacha-${VERSION}.tar.gz.sigstore.json\"\n\n# Verify the tarball with Cosign using the published public key\ncosign verify-blob \\\n  --key \"https://raw.githubusercontent.com/sixafter/prng-chacha/main/cosign.pub\" \\\n  --bundle \"prng-chacha-${VERSION}.tar.gz.sigstore.json\" \\\n  \"prng-chacha-${VERSION}.tar.gz\"\n\n# ---------------------------------------------------------------------\n# Verify the checksums manifest using Sigstore bundles\n# ---------------------------------------------------------------------\n\ncurl -LO \"https://github.com/sixafter/prng-chacha/releases/download/${TAG}/checksums.txt\"\ncurl -LO \"https://github.com/sixafter/prng-chacha/releases/download/${TAG}/checksums.txt.sigstore.json\"\n\ncosign verify-blob \\\n  --key \"https://raw.githubusercontent.com/sixafter/prng-chacha/main/cosign.pub\" \\\n  --bundle \"checksums.txt.sigstore.json\" \\\n  \"checksums.txt\"\n\n# ---------------------------------------------------------------------\n# Confirm local artifact integrity\n# ---------------------------------------------------------------------\n\nshasum -a 256 -c checksums.txt\n```\n\nIf valid, Cosign will output:\n\n```shell\nVerified OK\n```\n\n---\n\n## Verify Go module\n\nTo validate that the Go module archive served by GitHub, go mod download, and the Go\nproxy are all consistent, run the `module-verify` target. This performs a full cross-check\nof the tag archive and module ZIPs to confirm they match byte-for-byte.\n\n---\n\n## Installation\n\n```bash\ngo get -u github.com/sixafter/prng-chacha\n```\n\n---\n\n## Usage\n\n## Usage\n\nGlobal Reader:\n\n```go\npackage main\n\nimport (\n  \"fmt\"\n  \n  \"github.com/sixafter/prng-chacha\"\n)\n\nfunc main() {\n  buffer := make([]byte, 64)\n  n, err := prng.Reader.Read(buffer)\n  if err != nil {\n      // Handle error\n  }\n  fmt.Printf(\"Read %d bytes of random data: %x\\n\", n, buffer)\n}\n```\n\nReplacing default random reader for UUID Generation:\n\n```go\npackage main\n\nimport (\n  \"fmt\"\n\n  \"github.com/google/uuid\"\n  \"github.com/sixafter/prng-chacha\"\n)\n\nfunc main() {\n  // Set the global random reader for UUID generation\n  uuid.SetRand(prng.Reader)\n\n  // Generate a new v4 UUID\n  u := uuid.New()\n  fmt.Printf(\"Generated UUID: %s\\n\", u)\n}\n```\n\n---\n\n## Performance Benchmarks\n\n### Raw Random Byte Generation\n\nThese `prng.Reader` benchmarks demonstrate the package's focus on minimizing latency, memory usage, and allocation overhead, making it suitable for high-performance applications.\n\n\u003cdetails\u003e\n  \u003csummary\u003eExpand to see results\u003c/summary\u003e\n\n```shell\nmake bench-csprng\ngoos: darwin\ngoarch: arm64\npkg: github.com/sixafter/prng-chacha\ncpu: Apple M4 Max\nBenchmarkPRNG_Concurrent_SyncPool_Baseline/G2-16 \t1000000000\t         0.5689 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_Concurrent_SyncPool_Baseline/G4-16 \t1000000000\t         0.5723 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_Concurrent_SyncPool_Baseline/G8-16 \t1000000000\t         0.5711 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_Concurrent_SyncPool_Baseline/G16-16         \t1000000000\t         0.5912 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_Concurrent_SyncPool_Baseline/G32-16         \t1000000000\t         0.5396 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_Concurrent_SyncPool_Baseline/G64-16         \t1000000000\t         0.5438 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_Concurrent_SyncPool_Baseline/G128-16        \t1000000000\t         0.5442 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSerial/Serial_Read_8Bytes-16            \t67387809\t        17.69 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSerial/Serial_Read_16Bytes-16           \t49208646\t        24.18 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSerial/Serial_Read_21Bytes-16           \t40782282\t        28.73 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSerial/Serial_Read_32Bytes-16           \t32735828\t        36.40 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSerial/Serial_Read_64Bytes-16           \t20102887\t        59.11 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSerial/Serial_Read_100Bytes-16          \t13549210\t        88.57 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSerial/Serial_Read_256Bytes-16          \t 7663681\t       158.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSerial/Serial_Read_512Bytes-16          \t 4108966\t       292.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSerial/Serial_Read_1000Bytes-16         \t 2069100\t       577.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSerial/Serial_Read_4096Bytes-16         \t  546291\t      2176 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSerial/Serial_Read_16384Bytes-16        \t  138847\t      8614 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_16Bytes_2Goroutines-16         \t315906483\t         3.780 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_16Bytes_4Goroutines-16         \t315760286\t         3.834 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_16Bytes_8Goroutines-16         \t319002478\t         3.759 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_16Bytes_16Goroutines-16        \t320004976\t         3.766 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_16Bytes_32Goroutines-16        \t319288269\t         3.771 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_16Bytes_64Goroutines-16        \t320027024\t         3.747 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_16Bytes_128Goroutines-16       \t322911223\t         3.718 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_21Bytes_2Goroutines-16         \t268402184\t         4.528 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_21Bytes_4Goroutines-16         \t267405596\t         4.472 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_21Bytes_8Goroutines-16         \t266455920\t         4.447 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_21Bytes_16Goroutines-16        \t267324904\t         4.396 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_21Bytes_32Goroutines-16        \t270261190\t         4.386 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_21Bytes_64Goroutines-16        \t278794970\t         4.293 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_21Bytes_128Goroutines-16       \t278603161\t         4.382 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_32Bytes_2Goroutines-16         \t218843803\t         5.521 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_32Bytes_4Goroutines-16         \t221350075\t         5.433 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_32Bytes_8Goroutines-16         \t222382471\t         5.397 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_32Bytes_16Goroutines-16        \t219519555\t         5.406 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_32Bytes_32Goroutines-16        \t227004950\t         5.379 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_32Bytes_64Goroutines-16        \t227031237\t         5.277 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_32Bytes_128Goroutines-16       \t227121474\t         5.348 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_64Bytes_2Goroutines-16         \t127397122\t         9.380 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_64Bytes_4Goroutines-16         \t100000000\t        10.25 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_64Bytes_8Goroutines-16         \t122956939\t        10.31 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_64Bytes_16Goroutines-16        \t126966850\t        10.27 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_64Bytes_32Goroutines-16        \t129644491\t        10.36 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_64Bytes_64Goroutines-16        \t129282783\t        10.38 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_64Bytes_128Goroutines-16       \t125461401\t        10.39 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_100Bytes_2Goroutines-16        \t30224193\t        39.50 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_100Bytes_4Goroutines-16        \t35712380\t        33.05 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_100Bytes_8Goroutines-16        \t33683935\t        34.19 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_100Bytes_16Goroutines-16       \t35639373\t        33.67 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_100Bytes_32Goroutines-16       \t35541601\t        33.81 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_100Bytes_64Goroutines-16       \t35728906\t        33.64 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_100Bytes_128Goroutines-16      \t35766399\t        33.47 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_256Bytes_2Goroutines-16        \t12077659\t        99.72 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_256Bytes_4Goroutines-16        \t12070339\t       100.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_256Bytes_8Goroutines-16        \t11984224\t       100.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_256Bytes_16Goroutines-16       \t11906582\t       100.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_256Bytes_32Goroutines-16       \t11994741\t        99.87 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_256Bytes_64Goroutines-16       \t12000150\t       100.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_256Bytes_128Goroutines-16      \t12027015\t        99.63 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_512Bytes_2Goroutines-16        \t 9029817\t       133.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_512Bytes_4Goroutines-16        \t 8991758\t       133.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_512Bytes_8Goroutines-16        \t 9017007\t       133.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_512Bytes_16Goroutines-16       \t 9056287\t       133.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_512Bytes_32Goroutines-16       \t 9042925\t       132.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_512Bytes_64Goroutines-16       \t 8995414\t       133.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_512Bytes_128Goroutines-16      \t 9036214\t       133.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_1000Bytes_2Goroutines-16       \t 6952444\t       170.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_1000Bytes_4Goroutines-16       \t 7050771\t       171.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_1000Bytes_8Goroutines-16       \t 6942898\t       171.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_1000Bytes_16Goroutines-16      \t 6965104\t       149.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_1000Bytes_32Goroutines-16      \t 8411968\t       153.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_1000Bytes_64Goroutines-16      \t 6987492\t       171.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_1000Bytes_128Goroutines-16     \t 7269903\t       165.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_4096Bytes_2Goroutines-16       \t 6193324\t       194.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_4096Bytes_4Goroutines-16       \t 6222722\t       192.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_4096Bytes_8Goroutines-16       \t 6242034\t       192.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_4096Bytes_16Goroutines-16      \t 6262288\t       191.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_4096Bytes_32Goroutines-16      \t 6235977\t       191.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_4096Bytes_64Goroutines-16      \t 6252049\t       191.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_4096Bytes_128Goroutines-16     \t 6246038\t       191.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_16384Bytes_2Goroutines-16      \t 1822958\t       715.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_16384Bytes_4Goroutines-16      \t 1655086\t       729.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_16384Bytes_8Goroutines-16      \t 1680040\t       713.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_16384Bytes_16Goroutines-16     \t 1674666\t       712.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_16384Bytes_32Goroutines-16     \t 1678710\t       713.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_16384Bytes_64Goroutines-16     \t 1681701\t       714.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrent/Concurrent_Read_16384Bytes_128Goroutines-16    \t 1684285\t       713.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSequentialLargeSizes/Serial_Read_Large_4096Bytes-16       \t  523836\t      2273 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSequentialLargeSizes/Serial_Read_Large_10000Bytes-16      \t  217233\t      5536 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSequentialLargeSizes/Serial_Read_Large_16384Bytes-16      \t  132709\t      8940 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSequentialLargeSizes/Serial_Read_Large_65536Bytes-16      \t   33720\t     35965 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadSequentialLargeSizes/Serial_Read_Large_1048576Bytes-16    \t    2096\t    573422 ns/op\t       1 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_4096Bytes_2Goroutines-16         \t 6246136\t       191.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_4096Bytes_4Goroutines-16         \t 6249640\t       191.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_4096Bytes_8Goroutines-16         \t 6237267\t       191.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_4096Bytes_16Goroutines-16        \t 6241344\t       191.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_4096Bytes_32Goroutines-16        \t 6243712\t       191.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_4096Bytes_64Goroutines-16        \t 6245071\t       191.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_4096Bytes_128Goroutines-16       \t 6246223\t       191.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_10000Bytes_2Goroutines-16        \t 2660907\t       450.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_10000Bytes_4Goroutines-16        \t 2659984\t       450.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_10000Bytes_8Goroutines-16        \t 2666076\t       450.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_10000Bytes_16Goroutines-16       \t 2662317\t       451.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_10000Bytes_32Goroutines-16       \t 2657403\t       450.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_10000Bytes_64Goroutines-16       \t 2654338\t       454.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_10000Bytes_128Goroutines-16      \t 2644657\t       453.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_16384Bytes_2Goroutines-16        \t 1671342\t       718.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_16384Bytes_4Goroutines-16        \t 1665368\t       719.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_16384Bytes_8Goroutines-16        \t 1666214\t       718.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_16384Bytes_16Goroutines-16       \t 1670187\t       717.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_16384Bytes_32Goroutines-16       \t 1665134\t       719.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_16384Bytes_64Goroutines-16       \t 1667168\t       673.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_16384Bytes_128Goroutines-16      \t 1673307\t       717.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_65536Bytes_2Goroutines-16        \t  439858\t      2648 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_65536Bytes_4Goroutines-16        \t  438632\t      2650 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_65536Bytes_8Goroutines-16        \t  445155\t      2647 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_65536Bytes_16Goroutines-16       \t  424273\t      2648 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_65536Bytes_32Goroutines-16       \t  443612\t      2649 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_65536Bytes_64Goroutines-16       \t  445390\t      2663 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_65536Bytes_128Goroutines-16      \t  437482\t      2728 ns/op\t       1 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_1048576Bytes_2Goroutines-16      \t   28538\t     41800 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_1048576Bytes_4Goroutines-16      \t   28740\t     41715 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_1048576Bytes_8Goroutines-16      \t   28932\t     41625 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_1048576Bytes_16Goroutines-16     \t   28928\t     41618 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_1048576Bytes_32Goroutines-16     \t   28845\t     41723 ns/op\t       4 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_1048576Bytes_64Goroutines-16     \t   28621\t     41602 ns/op\t      11 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentLargeSizes/Concurrent_Read_Large_1048576Bytes_128Goroutines-16    \t   28884\t     41682 ns/op\t      13 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadVariableSizes/Serial_Read_Variable_8Bytes-16                                \t64308681\t        17.60 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadVariableSizes/Serial_Read_Variable_16Bytes-16                               \t49512098\t        24.10 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadVariableSizes/Serial_Read_Variable_21Bytes-16                               \t41784912\t        28.62 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadVariableSizes/Serial_Read_Variable_24Bytes-16                               \t38542195\t        30.80 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadVariableSizes/Serial_Read_Variable_32Bytes-16                               \t32833420\t        36.34 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadVariableSizes/Serial_Read_Variable_48Bytes-16                               \t24234753\t        49.32 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadVariableSizes/Serial_Read_Variable_64Bytes-16                               \t20117899\t        59.88 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadVariableSizes/Serial_Read_Variable_128Bytes-16                              \t11892736\t       100.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadVariableSizes/Serial_Read_Variable_256Bytes-16                              \t 7665237\t       156.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadVariableSizes/Serial_Read_Variable_512Bytes-16                              \t 4097682\t       292.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadVariableSizes/Serial_Read_Variable_1024Bytes-16                             \t 2123215\t       564.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadVariableSizes/Serial_Read_Variable_2048Bytes-16                             \t 1000000\t      1109 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadVariableSizes/Serial_Read_Variable_4096Bytes-16                             \t  545251\t      2198 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_8Bytes_2Goroutines-16      \t367092969\t         3.295 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_8Bytes_4Goroutines-16      \t364329969\t         3.245 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_8Bytes_8Goroutines-16      \t375396412\t         3.162 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_8Bytes_16Goroutines-16     \t369868792\t         3.248 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_8Bytes_32Goroutines-16     \t393919362\t         3.124 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_8Bytes_64Goroutines-16     \t392266092\t         3.061 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_8Bytes_128Goroutines-16    \t391131579\t         3.088 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_16Bytes_2Goroutines-16     \t278666618\t         4.332 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_16Bytes_4Goroutines-16     \t288241862\t         4.259 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_16Bytes_8Goroutines-16     \t287041138\t         4.222 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_16Bytes_16Goroutines-16    \t293286248\t         4.142 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_16Bytes_32Goroutines-16    \t294782804\t         4.168 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_16Bytes_64Goroutines-16    \t288746611\t         4.141 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_16Bytes_128Goroutines-16   \t293468252\t         4.105 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_21Bytes_2Goroutines-16     \t235662571\t         4.996 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_21Bytes_4Goroutines-16     \t241617771\t         4.966 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_21Bytes_8Goroutines-16     \t242537506\t         4.948 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_21Bytes_16Goroutines-16    \t241134699\t         4.926 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_21Bytes_32Goroutines-16    \t244916493\t         4.890 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_21Bytes_64Goroutines-16    \t240585705\t         4.941 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_21Bytes_128Goroutines-16   \t243669334\t         5.348 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_24Bytes_2Goroutines-16     \t220361779\t         5.614 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_24Bytes_4Goroutines-16     \t219561060\t         5.561 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_24Bytes_8Goroutines-16     \t221110374\t         5.543 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_24Bytes_16Goroutines-16    \t224684581\t         5.576 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_24Bytes_32Goroutines-16    \t225895640\t         5.641 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_24Bytes_64Goroutines-16    \t224597391\t         5.557 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_24Bytes_128Goroutines-16   \t225518374\t         5.489 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_32Bytes_2Goroutines-16     \t175696671\t         6.860 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_32Bytes_4Goroutines-16     \t178425992\t         6.801 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_32Bytes_8Goroutines-16     \t177544383\t         6.801 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_32Bytes_16Goroutines-16    \t179291941\t         6.799 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_32Bytes_32Goroutines-16    \t179991619\t         6.720 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_32Bytes_64Goroutines-16    \t180617587\t         6.638 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_32Bytes_128Goroutines-16   \t181707596\t         6.704 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_48Bytes_2Goroutines-16     \t91803654\t        11.90 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_48Bytes_4Goroutines-16     \t99399460\t        12.95 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_48Bytes_8Goroutines-16     \t90868075\t        11.82 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_48Bytes_16Goroutines-16    \t99492520\t        12.92 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_48Bytes_32Goroutines-16    \t90354640\t        11.74 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_48Bytes_64Goroutines-16    \t99487020\t        12.85 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_48Bytes_128Goroutines-16   \t91575384\t        11.73 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_64Bytes_2Goroutines-16     \t98527893\t        11.92 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_64Bytes_4Goroutines-16     \t97946526\t        12.15 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_64Bytes_8Goroutines-16     \t96624192\t        11.87 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_64Bytes_16Goroutines-16    \t97551394\t        11.87 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_64Bytes_32Goroutines-16    \t98195654\t        11.95 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_64Bytes_64Goroutines-16    \t96930204\t        11.83 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_64Bytes_128Goroutines-16   \t98202685\t        11.77 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_128Bytes_2Goroutines-16    \t39349153\t        31.35 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_128Bytes_4Goroutines-16    \t38870016\t        31.16 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_128Bytes_8Goroutines-16    \t39067744\t        30.97 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_128Bytes_16Goroutines-16   \t38544464\t        30.61 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_128Bytes_32Goroutines-16   \t39133942\t        30.36 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_128Bytes_64Goroutines-16   \t39151446\t        30.42 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_128Bytes_128Goroutines-16  \t39215578\t        30.76 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_256Bytes_2Goroutines-16    \t10476978\t       115.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_256Bytes_4Goroutines-16    \t10387612\t       115.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_256Bytes_8Goroutines-16    \t10316472\t       115.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_256Bytes_16Goroutines-16   \t10372449\t       115.8 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_256Bytes_32Goroutines-16   \t10368865\t       115.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_256Bytes_64Goroutines-16   \t10381939\t       115.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_256Bytes_128Goroutines-16  \t10397126\t       115.7 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_512Bytes_2Goroutines-16    \t 8953236\t       134.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_512Bytes_4Goroutines-16    \t 8971179\t       134.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_512Bytes_8Goroutines-16    \t 8915416\t       134.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_512Bytes_16Goroutines-16   \t 8901182\t       134.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_512Bytes_32Goroutines-16   \t 9022682\t       134.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_512Bytes_64Goroutines-16   \t 8984938\t       133.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_512Bytes_128Goroutines-16  \t 8959327\t       133.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_1024Bytes_2Goroutines-16   \t 8767714\t       137.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_1024Bytes_4Goroutines-16   \t 8718279\t       136.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_1024Bytes_8Goroutines-16   \t 8760200\t       137.1 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_1024Bytes_16Goroutines-16  \t 8763199\t       137.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_1024Bytes_32Goroutines-16  \t 8737177\t       137.0 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_1024Bytes_64Goroutines-16  \t 8762700\t       137.5 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_1024Bytes_128Goroutines-16 \t 8846889\t       137.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_2048Bytes_2Goroutines-16   \t 9610599\t       124.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_2048Bytes_4Goroutines-16   \t 9631668\t       124.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_2048Bytes_8Goroutines-16   \t 9630931\t       124.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_2048Bytes_16Goroutines-16  \t 9637422\t       124.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_2048Bytes_32Goroutines-16  \t 9627994\t       124.2 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_2048Bytes_64Goroutines-16  \t 9625603\t       124.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_2048Bytes_128Goroutines-16 \t 9635002\t       124.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_4096Bytes_2Goroutines-16   \t 6169490\t       193.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_4096Bytes_4Goroutines-16   \t 6165784\t       194.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_4096Bytes_8Goroutines-16   \t 6195110\t       193.4 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_4096Bytes_16Goroutines-16  \t 6165146\t       193.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_4096Bytes_32Goroutines-16  \t 6176155\t       194.3 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_4096Bytes_64Goroutines-16  \t 6144906\t       193.6 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadConcurrentVariableSizes/Concurrent_Read_Variable_4096Bytes_128Goroutines-16 \t 6158324\t       193.9 ns/op\t       0 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Serial_Read_Extreme_10485760Bytes-16                           \t     213\t   5587094 ns/op\t     225 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_10485760Bytes_2Goroutines-16           \t    2432\t    412737 ns/op\t      15 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_10485760Bytes_4Goroutines-16           \t    2569\t    413217 ns/op\t      15 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_10485760Bytes_8Goroutines-16           \t    2936\t    407516 ns/op\t      27 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_10485760Bytes_16Goroutines-16          \t    2586\t    414763 ns/op\t      47 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_10485760Bytes_32Goroutines-16          \t    2446\t    414047 ns/op\t      49 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_10485760Bytes_64Goroutines-16          \t    2479\t    409569 ns/op\t      99 B/op\t       1 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_10485760Bytes_128Goroutines-16         \t    2547\t    416399 ns/op\t     130 B/op\t       2 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Serial_Read_Extreme_52428800Bytes-16                           \t      42\t  28060090 ns/op\t      67 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_52428800Bytes_2Goroutines-16           \t     566\t   2088432 ns/op\t      38 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_52428800Bytes_4Goroutines-16           \t     480\t   2128022 ns/op\t      85 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_52428800Bytes_8Goroutines-16           \t     516\t   2106695 ns/op\t      84 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_52428800Bytes_16Goroutines-16          \t     486\t   2083866 ns/op\t     154 B/op\t       1 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_52428800Bytes_32Goroutines-16          \t     489\t   2110314 ns/op\t     240 B/op\t       3 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_52428800Bytes_64Goroutines-16          \t     556\t   2098568 ns/op\t     344 B/op\t       5 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_52428800Bytes_128Goroutines-16         \t     483\t   2110538 ns/op\t     731 B/op\t      12 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Serial_Read_Extreme_104857600Bytes-16                          \t      20\t  55798444 ns/op\t     140 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_104857600Bytes_2Goroutines-16          \t     283\t   4151640 ns/op\t      76 B/op\t       0 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_104857600Bytes_4Goroutines-16          \t     288\t   4139970 ns/op\t     133 B/op\t       1 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_104857600Bytes_8Goroutines-16          \t     283\t   4153726 ns/op\t     232 B/op\t       2 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_104857600Bytes_16Goroutines-16         \t     283\t   4134685 ns/op\t     249 B/op\t       3 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_104857600Bytes_32Goroutines-16         \t     285\t   4149505 ns/op\t     661 B/op\t       7 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_104857600Bytes_64Goroutines-16         \t     285\t   4124672 ns/op\t     833 B/op\t      11 allocs/op\nBenchmarkPRNG_ReadExtremeSizes/Concurrent_Read_Extreme_104857600Bytes_128Goroutines-16        \t     284\t   4138645 ns/op\t    1123 B/op\t      18 allocs/op\nPASS\nok  \tgithub.com/sixafter/prng-chacha\t377.422s\n```\n\u003c/details\u003e\n\n### UUID Generation\n\nHere's a summary of the benchmark results comparing the default random reader for Google's [UUID](https://pkg.go.dev/github.com/google/uuid) package and the CSPRNG-based UUID generation:\n\n| Benchmark Scenario                         | Default ns/op | CSPRNG ns/op | % Faster (ns/op) | Default B/op | CSPRNG B/op | Default allocs/op | CSPRNG allocs/op |\n|--------------------------------------------|--------------:|-------------:|-----------------:|-------------:|------------:|------------------:|-----------------:|\n| v4 Serial                                 |      183.6    |     37.70    |      79.5%       |      16      |     16      |      1            |      1           |\n| v4 Parallel                               |      457.2    |      5.871   |      98.7%       |      16      |     16      |      1            |      1           |\n| v4 Concurrent (4 goroutines)              |      419.2    |     11.36    |      97.3%       |      16      |     16      |      1            |      1           |\n| v4 Concurrent (8 goroutines)              |      482.1    |      7.712   |      98.4%       |      16      |     16      |      1            |      1           |\n| v4 Concurrent (16 goroutines)             |      455.6    |      5.944   |      98.7%       |      16      |     16      |      1            |      1           |\n| v4 Concurrent (32 goroutines)             |      521.1    |      5.788   |      98.9%       |      16      |     16      |      1            |      1           |\n| v4 Concurrent (64 goroutines)             |      533.1    |      5.735   |      98.9%       |      16      |     16      |      1            |      1           |\n| v4 Concurrent (128 goroutines)            |      523.4    |      5.705   |      98.9%       |      16      |     16      |      1            |      1           |\n| v4 Concurrent (256 goroutines)            |      523.7    |      5.794   |      98.9%       |      16      |     16      |      1            |      1           |\n\n\u003cdetails\u003e\n  \u003csummary\u003eExpand to see results\u003c/summary\u003e\n\n```shell\nmake bench-uuid\n\ngoos: darwin\ngoarch: arm64\npkg: github.com/sixafter/prng-chacha\ncpu: Apple M4 Max\nBenchmarkUUID_v4_Default_Serial-16        \t 6239547\t       183.6 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Parallel-16      \t 2614206\t       457.2 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_4-16         \t 2867928\t       419.2 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_8-16         \t 2520130\t       482.1 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_16-16        \t 2617567\t       455.6 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_32-16        \t 2312065\t       521.1 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_64-16        \t 2300226\t       533.1 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_128-16       \t 2300107\t       523.4 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_Default_Concurrent/Goroutines_256-16       \t 2331600\t       523.7 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CSPRNG_Serial-16                           \t30584091\t        37.70 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CSPRNG_Parallel-16                         \t209297205\t         5.871 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CSPRNG_Concurrent/Goroutines_4-16          \t100000000\t        11.36 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CSPRNG_Concurrent/Goroutines_8-16          \t150149610\t         7.712 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CSPRNG_Concurrent/Goroutines_16-16         \t203733687\t         5.944 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CSPRNG_Concurrent/Goroutines_32-16         \t205883962\t         5.788 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CSPRNG_Concurrent/Goroutines_64-16         \t208636114\t         5.735 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CSPRNG_Concurrent/Goroutines_128-16        \t212263852\t         5.705 ns/op\t      16 B/op\t       1 allocs/op\nBenchmarkUUID_v4_CSPRNG_Concurrent/Goroutines_256-16        \t204421857\t         5.794 ns/op\t      16 B/op\t       1 allocs/op\nPASS\nok  \tgithub.com/sixafter/prng-chacha\t31.142s\n```\n\u003c/details\u003e\n\n---\n\n## Contributing\n\nContributions are welcome. See [CONTRIBUTING](CONTRIBUTING.md)\n\n---\n\n## License\n\nThis project is licensed under the [Apache 2.0 License](https://choosealicense.com/licenses/apache-2.0/). See [LICENSE](LICENSE) file.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsixafter%2Fprng-chacha","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsixafter%2Fprng-chacha","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsixafter%2Fprng-chacha/lists"}