Skip to content

Latest commit

 

History

History
720 lines (528 loc) · 42.9 KB

CHANGELOG.md

File metadata and controls

720 lines (528 loc) · 42.9 KB

HyperFormula changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[3.5.0] - 2026-10-09

Added

  • Added support for the new license key format. A proprietary key can now grant a subset of the library: a function your key does not include evaluates to a #LIC! error, and the matching parts of the API throw a LicenseCapabilityMissingError. getAvailableFunctions() and getFunctionDetails() describe only the functions your key includes. #1728

Changed

  • Changed the VERSION function to return only the HyperFormula version (e.g. HyperFormula v3.4.0), without the license key status. #1728
  • Changed the API methods gated by the license key to throw a LicenseCapabilityMissingError when the key is missing or invalid, when a classic key has expired, or when a trial key is past its grace period. The gated methods are the ones that edit cells, rows, columns, and sheets, copy(), cut(), paste(), undo(), redo(), batch(), suspendEvaluation(), and the methods that add, change, or remove named expressions. Building an engine with named expressions throws the same error, and the matching isItPossibleTo*() methods, isThereSomethingToUndo(), and isThereSomethingToRedo() return false. #1728
  • Changed the MAXPOOL and MEDIANPOOL functions to accept a stride greater than the window size in a cell, where they returned the #VALUE! error before. The windows then skip the rows and columns between them, as calculateFormula() already did. #1718

Fixed

  • Fixed the validation of classic (25-character) license keys depending on the time zone: east of UTC, a key that expired the day before the build was released was still accepted, and west of UTC, the console message printed an expiry date one day too early. #1728
  • Fixed the AVERAGEIF function returning a division-by-zero error when the calculated average was 0. #1733
  • Fixed the localized names of VSTACK and HSTACK in 14 language packs to match Microsoft Excel. #1748
  • Fixed the MAXPOOL and MEDIANPOOL functions throwing an uncaught TypeError or RangeError. They now return the #VALUE! error when the window is larger than the range or the range dimensions, reduced by the window size, are not whole multiples of the stride, and the #NUM! error when the window size or the stride is not a positive integer. #1718
  • Fixed the VAR, STDEV, DEVSQ, COVARIANCE.P, COVARIANCE.S, SLOPE, STEYX, DVAR and DSTDEV functions, their variants, and the matching SUBTOTAL modes losing precision on data with a large mean and a small spread. #1784
  • Fixed a bug where SLOPE and STEYX returned #NUM! or an arbitrary number instead of #DIV/0! when all the x values are equal. #1784
  • Fixed a bug where STEYX returned #NUM! or 0 instead of the standard error for points that lie almost on a line. #1784
  • Fixed a bug where VAR, STDEV, DVAR, DSTDEV, COVARIANCE.P, COVARIANCE.S, SLOPE, STEYX, their variants, and the matching SUBTOTAL modes returned an error or 0 for very large or very small values although the result was within the range of numbers, and DEVSQ returned 0 for very small values. #1784
  • Fixed the MOD function returning a remainder with the sign of the dividend instead of the sign of the divisor, which made the results differ from Excel and Google Sheets for arguments with opposite signs (e.g. =MOD(-3, 12) now returns 9 instead of -3). #1747
  • Fixed a bug where moving or pasting a formula with an undefined name to another sheet incorrectly added an empty global named expression. #1728

[3.4.0] - 2026-08-10

Added

  • Added the getAvailableFunctions() and getFunctionDetails() instance methods for retrieving function metadata. #1692
  • Added new functions: VSTACK, HSTACK. #1698
  • Added a new function: XIRR. #1701
  • Added the UNIQUE function. #1708
  • Added the SORT function. #1707
  • Added an Indonesian (Bahasa Indonesia) language pack. #1674
  • Added a stringifyCurrency config option that lets you plug in a custom currency formatter for the TEXT function. #1145

Fixed

  • Fixed the behavior of MATCH, VLOOKUP, HLOOKUP, and XLOOKUP functions when the search range contained empty cells. #1697
  • Fixed the VLOOKUP, HLOOKUP, and XLOOKUP functions to return 0 instead of an empty value when the matched cell in the result range is empty. #1697
  • Fixed the page freezing when entering a long string of digits containing a non-digit character near the end (e.g. 012...789a or 012...789 123) into a cell. #1520

[3.3.0] - 2026-05-20

