Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.2.0] - 2025-07-23
Added
- Universal DSPy Bridge System: Complete schema-driven bridge with automatic discovery of 70+ DSPy classes
- DSPex.Bridge: Metaprogramming system with
defdsyp
macro for generating custom DSPy wrappers - Comprehensive Variable Management: Type-safe variable system with constraints, validation, and batch operations
- Dual-Backend Architecture: Automatic switching between LocalState (microsecond latency) and BridgedState (gRPC)
- DSPex.Context: Central execution context with seamless backend migration and program registration
- Variable-Aware DSPy Integration: Automatic parameter binding and synchronization between Elixir variables and Python modules
- Production-Ready gRPC Integration: Enhanced Snakepit v0.4.1 integration with 17 registered Python tools
- Advanced State Management: Pluggable backend abstraction with state migration and capability detection
- 3-Layer Testing Architecture: Fast unit tests (~70ms), protocol tests, and full integration tests
- Comprehensive Documentation: 45+ implementation documents, specs, and testing strategies
- Benchmarking Suite: Performance comparison between local and bridged state backends
- Enhanced Examples: All 5 examples updated to use real Gemini API calls with working results
Changed
- Updated Snakepit dependency to v0.4.1 with enhanced gRPC capabilities
- Reorganized project structure - moved legacy code to
docs/home/
directory - Enhanced Python adapters with
dspy_grpc.py
tool registration system - Improved error handling with comprehensive Python traceback propagation
- Updated all examples to demonstrate real LLM API integration
Fixed
- Constructor parameter binding - resolved Snakepit JSON serialization issues with DSPy-specific signature handling
- Session affinity and instance storage - proper gRPC session management with worker affinity
- Result transformation pipeline - seamless handling of DSPy completions, prediction_data, and reasoning/answer pairs
- Automatic backend switching - zero-downtime migration between LocalState and BridgedState
- Type-safe variable operations - comprehensive constraint validation with meaningful error messages
Technical Innovations
- Zero-Configuration DSPy Access: Any DSPy class usable immediately without writing Elixir wrappers
- Performance-Optimized Execution: Automatic backend selection based on program requirements
- Dynamic Program Configuration: Runtime parameter adjustment through variable bindings without restart
- Seamless State Migration: Backend switching without data loss or service interruption
- Schema-Driven Auto-Discovery: Universal access to DSPy functionality through Python introspection
[0.1.2] - 2025-07-20
Added
- gRPC transport support for DSPy integration
Changed
- Updated Snakepit dependency to v0.3.3
- Default Gemini model changed to gemini-2.0-flash-lite
Fixed
- DSPy execution over gRPC transport
- Output extraction in gRPC demo
[0.1.1] - 2025-07-20
Added
- Enhanced Python bridge with stored object resolution
- Fixed DSPy LM configuration issue where “stored.default_lm” wasn’t being resolved
- DSPy examples for Question Answering, Chain of Thought, and Code Generation
- Model registry system for managing LLM provider prefixes (e.g., “gemini/”)
- Configuration system for examples using simple Elixir config files
- Adapter comparison examples showing EnhancedPython vs GRPCPython
- Simulated streaming demonstrations for better UX
- Comprehensive debugging tools for DSPy integration
- Tool Bridge specifications for Elixir-Python RPC communication
- Documentation for stored object resolution and debugging DSPy integration
Changed
- Enhanced bridge now properly resolves stored references in both args and kwargs
- DSPex.LM.configure now uses model registry for provider prefixes
- Improved error messages and debugging output
Fixed
- “No LM is loaded” error when using DSPy modules
- Stored object references (e.g., “stored.default_lm”) not being resolved to actual objects
- Model configuration requiring manual “gemini/” prefix addition
- Config file path issues when running from different directories
- Result extraction paths for DSPy Prediction objects
[0.1.0] - 2025-07-20
Added
- Initial DSPex V2 architecture implementation
- Native Elixir DSPy signature parsing
- Smart routing system for native vs Python execution
- Pipeline orchestration with mixed execution support
- Snakepit integration for Python DSPy processes (pooling and session management)
- Multi-layer testing architecture (mock, protocol, integration)
- LLM adapter pattern with initial InstructorLite and Gemini support
- Native template engine using EEx
- Comprehensive Dialyzer type checking
- Performance monitoring and metrics collection
- Process manager for worker lifecycle
- Advanced signatures example with pooling
- Full DSPy API analysis and compatibility mapping
- gRPC streaming foundation for future streaming support
- Enhanced Python bridge for dynamic method invocation
- Example applications demonstrating DSPy integration
Changed
- Complete rewrite from V1 architecture
- Moved from direct Python calls to Snakepit pooling
- Implemented protocol-agnostic bridge design
- Reorganized project structure (moved old implementation to /old)
Fixed
- Compilation warnings and type issues
- Test infrastructure improvements
- Worker lifecycle management
- Pool worker debugging and reliability
Security
- Improved process isolation
- Better error handling and recovery
[0.0.1] - 2025-07-19
Added
- Initial prototype implementation
- Basic project structure
- Stage 1 prompts and test infrastructure