Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
7df7896
refactor(oracle): share cell observation and sheet helpers between Ex…
libraz Oct 5, 2026
42ad31a
refactor(dev): split check_binding_drift into a binding_drift package
libraz Oct 5, 2026
d066206
refactor(oracle): split cli.py into targets manifest, preflight and c…
libraz Oct 5, 2026
272f93b
refactor(oracle): extract CF data-bar and icon-set semantics from cf_…
libraz Oct 5, 2026
995b854
refactor(eval): move runtime LAMBDA invocation out of dispatch.cpp
libraz Oct 5, 2026
ed6a6a2
refactor(eval): split FORECAST.ETS series prep and Holt-Winters fit o…
libraz Oct 5, 2026
1e7ca9c
refactor(parser): move LET and LAMBDA parsing into parser_let_lambda.cpp
libraz Oct 5, 2026
6c836d5
refactor(parser): give reference.h its own translation unit
libraz Oct 5, 2026
1511fac
refactor(parser): move storage-operator respelling next to the storag…
libraz Oct 5, 2026
b85fde7
refactor(xlsb): move workbook.bin global-record decoding into workboo…
libraz Oct 5, 2026
ec8de11
refactor(xlsb): split workbook.bin encoding and Ptg name collection o…
libraz Oct 5, 2026
da2ccab
refactor(io): move the presentation-overlay readers into sheet_overla…
libraz Oct 5, 2026
7f40dc3
refactor(c_api): split style-table mutation out of styles.cpp
libraz Oct 5, 2026
15f92c3
refactor(c_api): move print area and print titles into print_area_tit…
libraz Oct 5, 2026
12e2eee
refactor(node): split cell access and sheet UI parts out of the addon…
libraz Oct 5, 2026
9d48a0a
refactor(eval): share the serial recalc steps between full and partia…
libraz Oct 5, 2026
9d232b2
refactor(eval): move the wildcard matcher out of criteria into wildca…
libraz Oct 5, 2026
7c42f6b
refactor(eval): give a1_parse.h its own translation unit
libraz Oct 5, 2026
a9c7498
test(c_api): split the C API test suite into per-topic files
libraz Oct 5, 2026
a7dca6e
test(cli): split cli_test.cpp into per-topic files
libraz Oct 5, 2026
3fb5fba
test(concurrency): split scheduler_test.cpp by topic
libraz Oct 5, 2026
e2b7960
test(integration): split sheet_ops and ooxml_corpus tests by topic
libraz Oct 5, 2026
421ba86
test(oracle): split workbook_builder and oracle_test support code
libraz Oct 5, 2026
ce976f1
test(cf): split cf_evaluator_test.cpp by topic
libraz Oct 5, 2026
edd63d0
test(eval): split large builtin and dep_extractor tests by topic
libraz Oct 5, 2026
875c9b2
test(io): split pivot table reader and XLSB tests by topic
libraz Oct 5, 2026
24bf680
test(pivot): split pivot evaluator, filter and layout tests by topic
libraz Oct 5, 2026
a8e73c1
test(sheet): split sheet_spill_test.cpp by topic
libraz Oct 5, 2026
5ad6825
test(bindings): split the npm smoke test into topic modules
libraz Oct 5, 2026
25fca04
test(bindings): split the native addon smoke test into topic modules
libraz Oct 5, 2026
789c1e7
test(wasm): split run.mjs into topic modules
libraz Oct 5, 2026
2094c4c
test(bindings): split test_surface.py into per-topic modules
libraz Oct 5, 2026
c4ab88d
build(make): pass JOBS through to every cmake --build
libraz Oct 5, 2026
58a82bb
feat(print): model sheet geometry, pagination detail and auto row hei…
libraz Oct 5, 2026
f839deb
fix(eval): exclude nested SUBTOTAL/AGGREGATE cells the way Excel does
libraz Oct 5, 2026
4420436
feat(parser): format formulas in R1C1 notation
libraz Oct 5, 2026
6ae53d9
feat(eval): render a cell's display text from its number format
libraz Oct 5, 2026
aba5b73
fix(eval): read stored number formats in their canonical dialect
libraz Oct 5, 2026
efdd429
feat(styles): model the workbook theme and resolve effective colors a…
libraz Oct 5, 2026
a514732
test(oracle): pin TEXT renderings that cell display text relies on
libraz Oct 5, 2026
ace342b
build(tools): let the binding drift check measure 64-bit scalars
libraz Oct 5, 2026
c05c276
feat(api)!: expose cell geometry, display text, ranges and full XF re…
libraz Oct 5, 2026
509389f
feat(validation): evaluate data-validation rules against a value
libraz Oct 5, 2026
f5ed6ee
feat(autofilter): model AutoFilters as typed filter columns
libraz Oct 5, 2026
87c155f
fix(cf): resolve theme, indexed and auto colors in conditional formats
libraz Oct 5, 2026
539882d
feat(api)!: expose the workbook theme, color resolution and effective…
libraz Oct 5, 2026
9715ceb
fix(cf): report resolved conditional-format colors through the API an…
libraz Oct 5, 2026
f4e8c70
feat(autofilter): evaluate filters and treat filtered rows as Excel does
libraz Oct 5, 2026
93edb99
refactor(wasm): share embind property readers and XML part editing
libraz Oct 5, 2026
02b6366
feat(comments): model threaded comments alongside legacy notes
libraz Oct 5, 2026
9b84bd7
feat(drawing): insert, list and remove images in a sheet's drawing
libraz Oct 5, 2026
bd392a2
chore(bench): raise the WASM size ceilings to 3.50 / 3.75 MiB
libraz Oct 5, 2026
ed70d89
refactor(core): share out-of-line paths that WASM inlined per caller
libraz Oct 5, 2026
ea48c99
feat(api): expose AutoFilters, data validation and threaded comments
libraz Oct 5, 2026
bbb54ef
feat(api): insert, list, read and remove images on every surface
libraz Oct 5, 2026
97b1f72
docs: record the new workbook APIs, behavior changes and limitations
libraz Oct 5, 2026
17da363
refactor(bindings): fold repeated getter and setter bodies into share…
libraz Oct 5, 2026
1ec4d58
refactor(parser): share string and quoted-sheet-name scanning
libraz Oct 5, 2026
0bc4fec
refactor(pivot): reuse shared helpers for caption filters and STDEV
libraz Oct 5, 2026
18bf71d
refactor(eval): share helpers for repeated evaluator code
libraz Oct 5, 2026
0f47051
perf(wasm): route remaining sorts through the shared index sort
libraz Oct 5, 2026
72967cb
fix(io): attribute-escape the relationship Type in the shared writer
libraz Oct 5, 2026
a67b243
refactor(io): converge OOXML/XLSB duplication and move XML into io
libraz Oct 5, 2026
23c89d7
fix(eval): reject qualified built-ins at every formula entry parse
libraz Oct 6, 2026
f744aeb
fix(eval): keep RANDBETWEEN and RANDARRAY finite and in range at extr…
libraz Oct 6, 2026
048cce3
fix(sheet): drop data validations consumed by a row/col delete
libraz Oct 6, 2026
deccd33
fix(pivot): re-aggregate custom subtotals with their own function aft…
libraz Oct 6, 2026
cd52a8d
fix(io): resolve package-root rels targets and sync workbookPr date s…
libraz Oct 6, 2026
b725324
fix(io): rebase t="d" ISO date cells onto the 1904 date system
libraz Oct 6, 2026
a5ef5b4
fix(bindings): validate arguments strictly on the Node addon and WASM…
libraz Oct 6, 2026
0352cfe
refactor(node): move conditional-format bindings into parts/condition…
libraz Oct 6, 2026
3eb90d4
fix(utils): canonicalise month overflow in days_from_civil
libraz Oct 6, 2026
ebd6459
fix(io): accept a timezone suffix on date-only ISO strings
libraz Oct 6, 2026
497447e
fix(eval): guard numeric inputs in datetime builtins
libraz Oct 6, 2026
6912735
fix(format): rework number-format rendering and effective cell style …
libraz Oct 6, 2026
1a5757a
fix(drawing): avoid anchor overflow on insert near the grid edge
libraz Oct 6, 2026
0755d07
fix(workbook): keep dependents, names and layout consistent across st…
libraz Oct 6, 2026
5130969
fix(pivot): dirty dependents on authoring edits and harden grouping, …
libraz Oct 6, 2026
ce08268
fix(bindings): make Node and WASM argument validation consistent
libraz Oct 6, 2026
55e4bc6
docs(format): shorten in-function comments in number-format rendering
libraz Oct 6, 2026
8bc4ec0
fix(pivot): resolve ambiguous field names the same way everywhere
libraz Oct 6, 2026
eaa19ed
fix(pivot): drop a pivot pushed wholly off the grid by an insert
libraz Oct 6, 2026
72e10b2
perf(sheet): index committed spills by row band
libraz Oct 6, 2026
463ed66
fix(recalc): keep partial recalc dirtiness and bound its spill admission
libraz Oct 6, 2026
caa1d13
refactor(eval): fold duplicated function preludes onto shared drivers
libraz Oct 6, 2026
70ab350
refactor(print): share the defined-name area splitter
libraz Oct 6, 2026
b0b342a
perf(wasm): format numbers without libc printf
libraz Oct 6, 2026
057a923
test(wasm): move lifecycle-probe cleanup out of finally
libraz Oct 6, 2026
da4f1b0
test(cli): include <cstring> for std::strerror in the atomic-path tests
libraz Oct 6, 2026
c3d711b
chore(release): prepare 0.13.0
libraz Oct 6, 2026
5c657a6
test(workbook): bind the clock pivot rows by reference
libraz Oct 6, 2026
e0f5f98
test(eval): pass the large display-text input as a double literal
libraz Oct 6, 2026
0b830ce
fix(format): expand fraction continued fractions in binary64
libraz Oct 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
176 changes: 175 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,179 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.13.0] - 2026-10-06

