Lists in reStructuredText must be seperated by the rest of a text
a newline. If not, the text is not rendered correctly.
This patch fixes incorrectly formatted lists in the .rst files of
the Changelog.

In the old times of pages_language_overlay, the "New Record" wizard
automatically re-used the doktype of the parent table which was `pages`.
Since pages_language_overlay vanished, the `overrideVals` in the links in
the wizard use the `pages` table.

This results in invalid value for `doktype` if a page in pid=0 is
created, as pid=0 has no doktype.

For historical reasons FileDumpController::dumpAction was allowed to
return null. It didn't specify a nullable return type declaration because
it was not yed decided whether v9 will require php 7.2 or not.
With https://review.typo3.org/55585 FileDumpController was adapted to
return a PSR-7 Response but missed to update the function signature.
The nullable annotation is therefore removed now and the explicit
return type declaration is added.

The functional test splitter script does not define LF and various
other constants, but loads test data providers to find out how
many tests they produce. Those data provider should not use LF,
the splitter throws PHP warnings otherwise.

* uses '&type=xyz' argument value of query in case no PageType decorator
has been configured or if no value could be resolved (not defined in
'map' nor as 'default' value)
* allows using 'default' value without having it defined in 'map' (values
always should be explicit, however this is a fallback handling)

* Fix wrong indentation level in example.
* Adjust sorting of paragraphs for explanation to match order of
configuration options in example above.
* Keep example consistent. Remove single quotes around two keys in a
single line, not used in other lines.
* Add syntax highlighting to SiteConfiguration syntax for environment
variables.

The main goal of this patch is to update the neglected
INSTALL.md and README.md to represent the current
state of the requirements and to improve the overall
content of the two "entry" documentation files.

The install.md has been massively shortened and links to
the official guides were added to finally be able to have
one source of truth.

typo3/sysext/core/bin/typo3 does not work in composer mode
currently. Composer-based installations need to use the binary from
the composer "bin-dir", which is fine from a composer-usage point
of view – but hard for documentation.
Additionally the path to "typo3/sysext/core/bin/typo3" is hardcoded
in some places (e.g. scheduler).
We now make sure this binary works in composer mode as well,
using the same entry point strategy as for "typo3/index.php"
and "typo3/install.php".

EXT:extbase uses @api and @internal phpDoc annotations. Going with a cleaner
approach with marking code as just @internal, and everything not annotated
as @internal is public, is the way to go, also the way PSR-5 is heading.

For EXT:extbase: Every PHP class that had nothing marked, is now @internal,
everything that was @api is now implicitly part of TYPO3 Core API.

On top, all license headers and @license annotations have been streamlined.

This means:
- TYPO3 Core's PHP classes area all public API by default
unless marked as @internal or an extension class
- @api is not allowed anymore and will be restricted in
the future from adding.
- @internal should be used for everything that should
not be explicitly exposed as public API in the future.
- Everything under Tests/ is not part of TYPO3's Public API

All specific controllers for specific Backend actions, Backend-module related modules,
all hook implementations (where the core uses hooks by itself), and module-specific
ViewHelpers are now marked as @internal to ensure developers what is
part of the public TYPO3 Core API.

All specific controllers for specific Backend actions, Backend-module related modules,
all hook implementations (where the core uses hooks by itself), and module-specific
ViewHelpers are now marked as @internal to ensure developers what is
part of the public TYPO3 Core API.

EXT:fluid uses @api and @internal phpDoc annotations. Going with a cleaner
approach with marking code as just @internal, and everything not annotated
as @internal is public, is the way to go, also the way PSR-5 is heading.

For EXT:fluid: Every PHP class that had nothing marked, is now @internal,
everything that was @api is now implicitly part of TYPO3 Core API.

Other areas will follow so the API for TYPO3 v9 LTS is clearer than ever.

All specific controllers for specific Backend actions, Backend-module related modules,
all hook implementations (where the core uses hooks by itself), and module-specific
ViewHelpers are now marked as @internal to ensure developers what is
part of the public TYPO3 Core API.

