Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
e0d5431
fix: support wolfxl native writer adapter
wolfiesch Apr 28, 2026
af4b2df
fix: close wolfxl native fidelity adapter gaps
wolfiesch Apr 28, 2026
dc52456
feat: scaffold external oracle helpers
wolfiesch Apr 28, 2026
91097bf
feat: add excelize external oracle helper
wolfiesch Apr 28, 2026
e988eed
feat: add libreoffice external oracle helper
wolfiesch Apr 28, 2026
2de89d2
feat: generate external oracle fixture pack
wolfiesch Apr 28, 2026
133d3ab
test: validate wolfxl external fixtures
wolfiesch Apr 28, 2026
c7f69d7
feat: add closedxml external oracle helper
wolfiesch Apr 28, 2026
7b9007b
feat: promote closedxml external fixture
wolfiesch Apr 28, 2026
36006b3
feat: expand closedxml rich feature fixtures
wolfiesch Apr 28, 2026
d2c21ba
feat: add npoi external oracle fixture
wolfiesch Apr 28, 2026
e094413
refactor: split external fixture specs
wolfiesch Apr 28, 2026
623de0e
feat: add exceljs external oracle fixture
wolfiesch Apr 28, 2026
dee7cc0
feat: add apache poi external oracle fixture
wolfiesch Apr 28, 2026
8410961
test: add external fixture readback probes
wolfiesch Apr 28, 2026
298cea8
test: expand external fixture readback probes
wolfiesch Apr 28, 2026
6861951
test: probe formatting and drawing relationships
wolfiesch Apr 28, 2026
7f0a99b
test: probe protection and rich text fixtures
wolfiesch Apr 28, 2026
5f98de9
test: add external workbook protection probe
wolfiesch Apr 28, 2026
b331f4d
feat: add workbook semantic context lanes
wolfiesch Apr 29, 2026
00e4946
feat: add cross-language context adapters
wolfiesch Apr 29, 2026
97903cb
docs: publish release and cross-language artifacts
wolfiesch Apr 29, 2026
023da0d
fix: sort apache poi wrapper imports
wolfiesch Apr 29, 2026
2fe73d2
fix: address semantic diff and report staleness review
wolfiesch Apr 29, 2026
c75f98b
fix: harden optional oracle helper setup
wolfiesch Apr 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ test_files/
# Results - regenerated on demand (but we may want to commit some)
# results/
results_dev*/
results-cross-language-smoke*/
tools/external-oracles/**/results-*/

# IDE
.idea/
Expand All @@ -54,6 +56,17 @@ Cargo.lock
!rust/**/Cargo.lock
rust/**/uv.lock

# .NET external oracle build outputs
tools/external-oracles/**/bin/
tools/external-oracles/**/obj/

# Node external oracle dependencies
tools/external-oracles/**/node_modules/

# Java external oracle build/dependency outputs
tools/external-oracles/**/deps/lib/
tools/external-oracles/**/build/classes/

# Jupyter
.ipynb_checkpoints/

Expand Down
128 changes: 128 additions & 0 deletions LAUNCH.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
# Launch

## One-liner

WolfXL is a Rust-backed, openpyxl-compatible Excel engine, and ExcelBench is the benchmark suite that measures whether spreadsheet libraries preserve the workbook features people actually care about.

## What is launching

This launch has three lanes:

1. Python replacement lane

WolfXL reaches `18/18` green features in the current scored Python release snapshot.

2. Cross-language context lane

The checked-in cross-language snapshot shows both `Apache POI` and `Excelize` at `18/18` in the scored write lane.

3. Pivot capability lane

The scored macOS fixture is not valid for pivots, so pivot evidence lives in a separate artifact. That artifact shows `Excelize` can emit pivot-bearing workbooks and `openpyxl` can read back the emitted pivot metadata.

## Core message

Most spreadsheet comparisons focus on speed. The real question is whether a library can handle complex workbooks without quietly dropping the parts that matter. ExcelBench measures that directly, and WolfXL now has the evidence to claim both high fidelity and strong performance in Python.

## Launch headline options

- WolfXL reaches 18/18 in our Excel fidelity benchmark
- We built an Excel benchmark that tests what spreadsheet libraries actually preserve
- WolfXL now matches openpyxl on scored fidelity and adds a patch-based modify path

## Main announcement draft

We spent the last stretch turning WolfXL and ExcelBench from a promising project into something we can defend technically.

WolfXL is a Rust-backed, openpyxl-compatible Excel engine for Python. ExcelBench is the benchmark suite we built to answer a simple question that most spreadsheet comparisons skip: can this library handle a real workbook without breaking the parts you care about?

The current release snapshot is the first one that feels clean enough to publish:

- WolfXL: `18/18` green features in the scored Python release lane
- Apache POI: `18/18` in the cross-language scored write lane
- Excelize: `18/18` in the cross-language scored write lane
- Pivot tables: tracked in a separate capability artifact on macOS because the shipped fixture is not scoreable there, while `Excelize` can still emit pivot-bearing workbooks

The important part is not just the score. The benchmark now has distinct lanes:

