Skip to main contentRelease Notes
Executive Summary
This release represents a major architectural milestone for the instructor-php monorepo, introducing the new stream package for functional data processing and significantly refactoring the instructor package’s streaming architecture. The changes focus on modularity, composability, and maintainability while improving type safety across all packages.
- New
stream package: Complete functional stream processing library with 24+ sources, 40+ transducers, and 20+ reducers
- Major instructor refactoring: Streaming architecture completely redesigned for modularity and testability
- Better code organization: Logical namespace restructuring across multiple packages
- Enhanced utilities: New data structures (Deque, Buffer, RingBuffer) and error collection system
- Type safety improvements: Better PHPDoc annotations and flexible type hints
instructor Package
- Replaced
PartialsGenerator with modular components:
- Use
GeneratePartialsFromJson for JSON streaming mode
- Use
GeneratePartialsFromToolCalls for tool-based streaming mode
- Method rename:
CanGeneratePartials::getPartialResponses() → makePartialResponses()
- Moved classes to new namespaces (aliases may be provided for backward compatibility):
Core/ResponseModelFactory → Creation/ResponseModelFactory
Core/StructuredOutput* → Creation/StructuredOutput*
Core/SequenceableHandler → Streaming/SequenceGen/SequenceableEmitter
stream Package
A complete functional stream processing library implementing transducers:
- 24+ Stream Sources: Array, CSV, JSON, JSONL, HTTP, Filesystem, Text processing
- 40+ Transducers: Transform, filter, flatten, group, limit, combine, deduplicate
- 20+ Reducers: Terminal operations for stats, selection, side effects
- Tee Splitting: Process same source through multiple parallel pipelines
- Result Monad Support: Functional error handling with dedicated transducers/reducers
- Progressive Rendering: Iterator-based execution for memory-efficient streaming
utils Package
- Deque and Circular Buffer data structures
- Immutable error collection system with serialization
- New Arrays operations for merging multiple arrays
polyglot Package
Inference/Creation/: Factory and builder classes
Inference/Streaming/: Stream processing with new ContentAccumulation class
- Optimized
InferenceExecution::errors() using Arrays::mergeMany()
- Refactored
InferenceStream::makePartialResponses() with extracted methods
http-client Package
- Simplified Symfony driver
- Added annotations to streaming methods
addons Package
Type Flexibility:
- Relaxed
StepByStep return types from Generator<mixed, TState, mixed, mixed> to iterable<TState>
- Allows implementations to return any iterable type while maintaining type safety