v0.0.1 - Initial Release
IRPC v0.0.1 introduces a lightweight, in-process RPC mechanism for Go applications.
This release delivers the complete foundation for a clean, fast, and modular application architecture without any network overhead.
✨ Key Features
🔧 In-Process RPC Registry
A central Registry handles RPC-style calls using simple keys such as:
Exam.FindExamById
Exam.FindAllExams
No network, no boilerplate, no complexity.
⚡ Zero-Reflection on Call
Reflection is only used during registration.
Runtime calls use direct function invocation—fast and allocation-free.
📜 Contract-Based Registration
Register all methods from an interface with one line:
registry.RegisterContract("Exam", (*ExamContract)(nil), impl)IRPC will:
- Inspect the interface
- Match implementation methods
- Generate fast handlers
- Register RPC keys automatically
🛡 Safe-by-Default Behavior
Duplicate method keys panic by default:
irpc: duplicate method key 'Exam.FindExamById'
This prevents silent overrides and reduces hidden bugs.
🔄 Optional Override Mode
Enable override behavior when needed:
registry := irpc.NewRegistry(irpc.Config{AllowOverride: true})Perfect for plugin systems, dynamic loading, and testing.
🎯 Client Stub Support
IRPC integrates cleanly with custom client layers:
examClient := client.NewExamClient(registry)
res, _ := examClient.FindExamById(ctx, req)This creates a gRPC-like DX without any network cost.
📦 Included in v0.0.1
Registrycore implementationConfigwith override support- Contract → Implementation binding
- Auto method wrapper generation
- Constant-time lookup RPC dispatcher
- Example project (contract, client, service, main)
- Usage guide
❤️ Thank You
Thank you for using IRPC.
This project is intentionally minimal yet powerful—built to enable clean architecture without unnecessary complexity.