Skip to content

LeanRows v0.3.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 01:44
· 32 commits to main since this release
eebaca7

LeanRows 0.3.0

LeanRows 0.3.0 opens Excel .xlsx workbooks, read-only, one worksheet at a
time. CSV, TSV, JSONL, NDJSON, log, and text files work as in 0.2.0.

Excel workbooks

  • LeanRows shows the values the workbook stores. Formulas are shown as their
    cached results and are never evaluated. Macros are not run and external
    links are not followed.
  • Columns are titled A, B, C, as in the sheet. Rows the sheet leaves out are
    shown empty, so row numbers match the sheet.
  • The first visible worksheet opens. Next sheet and Previous sheet in the
    overflow menu move between visible worksheets, and the status line shows,
    for example, Sheet 2 of 3: Name. Hidden sheets and chart sheets are not
    offered.
  • Dates and times with a date or time format are shown as 2026-01-01,
    2026-01-01 06:30:15, or 06:30:00. Other numbers are shown as stored, so
    12.5% shows as 0.125.
  • The full rules, with an example for each cell type, are in
    XLSX cell text.

A workbook is refused with a message when it is beyond one of these limits:

Limit Value
Rows 1,048,576
Columns 16,384
One ZIP entry, unpacked 1 GiB
Unpacked to packed size of one entry, past its first MiB 200 to 1
Shared-string text in total 256 MiB

Truncated files, files with a DOCTYPE, and workbooks whose sheet points
outside the file are also refused.

Measured

On Linux (Intel Xeon 2.1 GHz, 4 vCPU), six runs with a 120,001-row workbook of
4,202,904 bytes written by XlsxWriter:

Step Result
Open and show the first 128 rows 42 to 58 ms
Scan the whole sheet 433 to 503 ms
128 rows from the middle, after the scan 10 to 12 ms
Peak resident memory of the measuring process about 5.6 MiB

The same data as CSV scans in 28 to 30 ms on that machine, so a workbook scan
is about 15 times slower. These are not Windows numbers. Working set on
Windows with a workbook open has not been measured yet.

Known gaps

  • Find does not work on .xlsx files yet.
  • The installer and the Store package do not register .xlsx. Open a workbook
    with the Open dialog, by dropping it on the window, or from the command line.
  • Switching sheets has no keyboard shortcut.
  • The shared-string table is kept in memory, up to 256 MiB of text, so a very
    large workbook can use much more memory than a CSV file of the same size.
  • .xlsm, .xlsb, .xls, password-protected workbooks, and ZIP64 archives
    are refused.
  • _xHHHH_ escapes in text are shown as stored, not decoded.
  • No test workbook was written by Excel itself. The test files come from
    LibreOffice, openpyxl, and XlsxWriter.

Behavior retained

LeanRows remains a Windows x64, read-only viewer. It does not load a
whole-file object model, alter the source, send telemetry, or retrieve network
content. Editing, saving, export, sorting, filtering, regular expressions, SQL,
archives, and tail/follow mode remain outside the 0.3 boundary.

The per-user installer continues to register LeanRows in Open with for
.csv, .tsv, .jsonl, .ndjson, and .log, with the same safeguards as
0.2.0.

Download

This release provides two attachments:

LeanRows-v0.3.0-windows-x64-unsigned.zip
LeanRows-v0.3.0-windows-x64-unsigned.sha256

LeanRows 0.3.0 is not Authenticode-signed. Windows may display a warning for a
downloaded executable. Verify the ZIP against the .sha256 attachment from
this same release:

Get-FileHash .\LeanRows-v0.3.0-windows-x64-unsigned.zip -Algorithm SHA256

After extraction, validate and run the per-user installer:

.\install.ps1 -ValidateOnly
.\install.ps1

Verification

Windows CI ran formatting, the workspace tests, strict Clippy, the release
build, the native shell smoke, the reduced QA run (which now opens a workbook
through the document smoke), and packaging. The tagged release workflow
rebuilds and checks the release commit and its published assets.

The full local QA run with a receipt, as recorded for 0.2.0, has not been run
for 0.3.0.

LeanRows is available under the MIT License. The complete change summary is in
the changelog.
Security-sensitive findings should use
private vulnerability reporting.