Conversation
…4.1, SCC-1 container-prep) Prepares the SCC-1 atomic window: v13's illuminate/container has singleton() but no bindShared()/share(). Migrate all 84 fork callers (32 service providers) from ->bindShared() to ->singleton() while the fork container still ships both. Semantics: fork bindShared($a,$c) = bind($a, share($c), true); singleton($a,$c) = bind($a,$c,true). The share() wrapper is a redundant static-var memoization on top of the shared-instance cache — dropping it converges to v13 behavior. Fork suite green (1646, 0 fail). bindShared()/share() methods are KEPT in the container (app service providers still call them until the app matched-pair conform); they go with the container swap in the atomic window. The Foundation\Application BindingResolutionException import redirect is also deferred to the window (fork concrete extends \Exception, not the Contracts type). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ask 4.1, SCC-1 container-prep)
Second prep slice for the container swap: v13 illuminate/container has no share().
The 15 legacy `$this->app['key'] = $this->app->share($closure)` bindings (Events,
Routing x4, CachedRouting, Exception x6, Mail x3) are the L4.0 idiom where share()
memoizes a closure via a static var and offsetSet binds it non-shared. In v13
`$app['key'] = $closure` binds NON-shared, so the singleton must be explicit:
rewritten to `$this->app->singleton('key', $closure)`.
View Factory's own share() (view-data sharing, different API) is untouched.
Fork suite green (1646, 0 fail).
Missed in the bindShared sweep because an rtk-proxied grep wrongly reported zero
->share( callsites; re-verified via `rtk proxy grep`.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…13 (task 4.1, SCC-1 window) First SCC-1 core member cut over to a real v13 package. illuminate/container:^13 depends only on contracts (already ^13 from the seed phase), so it flips independently ahead of the support-gated remainder of the window. - composer.json: illuminate/container ^13 -> require, removed from replace. - Deleted fork src/Illuminate/Container/ tree (v13 package shadows it via the longer Illuminate\Container\ PSR-4 prefix; concrete classes now vendored). - Foundation\Application: BindingResolutionException import -> Contracts (v13 moved it there; docblock-only @throws, no runtime path). - tests/Container/ deleted (157 tests): these unit-test the container itself, now a vendored package tested upstream — the fork must not re-test a dependency. - tests/{Foundation,Mail,Exception}: bindShared()/share()/exception refs adapted. Application extends v13 Container with no signature break (make/bound/extend overrides compatible; verified via isolated class_exists probes). Fork suite green (1489, 0 fail; -157 from the removed container tests). composer.lock is gitignored. Prep landed earlier this branch: bindShared() sweep (6942197), share() sweep (f1fff79). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ask 4.1, container swap) illuminate/container v13 dropped the L4 bindShared()/share() API. Fork src already moved to singleton() (commits 6942197/f1fff797), but third-party & vendor-fork service providers still call them on the app at boot and can't all be patched (tomgrohl/laravel4-php71-encrypter is third-party packagist). Re-expose both as thin BC shims on Foundation\Application (which extends the v13 container): bindShared($a,$c) => singleton($a,$c); share() returns the memoizing closure. Unblocks boot for spatie/laravel-blade-x, laracasts/commander, tomgrohl/laravel4-php71-encrypter, barryvdh/laravel-ide-helper. Transitional — remove at the Foundation swap (task 4.5). Fork suite green (1489). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Task 4.1 — SCC-1 window, member #1: illuminate/container
First SCC-1 core member cut to a real v13 package.
illuminate/container:^13dependsonly on
contracts(already ^13 from the seed phase), so it flips independently aheadof the support-gated remainder of the window.
Commits
69421972prep — sweep 84->bindShared(→->singleton((32 service providers).f1fff797prep — 15$this->app['k'] = $this->app->share(fn)→$this->app->singleton('k', fn).f63ca120swap —illuminate/container^13 to require (out ofreplace); delete forksrc/Illuminate/Container/tree;ApplicationBindingResolutionExceptionimport → Contracts;delete
tests/Container/(vendored dep, tested upstream); conformtests/{Foundation,Mail,Exception}.Verification
Application extendsv13 Container with zero signature break (make/bound/extendoverrides LSP-compatible; confirmed via isolated
class_existsprobes).singleton()memoizes, Contracts exception resolves.Stack / notes
Stacks on #68 (4.2.98 seed). Tag
4.2.99cut on this branch tip (pre-merge) so the appcanary can composer-pull it.
composer.lockis gitignored in the fork.Remaining SCC-1 = the support-gated atomic remainder (support/http/session/cache/cookie/
encryption/events/filesystem/redis/database/bus), a separate release.