Changelog for doclayout-0.4.0.1
doclayout
0.4.0.1
- Add clause for Empty to renderList (#22).
- Remove upper bound for criterion
0.4
- Expose
unfoldD
[API change].
- Remove
realLengthNoShortcut
, isEmojiModifier
, and
isEmojiJoiner
[API change] (Stephen Morgan).
- Add new exported functions
realLengthNarrowContext
,
realLengthWideContext
, realLengthNarrowContextNoShortcut
,
realLengthWideContextNoShortcut
, isSkinToneModifier
, isZWJ
[API change] (Stephen Morgan).
- Compute
realLength
strictly.
- Make
getOffset
stricter.
- Drop support for ghc <= 8.4, add test for ghc 9.2.
- Don't collapse the CarriageReturn + Newline combination (#20).
We want to ensure that a literal starting with a Newline
doesn't lose the newline if it occurs after a CarriageReturn.
This affects code blocks in pandoc that begin with newlines.
- Improve performance of NoShortcut code (Stephen Morgan).
- Simplify emoji processing (Stephen Morgan).
- Add benchmarking for code with no shortcuts (Stephen Morgan).
- Add unicodeWidth.inc to cabal file.
- Fix
offset
, minOffset
, updateColumn
so they don't re-render.
- Get unicode block widths directly from the Unicode specification, rather
than writing it out ourselves (Stephen Morgan).
- Resolve the width of ambiguous characters based on their context
(Stephen Morgan).
- Spacing marks should have nonzero width, even though they are combining
characters (Stephen Morgan).
- Add shortcuts for extended Latin, Arabic, Cyrillic, Greek,
Devangari, Bengali, Korean, Telugu, and Tamil (Stephen Morgan).
- Fix location of extra-source-files in cabal.
- update.hs: require text package
- Handle emoji variation modifiers specially, so the keypad emoji can be
ignored (Stephen Morgan). This results in a 16% speedup of realLength
on ascii text.
- Add benchmarks for all scripts used by more than 50 million people, plus
a couple more. (#9, Stephen Morgan).
0.3.1.1
- Fix the end of the block of zero width characters which contains
the zero-width joiners and directional markings (Stephen Morgan, #5).
This fixes a regression introduced in 0.3.1, affecting code
points 0x2010 to 0x2030.
0.3.1
- Improved handling of emojis. Emojis are double-wide, but
previously this library did not treat them as such. We now
have comprehensive support of emojis, including variation
modifiers and zero-width joiners, verified by a test suite.
Performance has been confirmed to be no worse for text without emojis.
(Stephen Morgan, #1). API changes: export
realLengthNoShortcut
,
isEmojiModifier
, isEmojiVariation
, isEmojiJoiner
.
0.3.0.2
- NOINLINE
literal
instead of fromString
(#2, sjakobi).
This produces a further reduction in allocations and
pandoc compile time.
0.3.0.1
- NOINLINE
fromString
(#1).
@sjakobi reports that this change reduced total allocations
for building pandoc-2.12 with GHC 8.10.4 by 8.5% and reduced
peak allocations are reduced from 3854MB to 3389MB.
0.3
- Add foldlChar to signature of HasChars [API change].
- Use foldlChar in realLength. This avoids a stack overflow
we were getting with long strings in the previous version
(with foldrChar). See jgm/pandoc#6031.
- Replace isBlank with isBreakable and improved startsWithBlank.
Previously isBlank was used in the layout algorithm where
what we really wanted was isBreakable.
- Avoid unnecessary calculation in updateColumns.
- Replace a right fold with a strict left fold.
- Add strictness annotations in realLength and updateColumn.
0.2.0.1
- Made
realLength
smarter about combining characters.
If a string starts with a combining character, that character
takes up a width of 1; if the combining character occurs after
another character, it takes 0. See jgm/pandoc#5863.
- Improve
isBlank
, re-use in rendering code for BreakingSpace
.
- Fixed incorrect
Text
width in renderig blocks.
0.2
- Add instances for
Doc
: Data
, Typeable
, Ord
, Read
, Generic
.
- Add
literal
(like text
, but polymorphic).
- Change some
IsString
constraints to HasChars
.
- Add some default definitions for methods in
HasChars
.
- Change
offset
and minOffset
to be more efficient (in
simple cases they no longer render and count line lengths).
- Add
updateColumn
.
- Fix problem with
lblock
/cblock
/rblock
when chop
is
invoked. This caused very strange behavior in which text
got reversed in certain circumstances.
0.1