История коммитов

.
docs: update the submodule pointer
.
refactor(users): the current user is no longer a shared model
The User singleton, its factory and the mirror that refilled it are gone: CurrentUser is the only way to the visitor of the request, and nothing takes the model from the container any more.
.
refactor(login): the sign-out screen asks CurrentUser for the visitor
.
refactor(profile,admin): the profile and the admin area ask CurrentUser for the visitor
.
refactor(forum): the forum asks CurrentUser for the visitor
.
refactor(modules): the content modules ask CurrentUser for the visitor
album, downloads, library, help and guestbook: the injected model becomes the service, the id comes from id() and the profile fields from user().
.
refactor(modules): the rest of the site modules ask CurrentUser for the visitor
news, notifications, registration, community, online, contacts and mail.
.
refactor(auth): the current user service carries the profile
CurrentUser answers who is visiting and, on demand, loads their row: id(), isGuest(), isValid() and a lazy user() behind UserRepositoryInterface::find(). A guest is an empty model, and both the identity and the profile are dropped between requests.

The core reads the visitor through it: the legacy classes, the casts, the validators and the Twig app variable. The shared User instance stays for now, mirrored from the same answer once per request.

Two side effects move out of the way: the ip history becomes IpHistoryRecorder, called by the kernel, and TranslatorServiceFactory stops resolving the visitor locale — at boot there is no database connection yet, and the kernel applies their language anyway.
.
docs: update the submodule pointer
The update path from 9.9 and the route cache.
.
feat(router): cache the route collection
With CACHE_ROUTES on, the routes are dumped once into data/cache/routes.php as a plain nested
array — no objects, so opcache holds it — and the collection is never built again: the twenty-odd
route files are not read, and no Route object exists for the length of the request.

This is what stage 5c bought. The collection could not be cached while it depended on the
visitor: a file that declared its staff routes inside 'if ($user->rights >= 9)' produces a
different set of routes for every visitor, and dumping one of them would have served it to
everybody. Now the route is always declared and its gate is a middleware.

The dump is written to a temporary file and moved into place, so a request arriving mid-write
cannot require half of it. A route whose handler or middleware is a closure cannot be written
out as data: the site is served either way, it just keeps building the collection and says why
in the log once.

Off by default, like the container cache, and cleared by cache:clear.