← Back to Dspex

CHANGELOG

Documentation for CHANGELOG from the Dspex repository.

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