Added

  • Added 12 database functions: DCOUNT, DSUM, DAVERAGE, DMAX, DMIN, DGET, DPRODUCT, DCOUNTA, DSTDEV, DSTDEVP, DVAR, DVARP. #1652
  • Added new functions: PERCENTILE, PERCENTILE.INC, PERCENTILE.EXC, QUARTILE, QUARTILE.INC, QUARTILE.EXC. #1650
  • Added maxPendingLazyTransformations configuration option to control memory usage by limiting accumulated transformations before cleanup. #1629
  • Added a new function: TEXTJOIN. #1640
  • Added a new function: SEQUENCE. #1645

Fixed

  • Fixed a memory leak in LazilyTransformingAstService where the transformations array grew unboundedly, causing increasing memory usage over time. #1629
  • Fixed a memory leak in UndoRedo where oldData entries for evicted undo stack entries were never cleaned up, causing increasing memory usage over time. #1629
  • Fixed the IRR function returning #NUM! error when the initial investment significantly exceeds the sum of returns. #1628
  • Fixed the ADDRESS function ignoring defaultValue when arguments are syntactically empty (e.g., =ADDRESS(2,3,,FALSE())). #1632

[3.2.0] - 2026-02-19

Added

  • Added a new function: IRR. #1591
  • Added a new function: N. #1585
  • Added a new function: VALUE. #1592

Fixed

  • Fixed Error Map maximum size exceeded error when loading big spreadsheets. #1602

[3.1.1] - 2025-12-18

Fixed

  • Fixed an issue where cells were not recalculated after adding, removing and renaming sheets. #1116
  • Fixed an issue where overwriting a non-computed cell caused the Value of the formula cell is not computed error. #1194

[3.1.0] - 2025-10-14

Changed

  • Renamed the arraySizeMethod parameter in the FunctionMetadata interface to sizeOfResultArrayMethod. The arraySizeMethod is deprecated and will be removed in one of the next major releases. #1401
  • Renamed the arrayFunction parameter in the FunctionMetadata interface to enableArrayArithmeticForArguments. The arrayFunction is deprecated and will be removed in one of the next major releases. #1401

Fixed

  • Fixed an issue where the OFFSET function was ignoring the sheet reference in the provided address. #1477

[3.0.1] - 2025-08-11

Fixed

  • Fixed Edge does not exist error when a named expression is used twice in the same formula. #1102
  • Fixed typos in the built-in functions guide. #1517
  • Fixed an issue where named expressions added on engine initialization were not updated on changes. #1501

[3.0.0] - 2025-01-14

Added

  • Added a new function: XLOOKUP. #1458

Changed

  • Breaking change: Changed ES module build to use mjs files and exports property in package.json to make importing language files possible in Node environment. #1344
  • Breaking change: Changed the default value of the precisionRounding configuration option to 10. #1300
  • Make methods simpleCellAddressToString and simpleCellRangeToString more logical and easier to use. #1151

Removed

  • Breaking change: Removed the binarySearchThreshold configuration option. #1439

[2.7.1] - 2024-07-18

Fixed

  • Fixed an issue where adding or removing columns with DenseStrategy for address mapping resulted in the Cannot read properties of undefined (reading 'splice') error. #1406

[2.7.0] - 2024-04-10

Added

  • Added method getNamedExpressionsFromFormula to extract named expressions from formulas. #1365
  • Added context config option for passing data to custom functions. #1396

[2.6.2] - 2024-02-15

Changed

  • Removed unorm dependency. #1370

[2.6.1] - 2023-12-27

Fixed

  • Fixed an issue where operating on ranges of incompatible sizes resulted in a runtime exception. #1267
  • Fixed an issue where the simpleCellAddressFromString() method was crashing when called with a non-ASCII character in an unquoted sheet name. #1312
  • Fixed an issue where adding a row to a very large spreadsheet resulted in the Maximum call stack size exceeded error. #1332
  • Fixed an issue where using a column-range reference to an empty sheet as a function argument resulted in the Incorrect array size error. #1147
  • Fixed an issue where the SUBSTITUTE function wasn't working correctly with regex special characters. #1289
  • Fixed a typo in the JSDoc comment of the HyperFormula class. #1323

[2.6.0] - 2023-09-19

Added

  • Exported the EmptyValue symbol as a public API. This allows custom functions to handle empty cell values. #1232

Changed

  • Improved the efficiency of the default date/time parsing methods. #876
  • Improved the efficiency of the operations on the dependency graph. #876