All specific controllers for specific Backend actions, Backend-module related modules,
all hook implementations (where the core uses hooks by itself), and module-specific
ViewHelpers are now marked as @internal to ensure developers what is
part of the public TYPO3 Core API.

All specific controllers for specific Backend actions, Backend-module related modules,
all hook implementations (where the core uses hooks by itself), and module-specific
ViewHelpers are now marked as @internal to ensure developers what is
part of the public TYPO3 Core API.

EXT:form uses @api and @internal phpDoc annotations. Going with a cleaner
approach with marking code as just @internal, and everything not annotated
as @internal is public, is the way to go, also the way PSR-5 is heading.

For EXT:form: Every PHP class that had nothing marked, is now @internal,
everything that was @api is now implicitly part of TYPO3 Core API.

Other areas will follow so the API for TYPO3 v9 LTS is clearer than ever.

This patch adds a request queue for the massive amount of AJAX calls
in the extension scanner. This patch mitigates the problem of massive
server load in case the amount of files to be scanned is very high.

This patch mitigates the problem by allowing a maximum of 10 concurrent
requests. After the release of TYPO3 v9 LTS, this scanner module should
be refactored further.

This patch streamlines all deprecation messages and follow the
following rules.

1. All @deprecated should contain
@deprecated since TYPO3 xx, will be removed in TYPO3 v10.0 (not "core v10" or just "v10"

2. trigger_error()
- All trigger_error() messages MUST end with a "." (dot).
- Never use "This method" but the method name (enjoy the logs otherwise)
- "has been deprecated" can be spared - we KNOW it's deprecated once its in the deprecation log. Instead "Will be removed in TYPO3 v10.0" SHOULD be in the log file.
- Do not use "__METHOD__" or some other "magic".

A new driver method streamFile() is added (specified
in a new, internal StreamableDriverInterface).
streamFile() returns a PSR-7 response which serves
the contents of the file.

Once this interface will be marked as public, third party drivers
will be allowed to return an own response (e.g. containing a redirect
to a CDN), providing full controls to headers. It also opens
possibilties for optimizations like X-SendFile (apache) or
X-Accell-Redirect (nginx) to be used by drivers.

We also add SelfEmittableStreamInterface (marked as internal) to support
the same fast file sending using readfile() – the interface provides
a hook which is called by the AbstractApplication in sendResponse.
That means that file contents do not need to be read into memory, stored
into a stream, and then read again, but can be piped to stdout by php
directly.

For all existing drivers backward compatibility is provided by
wrapping their dumpFileContents() method into a decorator stream which
calls dumpFileContents *when* the response is sent.
That means middlewares are able to prevent/stop/enhance
the response, but the driver method dumpFileContents is still used –
it's delayed until Application::sendResponse.

The dumpFileContents method of the ResourceStorage class
is now deprecated. ResourceStorage->streamFile() should be used instead.

* The last item in panel-collapse has now proper padding to its bottom.
* With a different behaviour of firefox a container having overflow-y
ignores padding-bottom. A workaround is a pseudo-element reserving
the same space as the padding attribute would have.

Improve processing by deferring those mappers that invoke persistence
the latest possible time. In case mappers do not match the processing
is stopped earlier to avoid superfluous checks and invocations.

The TypoScript Parser has been around since PHP 4 and hasn't
been touched much since 12ys. In order to speed up TypoScript
processing in the future, it is important to first streamline
all usages and mark internal functionality as "protected" instead
of "public".

Some other parts for sys_template rendering has been
marked as internal as well.

As a side effect this allows to run the cli tool when
LocalConfiguration.php or PackageStates.php are missing,
which allows to run commands like `dumpautoload` in that case.
Note: *Only* in that case, not if a database connection
is configured, but not available – for that usecase failsafe
booting will be needed, as proposed in https://review.typo3.org/c/58298/
and/or https://review.typo3.org/c/58300/

As a drive-by we also add a null coalescing operator to
IconRegistry::registerModuleIcons() which is currently
required because ext_tables.php files are loaded in
incorrect order if PackageStates.php is missing (reported
in another bug: #86408). Although this workaround will
not be strictly required when that bug is fixed, that functions
should still properly handle that case.

PageRepository is now used independantly from TSFE
most of the time, and a new instance is created each time a
content element gets rendered. This means that the current
cache strategy using class properties gets flushed repeatedly
and multiple identical SQL requests to be sent to the DB.

By replacing the class property caching with runtime cache
which survives across instances, the problem is solved.

On some sites this represents a reduction of several hundred
SQL requests.

The mountpoint variable must be respected in the key used for the
menu runtime cache. Without that part in the key all links generated
to a mount-point sub-page will link to the first mount target page
in the menu.

To untie authentication services from user authentication a bit better,
the fetchUserRecord() method of AbstractAuthenticationService now
implements fetchUserRecord() on its own instead of calling the method
with the same name of $pObj.
AbstractUserAuthentication->fetchUserRecord() is then unused and can
be deprecated.

When an extension author writes a display condition in TCA and
by incident uses a wrong format for the displayCondition (see ticket)
the strtoupper fails due to the lack of an associative array
because it's a numeric-key array.

A new TCA option for TCA type "slug" is added, called "prependSlash",
which adds a "/" in front of the field. For pages (pages.slug),
this is mandatory and cannot be configured, as the slug field
has to be filled and set to "/" as a base for the root page.

For other database fields, this is optional (and disabled by default),
and can be enabled via "prependSlash" in TCA config.

This option is mostly useful for recursive records, like categories,
but for most "flat" structures like "news" or "events", this is not
suitable. For pages, it is hard-coded and cannot be (un-)set.

* adds test cases for resolving and generating enhanced links
* fixes locale issues when dealing with persisted mappers
* removes PersistedAliasMapper.valueFieldName and uses TCA
'uid' field per default, which is required for proper
language based resolving as well
* introduces language based resolving to PersistedAliasMapper
and PersistedPatternMapper

When hooks modify _GET or _POST parameters,
it is important that these changes reflect the PSR-7 request
for now, as long as TYPO3 access the _GET/_POST parameters
via GeneralUtility::_GP().

In order to move away from global access, we still want to avoid
places where it is unclear to use $_GET/$_POST vs.
$GLOBALS['TYPO3_REQUEST'] until all parts are completely
"global-scope free" for GET/POST parameters.

The change adds the initial GET/POST parameters to the
request object in the very first middleware of the frontend.

If these have been modified when the RequestHandler builds
up the content, they are added on top of the PSR-7 request object.

Additionally, if the PSR-7 request object has been modified,
these changes are put back in the global scope to reliably use
_GPmerged within Extbase and

Additionally, if _GET/_POST have been modified, a warning will
be shown in the TimeTracker to find out that there have been
modifications.

Until then, it is safe to continue to access _GET/_POST within
Hooks and Frontend, however it is highly discouraged to *modify*
_GET/_POST directly as this functionality will be breaking in TYPO3 v10.0.

Bottom line: This safety net can now trigger deprecation warnings
if _GET/_POST have been modified during PSR-15 middleware hooks.

Bottom line 2: If these have been modified, they are put inside the
current request object.

Bottom line 3: If the request object has been modified, global state
will be modified ONCE in one place to ensure that we work with
the same object during the request phase.

Bottom line 4: We cannot get away from the current state of
running a TYPO3 Frontend Request from another source, and
we try to maintain compatibilty for legacy scripts for now. However,
this will be breaking in TYPO3 v10.0.

Due to the move from htmlArea to CKEditor, the well-known
wordcount information was gone.

The wordcount information is added to all existing CKEditor presets
per default. In addition, it is now possible to customize the displayed
information below the editor.

- It's possible to switch paragraph-, word- and/or character count.
- You can define if spaces are counted as charactars.
- You can define if HTML tags are taken into account.
- You can define if linebreaks are taken into account.

Beside that, the used plugin enables also setting up maximum
values for word- and/or character count. This can be easily used
for custom RTE presets. The fact that the global configuration is
located in the Base.yaml makes it possible to overwrite settings
partially or completely in any inherited RTE preset. With that it is
easy possible to realize word/character limits.

Following commands were used to add the external package as
a dependency and copy the plugin files/folders to the final location:
`yarn add --dev ckeditor-wordcount-plugin && yarn build`