* means corrected

1) Additional element of a block can hide a cursor.
2)* If part of long hierarchy of radicals disappears on the right,
anything disappears. (* Was: wrong interaction of wrapped lines with
tcl layout. *)
3) Algorithm for layout can become exponential if it tries to wrap
around n levels of IBTrees to fit into space.
4) Change ArgAppendCopy to ArgAppendShadow? (incr refcount instead of copy?)
5)* (2.00) Text indices counted bytes; Perl/Tk 804 stores text as UTF-8,
so a non-ASCII character occupied several index positions ("1.0+1c"
after a 3-byte character was in the middle of it).  (* Indices count
characters now, inside blocks too; t/utf8.t compares with Tk::Text. *)
6) (2.00) The Tcl/Tk flavour of the sources is unmaintained.
7)* (2.00) "search" did not skip elided text; undoing the deletion of
a block restored its text, not the block; "dump" did not look into
blocks.  (* All three done, the undo of a deletion that cuts a block
included; undo re-creates embedded images and windows too.  A window
given with -window was destroyed with the deletion, as in Tk, and
comes back as an empty window segment. *)
8)* (2.00) Deleting all of a block except its head, or all except its
tail (which deletes the block, as documented), crashed.  (* Fixed. *)
9)* (2.00) An embedded window inside a block could not be addressed by
name or by index: "index" by its name gave the position inside the
block, "window cget" and "window configure" looked on the outer line
only.  (* Fixed. *)
10) (2.00) Display lines never span logical lines (an elided newline
does not merge two lines, as it does in Tk 8.5), and a space at the
right margin needs a pixel of room to stay on its line (Tk 8.4's rule;
Tk 8.5 lets it hang over).  Known differences from Tk 8.5, kept.
11)* (2.03) The redo of an insertion re-inserts its text without the
tags it was inserted with, as Tk does: a run inside it does not come
back, and its value (kept by the undo of the insertion) is freed at
the redo.  (* 2.04: the undo of an insertion records the inserted
range in block-list form and the redo inserts that list: the tags,
the separators in a block, the marks and the values come back. *)
12)* (2.03) "tag add" and "tag remove" are not undoable, as in Tk: the
values of runs they make lose a merge, or remove, are freed when they
return instead of being kept for an undo.  The same for "block
insert" and "block trim", which are not undoable either.  (* 2.04:
they are undoable, and keep what they drop in their undo steps; see
18 for what block insert's undo cannot re-create. *)
13) (2.03) Once a node value has been set in a widget, every undoable
deletion takes a snapshot of the node values of the blocks it
overlaps, even after all the values are gone (a cost limited to those
blocks; a count kept per tree would have to follow every structural
change of the trees).
14)* (2.03) Long random sequences of block editing and undo (deletions,
insertions, undo, redo, block split, block insert) crash in the
B-tree on some sequences (with TkBTreeCheck on, "CharCheckProc:
segment has size <= 0" after an undo); release 2.02 does the same
with no values set: a defect of block editing and undo, not of the
values.  (* Fixed, ten causes, each with its minimal script in
t/stress.t: block split did not tell the display about its newline;
a deletion from the tail of a nested block left its split in the line
for the B-tree check to find; an -empty block deleted inside a block
was taken off the block's length twice; "block list" (the undo record)
from just after a block reported a piece of it; undo could re-create a
block on the dummy line; a reversed range of block insert; an
undefined index; the tag counts of nodes glued or merged by a deletion
in a block; nodes left without children by the deletions that dissolve
a block.  The stress scripts and t/stress.t's random runs no longer
crash. *)
15)* (2.03) "block insert" of an -empty block at the start of a line
crashes (inside a line or at its end it works); release 2.02 does the
same.  (* Fixed: an empty range is split once. *)
16)* (2.03) "block split" is not recorded for undo either (see 12): an
undo after a block split, or after a block insert, applies the earlier
changes at their recorded indices, which the split or the block has
moved, so it changes the wrong place (it no longer crashes).  (* 2.04:
block split, insert and trim are recorded and undone. *)
17) (2.04) STOPGAP: while the values a widget command dropped are being
freed (their DESTROY methods run when the command returns), the widget
refuses every command that would modify it ("cannot modify .t while
its values are being freed"); reading commands work, the queries of
tag configure, tag bind and block configure included when the tag or
block type exists (they would create one otherwise, and are refused
then).  The manual lists the commands refused.  Postponed: a DESTROY method may need to inspect
where in the block its value was attached, and it runs when the value
is already detached, which may be too late.  The planned fix is a
notification BEFORE the value is detached, giving its location (a
node: index and level; a mark: name; a run: tag and range).
18) (2.04) The undo of a "block insert" whose range crossed nodes of
an enclosing block (see the manual) gives back the text, tags, marks,
leaves and leaf values, but not the node boundaries the range crossed:
the leaves come back as children of the node where the range started,
and the values of the nodes block insert emptied are freed.
19)* (2.03) Found by a random undo exactness check: the undo of a
deletion could put a tag toggle or an -empty block on the other side
of a block's head, or give a re-created block's head or tail tags it
did not have, when the deleted range had blocks in runs of tags.  (*
2.04: fixed; the causes were in the re-creation of the deleted text
from its list: a reused temporary mark name, and the head and tail of
a re-created block keeping the tags of the run it was made in.  The
review's fuzzer and the exactness check find none any more.  Also
fixed: the undo gave the value of a run that started where the
deletion started, or in the remains of a block it dissolved, to
another run of the tag. *)
20) (2.03) "tag names" at a block's head leaves out every tag that
toggles somewhere inside the block (TkIBTreeFixTags, the original
design: the head counts as tagged only by tags constant over the
block), while "tag ranges", "dump" and the searches count the head as
tagged when the tag is on just before it.  So with b on 1.0-1.3 over
a{bcd}e, "tag names 1.1" is empty though 1.1 is inside the range 1.0
1.3.  Not changed: TkTextIsElided and the display take the head's tags
from the same function, and a block partly elided would change how it
is drawn.  Reproducer: the review's round2/tagnames-head.pl.
21) Under Wine only (Strawberry Perl 5.38 and the patched Perl/Tk, see
HANDOVER section 2), the full test suite sometimes fails t/demo.t
before its first test (after its plan): "wine: Unhandled page fault on
read access to FFFFFFFFFFFFFFFF at address 00006FFFFA2595B8", exit 5.
Not caused by 2.04: 2.03 does it too, at the same address (1 of 12 full
runs; the 2.04 tree 3 of 10); t/demo.t alone (0 of 10) or after
t/basic.t (0 of 8) never.  The address is in none of the Perl, Perl/Tk
or eText DLLs at their image bases, nor in Wine's builtin DLLs at their
preferred ones (probably a relocated Wine or system DLL); valgrind of
t/demo.t on Linux shows nothing in eText.  Not seen on Linux.  Cause
unknown; winedbg's backtrace was not captured.