Fixed

  • Fixed a bug where neighboring exported changes of an array formula were missing. #1291
  • Fixed a typo in the source code of the MatrixPlugin. #1306

[2.5.0] - 2023-05-29

Added

  • Added a new function: ADDRESS. #1221
  • Added a new function: HYPERLINK. #1215
  • Added a new function: IFS. #1157

Changed

  • Optimized the updateConfig() method to rebuild HyperFormula only when the new configuration is different from the old one. #1251

Fixed

  • Fixed the SEARCH function to be case-insensitive regardless of HyperFormula's configuration. #1225

[2.4.0] - 2023-04-24

Added

  • Exported the CellError class as a public API. #1232
  • Exported the SimpleRangeValue class as a public API. #1178

Fixed

  • Fixed an EmptyCellVertex data integrity issue between the AddressMapping and DependencyGraph objects. #1188
  • Fixed a build issue with M1- and M2-chip MacBooks. #1166
  • Fixed an issue where the order of items returned by removeColumns() depended on the address mapping policy. #1205

[2.3.1] - 2023-03-03

Fixed

  • Fixed an issue where expression names were not allowed to start with a cell reference. #1058
  • Fixed an issue where expression names were allowed to start with R1C1-notation references. For better compatibility with other spreadsheet software, strings such as R4C5, RC1000, R1C or RC can't be used in expression names anymore. #1058
  • Fixed an issue where using reversed ranges with absolute addressing could cause the Incorrect array size error. #1106
  • Fixed an issue where removing a sheet (removeSheet()) without clearing it (clearSheet()) could cause an error. #1121

[2.3.0] - 2022-12-22

Added

  • Exported the ArraySize class as a public API. #843
  • Renamed an internal interface from ArgumentTypes to FunctionArgumentType, and exported it as a public API. #1108
  • Exported ImplementedFunctions and FunctionMetadata as public APIs. #1108

[2.2.0] - 2022-11-17

Added

  • Added an American English (enUS) language pack. It's a convenience alias: it contains the same translations as the existing British English (enGB) language pack. #1025

Fixed

  • Fixed functions VLOOKUP and HLOOKUP to handle duplicates in the way specified by the OpenDocument standard. #1072
  • Fixed the MATCH function to handle descending ranges in the way specified by the OpenDocument standard. #1063

[2.1.0] - 2022-09-08

Added

  • Added two new functions: MAXIFS and MINIFS. #1049

Changed

  • Changed the rounding strategy of the default time-parsing function to be independent of the timeFormats configuration option. Now, time values are always rounded to the nearest millisecond (0.001 s). #953

Fixed

  • Fixed a rounding issue that caused the TEXT function to incorrectly convert dates and times to strings. #1043
  • Fixed an issue where functions SUMIF, SUMIFS, COUNTIF, COUNTIFS, and AVERAGEIF incorrectly handled complex numeric values. #951

Removed

  • Removed all polyfills from the CommonJS build and the ES modules build. In the UMD build, kept only the polyfills required by the supported browsers. #1011

[2.0.1] - 2022-06-14

Changed

  • Changed the following npm scripts (used internally): docs, docs:api, docs:dev, docs:build, coverage, typings:check. #977

Fixed

  • Fixed an issue where it was impossible to add a custom function with no parameters. #968

[2.0.0] - 2022-04-14

For more information on this release, see:

Added

  • Added support for reversed ranges. #834
  • Added a new configuration option, ignoreWhiteSpace, which allows for parsing formulas that contain whitespace characters of any kind. #898

Changed

  • Breaking change: Removed the gpu.js dependency and its use, to speed up the installation time. #812
  • Breaking change: Removed the deprecated gpujs and gpuMode configuration options. #812

Fixed

  • Fixed an issue where the RATE function didn't converge for some inputs. #905

[1.3.1] - 2022-01-11

Fixed

  • Fixed an issue where warnings about deprecated configuration options were getting duplicated. #882

[1.3.0] - 2021-10-20

Added

  • Added a new static property: defaultConfig. #822
  • The getFillRangeData() method can now use one sheet for its source and another sheet for its target. #836

Fixed

  • Fixed the handling of Unicode characters and non-letter characters in the PROPER function. #811
  • Fixed unnecessary warnings caused by deprecated configuration options. #830
  • Fixed the SUMPRODUCT function. #810

[1.2.0] - 2021-09-23

