ixion 0.16.1

* fixed a build issue on 32-bit linux platforms, caused by slicing of integer
  string ID values.

* worked around floating point rounding errors which prevented two
  theoretically-equal numeric values from being evaluated as equal in test
  code.

ixion 0.16.0

* documentation

  * added quickstart sections for using model_context and document classes.

  * added code example for cell_access class.

* C++ API

  * added new function to allow printing of single formula tokens.

  * added method for setting cached results on formula cells in
    model_context.

  * changed the model_context design to ensure that all sheets are of the same
    size.

  * added an accessor method to formula_model_access interface (and implicitly
    in model_context) that directly returns a string value from cell.

  * added cell_access class for querying of cell states without knowing its
    type ahead of time.

  * added document class which provides a layer on top of model_context, to
    abstract away the handling of formula calculations.

  * deprecated model_context::erase_cell() in favor of empty_cell().

* formula parser / interpreter

  * added support for 3D references - references that contain multiple sheets.

  * added support for the exponent (^) and concatenation (&) operators.

  * fixed incorrect handling of range references containing whole columns such
    as A:A.

  * added support for unordered range references - range references whose
    start row or column is greater than their end position counterparts, such
    as A3:A1.

  * fixed a bug that prevented nested formula functions from working properly.

  * implemented Calc A1 style reference resolver.

* misc

  * formula results now directly store the string values when the results are
    of string type.  They previously stored string ID values after interning
    the original strings.

  * removed build-time dependency on spdlog.

ixion 0.15.0

* fill_down_cells() method has been added to model_context, to fill duplicate
  values downward from an arbitrary cell position.  For now, it always
  duplicate the value of the source cell; cell value enumerations are not
  supported.  Also, filling down of formula cells is not yet supported.

* cell iterator has been aded to model_context, for efficient horizontal and
  vertical iterations of cell values in an arbitrary range within a sheet.

* improved the cmake-based build, with all test cases integrated.

* switched to spdlog for compile-time debug log outputs.

* improved performance by removing repeated fetching of each formula
  cell prior to interpretation.

* reworked topological sorting of formula cells to avoid having to
  unnecessarily build dependency relations twice; once during the
  dirty cell determination and twice prior to interpretation of
  formula cells.  The new code performs topological sorting during the
  dirty cell determination phase.

* reworked the cell reference tracker to use R-tree.  This allows more
  accurate tracking of references involving grouped formulas.

* fixed a resource leak with dynamic loading of compute engine modules.

ixion 0.14.1

* addressed a number of coverity issues.

* Fixed build issues on 32-bit platforms.

* fixed warnings on shadowed variables during build with -Wshadow
  compiler option.

ixion 0.14.0

* implemented MMULT built-in formula function which makes use of the
  grouped formula support.

* added support for grouped formulas.

* added experimental compute engine framework to potentially accelerate
  certain computations in the future.  It's not used yet.

* refactored formula cell storage to use ref-countered formula cell
  objects.

ixion 0.13.0

* add support for named expressions.

* add support for boolean cell value type.

* fix a bug in sheet data range computation function which incorrectly
  reported data range when the first column is entirely filled to the
  max row.

* add experimental support for cmake-based build.  Currently tested
  only on Windows.

ixion 0.12.2

* fix a parser bug that prevented valid R1C1 address from being
  parsed.

ixion 0.12.1

* add --enable-threads configure switch, to optionally enable/disable
  thread support.  Threads are enabled by default.

ixion 0.12.0

* remove boost::thread dependency from the public headers.

* refactor the multi-threaded calculation code to make it more robust.

* properly wait on formula calculation when fetching for a result
  cache, without which threaded calculations would sometimes generate
  wrong results.

ixion 0.11.1

* add get_columns() method to the model_context class to return an
  array of column_store_t.

* make it buildable with mdds-1.2.

ixion 0.11.0

* C++11 is a hard requirement.

* implement R1C1 formula name resolver.

* remove boost dependency from the public headers (except for
  boost::thread).

* fix incorrect life-cycle management of pooled string instances.

* make it buildable on OSX.

* other general code cleanups.

* python

  * correctly catch and translate general_error into python's, for
    Document.append_sheet() method.

  * make python module build configurable.

  * add ixion.column_label() to convert numeric column indices into
    column labels.  A1 and R1C1 are supported.

ixion 0.9.1

* include python bindings test in the tarball.

* fix various portability problems in python bindings.

* several minor build fixes.
