Another refresh — the window itself goes wide
This drop pushes Unicode out into the window chrome — titles, menus, the status bar — carries wide columns into LIST and the TopScan browser, widens the client/server IP driver, and folds in a batch of fixes straight from your reports. Already testing? Everything below is new since the last build.
Highlights of this drop — then the full tester guide, whose dated “beta refresh” markers flag exactly what changed since you last read it.
Window chrome goes wide
Window, frame and MDI-child titles, menu
item text, and runtime writes to the status bar, message
zone and tips now carry exact UTF-16 — set them in the designer or at
runtime with {PROP:Text}. Narrow apps are byte-for-byte
unchanged.
Wide LIST columns — and TopScan
The last narrow LIST surfaces went wide: split columns (one queue field
fanned across cells with |) and column headings now draw
real glyphs, not best-fit. TopScan’s browser rides the same change — its
cells show Ω, é, 中 with no changes on your side.
Controls widen at runtime
Bind an ENTRY or TEXT to a USTRING at runtime
with {PROP:Use} and the control now switches to the wide
class on the spot (and back again for a STRING) — no longer only when the
USE was declared wide at compile time.
Solution Explorer keeps up
Edit a project outside the IDE — hand-edit the .cwproj,
AppGen, source control, code-generation tooling — and the tree now offers
to reload so it reflects reality. A manual Reload Solution
command too, and a guard against silently overwriting an external edit on
save. From a tester request — thanks, Mark S.
The IP driver goes wide
USTRING fields and UNICODE memo/blob travel end to end through the client/server IP database stack — client, requester and data server — round-tripping bit-identically at rest. Keys inherit the backing driver’s order for free.
Two report fixes from the field
A saved REPORT,…,UNICODE now reopens in the designer without
the “Unexpected attribute” error, and two reports previewed at
once no longer collide over page files (which could overwrite or drop one
report’s pages). Both straight from beta reports.
UCHR() and hex code points
New UCHR(code) is the one-argument form of
CHR(code,1), and U'<…>' constants now take
hex (U'<1F4A9h>' = one emoji) and full code points that
emit the surrogate pair for you. Out-of-range is a loud error, never a
silent truncation. From Carl B.’s post.
A compiler crash, fixed
An Internal Compiler Error that appeared and vanished with unrelated
source edits — triggered by an identifier ending in a colon (e.g. from
PRE(CS:)) landing at a pool boundary — is fixed. Reported
against an earlier build; the fix rides this one.
Full tester guide — mental model, conversion rules, DCT import table, screen controls, reports, blobs, SQL / SQLite / text drivers / TopSpeedW / Memory, recipes, and what to focus on when testing. Changes since the last build are flagged inline with dated “beta refresh” notes.
Open the full Unicode Tester Guide
Report tool authors —
the wide generator surface has shipped
(IReportGeneratorW — six methods, opt-in, zero break for
existing implementors). Format detection, the EMF record set, transition
paths per integration style:
Standalone pages (best full-width). Everything described there is implemented unless marked as a known limitation — different behavior is exactly what we want to hear about.