Changed

  • Removed gpu.js from optional dependencies and marked config options gpujs and gpuMode as deprecated.

[1.1.0] - 2021-08-12

Added

  • Added support for the array arithmetic mode in the calculateFormula() method. #782
  • Added a new CellType returned by getCellType: CellType.ARRAYFORMULA. It's assigned to the top-left corner of an array, and is recognized by the isCellPartOfArray() and doesCellHaveFormula() methods. #781

Changed

  • Deprecated the binarySearchThreshold configuration option, as every search of sorted data always uses binary search. #791

Fixed

  • Fixed an issue with searching sorted data. #787
  • Fixed the destroy method to properly destroy HyperFormula instances. #788

[1.0.0] - 2021-07-15

Added

  • Added support for array arithmetic. #628
  • Added performance improvements for array handling. #629
  • Added ARRAYFORMULA function. #630
  • Added FILTER function. #668
  • Added ARRAY_CONSTRAIN function. #661
  • Added casting to scalars from non-range arrays. #663
  • Added support for range interpolation. #665
  • Added parsing of arrays in formulas (together with respective config options for separators). #671
  • Added support for vectorization of scalar functions. #673
  • Added support for time in JS Date() objects on the input. #648
  • Added validation of API argument types for simple types. #654
  • Added named expression handling to engine factories. #680
  • Added getAllNamedExpressionsSerialized method. #680
  • Added parsing of arrays in formulas (together with respective config options for separators). #671
  • Added utility function for filling ranges with source from other range. #678
  • Added pretty print for detailedCellError. #712
  • Added simpleCellRangeFromString and simpleCellRangeToString helpers. #720
  • Added CellError to exports. #736
  • Added mapping policies to the exports: AlwaysDense, AlwaysSparse, DenseSparseChooseBasedOnThreshold. #747
  • Added #SPILL! error type. #708
  • Added large tests for CRUD interactions. #755
  • Added support for array arithmetic in plugins. #766
  • Added a flag to getFillRangeData to support different types of offsetting. #767

Changed

  • Breaking change: Changed API of many sheet-related methods to take sheetId instead of sheetName as an argument. #645
  • Breaking change: Removed support for matrix formulas ({=FORMULA}) notation. Engine now supports formulas returning array of values (instead of only scalars). #652
  • Breaking change: Removed numeric matrix detection along with matrixDetection and matrixDetectionThreshold config options. #669
  • Breaking change: Changed API of the following methods to take SimpleCellRange type argument: copy, cut, getCellDependents, getCellPrecedents, getFillRangeData, getRangeFormulas, getRangeSerialized, getRangeValues, isItPossibleToMoveCells, isItPossibleToSetCellContents, moveCells. #687
  • Breaking change: Changed the AGPLv3 license to GPLv3.
  • Breaking change: Removed the free non-commercial license.
  • Breaking change: Changed behaviour of setCellContents so that it is possible to override space occupied by spilled array. #708
  • Breaking change: Changed behaviour of addRows/removeRows so that it is possible to add/remove rows across spilled array without changing array size. #708
  • Breaking change: Changed behaviour of addColumns/removeColumns so that it is possible to add/remove columns across spilled array without changing array size. #732
  • Breaking change: Changed config options #747:
before after
matrixColumnSeparator arrayColumnSeparator
matrixRowSeparator arrayRowSeparator
  • Breaking change: Changed CellType.MATRIX to CellType.ARRAY #747
  • Breaking change: Changed API methods #747:
before after
matrixMapping arrrayMapping
isCellPartOfMatrix isCellPartOfArray
  • Breaking change: Changed Exceptions #747:
before after
SourceLocationHasMatrixError SourceLocationHasArrayError
TargetLocationHasMatrixError TargetLocationHasArrayError
  • Changed SWITCH function, so it takes array as its first argument.
  • Changed TRANSPOSE function, so it works with data of any type. #708
  • Changed the way how we include gpu.js making it even more optional #753

Fixed

  • Fixed an issue with arrays and cruds. #651
  • Fixed handling of arrays for ROWS/COLUMNS functions. #677
  • Fixed an issue with nested named expressions. #679
  • Fixed an issue with matrixDetection + number parsing. #686
  • Fixed an issue with NOW and TODAY functions. #709
  • Fixed an issue with MIN/MAX function caches. #711
  • Fixed an issue with caching and order of evaluation. #735

