Skip to content

ROneCOne 1.7.0

Choose a tag to compare

@WilliamSmithEdward WilliamSmithEdward released this 25 Jul 00:08
· 85 commits to main since this release

ROneCOne 1.7.0

ROneCOne 1.7.0 connects VBA to the artifacts around a workbook. Zip archives open, extract,
and build through a pure-VBA engine that needs no Shell.Application and no .NET. Long-running
jobs write crash-durable, level-filtered log lines. A folder can be awaited: the next created,
changed, or deleted file resolves a task. And the text at integration boundaries is handled
exactly: URLs percent-encode and decode per RFC 3986, HTML encodes and decodes its entities,
and a shell command can now be fed standard input.

Highlights

  • ROneCOne.ZipFile mirrors System.IO.Compression: OpenRead lists and reads entries
    (Entries, GetEntry, and per-entry FullName, Name, Length, CompressedLength,
    ReadAllText, ReadAllBytes, ExtractToFile), inflating stored and deflated data with
    CRC-32 verification; CreateFromDirectory writes a store-only archive, and
    ExtractToDirectory unpacks behind a directory-traversal guard and never overwrites.
    Zip64, encrypted, and multi-disk archives are refused with the typed ROneCOne.ZipError.
    The inflate engine is pure VBA, built against fixtures covering every deflate block flavor
    and verified live against PowerShell Compress-Archive and Expand-Archive in both directions
  • ROneCOne.Logger(path, [minimumLevel]) writes UTC millisecond-stamped, level-coded lines
    through the composite formatter, with LogTrace through LogCritical, IsEnabled, and
    MinimumLevel; a sub-minimum call never touches the disk, and each written line is appended
    and closed so it survives a crash
  • ROneCOne.FileWatcher(folder, [filter]).WaitForChangeAsync returns a task that resolves on
    the next created, changed, or deleted file, snapshotting at call time and rescanning on a
    throttle while awaited; cancellation and timeouts compose like every other task
  • ROneCOne.Uri.EscapeDataString and UnescapeDataString follow RFC 3986 over UTF-8;
    ROneCOne.WebUtility.HtmlEncode and HtmlDecode cover the five named entities and numeric
    references through surrogate pairs; and Process.RunAsync gains an optional standardInput
    that is written and closed at start, so filters like sort see end-of-file
  • A fourteenth demo workbook walks the zip surface offline, and the files, HTTP, and process
    demos grow logger, watcher, escaping, and standard-input rows

Release evidence

Each of three fresh Microsoft 365 Excel processes passed 878 live assertions, including
central-directory parsing, stored and both Huffman deflate flavors, CRC mismatch refusal, the
entry-name traversal guard, PowerShell archive interop in both directions, logger level
filtering with re-read lines, watcher creations, changes, and deletions under wildcard
filters, escaping round trips through surrogate pairs, and stdin end-of-file semantics. All
ten suite benchmark scenarios met their release gates in every sample; the medians ran
invocation 0.11, collection 0.19, ordering 0.88, SHA-256 at 10,000 and 100,000 elements 0.19
and 0.36, keyed mutation 0.62, and constrained maintenance 0.52 seconds. The new zip demo
benchmark opened a PowerShell-deflated archive, inflated its 1,000-line entry, and summed the
lines in 0.004 seconds against a 5-second gate.

Static analysis reported zero diagnostics across the runtime source, the live test modules,
and all fourteen demo modules; 70 Python contract tests pin the source and demo shapes. Every
packaged VBA module round-tripped byte-for-byte. The fourteen demos executed 148 practical
examples without an Office or VBE popup, and all 57 rendered worksheets passed visual review.

Execution and network contract

Tasks remain cooperative on Excel's thread. The file watcher observes changes by rescanning
snapshots inside the scheduler as time passes, and ROneCOne makes no VBA parallelism claim.
The zip engine runs entirely in-process in VBA, with no Shell.Application and no .NET
component. The network is touched only by the HTTP client, and only for URLs you request: the
runtime never phones home, sends no telemetry, and requires no VBIDE trust, installs, or
references. The HTTP demo and the HTTP test contract are the only release gates that need
internet access; the zip, logging, and watching demos run offline.

Import ROneCOne.cls to begin, or open the Zip demo to watch an archive built, refused, and
inflated without a single reference. SHA-256 checksums for every release asset are included
with the download.