| Corecalc and Funcalc |
| Spreadsheet Technology in C# |
|
|
Corecalc and Funcalc
Corecalc is an implementation of core spreadsheet functionality in C#,
intended as a platform for experiments with technology and novel
functionality. Corecalc is a research prototype, not a usable
replacement for Microsoft Excel, Gnumeric or OpenOffice Calc.
Funcalc is an extension of Corecalc in which users can
define their own functions via sheet-defined functions, without
resorting to external languages such as VBA. These are compiled to
.NET bytecode at run-time, thus offering high performance while
preserving the usual mode of interaction in which all edits take
effect immediately. Funcalc 0.11.12 is a research prototype.
The goal of this work is to improve the support for end-user
development, which to a large extent takes place within
spreadsheets. However, current spreadsheet programs provide little
support for abstraction and reuse of computations, unless one uses
external languages such as VBA. We want to demonstrate that
abstraction and reuse can be supported within the standard
spreadsheet metaphor cells, formulas and extreme interactivity, yet
with excellent performance.
News
- January 2012: Funcalc 2011 version 0.11.12.0 (implementing
run-time code generation for sheet-defined functions) and an
accompanying technical report Spreadsheet technology are
now available.
- February 2010: A new version 0.7.1 of Corecalc (zip of a VS2008
solution) released. The value representation is updated relative to
the 2006 tech report for much better array performance.
Funcalc
- The technical report Spreadsheet Technology, describing
the Funcalc spreadsheet program with sheet-defined functions.
ITU-TR-2011-142, IT University of Copenhagen. In
PDF 1 page per sheet
or 2 pages per sheet (2-up).
- A dump of the Funcalc 0.11.12.0
source code as of 31 January 2012. Binaries and examples are in
SDFCalc/CoreCalc/bin/Release/. You will need NET 4.0
redistributable to run Funcalc.exe. It may also work with Mono 2.10
on Linux (but with Mono on MacOS there are undiagnosed problems).
The source is in better shape that ever before, but parts of the
implementation should be made more general and robust, and deserves
some restructuring for clarity.
Corecalc
- The report A Spreadsheet Core Implementation in C#
(ITU-TR-2006-91, 135 pages).
The report contains an introduction to
the spreadsheet computation model, a survey of spreadsheet literature
and implementations, a description of the Corecalc implementation and
design alternatives, a detailed presentation of one way to support
efficient recalculation, summaries of the work of Iversen's and of
Cortes and Hansen, and a list of all known spreadsheet-related patents
and patent applications.
- Corecalc code base version 0.7.1 (zip
of a VS2008 solution)
Student projects contributing to or using Corecalc and Funcalc
Most recent first. These projects contributed to the development of
Corecalc and Funcalc either indirectly by trying out new ideas or
pointing out weaknesses, or directly by contributing code. Thanks!
- Nader Salas: Collaborative spreadsheet with traceability. MSc
thesis, August 2011.
- Linas Patapavicius: Efficient linear algebra operations in
spreadsheets. MSc thesis, February 2011.
- Jens Hammelsvang Hamann: Parallelization of spreadsheet computations.
MSc thesis, May 2010.
- Tim Garbos and Kasper Videbęk: Spreadsheet optimization on GPUs.
BSc thesis, May 2010.
- Anders Hartzen: User-defined functions in Excel via ordinary
spreadsheet concepts. BSc thesis, May 2010.
- Vincens Riber Mink and Daniel Schiermer: Collaborative
spreadsheet. TeamCalc, an implemented prototype.
BSc thesis, May 2010.
- Morten Poulsen and Poul Serek's
Master's thesis (PDF): Optimized recalculation for
spreadsheets with the use of support graph
- Daniel Cortes and Morten Hansen's
Master's thesis (PDF): User-defined functions in spreadsheets
- Thomas Iversen's Master's thesis
(PDF): Runtime code generation to speed up spreadsheet
computations. Thomas has another website with thesis-related files.
Authors and credits
The implementation is Copyright 2006-2012 Peter Sestoft and others,
and is released under a MIT-style open
license.
Peter Sestoft;
last update 2012-02-02