NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #1971 most downloaded on Packagist
Spiral, High-Performance PHP/Go Framework
Last release 2 months ago
05 Aug 2026
Ships unpredictably
gaps range from 9 days to 8 months
Most releases are documented
notes for 49 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
181 releases · first in 2016
[Stempler] Encode on* attribute output as a JavaScript literal by @roxblnfk in #1299
Full Changelog: 3.17.1...3.17.2
Fix session id validation and file handler path containment by @roxblnfk in #1291
Full Changelog: 3.17.0...3.17.1
One column per quarter.
1. Added command aliases support to #[AsCommand]
#[AsCommand]The #[AsCommand] attribute now accepts an aliases parameter, allowing a console command to be registered and invoked under several names. The scaffolder was also updated to generate commands with aliases out of the box.
Example Usage:
use Spiral\Console\Attribute\AsCommand;
#[AsCommand(name: 'app:user:create', aliases: ['user:new', 'user:add'])]
final class CreateUserCommand extends Command
{
// ...
}CsrfMiddleware cookie missing the Path attribute by adding a configurable path option (default /) by @roxblnfk in #1257route:list command crash on LINK/UNLINK verbs by @gam6itko in #1254Paginator limit handling and documented the component by @gam6itko in #1255Full Changelog: 3.16.2...3.17.0
#[AsCommand] attribute and the scaffolder (#1252)CsrfMiddleware cookie missing the Path attribute (#1257)route:list command crash on LINK/UNLINK verbs (#1254)Paginator limit handling and documented the component (#1255)[spiral/boot] Fix Bootloader::init methods sorting by @gam6itko in #1251
Bootloader::init methods sortingKernel::defineAppBootloaders methodFix code style by @roxblnfk in #1248
Full Changelog: 3.16.0...3.16.1
Console: Fix Symfony Console 7.4+ Deprecation
The most significant addition in this release is comprehensive support for PHP attributes in bootloaders, providing a modern, type-safe approach to application bootstrapping. You can now use attributes like #[SingletonMethod], #[BindMethod], #[BindScope], and priority-based lifecycle methods for cleaner and more expressive bootloader configuration.
Major performance improvements to the container's dependency resolution with iterative scope resolution, eliminating recursive overhead and reducing exception handling for faster dependency injection.
Full support for PHP 8.4, Psalm v6, Symfony Console 8, and migration to PHPUnit attributes for a modern development experience.
This major feature adds PHP attributes for configuring bootloaders, providing a more expressive and type-safe approach to application bootstrapping.
Available Attributes:
#[BindMethod] - Container bindings that create new instances#[SingletonMethod] - Container bindings that create shared instances#[InjectorMethod] - Custom injector methods#[BindAlias] - Multiple aliases for bindings#[BindScope] - Scoped bindings#[InitMethod] - Initialization phase methods with priority control#[BootMethod] - Boot phase methods with priority controlExample:
class DatabaseBootloader extends Bootloader
{
#[SingletonMethod]
#[BindScope('http')]
public function createConnection(): ConnectionInterface
{
return new Connection(...);
}
#[InitMethod(priority: 100)]
public function registerCoreServices(Container $container): void
{
// Register core services first
}
}Benefits:
PR #1190 | Author: @butschster
Extends HTTP method support to include LINK and UNLINK verbs as specified in RFC 2068 and RFC 5988, allowing applications to handle specialized HTTP verbs for managing relationships between resources.
Adds support for the Reply-To email header in the SendIt mailer component. Email messages can now properly set and handle Reply-To headers, allowing recipients to reply to a different address than the sender.
PR #1232 | Author: @burn1ngbear
Adds event hooks to the email rendering process for better extensibility:
Pre-render event: Triggered before email template renderingPost-render event: Triggered after email template renderingThis allows modification of email content before rendering and enables logging, validation, or transformation after rendering.
PR #1233 | Author: @burn1ngbear
Adds missing methods to the Reactor component for working with constant types, improving the code generation capabilities when managing constant type information in generated PHP code.
PR #1220 | Author: @butschster
Major performance optimization for the container's dependency resolution and scope handling:**
Invoker::invoke() to avoid unnecessary class instantiation when calling static functionsFactory::make() callsThe iterative scope resolution eliminates recursive overhead and reduces exception handling, resulting in significantly faster dependency resolution.
Optimizes telemetry trace naming for queue job processing by removing job IDs from span names. This reduces cardinality and allows proper grouping of traces by job type in observability tools, resulting in better trace aggregation, easier performance pattern identification, and reduced storage overhead.
PR #1215 | Author: @rauanmayemir
Fixes a bug where route group prefixes were not being automatically applied to routes in the group. Previously, developers had to manually include the prefix in each route path or add it explicitly, which was counter-intuitive. Now group prefixes are automatically applied to all routes in the group as expected.
PR #1219 | Author: @butschster | Closes: #1217
Critical bug fix for the telemetry component that was preventing trace context from being added to log records. The tracer was not using the scoped proxy container, resulting in empty trace context. Fixed by ensuring TelemetryProcessor uses the scoped container properly.
PR #1212 | Author: @rauanmayemir
Fixes an issue where TracerInterface was overwriting trace context every time it was accessed, causing traces to be lost frequently. The solution binds current TracerInterface as singleton for consistent trace context within request scope and fixes scope handling in AbstractTracer::runScope method.
Benefits:
PR #1214 | Author: @rauanmayemir
static Return Type in Proxy GeneratorFixes a critical bug in the proxy class generator that caused failures when proxying interfaces with static return types. The generator now properly handles static return type, preventing failures in dependency injection and scoped bindings. Also adds resolving trace to resolver exceptions for better debugging.
Fixes deprecation warnings when using Symfony Console 7.4+ and adds support for Symfony 8. Replaced deprecated add() method with addCommand() for Symfony 7.4+ while maintaining backward compatibility with Symfony 6.4. Updated version constraints to ^6.4.17 || ^7.2 || ^8.0.
Corrects the return type annotation for the getDelay() method to match actual behavior and improve static analysis accuracy.
nikic/php-parser v5General maintenance update including dependency updates, code cleanup, and minor improvements across the framework.
Full Changelog: 3.15.0...3.16.0
A huge thank you to all contributors who made this release possible:
Fixed SpanInterface singleton rebinding in the Telemetry component (see spiral/app#157 )
SpanInterface singleton rebinding in the Telemetry component (see spiral/app#157)Full Changelog: 3.15.7...3.15.8
SpanInterface singleton rebindingFixed proxy class generator failure when the proxied interface contains static return type by @roxblnfk in #1222 Also added resolving trace to Resolve
static return type by @roxblnfk in #1222Full Changelog: 3.15.6...3.15.7
Optimize container and fix invoker by @roxblnfk in #1221
Full Changelog: 3.15.5...3.15.6
[spiral/router] Fix issue when group prefix is not applied to routes
[spiral/telemetry] Removed ID from a Queue consumed job span It allows proper grouping of traces by job name
[spiral/telemetry] Fixed scoped TracerInterface in the AbstractTracer::runScope method
TracerInterface in the AbstractTracer::runScope method\Spiral\Core\Scope is public now[spiral/telemetry] Telemetry info was not propagated into log records
Bumped up dependencies versions
nikic/php-parser v5\Spiral\Http\Pipeline is deprecated now.
AppEnvironment enum: added aliases for production and test environments by @roxblnfk.allowSingletonsRebinding to false right away.KeyWriting, CacheRetrieving, KeyDeleting
and failed operations like KeyWriteFailed, KeyDeleteFailed.ServerRequestInterface object is now passed into the call context of interceptorsLazyPipeline.
The pipeline resolves middleware from the container right before execution to avoid ignoring container scopes.\Spiral\Http\Pipeline is deprecated now.UriHandler. Strict mode ensures all required URI segments are validated.
If any are missing, an exception is thrown.AbstractTracer::runScope() method does not open a container scope anymore.http.response_content_length field is no longer filled.[spiral/telemetry] Improve types for SpanInterface
SpanInterface@ inside a string that is not a directive[spiral/core] Define Auth* middleware in http scope
http scopeBinder::bind methodDefinitions of nullable parameters have been fixed according to PHP 8.4 deprecations.
ArrayStorage::setMultiple() now returns true instead of false.[spiral/auth] Fixed configuration replacement for auth in HttpAuthBootloader
[spiral/core] ServerRequestInterface is always resolved into a Proxy in the http scope
ServerRequestInterface is always resolved into a Proxy in the http scopeEventDispatcher is now injected into CacheManagerNothing published for this version
[spiral/router] Router now uses proxied container to create middlewares in a right scope.
DebugBootloader now uses a Factory Proxy to resolve collectors.
Unresolved collectors don't break state populating flow.GuardScope has been deprecated. Use GuardInterface directly instead.
Introspector.GuardScope has been deprecated. Use GuardInterface directly instead.[spiral/core] Added a proxy recursion detection a dependency on resolving: a RecursiveProxyException will be thrown in this case.
RecursiveProxyException will be
thrown in this case.[spiral/router] Fixed fallback interceptors handler in AbstractTarget.
AbstractTarget.[spiral/session] Fix session id validation and file handler path containment
Full Changelog: 3.13.0...3.13.1
[spiral/queue] Added Spiral\Queue\TaskInterface and Spiral\Queue\Task which will contain all the necessary data for job processing.
Spiral\Queue\TaskInterface and Spiral\Queue\Task which will contain all the necessary data
for job processing.[spiral/core] Interface Spiral\Core\Container\SingletonInterface is deprecated, use Spiral\Core\Attribute\Singleton instead. Will be removed in v4.0.
Spiral\Core\Container\SingletonInterface is deprecated,
use Spiral\Core\Attribute\Singleton instead. Will be removed in v4.0.Spiral\Scaffolder\Command\InfoCommand console command for getting information about available scaffolder
commands.Spiral\Core\Config\Proxy or Spiral\Core\Config\DeprecationProxy.Spiral\Core\Options. Added option checkScope
to enable scope checking.[spiral/tokenizer] Fixed finalize for listeners
Spiral\Command\Tokenizer\InfoCommand console command.Spiral\Command\Tokenizer\ValidateCommand console command for validating Tokenizer listeners.The Spiral\Debug\Config\DebugConfig has been added for easy addition of tags and collectors.
Spiral\Debug\Config\DebugConfig has been added for easy addition of tags and collectors.Nothing published for this version
[spiral/boot] Added Spiral\Boot\Bootloader\BootloaderRegistryInterface and Spiral\Boot\Bootloader\BootloaderRegistry to allow for easier management of
Spiral\Boot\Bootloader\BootloaderRegistryInterface and Spiral\Boot\Bootloader\BootloaderRegistry
to allow for easier management of bootloaders.Nothing published for this version
[spiral/queue] Added Spiral\Queue\Interceptor\Consume\RetryPolicyInterceptor to enable automatic job retries with a configurable retry policy.
Spiral\Queue\Interceptor\Consume\RetryPolicyInterceptor to enable automatic job retries
with a configurable retry policy.MONOLOG_FORMAT.Spiral\Prototype\Command\ListCommand for listing prototype dependencies.[spiral/storage] Fixed visibility in the Storage configuration
visibility in the Storage configurationTokenizer Info console commandnull instead of using unset in the reset methodhasInstance in the parent scope[spiral/core] Fixed with checking singletons in the hasInstance method
hasInstance method[spiral/core] Adding force parameter to the bindSingleton method
force parameter to the bindSingleton method[spiral/events] Fixed Event Dispatcher rebinding
[spiral/scaffolder] Method baseDirectory of Spiral\Scaffolder\Config\ScaffolderConfig class is deprecated.
baseDirectory of Spiral\Scaffolder\Config\ScaffolderConfig class is deprecated.tokenizer:info console commandSpiral\Auth\TokenStorageScope, this class can be used to get the concrete implementation of
the token storage in a current container scope.Spiral\Auth\TokenStorageInterface binding in
the Spiral\Auth\Middleware\AuthMiddleware
with the used TokenStorage.Spiral\Filters\Model\Mapper\Mapper that sets values for filter properties. It utilizes a collection of casters, each designed to handle a specific type of value.declarationDirectory to
the Spiral\Scaffolder\Config\ScaffolderConfig
class that returns the directory path of the specified declaration, or default directory path if not specified.psr/http-message v2countPages correctly in constructorAuthTransportMiddleware[spiral/filters] Fixed InputScope to allow retrieval of non-bag input sources
countPages correctly in constructor[spiral/queue] Added the ability to use mixed types as job payload.
Spiral\Console\Attribute\Option attribute.[spiral/scaffolder] Fixed the problem with namespace option in some scaffolder commands.
[spiral/tokenizer] Added the ability to cache tokenizer listeners.
symfony/console increased to ^6.1.Singleton attribute to replace Spiral\Core\SingletonInterface.namespace in the
Spiral\Scaffolder\Command\BootloaderCommand, Spiral\Scaffolder\Command\CommandCommand,
Spiral\Scaffolder\Command\ConfigCommand, Spiral\Scaffolder\Command\ControllerCommand,
Spiral\Scaffolder\Command\JobHandlerCommand, Spiral\Scaffolder\Command\MiddlewareCommand console commands.defineInterceptors method in Spiral\Bootloader\DomainBootloader class.QueueInterface binding as a singleton.[spiral/reactor] Method removeClass of Spiral\Reactor\Partial\PhpNamespace class is deprecated. Use method removeElement instead.
removeClass of Spiral\Reactor\Partial\PhpNamespace class is deprecated. Use
method removeElement instead.defineSystemBootloaders to allow for more
flexibility in defining system bootloaders.Spiral\Router\Registry\RoutePatternRegistryInterface to
allow for easier management of route patterns.VERBOSITY_LEVEL.removeElement, getClass, getElements, getEnum, getEnums, getTrait,
getTraits, getInterface, getInterfaces in the class Spiral\Reactor\Partial\PhpNamespace.getElements, getEnum, getEnums, getTrait,
getTraits, getInterface, getInterfaces in the class Spiral\Reactor\FileDeclaration.[spiral/boot] Class Spiral\Boot\BootloadManager\BootloadManager is deprecated. Will be removed in version v4.0.
Spiral\Boot\BootloadManager\BootloadManager is deprecated. Will be removed in version v4.0.[[ ... ]] when don't use Translator component.PATCH method into route:list command.Spiral\Boot\BootloadManager\InitializerInterface. This will allow changing the
implementation
of this interface by the developer.Spiral\Boot\BootloadManager\StrategyBasedBootloadManager. It allows the implementation of a
custom bootloaders loading strategy.final from the Spiral\Boot\BootloadManager\Initializer class.Spiral\Telemetry\Bootloader\TelemetryBootloader dependency to QueueBootloader.Spiral\Core\Container.[spiral/router] Added the ability to add a prefix to the name of all routes in a group.
prefix to the name of all routes in a group.Spiral\Auth\TokenStorageProviderInterface to allow custom token storages and an ability to
set default token storage via auth config.Spiral\Auth\Middleware\Firewall\RedirectFirewall middleware to redirect user to login
page if they are not authenticated.Spiral\Http\Middleware\ErrorHandlerMiddleware[spiral/queue] Added the ability to pass headers in the headers parameter in the job handlers.
headers parameter in the job handlers.headers in the Spiral\Queue\Options and new
interface Spiral\Queue\ExtendedOptionsInterface.Spiral\Core\Container and
Spiral\Core\ContainerScope.[spiral/filters] Added Spiral\Filter\ValidationHandlerMiddleware for handling filter validation exception.
Spiral\Filter\ValidationHandlerMiddleware for handling filter validation exception.0 value in route parameter.setDefaultValidator
in the Spiral\Validation\Bootloader\ValidationBootloader.Removed readonly from Spiral\Stempler\Transform\Import\Bundle
Spiral\Stempler\Transform\Import\BundleNothing published for this version
[spiral/router] Removed deprecated method addRoute in the Spiral\Router\RouterInterface and Spiral\Router\Router. Use method setRoute instead.
spiral/data-grid-bridge is removed from spiral/framework repository.
Please, use standalone package spiral/data-grid-bridge instead.spiral/data-grid is removed from spiral/framework repository.
Please, use standalone package spiral/data-grid instead.Spiral\Boot\ExceptionHandler has been eliminated. New Spiral\Exceptions\ExceptionHandler with interfaces
Spiral\Exceptions\ExceptionHandlerInterface, Spiral\Exceptions\ExceptionRendererInterface and
Spiral\Exceptions\ExceptionReporterInterface have been added.Spiral\Command\Cycle\MigrateCommand, Spiral\Command\Cycle\SyncCommand,
Spiral\Command\Cycle\UpdateCommand, Spiral\Scaffolder\Command\MigrationCommand,
Spiral\Scaffolder\Command\Database\EntityCommand, Spiral\Scaffolder\Command\Database\RepositoryCommand,
Spiral\Command\Database\ListCommand, Spiral\Command\Database\TableCommand,
Spiral\Command\Migrate\InitCommand, Spiral\Command\Migrate\MigrateCommand,
Spiral\Command\Migrate\ReplayCommand, Spiral\Command\Migrate\RollbackCommand,
Spiral\Command\Migrate\StatusCommand is removed.
Use same console commands from spiral/cycle-bridge package.Spiral\Command\GRPC\ListCommand, Spiral\Command\GRPC\GenerateCommand is removed.
Use same console commands from spiral/roadrunner-bridge package.Spiral\Auth\Cycle\Token, Spiral\Auth\Cycle\TokenStorage, Spiral\Cycle\RepositoryInjector,
Spiral\Cycle\SchemaCompiler, Spiral\Domain\CycleInterceptor is removed.
Use same classes from spiral/cycle-bridge instead.Spiral\Bootloader\Jobs\JobsBootloader, Spiral\Bootloader\Server\LegacyRoadRunnerBootloader,
Spiral\Bootloader\Server\RoadRunnerBootloader, Spiral\Bootloader\ServerBootloader,
Spiral\Bootloader\GRPC\GRPCBootloader is removed.
Use spiral/roadrunner-bridge package.Spiral\Bootloader\Cycle\AnnotatedBootloader, Spiral\Bootloader\Cycle\CycleBootloader,
Spiral\Bootloader\Cycle\ProxiesBootloader, Spiral\Bootloader\Cycle\SchemaBootloader,
Spiral\Bootloader\Database\DatabaseBootloader, Spiral\Bootloader\Database\DisconnectsBootloader,
Spiral\Bootloader\Database\MigrationsBootloader is removed.
Use spiral/cycle-bridge package.Spiral\Bootloader\Broadcast\BroadcastBootloader is removed. Use spiral/roadrunner-broadcast package
instead.Spiral\Bootloader\Http\WebsocketsBootloader is removed.spiral/annotations is removed. Use spiral/attributes instead.void to a methods publish, publishDirectory, ensureDirectory
in Spiral\Module\PublisherInterface interface.Spiral\Http\SapiDispatcher and Spiral\Http\Emitter\SapiEmitter. Please, use
package spiral/sapi-bridge instead.Spiral\Bootloader\Http\DiactorosBootloader is removed. You can use the bootloader
Spiral\Nyholm\Bootloader\NyholmBootloader from the package spiral/nyholm-bridge to register PSR-7/PSR-17
factories.Spiral\Http\Diactoros\ResponseFactory, Spiral\Http\Diactoros\ServerRequestFactory, Spiral\Http\Diactoros\StreamFactory,
Spiral\Http\Diactoros\UploadedFileFactory, Spiral\Http\Diactoros\UriFactory
are removed. You can use spiral/nyholm-bridge to define PSR-17 factories.
HandlerInterface has been deleted.Spiral\Exceptions\Verbosity enum.addRoute in the Spiral\Router\RouterInterface
and Spiral\Router\Router.
Use method setRoute instead.Spiral\Validation\Checker\EntityChecker is removed.
Use Spiral\Cycle\Bootloader\ValidationBootloader with Spiral\Cycle\Validation\EntityChecker from
package spiral/cycle-bridgedatetime and timezone in the
Spiral\Validation\Checker\TypeChecker class. Use Spiral\Validation\Checker\DatetimeChecker::valid() and
Spiral\Validation\Checker\DatetimeChecker::timezone() instead.array|callable|string to the method parseCheck
in Spiral\Validation\ParserInterface interface.array|string|\Closure parameter type of $rules to the method getRules
in Spiral\Validation\RulesInterface interface.array|\ArrayAccess parameter type of $data to the method validate
in Spiral\Validation\ValidationInterface interface.mixed to the method getValue,
added mixed parameter type of $default to the method getValue,
added mixed parameter type of $context to the method withContext,
added return type mixed to the method getContext in Spiral\Validation\ValidatorInterface interface.void and mixed parameter type of $context to the method setContext,
added return type mixed to the method getContext in Spiral\Filters\FilterInterface interface.
Added return type mixed to the method getValue in Spiral\Filters\InputInterface.Dumper Component has been removed from the Framework.Spiral\Config\JsonPayloadConfig moved to the Spiral\Bootloader\Http\JsonPayloadConfig.mixed and array|string parameter type of $search,
array|string parameter type of $replace to the method replace in Spiral\Reactor\ReplaceableInterface.void to the method resume in Spiral\Session\SessionInterface.self and mixed parameter type of $value to the method set
in Spiral\Session\SessionSectionInterface.bool to the method has in Spiral\Session\SessionSectionInterface.mixed and mixed parameter type of $default to the method get
in Spiral\Session\SessionSectionInterface.mixed and mixed parameter type of $default to the method pull
in Spiral\Session\SessionSectionInterface.void to the method delete in Spiral\Session\SessionSectionInterface.void to the method clear in Spiral\Session\SessionSectionInterface.self to the method limit, added return type self to the
method offset
in Spiral\Pagination\PaginableInterface$printer now is not nullable in Spiral\Prototype\Injector constructor.self, added mixed parameter type of $value to the method setField,
added return type mixed, added mixed parameter type of $default to the method getField,
added return type self to the method setFields in Spiral\Models\EntityInterface.mixed to the method getValue in Spiral\Models\ValueInterface.self to the method addListener, added return type void to the
method removeListener
in Spiral\Logger\ListenerRegistryInterface interface.mixed to the method process in Spiral\Core\CoreInterceptorInterface
interface.mixed to the method callAction in Spiral\Core\CoreInterface interface.mixed to the method decrypt in Spiral\Encrypter\EncrypterInterface
interface.
in Spiral\DataGrid\InputInterface interface.array and mixed parameter type of $filler to the method fetch,
added return type mixed to the method offsetGet, added return type mixed and mixed parameter type
of $default to the method get in Spiral\Http\Request\InputBag class.void to the method setDefaults in Spiral\Config\ConfiguratorInterface
interface.Spiral\Core namespace has been changed.
New features:
Spiral\Core\ResolverInterface::validateArguments method for arguments validation.WeakReference bindings.starting renamed to booting, method started renamed to booted in the
class Spiral\Boot\AbstractKernel.self to the method set in Spiral\Boot\DirectoriesInterface interface.mixed and mixed parameter type of $default to the method get,
added in Spiral\Boot\EnvironmentInterface interface.static to the method addFinalizer,
added return type void to the method finalize in Spiral\Boot\FinalizerInterface interface.self to the method addDispatcher,
added return type mixed to the method serve in Spiral\Boot\KernelInterface interface.exceptionHandler parameter in the Spiral\Boot\AbstractKernel::create method.Spiral\Boot\AbstractKernel constructor is protected now.mixed to the method loadData,
added return type void and mixed parameter type of $data to the method saveData
in Spiral\Boot\MemoryInterface interface.Bootloaders, the name of the method has been changed from boot to init.
In the code of custom Bootloaders, need to change the name of the method.void to the method writeHeader, added return type void to the
method execute,
method whiteFooter renamed to writeFooter, added return type void to the method writeFooter
in Spiral\Console\SequenceInterface interface.bool to the method delete, added return type bool to the
method deleteDirectory,
added return type bool to the method touch, added return type bool to the method setPermissions
in Spiral\Files\FilesInterface.mixed to the method resolveValue in Spiral\Views\ContextInterface.mixed to the method getValue in Spiral\Views\DependencyInterface.void to a methods setLocales, saveLocale
in Spiral\Translator\Catalogue\CacheInterface.void to the method save
in Spiral\Translator\CatalogueManagerInterface.string|\Stringable parameter type of $id to a methods getContents, getStream,
exists, getLastModified, getSize, getMimeType, getVisibility
in Spiral\Storage\Storage\ReadableInterface.string|\Stringable parameter type of $id to a methods create, setVisibility,
delete. Added string|\Stringable parameter type of $id and mixed parameter type of $content
to the method write, added string|\Stringable parameter type of $source and $destination to a methods
copy, move in Spiral\Storage\Storage\WritableInterface.mixed and mixed parameter type of $default to the method getAttribute
in
Spiral\Stempler\Node\AttributedInterface.mixed and mixed parameter type of $node to the method enterNode,
added return type mixed and mixed parameter type of $node to the method leaveNode
in Spiral\Stempler\VisitorInterface.pipeline parameter in mailer config. Please, use the parameter queue
instead.self to a methods addRole, removeRole
in Spiral\Security\PermissionsInterfaceself to a methods set, remove in Spiral\Security\RulesInterfaceSpiral\Bootloader\Distribution\DistributionBootloader moved to
the Spiral\Distribution\Bootloader\DistributionBootloader,
config Spiral\Bootloader\Distribution\DistributionConfig moved to
the Spiral\Distribution\Config\DistributionConfig.Spiral\Bootloader\Storage\StorageBootloader moved to
the Spiral\Storage\Bootloader\StorageBootloader,
config Spiral\Bootloader\Storage\StorageConfig moved to the Spiral\Storage\Config\StorageConfig.Spiral\Bootloader\Security\ValidationBootloader moved to
the Spiral\Validation\Bootloader\ValidationBootloader.Spiral\Bootloader\Views\ViewsBootloader moved to
the Spiral\Views\Bootloader\ViewsBootloader.$overwrite
changed from true to false in the Spiral\Boot\Environment.pushCallable in Spiral\Queue\QueueTrait.Spiral\DotEnv\Bootloader\DotenvBootloader must be moved from the LOAD
section to the
SYSTEM section in the application App.php file.PHP increased to ^8.1symfony/finder increased to ^5.3league/flysystem increased to ^2.3symfony/console increased to ^6.0Spiral\Snapshots\FileSnapshooter uses Verbosity enum instead of int flag.Spiral\Snapshots\FileSnapshooter uses ExceptionRendererInterface $renderer instead
of HandlerInterface $handler.Spiral\Snapshots\SnapshotterInterface usage replaced with Spiral\Exceptions\ExceptionReporterInterface in all
classes.bin/spiral. Uses the spiral/roadrunner-cli package instead.Spiral\Debug\StateConsumerInterface.boot method in Bootloaders. It will be executed after the init method is executed in
all Bootloaders.
The old boot method has been renamed to init. See High Impact Changes section.Bootloaders requested in the init and boot methods.
They no longer need to be specified explicitly in DEPENDENCIES property or in defineDependencies method.MONOLOG_DEFAULT_CHANNEL.Spiral\Exceptions\Reporter\FileReporter, which
implements Spiral\Exceptions\ExceptionReporterInterface
and can create text files with information about an exception.Nothing published for this version
- High Impact Changes - Medium Impact Changes - Low Impact Changes - Other Features - Bug Fixes
Nothing published for this version
Dispatcher Spiral\Http\SapiDispatcher is deprecated. Will be moved to spiral/sapi-bridge and removed in v3.0 - Classes Spiral\Http\Emitter\SapiEmitter…
Spiral\Http\SapiDispatcher is deprecated. Will be moved to spiral/sapi-bridge and removed in v3.0Spiral\Http\Emitter\SapiEmitter, Spiral\Http\Exception\EmitterException, Spiral\Http\EmitterInterface,
Spiral\Http\SapiRequestFactory is deprecated. Will be removed in version v3.0.
After the release of v3.0, must use the package spiral/sapi-bridge for SAPI functionality.
dumper component is deprecated and will be removed in v3.0chunkSize in the http configuration file.Queueable to mark classes that can be queued.
Added Spiral\Queue\QueueableDetector class to easily check if an object should be queued or not and get the
queue
from an attribute or getQueue method on the object.Bootloaders Spiral\Bootloader\Broadcast\BroadcastBootloader, Spiral\Bootloader\Http\WebsocketsBootloader are deprecated. Will be removed in v3.0.
Spiral\Bootloader\Broadcast\BroadcastBootloader, Spiral\Bootloader\Http\WebsocketsBootloader
are deprecated. Will be removed in v3.0.Spiral\Command\Database\ListCommand, Spiral\Command\Database\TableCommand,
Spiral\Command\GRPC\GenerateCommand, Spiral\Command\GRPC\ListCommand, Spiral\Command\Migrate\AbstractCommand,
Spiral\Command\Migrate\InitCommand, Spiral\Command\Migrate\MigrateCommand, Spiral\Command\Migrate\ReplayCommand,
Spiral\Command\Migrate\RollbackCommand, Spiral\Command\Migrate\StatusCommand are deprecated. Will be removed
in v3.0.Spiral\Broadcast\Config\WebsocketsConfig, Spiral\Broadcast\Middleware\WebsocketsMiddleware,
Spiral\GRPC\Exception\CompileException, Spiral\GRPC\GRPCDispatcher, Spiral\GRPC\LocatorInterface,
Spiral\GRPC\ProtoCompiler, Spiral\GRPC\ServiceLocator, Spiral\Http\LegacyRrDispatcher, Spiral\Http\RrDispatcher
are deprecated. Will be removed in v3.0.Spiral\DataGrid\Annotation\DataGrid, Spiral\DataGrid\Bootloader\GridBootloader,
Spiral\DataGrid\Config\GridConfig, Spiral\DataGrid\Interceptor\GridInterceptor, Spiral\DataGrid\Response\GridResponse,
Spiral\DataGrid\Response\GridResponseInterface, Spiral\DataGrid\GridInput.addWriter in Spiral\DataGrid\Bootloader\GridBootloader.psr/log dependency from ^1.0 to 1 - 3[spiral/queue] Added queue injector #592
Spiral\Boot\Environment #599Nothing published for this version
…is deprecated. Will be moved to spiral/cycle-bridge and removed in v3.0
Spiral\Session\SessionFactoryInterface. Now you can use custom implementation of
sessions.Spiral\Scaffolder\Command\MigrationCommand, Spiral\Scaffolder\Command\Database\RepositoryCommand,
Spiral\Scaffolder\Command\Database\EntityCommand is deprecated. Will be moved to spiral/cycle-bridge and
removed in v3.0Spiral\Scaffolder\Declaration\MigrationDeclaration is deprecated. Will be moved
to spiral/cycle-bridge
and removed in v3.0PHP increased to ^7.4queue and cache propertiesSpiral\Mailer\Message is no longer final and is available for extension[spiral/sendit] Method getQueuePipeline of Spiral\SendIt\Config\MailerConfig class is deprecated. Use method getQueue instead. Added environment varia…
getQueuePipeline of Spiral\SendIt\Config\MailerConfig class is deprecated.
Use method getQueue instead. Added environment variables MAILER_QUEUE and MAILER_QUEUE_CONNECTIONYour coding agent can read these notes before it upgrades. Set up the MCP server →