0.4.2 - Jan 22 2024
- fixed a bug that caused
RopeSlice::line_slice()
to panic or halt forever when both the start and end of the range are equal toRopeSlice::line_len()
and theRopeSlice
didn't end with a line break (#16);
0.4.1 - Dec 1 2023
- fixed a typo that caused
"r"
to be stripped instead of the carriage return character ("\r"
) when truncating trailing line breaks;
0.4.0 - Oct 11 2023
- added a few new methods to
Rope
andRopeSlice
that allow converting between UTF-16 and byte offsets by tracking the number of UTF-16 code units stored in those objects. It is important to note that these APIs come with a performance cost. As a result, these methods are only accessible by enabling a new feature flag calledutf16-metric
, which is disabled by default;
- the performance of
Rope::replace
was improved by another 10-15%;
0.3.0 - Apr 16 2023
- both the
line_of_byte()
andbyte_of_line()
methods onRope
s andRopeSlice
s now interpret their argument as byte and line offsets, respectively. This allows those methods to accept the full byte length or line length of theRope
/RopeSlice
as a valid argument without panicking;
- fixed a very rare bug where the
Lines
iterator would include the trailing'\r'
if a line was terminated by a CRLF which was split across consecutive chunks;
- the
byte_slice()
method onRope
s andRopeSlice
s is around 10% faster;
0.2.0 - Mar 26 2023
-
the leaves of the B-tree are now gap buffers instead of simple
String
s, which improves the performance of consecutive edits applied to the same cursor position. This alone resulted in a 8-15% improvement in the crdt-benchmarks, and together with other tweaks it makesv0.2
80-90% faster thanv0.1
on those editing traces; -
RopeBuilder::append()
is around 20% faster;
- the
Chunks
iterator no longer implementsExactSizeIterator
;