[0.6.2] - 2021-05-26

Changed

  • Modified a private field in one of the classes to ensure broader compatibility with older TypeScript versions. #681

[0.6.1] - 2021-05-24

Changed

  • Remove redundant 'assert' dependency from the code. #672

Fixed

  • Fixed library support for IE11. The unorm package is added to the dependencies. #675

[0.6.0] - 2021-04-27

Added

  • Added two new fired events, for suspending and resuming execution. #637
  • Added listing in scopes to listNamedExpressions method. #638

Changed

  • Breaking change: Moved GPU.js from dependencies to devDependencies and optionalDependencies. #642

Fixed

  • Fixed issues with scoped named expression. #646 #641
  • Fixed an issue with losing formating info about DateTime numbers. #626

[0.5.0] - 2021-04-15

Added

  • Added support for row and column reordering. #343
  • Added type inferrence for subtypes for number. #313
  • Added parsing of number literals containing '%' or currency symbol (default '$'). #590
  • Added ability to fallback to plain CPU implementation for functions that uses GPU.js #355

Changed

  • Breaking change: A change to the type of value returned via serialization methods. #617
  • An input value should be preserved through serialization more precisely. #617
  • GPU.js constructor needs to be provided directly to engine configuration. #355
  • A deprecated config option vlookupThreshold has been removed. #620

Fixed

  • Fixed minor issue. #631
  • Fixed a bug with serialization of some addresses after CRUDs. #587
  • Fixed a bug with MEDIAN function implementation. #601
  • Fixed a bug with copy-paste operation that could cause out of scope references #591
  • Fixed a bug with date parsing. #614
  • Fixed a bug where accent/case sensitivity was ignored for LOOKUPs. #621
  • Fixed a bug with handling of no time format/no date format scenarios. #616

[0.4.0] - 2020-12-17

Added

  • Added 50 mathematical functions: ROMAN, ARABIC, FACT, FACTDOUBLE, COMBIN, COMBINA, GCD, LCM, MROUND, MULTINOMIAL, QUOTIENT, RANDBETWEEN, SERIESSUM, SIGN, SQRTPI, SUMX2MY2, SUMX2PY2, SUMXMY2, CEILING.MATH, FLOOR.MATH, FLOOR, CEILING.PRECISE, FLOOR.PRECISE, ISO.CEILING, COMPLEX, IMABS, IMAGINARY, IMARGUMENT, IMCONJUGATE, IMCOS, IMCOSH, IMCOT, IMCSC, IMCSCH, IMDIV, IMEXP, IMLN, IMLOG10, IMLOG2, IMPOWER, IMPRODUCT, IMREAL, IMSEC, IMSECH, IMSIN, IMSINH, IMSQRT, IMSUB, IMSUM, IMTAN. #537 #582 #281 #581
  • Added 106 statistical functions: EXPON.DIST, EXPONDIST, FISHER, FISHERINV, GAMMA, GAMMA.DIST, GAMMADIST, GAMMALN, GAMMALN.PRECISE, GAMMA.INV, GAMMAINV, GAUSS, BETA.DIST, BETADIST, BETA.INV, BETAINV, BINOM.DIST, BINOMDIST, BINOM.INV, BESSELI, BESSELJ, BESSELK, BESSELY, CHISQ.DIST, CHISQ.DIST.RT, CHISQ.INV, CHISQ.INV.RT, CHIDIST, CHIINV, F.DIST, F.DIST.RT, F.INV, F.INV.RT, FDIST, FINV, WEIBULL, WEIBULL.DIST, HYPGEOMDIST, HYPGEOM.DIST, T.DIST, T.DIST.2T, T.DIST.RT, T.INV, T.INV.2T, TDIST, TINV, LOGNORM.DIST, LOGNORMDIST, LOGNORM.INV, LOGINV, NORM.DIST, NORMDIST, NORM.S.DIST, NORMSDIST, NORM.INV, NORMINV, NORM.S.INV, NORMSINV, PHI, NEGBINOM.DIST, NEGBINOMDIST, POISSON, POISSON.DIST, LARGE, SMALL, AVEDEV, CONFIDENCE, CONFIDENCE.NORM, CONFIDENCE.T, DEVSQ, GEOMEAN, HARMEAN, CRITBINOM, COVAR, COVARIANCE.P, COVARIANCE.S, PEARSON, RSQ, STANDARDIZE, Z.TEST, ZTEST, F.TEST, FTEST, STEYX, SLOPE, CHITEST, CHISQ.TEST, T.TEST, TTEST, SKEW.P, SKEW, WEIBULLDIST, VARS, TINV2T, TDISTRT, TDIST2T, STDEVS, FINVRT, FDISTRT, CHIDISTRT, CHIINVRT, COVARIANCEP, COVARIANCES, LOGNORMINV, POISSONDIST, SKEWP. #152 #154 #160
  • Added function aliases mechanism. #569
  • Added support for scientific notation. #579
  • Added support for complex numbers. #281

