webpatser / fledge-framework
The Fledge Framework — PHP 8.5 optimized Laravel.
Requires
- php: ^8.5
- composer-runtime-api: ^2.2
- ext-ctype: *
- ext-filter: *
- ext-hash: *
- ext-mbstring: *
- ext-openssl: *
- ext-session: *
- ext-tokenizer: *
- brick/math: ^0.14.2 || ^0.15 || ^0.16 || ^0.17
- doctrine/inflector: ^2.0.5
- dragonmantank/cron-expression: ^3.4
- egulias/email-validator: ^4.0
- fruitcake/php-cors: ^1.3
- guzzlehttp/guzzle: ^7.8.2
- guzzlehttp/promises: ^2.0.3
- guzzlehttp/uri-template: ^1.0
- laravel/prompts: ^0.3.0
- laravel/serializable-closure: ^2.0.10
- league/commonmark: ^2.8.1
- league/flysystem: ^3.25.1
- league/flysystem-local: ^3.25.1
- monolog/monolog: ^3.0
- nesbot/carbon: ^3.8.4
- nunomaduro/termwind: ^2.0
- psr/container: ^1.1.1 || ^2.0.1
- psr/log: ^1.0 || ^2.0 || ^3.0
- psr/simple-cache: ^1.0 || ^2.0 || ^3.0
- ramsey/uuid: ^4.7
- revolt/event-loop: ^1.0
- symfony/console: ^7.4.0 || ^8.0.0
- symfony/error-handler: ^7.4.0 || ^8.0.0
- symfony/finder: ^7.4.0 || ^8.0.0
- symfony/http-foundation: ^7.4.0 || ^8.0.0
- symfony/http-kernel: ^7.4.0 || ^8.0.0
- symfony/mailer: ^7.4.0 || ^8.0.0
- symfony/mime: ^7.4.0 || ^8.0.0
- symfony/polyfill-php86: ^1.36
- symfony/process: ^7.4.5 || ^8.0.5
- symfony/routing: ^7.4.0 || ^8.0.0
- symfony/uid: ^7.4.0 || ^8.0.0
- symfony/var-dumper: ^7.4.0 || ^8.0.0
- tijsverkoyen/css-to-inline-styles: ^2.2.5
- vlucas/phpdotenv: ^5.6.1
- webpatser/fledge-fiber: ^13.4
- webpatser/fledge-portable-ascii: ^1.0
Requires (Dev)
- ext-gmp: *
- ably/ably-php: ^1.0
- aws/aws-sdk-php: ^3.322.9
- fakerphp/faker: ^1.24
- guzzlehttp/psr7: ^2.9
- laravel/pao: ^1.0.6
- laravel/pint: ^1.18
- league/flysystem-aws-s3-v3: ^3.25.1
- league/flysystem-ftp: ^3.25.1
- league/flysystem-path-prefixing: ^3.25.1
- league/flysystem-read-only: ^3.25.1
- league/flysystem-sftp-v3: ^3.25.1
- mockery/mockery: ^1.6.10
- opis/json-schema: ^2.4.1
- orchestra/testbench-core: ^11.0.0
- pda/pheanstalk: ^7.0.0 || ^8.0.0
- php-http/discovery: ^1.15
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^12.5.23 || ^13.1.7
- predis/predis: ^2.3 || ^3.0
- rector/rector: ^2.3
- resend/resend-php: ^1.0
- symfony/cache: ^7.4.0 || ^8.0.0
- symfony/http-client: ^7.4.0 || ^8.0.0
- symfony/psr-http-message-bridge: ^7.4.0 || ^8.0.0
- symfony/translation: ^7.4.0 || ^8.0.0
Suggests
- ext-apcu: Required to use the APC cache driver.
- ext-fileinfo: Required to use the Filesystem class.
- ext-ftp: Required to use the Flysystem FTP driver.
- ext-gd: Required to use Illuminate\Http\Testing\FileFactory::image().
- ext-memcached: Required to use the memcache cache driver.
- ext-pcntl: Required to use all features of the queue worker and console signal trapping.
- ext-pdo: Required to use all database features.
- ext-posix: Required to use all features of the queue worker.
- ext-redis: Required to use the Redis cache and queue drivers (^4.0 || ^5.0 || ^6.0).
- ably/ably-php: Required to use the Ably broadcast driver (^1.0).
- aws/aws-sdk-php: Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.322.9).
- brianium/paratest: Required to run tests in parallel (^7.0 || ^8.0).
- fakerphp/faker: Required to generate fake data using the fake() helper (^1.23).
- filp/whoops: Required for friendly error pages in development (^2.14.3).
- laravel/tinker: Required to use the tinker console command (^2.0).
- league/flysystem-aws-s3-v3: Required to use the Flysystem S3 driver (^3.25.1).
- league/flysystem-ftp: Required to use the Flysystem FTP driver (^3.25.1).
- league/flysystem-path-prefixing: Required to use the scoped driver (^3.25.1).
- league/flysystem-read-only: Required to use read-only disks (^3.25.1)
- league/flysystem-sftp-v3: Required to use the Flysystem SFTP driver (^3.25.1).
- mockery/mockery: Required to use mocking (^1.6).
- pda/pheanstalk: Required to use the beanstalk queue driver (^7.0 || ^8.0).
- php-http/discovery: Required to use PSR-7 bridging features (^1.15).
- phpunit/phpunit: Required to use assertions and run tests (^12.5.23 || ^13.1.7).
- predis/predis: Required to use the predis connector (^2.3 || ^3.0).
- psr/http-message: Required to allow Storage::put to accept a StreamInterface (^1.0).
- pusher/pusher-php-server: Required to use the Pusher broadcast driver (^6.0 || ^7.0).
- resend/resend-php: Required to enable support for the Resend mail transport (^0.10.0 || ^1.0).
- symfony/cache: Required to PSR-6 cache bridge (^7.4 || ^8.0).
- symfony/filesystem: Required to enable support for relative symbolic links (^7.4 || ^8.0).
- symfony/http-client: Required to enable support for the Symfony API mail transports (^7.4 || ^8.0).
- symfony/mailgun-mailer: Required to enable support for the Mailgun mail transport (^7.4 || ^8.0).
- symfony/postmark-mailer: Required to enable support for the Postmark mail transport (^7.4 || ^8.0).
- symfony/psr-http-message-bridge: Required to use PSR-7 bridging features (^7.4 || ^8.0).
- webpatser/fledge-fiber-database: Non-blocking Fiber-based MySQL, MariaDB, and PostgreSQL drivers (^13.4).
- webpatser/fledge-fiber-http: Non-blocking Fiber-based HTTP handler replacing cURL (^13.4).
- webpatser/fledge-fiber-redis: Non-blocking Fiber-based Redis driver (^13.4).
- webpatser/torque: Fiber-based concurrent queue worker replacing Horizon.
Provides
- psr/container-implementation: 1.1 || 2.0
- psr/log-implementation: 1.0 || 2.0 || 3.0
- psr/simple-cache-implementation: 1.0 || 2.0 || 3.0
Conflicts
- tightenco/collect: <5.5.33
Replaces
- illuminate/auth: v13.9.0.1
- illuminate/broadcasting: v13.9.0.1
- illuminate/bus: v13.9.0.1
- illuminate/cache: v13.9.0.1
- illuminate/collections: v13.9.0.1
- illuminate/concurrency: v13.9.0.1
- illuminate/conditionable: v13.9.0.1
- illuminate/config: v13.9.0.1
- illuminate/console: v13.9.0.1
- illuminate/container: v13.9.0.1
- illuminate/contracts: v13.9.0.1
- illuminate/cookie: v13.9.0.1
- illuminate/database: v13.9.0.1
- illuminate/encryption: v13.9.0.1
- illuminate/events: v13.9.0.1
- illuminate/filesystem: v13.9.0.1
- illuminate/hashing: v13.9.0.1
- illuminate/http: v13.9.0.1
- illuminate/json-schema: v13.9.0.1
- illuminate/log: v13.9.0.1
- illuminate/macroable: v13.9.0.1
- illuminate/mail: v13.9.0.1
- illuminate/notifications: v13.9.0.1
- illuminate/pagination: v13.9.0.1
- illuminate/pipeline: v13.9.0.1
- illuminate/process: v13.9.0.1
- illuminate/queue: v13.9.0.1
- illuminate/redis: v13.9.0.1
- illuminate/reflection: v13.9.0.1
- illuminate/routing: v13.9.0.1
- illuminate/session: v13.9.0.1
- illuminate/support: v13.9.0.1
- illuminate/testing: v13.9.0.1
- illuminate/translation: v13.9.0.1
- illuminate/validation: v13.9.0.1
- illuminate/view: v13.9.0.1
- laravel/framework: v13.9.0.1
- spatie/once: *
- dev-fledge-13
- v13.9.0.1
- v13.9.0
- v13.8.0.1
- v13.8.0
- v13.7.0.4
- v13.7.0.3
- v13.7.0.2
- v13.7.0.1
- v13.7.0
- v13.6.0.4
- v13.6.0.3
- v13.6.0.2
- v13.6.0.1
- v13.6.0
- v13.5.0.2
- v13.5.0.1
- v13.5.0
- v13.4.0.3
- v13.4.0.2
- v13.4.0.1
- v13.4.0
- v13.3.0.8
- v13.3.0.7
- v13.3.0.6
- v13.3.0.5
- v13.3.0.4
- v13.3.0.3
- v13.3.0.2
- v13.3.0.1
- v13.3.0
- v13.2.0
- v13.1.1
- v13.1.0
- v13.0.0
- v12.58.0
- v12.57.0
- v12.56.0
- v12.55.1
- v12.55.0
- v12.54.1
- v12.54.0
- v12.53.0
- v12.52.0
- v12.51.0
- v12.50.0
- v12.49.0
- v12.48.1
- v12.48.0
- v12.47.0
- v12.46.0
- v12.45.2
- v12.45.1
- v12.45.0
- v12.44.0
- v12.43.1
- v12.43.0
- v12.42.0
- v12.41.1
- v12.41.0
- v12.40.2
- v12.40.1
- v12.40.0
- v12.39.0
- v12.38.1
- v12.38.0
- v12.37.0
- v12.36.1
- v12.36.0
- v12.35.1
- v12.35.0
- v12.34.0
- v12.33.0
- v12.32.5
- v12.32.4
- v12.32.3
- v12.32.2
- v12.32.1
- v12.32.0
- v12.31.1
- v12.31.0
- v12.30.1
- v12.30.0
- v12.29.0
- v12.28.1
- v12.28.0
- v12.27.1
- v12.27.0
- v12.26.4
- v12.26.3
- v12.26.2
- v12.26.1
- v12.26.0
- v12.25.0
- v12.24.0
- v12.23.1
- v12.23.0
- v12.22.1
- v12.22.0
- v12.21.0
- v12.20.0
- v12.19.3
- v12.19.2
- v12.19.1
- v12.19.0
- v12.18.0
- v12.17.0
- v12.16.0
- v12.15.0
- v12.14.1
- v12.14.0
- v12.13.0
- v12.12.0
- v12.11.1
- v12.11.0
- v12.10.2
- v12.10.1
- v12.10.0
- v12.9.2
- v12.9.1
- v12.9.0
- v12.8.1
- v12.8.0
- v12.7.2
- v12.7.1
- v12.7.0
- v12.6.0
- v12.5.0
- v12.4.1
- v12.4.0
- v12.3.0
- v12.2.0
- v12.1.1
- v12.1.0
- v12.0.1
- v12.0.0
- v11.51.0
- v11.50.0
- v11.49.0
- v11.48.0
- v11.47.0
- v11.46.2
- v11.46.1
- v11.46.0
- v11.45.3
- v11.45.2
- v11.45.1
- v11.45.0
- v11.44.7
- v11.44.6
- v11.44.5
- v11.44.4
- v11.44.3
- v11.44.2
- v11.44.1
- v11.44.0
- v11.43.2
- v11.43.1
- v11.43.0
- v11.42.1
- v11.42.0
- v11.41.3
- v11.41.2
- v11.41.1
- v11.41.0
- v11.40.0
- v11.39.1
- v11.39.0
- v11.38.2
- v11.38.1
- v11.38.0
- v11.37.0
- v11.36.1
- v11.36.0
- v11.35.1
- v11.35.0
- v11.34.2
- v11.34.1
- v11.34.0
- v11.33.2
- v11.33.1
- v11.33.0
- v11.32.0
- v11.31.0
- v11.30.0
- v11.29.0
- v11.28.1
- v11.28.0
- v11.27.2
- v11.27.1
- v11.27.0
- v11.26.0
- v11.25.0
- v11.24.1
- v11.24.0
- v11.23.5
- v11.23.4
- v11.23.3
- v11.23.2
- v11.23.1
- v11.23.0
- v11.22.0
- v11.21.0
- v11.20.0
- v11.19.0
- v11.18.1
- v11.18.0
- v11.17.0
- v11.16.0
- v11.15.0
- v11.14.0
- v11.13.0
- v11.12.0
- v11.11.1
- v11.11.0
- v11.10.0
- v11.9.2
- v11.9.1
- v11.9.0
- v11.8.0
- v11.7.0
- v11.6.0
- v11.5.0
- v11.4.0
- v11.3.1
- v11.3.0
- v11.2.0
- v11.1.1
- v11.1.0
- v11.0.8
- v11.0.7
- v11.0.6
- v11.0.5
- v11.0.4
- v11.0.3
- v11.0.2
- v11.0.1
- v11.0.0
- 10.50.2
- v10.50.1
- v10.50.0
- v10.49.1
- v10.49.0
- v10.48.29
- v10.48.28
- v10.48.27
- v10.48.26
- v10.48.25
- v10.48.24
- v10.48.23
- v10.48.22
- v10.48.21
- v10.48.20
- v10.48.19
- v10.48.18
- v10.48.17
- v10.48.16
- v10.48.15
- v10.48.14
- v10.48.13
- v10.48.12
- v10.48.11
- v10.48.10
- v10.48.9
- v10.48.8
- v10.48.7
- v10.48.6
- v10.48.5
- v10.48.4
- v10.48.3
- v10.48.2
- v10.48.1
- v10.48.0
- v10.47.0
- v10.46.0
- v10.45.1
- v10.45.0
- v10.44.0
- v10.43.0
- v10.42.0
- v10.41.0
- v10.40.0
- v10.39.0
- v10.38.2
- v10.38.1
- v10.38.0
- v10.37.3
- v10.37.2
- v10.37.1
- v10.37.0
- v10.36.0
- v10.35.0
- v10.34.2
- v10.34.1
- v10.34.0
- v10.33.0
- v10.32.1
- v10.32.0
- v10.31.0
- v10.30.1
- v10.30.0
- v10.29.0
- v10.28.0
- v10.27.0
- v10.26.2
- v10.26.1
- v10.26.0
- v10.25.2
- v10.25.1
- v10.25.0
- v10.24.0
- v10.23.1
- v10.23.0
- v10.22.0
- v10.21.1
- v10.21.0
- v10.20.0
- v10.19.0
- v10.18.0
- v10.17.1
- v10.17.0
- v10.16.1
- v10.16.0
- v10.15.0
- v10.14.1
- v10.14.0
- v10.13.5
- v10.13.3
- v10.13.2
- v10.13.1
- v10.13.0
- v10.12.0
- v10.11.0
- v10.10.1
- v10.10.0
- v10.9.0
- v10.8.0
- v10.7.1
- v10.7.0
- v10.6.2
- v10.6.1
- v10.6.0
- v10.5.1
- v10.5.0
- v10.4.1
- v10.4.0
- v10.3.3
- v10.3.2
- v10.3.1
- v10.3.0
- v10.2.0
- v10.1.5
- v10.1.4
- v10.1.3
- v10.1.2
- v10.1.1
- v10.1.0
- v10.0.3
- v10.0.2
- v10.0.1
- v10.0.0
- v9.52.21
- v9.52.20
- v9.52.19
- v9.52.18
- v9.52.17
- v9.52.16
- v9.52.15
- v9.52.14
- v9.52.13
- v9.52.12
- v9.52.11
- v9.52.10
- v9.52.9
- v9.52.8
- v9.52.7
- v9.52.6
- v9.52.5
- v9.52.4
- v9.52.3
- v9.52.2
- v9.52.1
- v9.52.0
- v9.51.0
- v9.50.2
- v9.50.1
- v9.50.0
- v9.49.0
- v9.48.0
- v9.47.0
- v9.46.0
- v9.45.1
- v9.45.0
- v9.44.0
- v9.43.0
- v9.42.2
- v9.42.1
- v9.42.0
- v9.41.0
- v9.40.1
- v9.40.0
- v9.39.0
- v9.38.0
- v9.37.0
- v9.36.4
- v9.36.3
- v9.36.2
- v9.36.1
- v9.36.0
- v9.35.1
- v9.35.0
- v9.34.0
- v9.33.0
- v9.32.0
- v9.31.0
- v9.30.1
- v9.30.0
- v9.29.0
- v9.28.0
- v9.27.0
- v9.26.1
- v9.26.0
- v9.25.1
- v9.25.0
- v9.24.0
- v9.23.0
- v9.22.1
- v9.22.0
- v9.21.6
- v9.21.5
- v9.21.4
- v9.21.3
- v9.21.2
- v9.21.1
- v9.21.0
- v9.20.0
- v9.19.0
- v9.18.0
- v9.17.0
- v9.16.0
- v9.15.0
- v9.14.1
- v9.14.0
- v9.13.0
- v9.12.2
- v9.12.1
- v9.12.0
- v9.11.0
- v9.10.1
- v9.10.0
- v9.9.0
- v9.8.1
- v9.8.0
- v9.7.0
- v9.6.0
- v9.5.1
- v9.5.0
- v9.4.1
- v9.4.0
- v9.3.1
- v9.3.0
- v9.2.0
- v9.1.0
- v9.0.2
- v9.0.1
- v9.0.0
- v9.0.0-beta.5
- v9.0.0-beta.4
- v9.0.0-beta.3
- v9.0.0-beta.2
- v9.0.0-beta.1
- v8.83.29
- v8.83.28
- v8.83.27
- v8.83.26
- v8.83.25
- v8.83.24
- v8.83.23
- v8.83.22
- v8.83.21
- v8.83.20
- v8.83.19
- v8.83.18
- v8.83.17
- v8.83.16
- v8.83.15
- v8.83.14
- v8.83.13
- v8.83.12
- v8.83.11
- v8.83.10
- v8.83.9
- v8.83.8
- v8.83.7
- v8.83.6
- v8.83.5
- v8.83.4
- v8.83.3
- v8.83.2
- v8.83.1
- v8.83.0
- v8.82.0
- v8.81.0
- v8.80.0
- v8.79.0
- v8.78.1
- v8.78.0
- v8.77.1
- v8.77.0
- v8.76.2
- v8.76.1
- v8.76.0
- v8.75.0
- v8.74.0
- v8.73.2
- v8.73.1
- v8.73.0
- v8.72.0
- v8.71.0
- v8.70.2
- v8.70.1
- v8.70.0
- v8.69.0
- v8.68.1
- v8.68.0
- v8.67.0
- v8.66.0
- v8.65.0
- v8.64.0
- v8.63.0
- v8.62.0
- v8.61.0
- v8.60.0
- v8.59.0
- v8.58.0
- v8.57.0
- v8.56.0
- v8.55.0
- v8.54.0
- v8.53.1
- v8.53.0
- v8.52.0
- v8.51.0
- v8.50.0
- v8.49.2
- v8.49.1
- v8.49.0
- v8.48.2
- v8.48.1
- v8.48.0
- v8.47.0
- v8.46.0
- v8.45.1
- v8.45.0
- v8.44.0
- v8.43.0
- v8.42.1
- v8.42.0
- v8.41.0
- v8.40.0
- v8.39.0
- v8.38.0
- v8.37.0
- v8.36.2
- v8.36.1
- v8.36.0
- v8.35.1
- v8.35.0
- v8.34.0
- v8.33.1
- v8.33.0
- v8.32.1
- v8.32.0
- v8.31.0
- v8.30.1
- v8.30.0
- v8.29.0
- v8.28.1
- v8.28.0
- v8.27.0
- v8.26.1
- v8.26.0
- v8.25.0
- v8.24.0
- v8.23.1
- v8.23.0
- v8.22.1
- v8.22.0
- v8.21.0
- v8.20.1
- v8.20.0
- v8.19.0
- v8.18.1
- v8.18.0
- v8.17.2
- v8.17.1
- v8.17.0
- v8.16.1
- v8.16.0
- v8.15.0
- v8.14.0
- v8.13.0
- v8.12.3
- v8.12.2
- v8.12.1
- v8.12.0
- v8.11.2
- v8.11.1
- v8.11.0
- v8.10.0
- v8.9.0
- v8.8.0
- v8.7.1
- v8.7.0
- v8.6.0
- v8.5.0
- v8.4.0
- v8.3.0
- v8.2.0
- v8.1.0
- v8.0.4
- v8.0.3
- v8.0.2
- v8.0.1
- v8.0.0
- v7.30.7
- v7.30.6
- v7.30.5
- v7.30.4
- v7.30.3
- v7.30.2
- v7.30.1
- v7.30.0
- v7.29.3
- v7.29.2
- v7.29.1
- v7.29.0
- v7.28.4
- v7.28.3
- v7.28.2
- v7.28.1
- v7.28.0
- v7.27.0
- v7.26.1
- v7.26.0
- v7.25.0
- v7.24.0
- v7.23.2
- v7.23.1
- v7.23.0
- v7.22.4
- v7.22.3
- v7.22.2
- v7.22.1
- v7.22.0
- v7.21.0
- v7.20.0
- v7.19.1
- v7.19.0
- v7.18.0
- v7.17.2
- v7.17.1
- v7.17.0
- v7.16.1
- v7.16.0
- v7.15.0
- v7.14.1
- v7.14.0
- v7.13.0
- v7.12.0
- v7.11.0
- v7.10.3
- v7.10.2
- v7.10.1
- v7.10.0
- v7.9.2
- v7.9.1
- v7.9.0
- v7.8.1
- v7.8.0
- v7.7.1
- v7.7.0
- v7.6.2
- v7.6.1
- v7.6.0
- v7.5.2
- v7.5.1
- v7.5.0
- v7.4.0
- v7.3.0
- v7.2.2
- v7.2.1
- v7.2.0
- v7.1.3
- v7.1.2
- v7.1.1
- v7.1.0
- v7.0.8
- v7.0.7
- v7.0.6
- v7.0.5
- v7.0.4
- v7.0.3
- v7.0.2
- v7.0.1
- v7.0.0
- v6.20.45
- v6.20.44
- v6.20.43
- v6.20.42
- v6.20.41
- v6.20.40
- v6.20.39
- v6.20.38
- v6.20.37
- v6.20.36
- v6.20.35
- v6.20.34
- v6.20.33
- v6.20.32
- v6.20.31
- v6.20.30
- v6.20.29
- v6.20.28
- v6.20.27
- v6.20.26
- v6.20.25
- v6.20.24
- v6.20.23
- v6.20.22
- v6.20.21
- v6.20.20
- v6.20.19
- v6.20.18
- v6.20.17
- v6.20.16
- v6.20.15
- v6.20.14
- v6.20.13
- v6.20.12
- v6.20.11
- v6.20.10
- v6.20.9
- v6.20.8
- v6.20.7
- v6.20.6
- v6.20.5
- v6.20.4
- v6.20.3
- v6.20.2
- v6.20.1
- v6.20.0
- v6.19.1
- v6.19.0
- v6.18.43
- v6.18.42
- v6.18.41
- v6.18.40
- v6.18.39
- v6.18.38
- v6.18.37
- v6.18.36
- v6.18.35
- v6.18.34
- v6.18.33
- v6.18.32
- v6.18.31
- v6.18.30
- v6.18.29
- v6.18.28
- v6.18.27
- v6.18.26
- v6.18.25
- v6.18.24
- v6.18.23
- v6.18.22
- v6.18.21
- v6.18.20
- v6.18.19
- v6.18.18
- v6.18.17
- v6.18.16
- v6.18.15
- v6.18.14
- v6.18.13
- v6.18.12
- v6.18.11
- v6.18.10
- v6.18.9
- v6.18.8
- v6.18.7
- v6.18.6
- v6.18.5
- v6.18.4
- v6.18.3
- v6.18.2
- v6.18.1
- v6.18.0
- v6.17.1
- v6.17.0
- v6.16.0
- v6.15.1
- v6.15.0
- v6.14.0
- v6.13.1
- v6.13.0
- v6.12.0
- v6.11.0
- v6.10.1
- v6.10.0
- v6.9.0
- v6.8.0
- v6.7.0
- v6.6.2
- v6.6.1
- v6.6.0
- v6.5.2
- v6.5.1
- v6.5.0
- v6.4.1
- v6.4.0
- v6.3.0
- v6.2.0
- v6.1.0
- v6.0.4
- v6.0.3
- v6.0.2
- v6.0.1
- v6.0.0
- v5.8.38
- v5.8.37
- v5.8.36
- v5.8.35
- v5.8.34
- v5.8.33
- v5.8.32
- v5.8.31
- v5.8.30
- v5.8.29
- v5.8.28
- v5.8.27
- v5.8.26
- v5.8.25
- v5.8.24
- v5.8.23
- v5.8.22
- v5.8.21
- v5.8.20
- v5.8.19
- v5.8.18
- v5.8.17
- v5.8.16
- v5.8.15
- v5.8.14
- v5.8.13
- v5.8.12
- v5.8.11
- v5.8.10
- v5.8.9
- v5.8.8
- v5.8.7
- v5.8.6
- v5.8.5
- v5.8.4
- v5.8.3
- v5.8.2
- v5.8.1
- v5.8.0
- v5.7.29
- v5.7.28
- v5.7.27
- v5.7.26
- v5.7.25
- v5.7.24
- v5.7.23
- v5.7.22
- v5.7.21
- v5.7.20
- v5.7.19
- v5.7.18
- v5.7.17
- v5.7.16
- v5.7.15
- v5.7.14
- v5.7.13
- v5.7.12
- v5.7.11
- v5.7.10
- v5.7.9
- v5.7.8
- v5.7.7
- v5.7.6
- v5.7.5
- v5.7.4
- v5.7.3
- v5.7.2
- v5.7.1
- v5.7.0
- v5.6.40
- v5.6.39
- v5.6.38
- v5.6.37
- v5.6.36
- v5.6.35
- v5.6.34
- v5.6.33
- v5.6.32
- v5.6.31
- v5.6.30
- v5.6.29
- v5.6.28
- v5.6.27
- v5.6.26
- v5.6.25
- v5.6.24
- v5.6.23
- v5.6.22
- v5.6.21
- v5.6.20
- v5.6.19
- v5.6.18
- v5.6.17
- v5.6.16
- v5.6.15
- v5.6.14
- v5.6.13
- v5.6.12
- v5.6.11
- v5.6.10
- v5.6.9
- v5.6.8
- v5.6.7
- v5.6.6
- v5.6.5
- v5.6.4
- v5.6.3
- v5.6.2
- v5.6.1
- v5.6.0
- v5.5.50
- v5.5.49
- v5.5.48
- v5.5.47
- v5.5.46
- v5.5.45
- v5.5.44
- v5.5.43
- v5.5.42
- v5.5.41
- v5.5.40
- v5.5.39
- v5.5.38
- v5.5.37
- v5.5.36
- v5.5.35
- v5.5.34
- v5.5.33
- v5.5.32
- v5.5.31
- v5.5.30
- v5.5.29
- v5.5.28
- v5.5.27
- v5.5.26
- v5.5.25
- v5.5.24
- v5.5.23
- v5.5.22
- v5.5.21
- v5.5.20
- v5.5.19
- v5.5.18
- v5.5.17
- v5.5.16
- v5.5.15
- v5.5.14
- v5.5.13
- v5.5.12
- v5.5.11
- v5.5.10
- v5.5.9
- v5.5.8
- v5.5.7
- v5.5.6
- v5.5.5
- v5.5.4
- v5.5.3
- v5.5.2
- v5.5.1
- v5.5.0
- v5.4.36
- v5.4.35
- v5.4.34
- v5.4.33
- v5.4.32
- v5.4.31
- v5.4.30
- v5.4.29
- v5.4.28
- v5.4.27
- v5.4.26
- v5.4.25
- v5.4.24
- v5.4.23
- v5.4.22
- v5.4.21
- v5.4.20
- v5.4.19
- v5.4.18
- v5.4.17
- v5.4.16
- v5.4.15
- v5.4.14
- v5.4.13
- v5.4.12
- v5.4.11
- v5.4.10
- v5.4.9
- v5.4.8
- v5.4.7
- v5.4.6
- v5.4.5
- v5.4.4
- v5.4.3
- v5.4.2
- v5.4.1
- v5.4.0
- v5.3.31
- v5.3.30
- v5.3.29
- v5.3.28
- v5.3.27
- v5.3.26
- v5.3.25
- v5.3.24
- v5.3.23
- v5.3.22
- v5.3.21
- v5.3.20
- v5.3.19
- v5.3.18
- v5.3.17
- v5.3.16
- v5.3.15
- v5.3.14
- v5.3.13
- v5.3.12
- v5.3.11
- v5.3.10
- v5.3.9
- v5.3.8
- v5.3.7
- v5.3.6
- v5.3.5
- v5.3.4
- v5.3.3
- v5.3.2
- v5.3.1
- v5.3.0
- v5.3.0-RC1
- v5.2.45
- v5.2.44
- v5.2.43
- v5.2.42
- 5.2.41
- v5.2.40
- v5.2.39
- v5.2.38
- v5.2.37
- v5.2.36
- v5.2.35
- v5.2.34
- v5.2.33
- v5.2.32
- v5.2.31
- v5.2.30
- v5.2.29
- v5.2.28
- v5.2.27
- v5.2.26
- v5.2.25
- v5.2.24
- v5.2.23
- v5.2.22
- v5.2.21
- v5.2.20
- v5.2.19
- v5.2.18
- v5.2.17
- v5.2.16
- v5.2.15
- v5.2.14
- v5.2.13
- v5.2.12
- v5.2.11
- v5.2.10
- v5.2.9
- v5.2.8
- v5.2.7
- v5.2.6
- v5.2.5
- v5.2.4
- v5.2.3
- v5.2.2
- v5.2.1
- v5.2.0
- v5.2.0-beta1
- v5.1.46
- v5.1.45
- v5.1.44
- v5.1.43
- v5.1.42
- v5.1.41
- v5.1.40
- v5.1.39
- v5.1.38
- v5.1.37
- v5.1.36
- v5.1.35
- v5.1.34
- v5.1.33
- v5.1.32
- v5.1.31
- v5.1.30
- v5.1.29
- v5.1.28
- v5.1.27
- v5.1.26
- v5.1.25
- v5.1.24
- v5.1.23
- v5.1.22
- v5.1.21
- v5.1.20
- v5.1.19
- v5.1.18
- v5.1.17
- v5.1.16
- v5.1.15
- v5.1.14
- v5.1.13
- v5.1.12
- v5.1.11
- v5.1.10
- v5.1.9
- v5.1.8
- v5.1.7
- v5.1.6
- v5.1.5
- v5.1.4
- v5.1.3
- v5.1.2
- v5.1.1
- v5.1.0
- v5.0.35
- v5.0.34
- v5.0.33
- v5.0.32
- v5.0.31
- 5.0.30
- v5.0.29
- v5.0.28
- v5.0.27
- v5.0.26
- v5.0.25
- v5.0.24
- v5.0.23
- v5.0.22
- v5.0.21
- v5.0.20
- v5.0.19
- v5.0.18
- v5.0.17
- v5.0.16
- v5.0.15
- v5.0.14
- v5.0.13
- v5.0.12
- v5.0.11
- v5.0.10
- v5.0.9
- v5.0.8
- v5.0.7
- v5.0.6
- v5.0.5
- v5.0.4
- v5.0.3
- v5.0.2
- v5.0.1
- v5.0.0
- v4.2.22
- v4.2.21
- v4.2.20
- v4.2.19
- v4.2.18
- v4.2.17
- v4.2.16
- v4.2.15
- v4.2.14
- v4.2.13
- v4.2.12
- v4.2.11
- v4.2.10
- v4.2.9
- v4.2.8
- v4.2.7
- v4.2.6
- v4.2.5
- v4.2.4
- v4.2.3
- v4.2.2
- v4.2.1
- v4.2.0
- v4.2.0-BETA1
- v4.1.31
- v4.1.30
- v4.1.29
- v4.1.28
- v4.1.27
- v4.1.26
- v4.1.25
- v4.1.24
- v4.1.23
- v4.1.22
- v4.1.21
- v4.1.20
- v4.1.19
- v4.1.18
- v4.1.17
- v4.1.16
- v4.1.15
- v4.1.14
- v4.1.13
- v4.1.12
- v4.1.11
- v4.1.10
- v4.1.9
- v4.1.8
- v4.1.7
- v4.1.6
- v4.1.5
- v4.1.4
- v4.1.3
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.11
- v4.0.10
- v4.0.9
- v4.0.8
- v4.0.7
- v4.0.6
- v4.0.5
- v4.0.4
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v4.0.0-BETA4
- v4.0.0-BETA3
- v4.0.0-BETA2
This package is auto-updated.
Last update: 2026-05-14 08:44:13 UTC
README
Laravel 13, optimized for PHP 8.5
Named after Fledge from C.S. Lewis's Narnia, a horse transformed by Aslan into something faster and more capable. Laravel's name also comes from Narnia (Cair Paravel). Fledge transforms Laravel for PHP 8.5.
What is Fledge?
Fledge is a drop-in replacement for Laravel's illuminate/framework that requires PHP 8.5 and uses its native features for better performance. Same Illuminate\ namespace, same API, full ecosystem compatibility.
Laravel 13 supports PHP 8.3+ and ships polyfills so it can run on older versions. Fledge removes those polyfills and version checks, and replaces league/uri with PHP 8.5's native URI extension. That swap is the single biggest performance win.
120 files changed on top of Laravel 13.9.0. All 13,727 framework tests pass.
Why?
Laravel supports PHP 8.3+ because that's the right call for the ecosystem. But if you're already on PHP 8.5, you're paying for compatibility you don't need:
- 11,000 lines of
league/uriPHP code replaced by compiled C in the PHP runtime - Symfony polyfills for
array_first(),array_last(),array_all(),array_any(), functions that ship natively in PHP 8.5 version_compareguards that branch on every request to check if you're on 8.4+
Fledge strips all of that.
Performance
A default Laravel skeleton (single homepage route, PHP-FPM with persistent connections) renders ~17% faster on Fledge than on stock Laravel 13.7.0 with the same PHP 8.5 build and the same Redis backend:
| Metric | Laravel 13 | Fledge | Difference |
|---|---|---|---|
| Homepage render (median) | 30 ms | 25 ms | 17% faster |
This is one workload on one machine. Your numbers will differ depending on where your application's time actually goes: DB calls, external HTTP, template compile, queue dispatch. To reproduce the micro-benchmarks (URI, polyfills, cache throughput) on your own stack:
php artisan fledge:bench --scenario=uri --iterations=10000
php artisan fledge:bench --scenario=polyfills
php artisan fledge:bench --scenario=redis # uses your configured cache driver
JSON output is available with --format=json for CI integration.
Where the gain comes from
Two compounding wins drive most of the speedup:
-
Native
Uri\Rfc3986\Urireplacingleague/uri. PHP 8.5 ships URI parsing as a compiled C extension.Request::uri(), theurl()helper, redirects, and route generation all touch URIs on every request, so the savings stack across the request lifecycle:Operation league/uri PHP 8.5 native Parse URI 0.047 ms 0.0005 ms Modify URI 0.24 ms 0.0004 ms Roughly 100x faster for URI operations alone.
-
Non-blocking Redis I/O via
fledge-fiber. This one is more nuanced and worth being precise about. On a single sequentialCache::get()against a local Redis, fledge-fiber is actually slower than Predis (measured at ~32 µs vs ~21 µs per call on this machine). That's the cost of setting up a Fiber, registering a Revolt wakeup, and suspending: pure overhead when you have nothing else to do.Where fledge-fiber pays off is when something else can run in the meantime:
- Concurrent Redis calls inside
Concurrency::driver('fiber')->run()overlap on socket I/O. Three parallelCache::get()calls finish in ~32 µs total instead of ~63 µs sequential. - Network RTT to a remote Redis (1-5 ms typical) makes all clients I/O-bound. Predis blocks the whole worker on that RTT. fledge-fiber suspends and lets other Fibers progress.
- Mixed I/O paths (Redis + DB + HTTP in one request) can overlap when each driver supports Fiber suspension. Sequential blocking clients can't.
So the honest framing: fledge-fiber doesn't make a single Redis call faster, it stops a Redis call from blocking everything else. On low-latency local Redis with no concurrency, you're paying overhead for a feature you're not using. On real-world request paths with multiple I/O touches or remote backends, the suspension wins out.
- Concurrent Redis calls inside
Smaller wins (removed symfony/polyfill-php84 and polyfill-php85, dropped version_compare guards, native array_all/array_any, pipe operator in Pipeline::then(), persistent cURL share) trim a few additional milliseconds off bootstrap and hot paths.
About the polyfill removal
Fledge drops symfony/polyfill-php84 and polyfill-php85, plus the version_compare guards that branch on every request to decide whether to call native or polyfilled functions. On a single HTTP request the per-call difference between native array_any() and a handwritten foreach is in the noise (run php artisan fledge:bench --scenario=polyfills and you'll see the variants land within measurement jitter). It's not a "Y% faster" headline.
The real win is structural:
- Fewer
function_exists()andversion_compare()branches scattered through hot paths - Less code on disk, less to autoload, smaller opcache footprint
- No PHP 8.0/8.1/8.2/8.3/8.4 compatibility branches at all, the version is fixed at 8.5+
That matters most on long-running processes (queue workers, octane, long-lived schedulers) where bootstrap cost amortizes and tighter hot paths add up over millions of calls. On a typical web request it is a small win that disappears into other variability.
Fiber-Based Concurrency
Fledge adds a FiberDriver to the Concurrency facade, powered by the Revolt event loop and fledge-fiber. Unlike the ProcessDriver (which spawns child processes) or the SyncDriver (sequential), the FiberDriver provides real cooperative async I/O within a single process:
use Illuminate\Support\Facades\Concurrency; // 3 HTTP requests run concurrently, total time ≈ slowest request $results = Concurrency::driver('fiber')->run([ fn () => $httpClient->request(new Request('https://api1.example.com'))->getBody()->buffer(), fn () => $httpClient->request(new Request('https://api2.example.com'))->getBody()->buffer(), fn () => $httpClient->request(new Request('https://api3.example.com'))->getBody()->buffer(), ]);
No background process needed; the Revolt event loop runs inline within the run() call. Tasks using fledge-fiber async drivers (HTTP, MySQL, Redis) genuinely interleave on I/O suspension. Shared memory, no serialization overhead, works in both web requests and CLI.
Also available as a standalone package for Laravel 11/12/13: webpatser/laravel-fiber
Non-Blocking Redis (fledge-fiber driver)
Fledge ships with fledge-fiber as the default Redis driver. Every Redis call (cache reads, locks, queue operations, rate limiting) goes through a Fiber-suspending socket layer instead of a blocking one.
This is not "faster Redis", it is "non-blocking Redis". Those are different things, and the difference matters:
| Workload | fledge-fiber | Predis (blocking) | Winner |
|---|---|---|---|
Single sequential Cache::get(), local Redis |
~32 µs | ~21 µs | Predis (less overhead per call) |
3 concurrent Cache::get() via Concurrency::run() |
~32 µs total | ~63 µs sequential | fledge-fiber |
| Single call to remote Redis (1-5 ms RTT) | RTT bound | RTT bound, blocks worker | fledge-fiber (worker stays free) |
| Mixed Redis + DB + HTTP in one request | overlapped via Fibers | strictly serial | fledge-fiber |
Numbers from php artisan fledge:bench --scenario=redis against a local Valkey, 10k iterations, 1k warmup. Reproduce on your own stack with REDIS_CLIENT=fledge and REDIS_CLIENT=predis.
// Every Cache::get() and Redis::get() routes through fledge-fiber by default. // No code changes needed; the driver is transparent. Cache::get('key'); // suspends the current Fiber on socket I/O Redis::set('key', 'val'); // same // Inside Concurrency::run(), multiple Redis calls parallelize automatically: Concurrency::driver('fiber')->run([ fn () => Cache::get('user:1'), fn () => Cache::get('user:2'), fn () => Cache::get('user:3'), ]); // all 3 reads overlap on socket I/O
Pick fledge-fiber when your request paths touch Redis multiple times, when Redis is on another host, or when you mix Redis with other I/O. Pick phpredis (or stay on Predis) when you only ever do single sequential calls against a local Redis and the per-call overhead matters more than the suspension benefit.
To fall back to the synchronous phpredis C extension:
REDIS_CLIENT=phpredis
The cache layer also includes Fiber-aware internals:
- Lock blocking suspends the Fiber instead of
usleep(), letting other Fibers run - Failover reads try all stores concurrently, returning the first success
- Cluster operations (
many()/putMany()) run concurrent reads/writes via Fibers - Tag operations flush chunks and write entries concurrently
Ecosystem
Fledge is one piece of a small set of related packages:
webpatser/fledge Laravel app skeleton (composer create-project target)
└─ webpatser/fledge-framework This repo: Laravel 13 fork, PHP 8.5 optimized
└─ webpatser/fledge-fiber Single async runtime: Redis, MySQL/MariaDB/PostgreSQL,
HTTP client/server, DNS, Fiber primitives, Revolt loop
Optional companions:
webpatser/torque Fiber-based queue worker, Horizon alternative
webpatser/laravel-fiber Same FiberDriver as a standalone package for
Laravel 11/12/13 (no PHP 8.5 requirement)
The FiberDriver shipped in Illuminate\Concurrency\FiberDriver is a thin wrapper around fledge-fiber's async() and await() primitives. Earlier preview builds split the async runtime across fledge-fiber-database, fledge-fiber-redis, and fledge-fiber-http; those are now consolidated into a single fledge-fiber package.
Caveats
Worth knowing before going to production:
- Redis Cluster is supported by
fledge-fiberfromv13.7.0.1onward via Laravel's standardclusters.*config, with full API parity againstPhpRedisClusterConnection/PredisClusterConnection(isCluster(),scan()withnodeoption,keys()fan-out,flushdbfan-out). Multi-key commands must share a hash tag ({tag}.key),SELECTto a non-zero database is rejected, and MULTI/EXEC is pinned to a single slot. Sentinel and standalone Redis work too. - PHP 8.5 hosting was released in November 2025. Managed-host availability is still rolling out across Forge, Vapor, Ploi, and Laravel Cloud, check your provider before committing.
fledge-fiberis a hardened fork, not raw amphp. The async runtime started from amphp/revolt but has been consolidated, namespaced underFledge\Async\andFledge\Fiber\, and tuned for the Fledge use case. If you're auditing dependencies, treat it as first-party Webpatser code.- Active branch is
fledge-13, notmain. PRs and clones aimed at framework development should target that branch. - Versioning uses 4 segments (
v13.X.Y.N). The first three match upstream Laravel exactly, the fourth is Fledge's own patch counter. See Versioning below.
What Changed
| Change | Files | Impact |
|---|---|---|
Native Uri\Rfc3986\Uri replacing league/uri |
3 | ~100x faster URI ops |
| RFC 3986 normalization layer (IDN, unicode, brackets) | 1 | Compatibility bridge |
Remove symfony/polyfill-php84 and polyfill-php85 |
7 | Cleaner autoloading |
Bump PHP to ^8.5 |
37 | Drop compatibility code |
Remove version_compare PHP 8.4 guards |
3 | No runtime branching |
array_all/array_any in Arr::hasAll/hasAny |
1 | Faster array checks |
array_any in Handler::shouldntReport |
1 | Replace Arr::first null check |
array_any in FormRequest::isKnownField |
1 | Replace foreach early-return |
Pipe operator in Pipeline::then() |
1 | Cleaner code |
#[\NoDiscard] on Pipeline, Cache, Container, Validation |
4 | Developer safety |
| Persistent cURL share manager | 3 | Connection pooling |
json_validate() fast path |
1 | Skip decode on invalid JSON |
| Fiber-based concurrency driver (Revolt + fledge-fiber) | 2 | Real async I/O in Concurrency facade |
| fledge-fiber as default Redis driver | 5 | Non-blocking Redis I/O for all operations |
| Fiber-aware cache layer (locks, failover, tags) | 8 | Concurrent cache ops inside Fibers |
| Fiber-safe queue worker signal handling (Revolt) | 1 | Horizon/queue workers work with fiber drivers |
| Redis required dependency for cache package | 1 | Redis is a first-class citizen |
The RFC 3986 Problem (and How Fledge Solves It)
PHP 8.5's native URI parser is strictly RFC 3986 compliant, stricter than league/uri. It rejects:
- Internationalized domain names like
bébé.be - Unicode in paths like
/日本語/page - Unencoded brackets in query strings like
?filter[status]=active
An attempt to add native URI support to Laravel stalled because of this strictness gap.
Fledge solves it with a normalization layer (Uri::normalizeForRfc3986()) that transparently converts these inputs before passing them to the native parser:
| You write | Fledge normalizes to |
|---|---|
https://bébé.be |
https://xn--bb-bjab.be (punycode) |
https://example.com/日本語 |
https://example.com/%E6%97%A5... (percent-encoded) |
?filter[status]=active |
?filter%5Bstatus%5D=active (encoded brackets) |
This makes Fledge a true drop-in replacement: your existing URLs keep working.
Installation
In an existing Laravel 13 project
webpatser/fledge-framework is on Packagist, so no extra repository config is needed. Require it directly with -W (so with-all-dependencies resolves the replace correctly):
composer require "webpatser/fledge-framework:^13.7" -W
This installs Fledge and removes vendor/laravel/framework from your tree (the replace block in Fledge's composer.json declares it provides laravel/framework and every illuminate/* split package). Your application code does not change, the Illuminate\ namespace continues to work.
To switch back to upstream Laravel:
composer remove webpatser/fledge-framework
composer require "laravel/framework:^13.0" -W
Verify your install with the bundled script:
bash vendor/webpatser/fledge-framework/bin/verify-fledge-install.sh
It exits 0 with OK running Fledge framework v13.X.Y.N if you are on Fledge, or 1 with a switch hint if you are still on stock Laravel.
Why composer require laravel/framework does NOT pull in Fledge
You might expect composer require "laravel/framework:^13.3" to pick up Fledge once the repository is registered. It does not, even with the VCS repository configured. Composer's resolver only honors replace declarations during transitive dependency resolution, not for top-level requires. A direct require laravel/framework:... always installs the upstream laravel/framework package, and Fledge stays unused on disk if you also require it.
That is why the canonical install line targets webpatser/fledge-framework directly. If you see vendor/laravel/framework in your tree after switching, you are running stock Laravel; the verify script above will catch that.
Constraint compatibility
All standard Composer constraint patterns resolve to the latest Fledge tag (v13.7.0.4 as of 2026-05-02):
| Constraint | Resolves to | Notes |
|---|---|---|
^13.3 |
v13.7.0.4 | Recommended, accepts any 13.x release |
^13.7 |
v13.7.0.4 | Pins to current minor |
~13.7.0 |
v13.7.0.4 | Pins to 13.7.x patches and Fledge revisions |
13.7.* |
v13.7.0.4 | Wildcard, identical resolution |
^13.7.0.4 |
v13.7.0.4 | Pin to a specific Fledge revision |
~13.7.0.4 |
v13.7.0.4 | Same, accepts higher Fledge patches |
>=13.0 |
v13.7.0.4 | Open-ended |
dev-fledge-13 |
(does not resolve cleanly) | Dev branches need a branch-alias to satisfy ^13.0 constraints from other Laravel packages |
Use ^13.7 in production. The 4-segment v13.X.Y.N versioning is fully Composer-compatible: the resolver treats the fourth segment as a regular patch component.
From scratch (framework development)
To work on the Fledge framework itself (not consume it as a dependency):
# Clone the framework fork directly git clone -b fledge-13 https://github.com/webpatser/fledge-framework cd fledge-framework composer install vendor/bin/phpunit
Active development happens on the fledge-13 branch, not main. Released tags follow the v13.X.Y.N pattern where the first three segments match upstream Laravel and N is Fledge's own patch counter.
From scratch (full app skeleton)
To start a new Laravel app with Fledge baked in, use the skeleton. The skeleton is currently distributed via Git, not Packagist, so clone it directly:
git clone https://github.com/webpatser/fledge my-app
cd my-app
composer install
cp .env.example .env
php artisan key:generate
php artisan serve
(Once the skeleton is published to Packagist, composer create-project webpatser/fledge my-app will replace the clone step. Watch the skeleton repo for status.)
Compatibility
- Same
Illuminate\namespace, all Laravel packages work unchanged - Same API, no code changes needed in your application
- 13,727 tests passing (4 known Predis failures exist on vanilla Laravel 13 + PHP 8.5 too)
Requirements
- PHP 8.5+
- intl extension (for IDN domain support)
- Composer 2.x
How This Project Works
Fledge tracks Laravel's 13.x branch. When Laravel releases a new version:
- Fetch the latest upstream tag
- Merge into the
fledge-13branch - Resolve any conflicts in the ~50 modified files
- Run the full test suite
- Tag a matching Fledge release
The goal is automated sync for clean merges (~70% of releases), with manual intervention only when upstream touches the same files Fledge modifies.
Versioning
Fledge uses a fourth version segment to track its own releases on top of Laravel's version:
| Laravel | Fledge | Meaning |
|---|---|---|
v13.3.0 |
v13.3.0.1 |
First Fledge release based on Laravel 13.3.0 |
v13.3.0 |
v13.3.0.2 |
Fledge-only fix on top of 13.3.0 |
v13.4.0 |
v13.4.0.1 |
Fledge synced to Laravel 13.4.0 |
v13.4.0 |
v13.4.0.2 |
PHP 8.5 optimizations on top of 13.4.0 |
The first three segments always match the upstream Laravel version. The fourth is Fledge's own patch counter, starting at .1 for each new Laravel release.
In your composer.json, "laravel/framework": "^13.3" will pull in the latest Fledge release.
Project Structure
packages/framework/ # The Fledge framework (forked illuminate/framework)
├── src/Illuminate/ # Modified Laravel source with PHP 8.5 optimizations
└── tests/ # Unmodified Laravel test suite (tests are the contract)
Rule: tests are never modified. If a test fails after a Fledge change, the change is wrong, not the test.
Known PHP 8.5 Test Failures
These 4 test failures exist on vanilla Laravel 13 running on PHP 8.5, they are not caused by Fledge:
| Test | Root Cause |
|---|---|
RedisConnectionTest::testItScansForKeys |
Predis cursor format incompatibility |
RedisConnectionTest::testItHscansForKeys |
Predis cursor format incompatibility |
RedisConnectionTest::testItZscansForKeys |
Predis cursor format incompatibility |
RedisConnectionTest::testItSscansForKeys |
Predis cursor format incompatibility |
Credits
All credit goes to Taylor Otwell and the Laravel team. This project is built entirely on their work. Fledge is not a fork intended to compete with Laravel; it's an optimization layer for teams already running PHP 8.5.
License
MIT, same as Laravel.