Repository navigation
ROneCOne 1.8.0
ROneCOne 1.8.0
ROneCOne 1.8.0 is about doing less work. A query now runs where the data lives instead of after
loading every row into Excel. A command can be held in conversation instead of restarted for each
line. And a large JSON response can be read for the handful of members you actually want, rather
than parsed in full and then discarded. Each one replaces a pattern that looked fine until the
data grew.
Highlights
connection.Queryable(tableName)compiles the runtime's own expression trees into parameterized
SQL, so the filter happens in the database.Where,OrderBy,OrderByDescending,ThenBy,
ThenByDescending,SelectColumns,Take, andSkipcompose immutably;Count,AnyItem,
FirstOrDefault,ToDataTable,ToDataTableAsync, andCountAsyncexecute;ToSqlStringand
SqlParameterValuesrender exactly what will be sent. Every captured constant leaves as a?
marker, so a value can never be read as SQL. ANullbecomesIS NULL, string helpers become
dialect-escapedLIKE, andIsInbecomes anINlist. Anything untranslatable refuses with the
typedROneCOne.QueryErrorinstead of quietly falling back to a client-side scanROneCOne.Process.StartSession(command, [workingDirectory], [encodingName])keeps onecmd.exe
alive for a real conversation:WriteAsyncandWriteLineAsyncqueue input,CloseInput
signals end of file,ReadLineAsyncandReadErrorLineAsyncawait the next line on each stream
separately,ReadAvailableandReadErrorAvailabletake what is buffered,ReadToEndAsync
collects the rest, andWaitForExitAsyncresolves to the exit code, alongsideHasExited,
ExitCode,ProcessId, andKillProcess. Nothing blocks Excel: reads size themselves from
PeekNamedPipe, and writes ride an overlapped named pipe so an oversized payload pends instead
of freezing the hostJson.DeserializeOnly(text, paths)walks a document once and materializes only the paths you
name, preserving structure so navigation is identical toDeserialize, and
Json.DeserializeAt(text, path)returns the single value one path addresses.DeserializeTable
andDeserializeObjectsnow applyarrayPathduring the scan rather than after a full parse- Binding is also fixed rather than merely faster:
DeserializeIntoandDeserializeObjectsno
longer raise on a JSON member the target class does not model, matching System.Text.Json - A fifteenth demo workbook queries a generated workbook offline through the ACE provider, and the
process and JSON demos gain sessions and partial reads in situ
Release evidence
Each of three fresh Microsoft 365 Excel processes passed 955 live assertions, including SQL text
and bound values across both dialects, an injection-shaped customer name that matches one row
literally and cannot widen the result set, IS NULL translation, dialect-escaped wildcards, every
query refusal path, a two-answer conversation with one process, separated standard error, sort
finishing only once CloseInput signals end of file, KillProcess, and a partial JSON read that
is required to beat a whole parse on a document whose bulk is one unwanted member. All ten suite
benchmark scenarios met their release gates in every sample; the medians ran invocation 0.10,
collection 0.16, ordering 0.90, SHA-256 at 10,000 and 100,000 elements 0.14 and 0.26, keyed
mutation 0.64, and constrained maintenance 0.45 seconds.
Static analysis reported zero diagnostics across the runtime source, the live test modules, and
all fifteen demo modules; 77 Python contract tests pin the source and demo shapes. Every packaged
VBA module round-tripped byte-for-byte. The fifteen demos executed 144 practical examples without
an Office or VBE popup, and every rendered worksheet passed visual review. The new query demo
counts 50,000 rows server-side in 0.04 seconds against a 5-second gate.
Host boundaries
VBA reserves Kill for its file-deletion statement, so a session terminates through
KillProcess, joining Connect, Disconnect, YieldOnce, IsIn, and SingleItem. VBA also
keeps one global casing per identifier, so declaring a lowercase name anywhere rewrites every
bare Name in the project and breaks bang syntax against a case-sensitive column lookup; a source
contract now refuses that declaration. Neither is visible to static analysis, and both were found
by the live compiler.
Execution and network contract
Tasks remain cooperative on Excel's thread, and ROneCOne makes no VBA parallelism claim. A query
executes through the existing provider path, so its failure detail and cancellation behavior are
unchanged. A session owns kernel32 pipes directly and polls them cooperatively. 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 query, process, and
JSON demos run offline.
Import ROneCOne.cls to begin, or open the Query demo to watch a LINQ expression become SQL
before it runs. SHA-256 checksums for every release asset are included with the download.