### BREAKING

- C ABI: `fm_cell_xf` grows from 88 to 128 bytes (apply flags, `quotePrefix`
and protection) and `fm_row_layout_t` from 32 to 40 bytes (`has_height`,
`custom_height`). Callers built against the old layouts must rebuild.
- C ABI: `fm_styles_set_cell_style` takes one `fm_cell_style_record_t` (name,
`xf_id`, `builtin_id`, `i_level`, `hidden`, `custom_builtin`). The JS
`setCellStyle` and Python `set_cell_style` take the matching record.
- The native Node addon and WASM validate arguments strictly before entering
native code: a wrongly typed or out-of-range positional or nested argument
throws `TypeError` / `RangeError` instead of being coerced. String fields
take a string (or, on Node, a one-byte buffer), and 64-bit cursors are
bounded by `Number.MAX_SAFE_INTEGER` on both surfaces.

### Added

Everything below is available through the C ABI, WASM, native Node and Python.

- Sheet geometry: default column width and row height can be read and set,
and a row height cleared back to auto. Cell rectangles, column widths and
row heights are reported in points in display or print mode, with the
width model and chars/points conversion.
- Pagination results carry paper, margins, printable area, scale, page order,
print titles, per-page layout and manual-break flags.
- Cells and formulas in a range are enumerated through a handle with a
resumable cursor, and merges in a range are listed.
- A cell's formula in A1 and R1C1 notation, and its display text (or any
value under a format code) with an `ok` / overflow / invalid status.
- The workbook theme: the 12 colours and the major and minor fonts can be
read and set, including on a workbook with no theme part. Any colour spec
(theme and tint, indexed, auto, RGB) resolves to ARGB for a font, fill or
border context, and a cell's effective style reports its resolved fonts,
fills and borders.
- Named cell styles can be removed, and built-in style ids 48..53 are
accepted. `setCellStyle` is now available on the native Node addon.
- Typed AutoFilters for sheets and tables: filter columns (values, date
groups, custom, top 10, dynamic, colour, icon) and sort state can be read,
set, removed, cleared, evaluated to visible rows and applied. Applying a
filter hides and unhides rows and recalculates `SUBTOTAL` and `AGGREGATE`.
A typed set keeps `xr:uid`, `calendarType`, `extLst` and unknown
attributes.
- Data-validation evaluation: whether a proposed value satisfies the rule
that applies to a cell, which rule applied and its error style, plus a
resumable listing of invalid cells.
- Threaded comments with replies, mentions, resolved state and the
workbook's person list can be read, added, edited and removed. Each thread
keeps Excel's legacy note stub in sync, and row and column edits move or
remove threads with their anchors.
- Images: PNG, JPEG, GIF and BMP bytes are probed for format and pixel size,
a sheet's drawing objects (pictures, charts, shapes, groups) are listed
with anchors, and pictures can be read, inserted with a one-cell, two-cell
or absolute anchor, and removed. Row and column edits move anchors the way
Excel does.
- Enum constants mirroring the C enums on every surface: `GeometryMode`,
`DisplayStatus`, `ColorContext`, `ColorResolution`, `ThemeSource`,
`EffectiveStyleSource`, `FilterKind`, `FilterOperator`,
`DynamicFilterType`, `SortBy`, `SortMethod`, `DateTimeGrouping`,
`ValidationErrorStyle`, `ImageFormat`, `DrawingObjectKind`, `AnchorKind`
and `AnchorEditAs`.

