Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
12 changes: 7 additions & 5 deletions docs/format-selection.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,13 @@ attempts. They remain research leads, not production recommendations. Their
exact commits, failures, and retry conditions are recorded in the
[negative-evidence records](../research/formats/).

FastLanes also has no general selection yet. Its corrected pipe-delimited
numeric case round-tripped, but partial-vector string cases failed, malformed
input terminated the process, and the pinned Python binding hit a reproducible
macOS build blocker. Keep it as experimental evidence until those retry
conditions are resolved.
FastLanes also has no general selection yet. Results are host- and
workload-sensitive: an earlier pipe-delimited numeric case round-tripped, but
the pinned Linux retry crashed in the one-million-row numeric case and all
string-boundary cases, while the mixed 13-column case raised an internal
`UNREACHABLE` error. The pinned macOS Python binding also has a reproducible
build blocker. Keep it as experimental evidence until these retry conditions
are resolved.

DuckDB is a query engine and can be useful with several of these formats. It is
not a competing file-format row in this guide.
Expand Down
2 changes: 2 additions & 0 deletions docs/research-log.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ The claims runner keeps the corrected TsFile time-series workload as `ADAPTED` a

The 2026-07-17 retry added the exact 13-column mixed-schema case and corrected fatal classification for worker failures and crashes. The lock-pinned Python package could not build under macOS arm64 Clang 21 because `src/table/stats.cpp` promotes a `std::string` null-argument warning to an error. The official C++ `quick_fuzz_test` built after downgrading the two observed warning classes, but all ten pinned cases exited `SIGTRAP`; this is experimental evidence, not an upstream bug claim.