Changed

  • A breaking change: CEILING function implementation to be consistent with existing implementations. #582

Fixed

  • Fixed a problem with dependencies not collected for specific functions. #550 #549
  • Fixed a minor problem with dependencies under nested parenthesis. #549 #558
  • Fixed a problem with HLOOKUP/VLOOKUP getting stuck in binary search. #559 #562
  • Fixed a problem with the logic of dependency resolving. #561 #563
  • Fixed a minor bug with ATAN2 function. #581

[0.3.0] - 2020-10-22

Added

  • Added 9 text functions EXACT, LOWER, UPPER, MID, T, SUBSTITUTE, REPLACE, UNICODE, UNICHAR. #159
  • Added 5 datetime functions: INTERVAL, NETWORKDAYS, NETWORKDAYS.INTL, WORKDAY, WORKDAY.INTL. #153
  • Added 3 information functions HLOOKUP, ROW, COLUMN. #520
  • Added 5 financial functions FVSCHEDULE, NPV, MIRR, PDURATION, XNPV. #542
  • Added 12 statistical functions VAR.P, VAR.S, VARA, VARPA, STDEV.P, STDEV.S, STDEVA, STDEVPA, VARP, VAR, STDEVP, STDEV. #536
  • Added 2 mathematical functions SUBTOTAL, PRODUCT. #536
  • Added 15 operator functions HF.ADD, HF.CONCAT, HF.DIVIDE, HF.EQ, HF.GT, HF.GTE, HF.LT, HF.LTE, HF.MINUS, HF.MULTIPLY, HF.NE, HF.POW, HF.UMINUS, HF.UNARY_PERCENT, HF.UPLUS. #543

Fixed

  • Fixed multiple issues with VLOOKUP function. #526 #528
  • Fixed MATCH and INDEX functions compatiblity. #520
  • Fixed issue with config update that does not preserve named expressions. #527
  • Fixed minor issue with arithmetic operations error messages. #532

[0.2.0] - 2020-09-22

Added

  • Added 9 text functions LEN, TRIM, PROPER, CLEAN, REPT, RIGHT, LEFT, SEARCH, FIND. #221
  • Added helper methods for keeping track of cell/range dependencies: getCellPrecedents and getCellDependents. #441
  • Added 22 financial functions FV, PMT, PPMT, IPMT, CUMIPMT, CUMPRINC, DB, DDB, DOLLARDE, DOLLARFR, EFFECT, ISPMT, NOMINAL, NPER, RATE, PV, RRI, SLN, SYD, TBILLEQ, TBILLPRICE, TBILLYIELD. #494
  • Added FORMULATEXT function. #422
  • Added 8 information functions ISERR, ISNA, ISREF, NA, SHEET, SHEETS, ISBINARY, ISFORMULA. #481
  • Added 15 date functions: WEEKDAY, DATEVALUE, HOUR, MINUTE, SECOND, TIME, TIMEVALUE, NOW, TODAY, EDATE, WEEKNUM, ISOWEEKNUM, DATEDIF, DAYS360, YEARFRAC. #483
  • Added 13 trigonometry functions: SEC, CSC, SINH, COSH, TANH, COTH, SECH, CSCH, ACOT, ASINH, ACOSH, ATANH, ACOTH. #485
  • Added 6 engineering functions: OCT2BIN, OCT2DEC, OCT2HEX, HEX2BIN, HEX2OCT, HEX2DEC. #497
  • Added a configuration option to evaluate reference to an empty cells as a zero. #476
  • Added new error type: missing licence. #306
  • Added detailed error messages for error values. #506
  • Added ability to handle more characters in quoted sheet names. #509
  • Added support for escaping apostrophe character in quoted sheet names. #64

Changed

  • Operation moveCells creating cyclic dependencies does not cause losing original formula. #479
  • Simplified adding new function modules, reworked (simplified) implementations of existing modules. #480