### Changed

- `SUBTOTAL` and `AGGREGATE` (options 0..3 and the array form 14..19) skip a
referenced cell whose own formula calls `SUBTOTAL` or `AGGREGATE`,
including inside `LET` / `LAMBDA` bodies and unevaluated `IF` branches,
and every cell of a spilled or CSE array whose anchor qualifies. A name,
`INDIRECT` or a plain reference to such a cell does not count. A
`SUBTOTAL` whose cells are all excluded returns its empty-set value
instead of `#VALUE!`.
- `SUBTOTAL` 1..11 treat hidden rows as filtered only when a sheet or table
AutoFilter on that sheet has a criterion, and then skip every hidden row
on the sheet. 101..111 keep skipping every hidden row.
- Rows with an auto height are no longer written with `customHeight`; only
explicit heights are.
- `TEXT` renderings match Excel for fraction padding on whole numbers,
`[DBNum1]` with General, serial 0 as 1900/1/0, negative 1904-system dates
and times, and the 1904 upper serial bound.
- The WASM size report's ceilings moved to 3.50 MiB / 896 KiB Brotli soft
and 3.75 MiB / 928 KiB Brotli hard, keeping the 0.25 MiB and 32 KiB gap
between each soft and hard ceiling.
- Number formats are validated the way Excel validates them: more than four
sections, a condition in the third section or later, `@` mixed with
numeric or date tokens, and an unterminated quote, bracket, escape, `_`
or `*` are rejected. Conditional sections take Excel's implicit sign
arms, and a value no arm accepts is `#VALUE!` in `TEXT` and `#####` in
display text. A text-only section shows numbers as General.
- Fractions are rendered by a continued-fraction search with fixed and
zero-prefixed denominators and `%` applied first; scientific formats
support engineering grouping, and commas before the decimal point scale.
Dates render from one rounded second with midnight carry.
- A cell with an explicit style 0 is distinct from an unstyled cell and
overrides its row or column style; the distinction round-trips through
`.xlsx` and `.xlsb`. `CELL()` and display text read the effective
cell, row or column format, and spilled cells are saved with their
effective style.
- Formulas that call a sheet- or workbook-qualified built-in are rejected at
every entry point (cells, conditional formats, defined names, validation),
not only `set_cell_formula`.
- Pivot fields named ambiguously (a name shared by distinct fields) are
rejected by filters and the C API without mutation, and `GETPIVOTDATA`
returns `#REF!` for them. Value filters on an unknown field are rejected
at authoring time.
- A row or column insert removes a pivot table pushed wholly off the grid;
a `GETPIVOTDATA` reading it becomes `#REF!`.
- `TIME` caps each component at 32767 as Excel does, and the date and time
functions return `#NUM!` for non-finite or out-of-range inputs.

