Fixes#38068
The performance regression was introduced per commit 644a5647dbdef395993cf406678addfd6978e781
It resulted in quadratic performance in the size of the buffer for CSV files
with Unix '\n' end of line character, due to scanning repeatedly for `\r`
Instead of ALWAYS converting all features in a tile to QGIS representations,
now we intelligently skip over any layers which aren't required for
rendering or labeling (e.g. because the current renderer/labeling
configuration is disabling these layers or doesn't have a rule for
them).
This improves rendering speed with sources like the OS ZoomStack tiles,
which have a LOT of detail even at small map scales (e.g. building
data is present in very zoomed out tiles!!).
When saving a raster expression the generated expression didn't contain square brackets around the letters used for band identifiers. Sticking with the NDVI example:
```
("NIR@1" - "Red@1") / ("NIR@1" + "Red@1")
```
becomes
```
(a - b) / (a + b)
```
Due to the way the expression is parsed these would not be interactie parameters for the user to set as the parameters requre square brackets around the layer tags. This change simply updates the string replacement to include the square brackets so you would get instead:
```
([a] - [b]) / ([a] + [b])
```
labeling list of rules
Makes it MUCH easier to identify specific rules in the list, and matches
appearance with the rule based renderer/vector tile renderer list appearances.
Github cache is immutable.
It's useful for caching static dependencies like pip, but not for dynamic caches like ccache.
It has a 0% hit rate and only adds overhead at the moment.
To be revisited when github caching improves.