The Linux x86_64 retry on [workflow run 29520329351](https://github.com/Anionix/data-format-lab/actions/runs/29520329351) built the pinned Python extension successfully with Python 3.12.13, Clang 21.1.8, CMake 4.1.2, and Ninja 1.13.2. The 1,000,000-row numeric control and all five string-boundary cases exited `SIGSEGV`; the 13-column mixed case raised `UNREACHABLE` at `src/wizard/wizard.cpp:1252`. Malformed comma input raised a typed-cast error in this Linux run. The result is `FAILED` and remains outside every ranking; it is distinct from the earlier macOS build blocker and from the lab's historical comma-delimiter mistake. The raw archive is preserved in the [v0.1.0 Release](https://github.com/Anionix/data-format-lab/releases/download/v0.1.0/data-format-lab-fastlanes-linux-x86_64-29520329351.tar.zst) with a [checksum sidecar](https://github.com/Anionix/data-format-lab/releases/download/v0.1.0/data-format-lab-fastlanes-linux-x86_64-29520329351.tar.zst.sha256).

The 2026-07-17 Nimble retry pinned core `9da673...`, Velox `e06dd...`, and OpenZL `6b48...`. The dependency provenance was not fully lock-pure: protobuf library `35.1` came from Nix, `protoc 33.4` and fmt `12.1.0` came from Homebrew, and CMake reported the compiler/library mismatch. A dependency-resolving CMake path reached the bundled xsimd project but stopped at its pre-3.5 minimum-version declaration under CMake 4.1.2. The earlier protobuf/fmt target failure and this newer configure failure are both `UNSUPPORTED` build evidence; the 1,024-column projection comparison was not run.

The 2026-07-17 AnyBlox retry found official bundler and `anyblox2csv` targets at the pinned commits, but the artifact still required an undated nightly Rust toolchain. This host had Homebrew Rust 1.93.1 and no `rustup`; stable compilation failed with `E0554/E0599`. The input bundle and compiler were not checksum-complete, so no round trip or performance result was promoted.
Expand Down
48 changes: 45 additions & 3 deletions research/formats/fastlanes.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
"source_commits": {"core": "f0edc1020a538f1f8098640fce8347c9ac247a0d"},
"primary_source": "https://fastlanes.io/",
"claim": "nested encodings designed for parallel SIMD-friendly decoding",
"attempted_on": "2026-07-14",
"attempted_on": "2026-07-17",
"comparability": "PARTIAL",
"state": "FAILED",
"claim_summary": "numeric data round-tripped; partial-vector string dictionary lookup failed; Python binding rebuild blocked before mixed-schema test",
"claim_summary": "the macOS exploratory numeric control round-tripped, but the reproducible Linux x86_64 retry built successfully and then crashed numeric and string cases; the 13-column mixed case reached an UNREACHABLE path",
"correction": "the earlier numeric -11 result used comma-separated input against the official pipe-delimited reader and is superseded",
"attempts": [
{
Expand Down Expand Up @@ -70,7 +70,49 @@
"warning_overrides": ["-Wno-error=character-conversion", "-Wno-error=nonnull"]
},
"result": "target built after warning overrides; all 10 CTest cases exited SIGTRAP"
},
{
"entrypoint": "official pyfastlanes editable build and claims workflow on Linux x86_64",
"attempted_on": "2026-07-17",
"workload": "1,000,000 rows and 8 numeric columns; string rows 1,023, 1,024, 1,025, 2,048, and 2,049; 1,024 rows and 13 mixed columns; malformed comma input",
"environment": {
"os": "Ubuntu 24.04 GitHub-hosted runner",
"kernel": "6.17.0-1020-azure",
"architecture": "x86_64",
"host_python": "3.12.3",
"python": "3.12.13",
"clang": "21.1.8",
"cmake": "4.1.2",
"ninja": "1.13.2",
Comment on lines +85 to +86

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Record the build-tool versions actually used

For this Linux attempt, these values conflict with the recorded build command: the workflow installs CMake 4.4.0 and Ninja 1.13.0 into the FastLanes virtualenv before invoking scikit-build-core, while its metadata step prints the separate Nix-shell cmake and ninja versions, 4.1.2 and 1.13.2. The research log consequently describes the build as using the latter versions without establishing which executables performed the build. Distinguish the ambient and build-tool versions and record the venv tool output so reproductions do not silently use a different toolchain.

Useful? React with 👍 / 👎.

"scikit_build_core": "0.11.6",
"pybind11": "2.12.1",
"setuptools_scm": "8.3.1",
"build_type": "Release",
"parallelism": 4,
"timeout_seconds": 120,
"package": "pyfastlanes==0.1.3.post9",
"runtime_version": "0.1.4"
},
"build_command": "nix develop --command python -m venv native/fastlanes/.venv; nix develop --command native/fastlanes/.venv/bin/python -m pip install scikit-build-core==0.11.6 cmake==4.4.0 ninja==1.13.0 pybind11==2.12.1 setuptools-scm==8.3.1; CMAKE_BUILD_PARALLEL_LEVEL=4 nix develop --command native/fastlanes/.venv/bin/python -m pip install --no-build-isolation -e native/fastlanes",
"result": {
"build": "succeeded",
"numeric": "CRASHED SIGSEGV (-11)",
"string_boundaries": "1,023, 1,024, 1,025, 2,048, and 2,049 all CRASHED SIGSEGV (-11)",
"mixed": "HARNESS_FAILED RuntimeError: UNREACHABLE at src/wizard/wizard.cpp:1252",
"comma_malformed": "HARNESS_FAILED RuntimeError: invalid character in signed integer; child process returned 0 because the worker captured the exception"
},
"workflow_run": {
"run_id": "29520329351",
"url": "https://github.com/Anionix/data-format-lab/actions/runs/29520329351",
"artifact_name": "data-format-lab-fastlanes-linux-x86_64-29520329351",
"results_path": "runs/fastlanes-linux-29520329351/results.json",
"archive_path": "outputs/release/data-format-lab-fastlanes-linux-x86_64-29520329351.tar.zst",
"archive_sha256": "b9270a10d9cc0f5d81a81e67b8e22af591a06018e767720b9d9c6e4c3689227a",
"release_tag": "v0.1.0",
"release_asset_url": "https://github.com/Anionix/data-format-lab/releases/download/v0.1.0/data-format-lab-fastlanes-linux-x86_64-29520329351.tar.zst",
"release_checksum_url": "https://github.com/Anionix/data-format-lab/releases/download/v0.1.0/data-format-lab-fastlanes-linux-x86_64-29520329351.tar.zst.sha256"
}
}
],
"retry_when": "the official Python extension builds in a reproducible toolchain, round-trips partial-vector string dictionaries, and rejects malformed input without terminating the process"
"retry_when": "a pinned source and toolchain complete the 13-column mixed-schema round trip without SIGSEGV or UNREACHABLE, with the same result independently reproduced on macOS and Linux"
}
9 changes: 9 additions & 0 deletions tests/test_research.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,15 @@ def test_negative_research_records_are_pinned_and_unranked() -> None:
assert "checksum-complete dataset" in records["anyblox"]["retry_when"]
assert ".anyblox bundle" in records["anyblox"]["retry_when"]

fastlanes_attempt = records["fastlanes"]["attempts"][-1]
assert fastlanes_attempt["environment"]["architecture"] == "x86_64"
assert fastlanes_attempt["result"]["mixed"].startswith("HARNESS_FAILED")
assert fastlanes_attempt["workflow_run"]["run_id"] == "29520329351"
assert fastlanes_attempt["workflow_run"]["release_tag"] == "v0.1.0"
assert fastlanes_attempt["workflow_run"]["release_asset_url"].endswith(
".tar.zst"
)

nimble_json = json.dumps(records["nimble"])
assert "/nix/store/" not in nimble_json
assert "/opt/homebrew/" not in nimble_json
Expand Down