### Performance

- The WASM module no longer links libc `printf`: numbers are formatted by a
byte-identical in-tree formatter built on double-conversion.
- Loading a sheet with many dynamic-array anchors is no longer quadratic:
committed spills are indexed by row band.
- Adding formulas under whole-column watchers no longer costs quadratic
time during dirty marking.
- Duplicated function preludes and out-of-line paths are shared, shrinking
the WASM module (`.wasm` 3,292,036 bytes raw, 901,702 bytes Brotli).

### Fixed

- Stored number formats with English colour names (`[Red]`, `[ColorN]`) no
longer render as `########` in display text and `CELL`.
- `FIXED` and `DOLLAR` accept the full Excel decimals range.
- `RANDBETWEEN` and `RANDARRAY` stay finite and in range when the bounds are
huge or span beyond the 64-bit integer range.
- Dates past month 12 were computed two days off in the civil-date
conversion.
- ISO `t="d"` date cells are rebased onto the 1904 date system when the
workbook uses it, and date-only ISO strings with a `Z` or `+hh:mm` suffix
are accepted.
- Toggling the 1904 date system keeps the saved `<workbookPr>` in step with
the model; package-root parts such as `customXml` get correct relationship
targets in `.xlsx` and `.xlsb`; unknown relationship types are
attribute-escaped.
- Formulas referencing a missing sheet recalculate when that sheet is added
or renamed into existence. Changing iteration, the profile, the 1904 date
system or the pinned clock dirties every formula (and clears pivot
results where they depend on it). A partial recalc marks dependents
outside its closure dirty, so a later full recalc refreshes them.
- Row and column edits rewrite defined names and unowned table and pivot
cache ranges, dirty committed spill anchors, drop data validations and
ranges pushed wholly off the grid, and no longer overflow drawing anchors
near the grid edge. Removing or moving a sheet remaps the active and
first visible tab.
- Pivot authoring edits dirty dependent formulas so `GETPIVOTDATA`
refreshes; custom subtotals re-aggregate with their own function after a
value filter; invalid date serials stay out of date groups.
- `INDIRECT` and `OFFSET` fill a clamped expansion shorter than its
rectangle with blanks instead of uninitialised cells.
- Conditional-format theme, indexed and auto colours no longer render black:
they resolve against the workbook theme and palette in the engine and in
the C API payloads, and survive an XLSB save and load.
- Table AutoFilters follow row and column inserts and deletes, and
AutoFilter `colId`s shift when columns are inserted or deleted inside the
filter.

