go-perry

agent
Security Audit
Warn
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Pass
  • Code scan — Scanned 2 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

Go experiments exploring concurrency, runtime internals, performance, networking, and systems programming — recently evolving into an AI-native project with daily AI-generated experiments.

README.md

go-perry Logo

go-perry

A collection of Golang experiments, and topic-based examples.
Each directory generally represents a technical topic, implementation exercise, or experiment focused on a specific Go mechanism.

Topics

🧠 Runtime Internals

Directory Description
assembly Experiments involving assembly, CPU registers, instructions, and memory models.
bce Bounds Check Elimination experiments.
build_tag Go build tags and conditional compilation examples.
dump Program dump generation and debugging experiments.
escape Escape analysis and memory allocation experiments.
linkname-demo Experimental examples using //go:linkname.
nosplit-demo Experiments with //go:nosplit.
pin_thread Experiments involving goroutines and OS thread binding.
reflect Go reflection experiments.
runtime Go runtime concepts and runtime behavior experiments.
unsafe unsafe package and low-level memory experiments.
coroutine Asymmetric coroutines and single-thread register-swapping experiments via raw runtime primitives.
swisstable Go 1.24 version's hashmap mechanism
unique Experiments with the unique package for canonicalization (interning) and fast O(1) comparisons.
weak_pointer Go 1.24 weak package: weak pointers that do not keep objects alive, combined with runtime.AddCleanup for a GC-aware cache.
build_info Go build metadata experiments, including debug.ReadBuildInfo, VCS revision, vcs.modified, ldflags, reproducible builds, and build provenance.

🧵 Concurrency Patterns

Directory Description
async Asynchronous processing patterns, including producers, consumers, and background tasks.
barrier Goroutine synchronization using barriers.
channel Basic Go channel examples.
channel_buffered Buffered channel examples.
channel_unbuffered Unbuffered channel examples.
context Cancellation, timeouts, and value propagation using Go context.
errgroup Managing goroutines and collecting errors with errgroup.
generator Generator patterns and goroutine-based generators.
goroutine_confinement Goroutine confinement patterns for controlling access to shared data.
goroutine_mutex Goroutine synchronization using mutexes.
orDone&T Pipeline patterns such as orDone and tee.
pipeline Pipeline-based concurrent data processing.
pool Resource pool and worker pool patterns.
singleflight Request deduplication using singleflight.
sync_cond Condition variables with sync.Cond: Wait/Signal/Broadcast and a bounded queue built on two conds.
sync_map sync.Map examples.
sync_once sync.Once and Go 1.21 OnceFunc/OnceValue/OnceValues: one-time lazy init, its atomic fast path, and panic/error caching behavior.
sync_atomic sync/atomic typed atomics: lock-free counters, CAS loops, atomic.Pointer copy-on-write config hot-swap, and Go 1.23 Or/And flags.
worker_pool Worker pool pattern examples.
workerpool Additional worker pool implementations and experiments.

⚡ Performance

Directory Description
benchmark Go benchmarks, CPU profiling, and memory profiling experiments.
cache Cache implementations and cached HTTP client examples.
falseshare False sharing and CPU cache performance experiments.
ratelimit Rate limiting implementations and performance-related examples.
memcache Memcache usage and caching experiments.
zero-copy Linux zero-copy mechanisms and kernel data paths
directio Direct I/O experiments bypassing the OS page cache.

🌐 Networking

Directory Description
gorilla_websocket WebSocket server and client examples using gorilla/websocket.
grpc gRPC client/server examples with Protocol Buffers.
graphql GraphQL server examples.
multipartload Multipart file upload client/server examples.

🔗 Distributed Systems

Directory Description
breakcircut Circuit breaker pattern experiments for distributed services.
kafka Kafka producer, consumer, and worker examples.
rabbitmq RabbitMQ producer and consumer examples.
redis_lock Redis distributed lock examples.
p2p Peer-to-peer networking experiments.
ipfs IPFS and decentralized storage experiments.
otel OpenTelemetry distributed tracing across services, including TraceID, SpanID, parent-child relationships, and context propagation.
logical_clock Including distributed common clock with lamport and vector and interval tree.
detector Version Vector experiments, including causal history tracking, Dotted Version Vectors, and causal/concurrent event detection in distributed systems.

💽 Storage

Directory Description
lsm LSM Tree storage engine experiments.
gorm GORM examples, including models, migrations, and database operations.
memcache Memcache usage examples.
cache Cache implementations and cached HTTP client examples.

🧮 Data Structures

Directory Description
alogrithm Algorithms and data structures, including search, sort, and structural topics.
sort Sorting algorithms and sorting examples.
boomfilter Bloom Filter implementation examples.
iter Iterator patterns and iterator-style programming.
generic_hash Generic hash table implementation and hash-based data structure experiments.

📦 Serialization

Directory Description
protobuf Protocol Buffers serialization and code generation examples.
messagepack Binary serialization and deserialization using MessagePack.
flatbuffer Schema-based binary serialization with direct buffer access.
capProto Cap'n Proto schema-based binary serialization and generated Go code examples.
cbor CBOR and Canonical CBOR serialization examples, including deterministic encoding and hashing.
convert Type conversion and data format conversion examples.

🔐 Security

Directory Description
jwt JWT authentication and authorization examples.
paseto PASETO authentication and security examples.
schnorr Schnorr signatures and cryptography-related examples.
cert X.509 certificate parsing and inspection examples.
pqc Post-quantum cryptography examples using ML-KEM for shared-secret establishment and ML-DSA for digital signatures.

⚙️ System Programming

Directory Description
file_tracker Tracking filesystem events through kernel notifications.
ebpf eBPF examples for tracing process execution and filtering network packets at the kernel level.
iouring Linux io_uring experiments using liburing, including asynchronous TCP I/O.

🏗️ Application Patterns

Directory Description
decorator Decorator design pattern examples.
dependency Dependency injection and dependency design examples.
background_faktory Distributed background job examples using Faktory.
background_gocraft Distributed background job examples using gocraft/work.
gocron Scheduled job examples using gocron.
logger Logging and file output examples.
rss RSS generation and parsing examples.
test Go testing examples and experiments.
embed-demo Examples using Go's embed feature.

The topic list is continuously evolving. New topics are welcome.

Contributing

Contributions are welcome.

You are not limited to improving existing examples. You are encouraged to create your own concept, experiment, or technical topic.

The recommended workflow is to fork then create a feature branch:

git checkout -b feature/<your-concept>

For example:

git checkout -b feature/tracing

After implementing and documenting your concept, open a Pull Request.

See CONTRIBUTING.md for the contribution workflow and guidelines.

Authors

Contributors can add their name and ID to AUTHORS.md.

The author list is intended to give credit to everyone who contributes to the project.

Philosophy

The goal of go-perry is not simply to collect finished code.

It is a place to:

  • Experiment
  • Build
  • Document
  • Share

A small idea can become a new topic.

Create your own concept. Implement it. Document it. Share it.

Reviews (0)

No results found