- a Python replacement lane for migration decisions
- a cross-language lane for ecosystem context
- a separate pivot capability lane when the scored fixture is not valid on this platform

That separation matters because it keeps the claims honest. We are no longer mixing historical snapshots, capability demos, and scored benchmark results into one muddy story.

If you process spreadsheets in Python, the practical takeaway is straightforward: WolfXL now has a strong case as a serious openpyxl alternative, and ExcelBench now has enough rigor to be useful as a benchmark in its own right.

## HN draft

Title:

WolfXL reached 18/18 in our Excel fidelity benchmark

Body:

I built two related projects:

- WolfXL: a Rust-backed, openpyxl-compatible Excel engine for Python
- ExcelBench: a benchmark suite for spreadsheet fidelity and performance

The benchmark question is simple: not just “how fast is this library?”, but “can it actually preserve the workbook features people care about?”

Current state:

- WolfXL hits `18/18` in the scored Python release lane
- Apache POI and Excelize both hit `18/18` in the scored cross-language write lane
- pivot tables are tracked separately on macOS because the shipped fixture is not scoreable there, but Excelize can still emit pivot-bearing workbooks and openpyxl can read the resulting pivot metadata

I think the most interesting part is the benchmark design, not just the project score:

- Python replacement lane for migration decisions
- cross-language lane for ecosystem context
- separate capability lane for pivots when the platform fixture is not valid

Repo links:

- WolfXL: <add repo URL>
- ExcelBench: <add repo URL>

If you work on spreadsheet tooling, I’d especially like feedback on the benchmark methodology and fixture design.

## Investor / technical summary

WolfXL is a Python spreadsheet engine with a Rust core and an openpyxl-style API. ExcelBench is the benchmark harness that measures spreadsheet fidelity rather than just throughput.

The project is now in a much stronger position because the proof is cleaner:

- WolfXL reaches `18/18` in the scored Python release lane
- cross-language reference points are strong: Apache POI `18/18`, Excelize `18/18`
- pivot capability is broken out into a separate artifact instead of being overstated in the main scorecard

That gives us three things:

1. a credible Python replacement story
2. a credible ecosystem-positioning story
3. a benchmark asset that is useful beyond WolfXL itself

## Assets to link

- Python release snapshot: `results-release-2026-04-28/README.md`
- Python release dashboard: `results-release-2026-04-28/DASHBOARD.md`
- Cross-language snapshot: `results-cross-language/README.md`
- Pivot capability artifact: `results-cross-language-pivots/README.md`
- Reporting policy: `docs/public-reporting.md`
- Cross-language context explainer: `docs/cross-language-context.md`

## Claim guardrails

- Say `scored Python release lane` for WolfXL results.
- Say `cross-language context snapshot` for Apache POI and Excelize.
- Say `pivot capability artifact` for the separate pivot evidence.
- Do not merge historical baseline, perf snapshot, and release snapshot into one undated claim.
- Do not imply that the macOS pivot fixture is currently scoreable.

## Recommended order for public rollout

1. Publish the README/docs update and the checked-in artifacts.
2. Post the main launch note using the announcement draft above.
3. Post the HN version with the benchmark-methodology angle.
4. Use the investor / technical summary in direct outreach.
17 changes: 14 additions & 3 deletions METHODOLOGY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@

## Purpose

ExcelBench measures **feature fidelity** for Python Excel libraries -- how accurately they can read and write Excel features compared to native Excel. It also measures **performance** (throughput, memory) as a secondary axis.
ExcelBench measures **feature fidelity** for spreadsheet libraries -- how accurately they can read and write Excel features compared to native Excel. It also measures **performance** (throughput, memory) as a secondary axis.

The default public presentation is still **Python-first** because most users are choosing between Python libraries. Cross-language comparisons are supported as a secondary ecosystem-context tier.

See `docs/trackers/cross-language-comparison-strategy.md` for the comparison policy.

## Fidelity vs Performance

Expand Down Expand Up @@ -44,8 +48,8 @@ Features are organized into tiers reflecting complexity:
| **Tier 3** (Workbook Metadata) | named_ranges, tables | 2 |

**Framework coverage:** 19 modeled features total.
**Current public XLSX profile:** 17 tested features, where 16 are scoreable per-library in
current results (pivot_tables is tested but N/A across adapters on macOS fixtures).
**Fresh release snapshot:** 19 tested features, where 18 are scoreable per-library in
the 2026-04-29 wheel-backed WolfXL 2.0 rerun (pivot_tables is tested but N/A across adapters on macOS fixtures).

## Scoring

Expand All @@ -70,3 +74,10 @@ Renderers produce human-readable output (README.md, matrix.csv, heatmap, HTML da
```bash
uv run excelbench report --input results/xlsx/results.json --output results/xlsx
```

## Comparison policy

- **Primary tables** answer the Python replacement question.
- **Secondary tables** can include cross-language libraries such as Apache POI, ClosedXML, Excelize, and ExcelJS.
- Cross-language results should be labeled as ecosystem context unless the report is explicitly cross-language-focused.
- The current rollout plan for the first two cross-language candidates lives in `docs/trackers/apache-poi-excelize-rollout-plan.md`.
Loading
Loading