### Known limitations

- Saving as XLSB does not write threaded comments, inserted images or typed
AutoFilter edits; each is reported as a diagnostic. AutoFilters loaded
from XLSB are not visible to the typed API.
- Custom data-validation formulas and rule bounds evaluate against the
stored workbook, not the proposed value.
- AutoFilter evaluation approximates Excel's text ordering for custom `<`
and `>` text comparisons, and computes top N and average filters over all
body rows.
- Display text does not depend on column width: narrow columns never show
`####` and repeat fills contribute nothing.
- The legacy note text of a threaded comment and the regenerated comment VML
geometry approximate Excel's.

## [0.12.0] - 2026-09-30

### Added
Expand Down Expand Up @@ -1832,7 +2005,8 @@ See the
[GitHub release page](https://github.com/libraz/formulon/releases/tag/v0.9.0)
for the full auto-generated change list.

[Unreleased]: https://github.com/libraz/formulon/compare/v0.12.0...HEAD
[Unreleased]: https://github.com/libraz/formulon/compare/v0.13.0...HEAD
[0.13.0]: https://github.com/libraz/formulon/compare/v0.12.0...v0.13.0
[0.12.0]: https://github.com/libraz/formulon/compare/v0.11.1...v0.12.0
[0.11.1]: https://github.com/libraz/formulon/compare/v0.11.0...v0.11.1
[0.11.0]: https://github.com/libraz/formulon/compare/v0.10.0...v0.11.0
Expand Down
46 changes: 44 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.20)
project(formulon VERSION 0.12.0 LANGUAGES CXX)
project(formulon VERSION 0.13.0 LANGUAGES CXX)

