Skip to content

Commit d726154

Browse files
committed
docs(release): Prepare release v0.9.5
Version bump from 0.9.4 to 0.9.5 across the five canonical version sites: - src/version.h (FORMULON_VERSION_PATCH 4 -> 5) - CMakeLists.txt (project VERSION) - packages/npm/package.json - packages/npm-native/package.json - packages/python/pyproject.toml CHANGELOG.md: - Add [0.9.5] - 2026-07-04 section with Added / Fixed / Build-CI groups covering ad-hoc array evaluation (evaluateFormulaArray / evaluate_formula_array across C API, Node addon, WASM, and Python, with the two-step fm_workbook_evaluate_formula_array / fm_workbook_evaluate_formula_array_cell C ABI surface); the function-metadata provider seam (lazy-dispatch and parser special-form recognition in fm_function_metadata, unbounded-arity as null/None, and mergeFunctionMetadata / merge_function_metadata precedence helpers); spill-phantom cell enumeration and pagination fidelity; range-shaped defined names evaluating as Value::Array instead of collapsing via implicit intersection; and the python-smoke CI job added to prebuild.yml to catch C ABI drift before release - Update [Unreleased] and footer compare links for v0.9.5 docs/releases/README.md: - Prepend v0.9.5 as latest release entry - Demote v0.9.4 to a dated entry
1 parent 37420dd commit d726154

7 files changed

Lines changed: 48 additions & 7 deletions

File tree

CHANGELOG.md

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,45 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.9.5] - 2026-07-04
11+
12+
### Added
13+
14+
- Ad-hoc array evaluation: `evaluateFormulaArray` (C API, Node addon,
15+
WASM) and `evaluate_formula_array` (Python) evaluate a dynamic-array or
16+
spilled formula against a workbook without mutating it, returning the
17+
whole `Array` result instead of reducing to its top-left element. The C
18+
ABI exposes a two-step surface — `fm_workbook_evaluate_formula_array`
19+
stashes the result on the handle, `fm_workbook_evaluate_formula_array_cell`
20+
reads it back by row-major index.
21+
- Function-metadata provider seam: hosts can inject localized function
22+
documentation over the engine's structural catalog. `fm_function_metadata`
23+
now also recognizes lazy-dispatch forms (`XLOOKUP`, `SUMIFS`, …) and
24+
parser special forms (`LET`, `LAMBDA`), and surfaces the unbounded-arity
25+
sentinel as `null` / `None`. Pure merge helpers `mergeFunctionMetadata`
26+
(Node) and `merge_function_metadata` (Python) resolve
27+
signature/description/localized name by locale-override → entry-default →
28+
engine-value precedence. Contract documented in
29+
`docs/function-metadata-schema.md`.
30+
31+
### Fixed
32+
33+
- Spill-phantom fidelity: `Sheet::spill_phantom_addresses` enumerates
34+
phantom cells across all spill regions; cell enumeration and `cell_count`
35+
now fold them in, `fm_workbook_cell_at` no longer treats a phantom
36+
coordinate as an internal error, and pagination computes the used range
37+
against a spilled region's full extent rather than just its anchor.
38+
- Range-shaped defined names (e.g. `Sheet1!$A$1:$A$5`) now evaluate as a
39+
`Value::Array` instead of collapsing to a scalar through implicit
40+
intersection.
41+
42+
### Build / CI
43+
44+
- Add a `python-smoke` job to `prebuild.yml` to catch C ABI drift before
45+
release.
46+
47+
**Detailed Release Notes**: [GitHub Release](https://github.com/libraz/formulon/releases/tag/v0.9.5)
48+
1049
## [0.9.4] - 2026-07-03
1150

1251
### Added
@@ -180,7 +219,8 @@ See the
180219
[GitHub release page](https://github.com/libraz/formulon/releases/tag/v0.9.0)
181220
for the full auto-generated change list.
182221

183-
[Unreleased]: https://github.com/libraz/formulon/compare/v0.9.4...HEAD
222+
[Unreleased]: https://github.com/libraz/formulon/compare/v0.9.5...HEAD
223+
[0.9.5]: https://github.com/libraz/formulon/compare/v0.9.4...v0.9.5
184224
[0.9.4]: https://github.com/libraz/formulon/compare/v0.9.3...v0.9.4
185225
[0.9.3]: https://github.com/libraz/formulon/compare/v0.9.2...v0.9.3
186226
[0.9.2]: https://github.com/libraz/formulon/compare/v0.9.1...v0.9.2

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
cmake_minimum_required(VERSION 3.20)
2-
project(formulon VERSION 0.9.4 LANGUAGES CXX)
2+
project(formulon VERSION 0.9.5 LANGUAGES CXX)
33

44
# ---------------------------------------------------------------------------
55
# Language standard and global settings

docs/releases/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ The high-level summary lives in [`CHANGELOG.md`](../../CHANGELOG.md).
66

77
## Available Versions
88

9-
- [v0.9.4](https://github.com/libraz/formulon/releases/tag/v0.9.4) — Latest release (2026-07-03) — read-only ad-hoc formula/CF evaluation, comment enumeration, and data-validation dropdown fixes.
9+
- [v0.9.5](https://github.com/libraz/formulon/releases/tag/v0.9.5) — Latest release (2026-07-04) — ad-hoc array evaluation, function-metadata provider seam, and spill-phantom / range-shaped defined-name fixes.
10+
- [v0.9.4](https://github.com/libraz/formulon/releases/tag/v0.9.4) — 2026-07-03 — read-only ad-hoc formula/CF evaluation, comment enumeration, and data-validation dropdown fixes.
1011
- [v0.9.3](https://github.com/libraz/formulon/releases/tag/v0.9.3) — 2026-07-03 — full binding-surface parity, XLSB/OOXML round-trip fidelity, and pivot/CF/print correctness fixes.
1112
- [v0.9.2](https://github.com/libraz/formulon/releases/tag/v0.9.2) — 2026-05-18 — workbook oracle track (pivot + print) and dynamic-array / parser / print-pagination fixes.
1213
- [v0.9.1](https://github.com/libraz/formulon/releases/tag/v0.9.1) — 2026-05-11 — OOXML print settings round-trip + unknown rels / shared-formula fixes.

packages/npm-native/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@libraz/formulon-native",
3-
"version": "0.9.4",
3+
"version": "0.9.5",
44
"description": "Excel 365 calculation engine -- native N-API binding",
55
"license": "Apache-2.0",
66
"author": "libraz",

packages/npm/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@libraz/formulon",
3-
"version": "0.9.4",
3+
"version": "0.9.5",
44
"description": "Excel 365 calculation engine -- WASM binding",
55
"license": "Apache-2.0",
66
"author": "libraz",

packages/python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ build-backend = "setuptools.build_meta"
2020

2121
[project]
2222
name = "formulon"
23-
version = "0.9.4"
23+
version = "0.9.5"
2424
description = "Excel 365 calculation engine -- Python binding"
2525
readme = "README.md"
2626
license = "Apache-2.0"

src/version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
#define FORMULON_VERSION_MAJOR 0
1111
#define FORMULON_VERSION_MINOR 9
12-
#define FORMULON_VERSION_PATCH 4
12+
#define FORMULON_VERSION_PATCH 5
1313

1414
#define FORMULON_VERSION_STRINGIFY_(x) #x
1515
#define FORMULON_VERSION_STRINGIFY(x) FORMULON_VERSION_STRINGIFY_(x)

0 commit comments

Comments
 (0)