Fixed

  • Fixed hardcoding of languages in i18n tests. #471
  • Fixed many compilation warnings based on LGTM analysis. #473
  • Fixed moveCells behaviour when moving part of a range. #479
  • Fixed moveColumns/moveRows inconsistent behaviour. #479
  • Fixed undo of moveColumns/moveRows operations. #479
  • Fixed name-collision issue in translations. #486
  • Fixed bug in concatenation + nullValue. #495
  • Fixed bug when undoing irreversible operation. #502
  • Fixed minor issue with CHAR function logic. #510
  • Fixed simpleCellAddressToString behaviour when converting quoted sheet names. #514
  • Fixed issues with numeric aggregation functions. #515

[0.1.3] - 2020-07-21

Fixed

  • Fixed a bug in coercion of empty string to boolean value. #453

[0.1.2] - 2020-07-13

Fixed

  • Fixed a bug in topological ordering module. #442

[0.1.1] - 2020-07-01

Fixed

  • Fixed a typo in a config option from useRegularExpresssions to useRegularExpressions. #437

[0.1.0] - 2020-06-25

Added

  • Core functionality of the engine;
  • Support for data types: String, Error, Number, Date, Time, DateTime, Duration, Distinct Logical;
  • Support for logical operators: =, <>, >, <, >=, <=;
  • Support for arithmetic operators: +, -, *, /, %;
  • Support for text operator: &;
  • CRUD operations:
    • modifying the value of a single cell,
    • adding/deleting row/column,
    • reading the value or formula from the selected cell,
    • moving a cell or a block of cells,
    • deleting a subset of rows or columns,
    • recalculating and refreshing of a worksheet,
    • batching CRUD operations,
    • support for wildcards and regex inside criterion functions like SUMIF, COUNTIF,
    • named expressions support,
    • support for cut, copy, paste,
    • undo/redo support;
  • Following functions: ABS(), ACOS(), AND(), ASIN(), ATAN(), ATAN2(), AVERAGE(), AVERAGEA(), AVERAGEIF(), BASE(), BIN2DEC(), BIN2HEX()BIN2OCT(), BITAND(), BITLSHIFT(), BITOR(), BITRSHIFT(), BITXOR(), CEILING(), CHAR(), CHOOSE(), CODE(), COLUMNS(), CONCATENATE(), CORREL(), COS(), COT(), COUNT(), COUNTA(), COUNTBLANK(), COUNTIF(), COUNTIFS(), COUNTUNIQUE(), DATE(), DAY(), DAYS(), DEC2BIN(), DEC2HEX(), DEC2OCT(), DECIMAL(), DEGREES(), DELTA(), E(), EOMONTH(), ERF(), ERFC(), EVEN(), EXP(), FALSE(), IF(), IFERROR(), IFNA(), INDEX(), INT(), ISBLANK(), ISERROR(), ISEVEN(), ISLOGICAL(), ISNONTEXT(), ISNUMBER(), ISODD(), ISTEXT(), LN(), LOG(), LOG10(), MATCH(), MAX(), MAXA(), MAXPOOL(), MEDIAN(), MEDIANPOOL(), MIN(), MINA(), MMULT(), MOD(), MONTH(), NOT(), ODD(), OFFSET(), OR(), PI(), POWER(), RADIANS() , RAND(), ROUND(), ROUNDDOWN(), ROUNDUP(), ROWS(), SIN(), SPLIT(), SQRT(), SUM(), SUMIF(), SUMIFS(), SUMPRODUCT(), SUMSQ(), SWITCH(), TAN(), TEXT(), TRANSPOSE(), TRUE(), TRUNC(), VLOOKUP(), XOR(), YEAR();
  • Support for volatile functions;
  • Cultures supports - can be configured according to the application need;
  • Custom functions support;
  • Set http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2-part2.html as a standard to follow;
  • Error handling:
    • Division by zero: #DIV/0!,
    • Unknown function name: #NAME?,
    • Wrong type of argument in a function or wrong type of operator: #VALUE!,
    • Invalid numeric values: #NUM!,
    • No value available: #N/A,
    • Cyclic dependency: #CYCLE!,
    • Wrong address reference: #REF;
  • Built-in function translation support for 16 languages: English, Czech, Danish, Dutch, Finnish, French, German, Hungarian, Italian, Norwegian, Polish, Portuguese, Russian, Spanish, Swedish, Turkish.