# ---------------------------------------------------------------------------
# Language standard and global settings
Expand Down Expand Up @@ -112,22 +112,31 @@ set(FORMULON_CORE_SOURCES
src/utils/double_parse.cpp
src/utils/index_sort.cpp
src/utils/japanese_era.cpp
src/utils/number_text.cpp
src/utils/structured_log.cpp
src/utils/text_ops.cpp
src/utils/thread_launch.cpp
src/utils/utf8_length.cpp
src/external_book.cpp
src/auto_filter.cpp
src/styles.cpp
src/threaded_comment.cpp
src/style_resolve.cpp
src/theme.cpp
src/color_resolve.cpp
src/value.cpp
src/sheet.cpp
src/sheet_name.cpp
src/sheet_row_col_edit.cpp
src/sheet_name_casefold_data.cpp
src/workbook.cpp
src/workbook_ref_rewrite.cpp
src/io/auto_filter_xml.cpp
src/io/cell_parser.cpp
src/io/cf_overlay.cpp
src/io/cf_reader.cpp
src/io/color_spec_xml.cpp
src/io/threaded_comments_io.cpp
src/io/cf_writer.cpp
src/io/comments_reader.cpp
src/io/comments_writer.cpp
Expand All @@ -140,6 +149,7 @@ set(FORMULON_CORE_SOURCES
src/io/ooxml/external_link_reader.cpp
src/io/ooxml/package_validator.cpp
src/io/ooxml/pivot_target_reader.cpp
src/io/ooxml/part_dom.cpp
src/io/ooxml/print_settings_parse.cpp
src/io/ooxml/sheet_aux_rels_reader.cpp
src/io/ooxml/workbook_rels_reader.cpp
Expand All @@ -158,11 +168,14 @@ set(FORMULON_CORE_SOURCES
src/io/pivot_table_writer.cpp
src/io/format_detect.cpp
src/io/sax_xml_reader.cpp
src/io/sheet_layout_reader.cpp
src/io/sheet_overlay_reader.cpp
src/io/sheet_reader.cpp
src/io/sst_reader.cpp
src/io/styles_reader.cpp
src/io/styles_writer.cpp
src/io/tables_reader.cpp
src/io/theme_part.cpp
src/io/xml_escape.cpp
src/io/xml_utils.cpp
src/io/xsd_double.cpp
Expand All @@ -175,6 +188,7 @@ set(FORMULON_CORE_SOURCES
src/io/xlsb/func_id_table.cpp
src/io/xlsb/metadata_bin.cpp
src/io/xlsb/ptg.cpp
src/io/xlsb/ptg_declarations.cpp
src/io/xlsb/ptg_reader.cpp
src/io/xlsb/ptg_writer.cpp
src/io/xlsb/pivot_reader.cpp
Expand All @@ -190,19 +204,28 @@ set(FORMULON_CORE_SOURCES
src/io/xlsb/styles_reader.cpp
src/io/xlsb/styles_writer.cpp
src/io/xlsb/tail_refs.cpp
src/io/xlsb/workbook_bin_reader.cpp
src/io/xlsb/workbook_bin_writer.cpp
src/io/xlsb/writer.cpp
src/cf/auto_filter_eval.cpp
src/cf/cf_evaluator.cpp
src/cf/cf_helpers.cpp
src/cf/rule_match.cpp
src/cf/scale_evaluator.cpp
src/cf/validation_eval.cpp
src/parser/tokenizer.cpp
src/parser/ast.cpp
src/parser/reference.cpp
src/parser/ast_dump.cpp
src/parser/ast_format.cpp
src/parser/ast_format_r1c1.cpp
src/parser/formula_prefix.cpp
src/parser/ast_shift.cpp
src/parser/parse_error.cpp
src/parser/parser.cpp
src/parser/parser_atoms.cpp
src/parser/parser_reference.cpp
src/parser/parser_let_lambda.cpp
src/parser/ref_transforms.cpp
src/pivot/aggregator.cpp
src/pivot/filter_engine.cpp
Expand All @@ -215,6 +238,10 @@ set(FORMULON_CORE_SOURCES
src/print/page_setup.cpp
src/print/print_area.cpp
src/print/pagination.cpp
src/print/sheet_geometry.cpp
src/drawing/drawing_xml.cpp
src/drawing/image_header.cpp
src/drawing/drawing_edit.cpp
src/eval/array_alloc.cpp
src/eval/coerce.cpp
src/eval/rng.cpp
Expand Down Expand Up @@ -285,6 +312,7 @@ set(FORMULON_CORE_SOURCES
src/eval/builtins/text_format.cpp
src/eval/builtins/text_width.cpp
src/eval/builtins/web.cpp
src/eval/text_format/display_text.cpp
src/eval/text_format/number_format.cpp
src/eval/text_format/number_format_scanner.cpp
src/eval/text_format/number_format_section.cpp
Expand All @@ -294,14 +322,17 @@ set(FORMULON_CORE_SOURCES
src/eval/text_format/render_date.cpp
src/eval/text_format/render_fraction.cpp
src/eval/stats/special_functions.cpp
src/eval/tree_walker/binding_source.cpp
src/eval/tree_walker/broadcast.cpp
src/eval/tree_walker/dispatch.cpp
src/eval/tree_walker/lambda_invoke.cpp
src/eval/tree_walker/walker.cpp
src/eval/tree_walker_lazy_table.cpp
src/eval/eval_context.cpp
src/eval/external_ref.cpp
src/eval/eval_state.cpp
src/eval/criteria.cpp
src/eval/wildcard.cpp
src/eval/jp_fold.cpp
src/eval/jp_kana_table.cpp
src/eval/jis0208_table.cpp
Expand All @@ -315,7 +346,7 @@ set(FORMULON_CORE_SOURCES
src/eval/spill_committer.cpp
src/eval/special_forms_lazy.cpp
src/eval/structured_ref.cpp
src/eval/aggregate_kernels.cpp
src/numeric_aggregate_kernels.cpp
src/eval/aggregate_lazy.cpp
src/eval/areas_lazy.cpp
src/eval/cell_lazy.cpp
Expand All @@ -337,11 +368,14 @@ src/eval/aggregate_lazy.cpp
src/eval/workdays_lazy.cpp
src/eval/financial_lazy.cpp
src/eval/forecast_ets_lazy.cpp
src/eval/ets_series.cpp
src/eval/holt_winters.cpp
src/eval/getpivotdata_lazy.cpp
src/eval/linest_lazy.cpp
src/eval/textjoin_lazy.cpp
src/eval/textsplit_lazy.cpp
src/eval/trimrange_lazy.cpp
src/eval/a1_parse.cpp
src/eval/reference/common.cpp
src/eval/reference/indirect.cpp
src/eval/reference/intersection.cpp
Expand All @@ -357,29 +391,37 @@ src/eval/aggregate_lazy.cpp
src/eval/lookups/common.cpp
src/eval/lookups/index.cpp
src/eval/lookups/xlookup.cpp
src/c_api/parts/auto_filter.cpp
src/c_api/parts/cells.cpp
src/c_api/parts/cf_eval.cpp
src/c_api/parts/eval_adhoc.cpp
src/c_api/parts/cf_mutate.cpp
src/c_api/parts/common.cpp
src/c_api/parts/diagnostics.cpp
src/c_api/parts/drawing.cpp
src/c_api/parts/display.cpp
src/c_api/parts/external_links.cpp
src/c_api/parts/function_catalog.cpp
src/c_api/parts/pivot_cache.cpp
src/c_api/parts/pivot_internal.cpp
src/c_api/parts/pivot_layout.cpp
src/c_api/parts/pivot_table.cpp
src/c_api/parts/pagination.cpp
src/c_api/parts/print_area_titles.cpp
src/c_api/parts/print_settings.cpp
src/c_api/parts/xml_fragment.cpp
src/c_api/parts/sheet_layout.cpp
src/c_api/parts/sheets_ui.cpp
src/c_api/parts/styles.cpp
src/c_api/parts/styles_mutate.cpp
src/c_api/parts/trace.cpp
src/c_api/parts/version.cpp
src/c_api/parts/workbook.cpp
src/c_api/parts/recalc.cpp
src/c_api/parts/tables.cpp
src/c_api/parts/theme.cpp
src/c_api/parts/threaded_comments.cpp
src/c_api/parts/validation.cpp
src/c_api/generated/sheet_counts.cpp
src/c_api/generated/styles_counts.cpp
src/c_api/generated/workbook_counts.cpp
Expand Down
Loading
Loading