diff options
author | Andreas Klebinger <klebinger.andreas@gmx.at> | 2020-01-29 15:25:07 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2020-05-29 01:38:42 -0400 |
commit | f10d11fa49fa9a7a506c4fdbdf86521c2a8d3495 (patch) | |
tree | 00eaa8c32c0706d6b80a6a231261f54df9c9156f /libraries/base/changelog.md | |
parent | 13d9380b1fc8b67057a9ad4fffe244040a7f9bc0 (diff) | |
download | haskell-f10d11fa49fa9a7a506c4fdbdf86521c2a8d3495.tar.gz |
Fix "build/elem" RULE.
An redundant constraint prevented the rule from matching.
Fixing this allows a call to elem on a known list to be translated
into a series of equality checks, and eventually a simple case
expression.
Surprisingly this seems to regress elem for strings. To avoid
this we now also allow foldrCString to inline and add an UTF8
variant. This results in elem being compiled to a tight
non-allocating loop over the primitive string literal which
performs a linear search.
In the process this commit adds UTF8 variants for some of the
functions in GHC.CString. This is required to make this work for
both ASCII and UTF8 strings.
There are also small tweaks to the CString related rules.
We now allow ourselfes the luxury to compare the folding function
via eqExpr, which helps to ensure the rule fires before we inline
foldrCString*. Together with a few changes to allow matching on both
the UTF8 and ASCII variants of the CString functions.
Diffstat (limited to 'libraries/base/changelog.md')
-rw-r--r-- | libraries/base/changelog.md | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libraries/base/changelog.md b/libraries/base/changelog.md index 06b9a108ef..3919e46431 100644 --- a/libraries/base/changelog.md +++ b/libraries/base/changelog.md @@ -15,7 +15,14 @@ `ConcFlags`, `DebugFlags`, `CCFlags`, `DoHeapProfile`, `ProfFlags`, `DoTrace`, `TraceFlags`, `TickyFlags`, `ParFlags`, `RTSFlags`, `RTSStats`, `GCStats`, `ByteOrder`, `GeneralCategory`, `SrcLoc` - + + * Add rules `unpackUtf8`, `unpack-listUtf8` and `unpack-appendUtf8` to `GHC.Base`. + They correspond to their ascii versions and hopefully make it easier + for libraries to handle utf8 encoded strings efficiently. + + * An issue with list fusion and `elem` was fixed. `elem` applied to known + small lists will now compile to a simple case statement more often. + ## 4.14.0.0 *TBA* * Bundled with GHC 8.10.1 |