GnuCash 3.0 Released
The GnuCash development team proudly announces GnuCash 3.0,
the first release in our new 3.x stable series
New Features for Users:
- The headline item for this release is that GnuCash now uses the Gtk+-3.0 Toolkit and the WebKit2Gtk API. This change was forced on us by some major Linux distributions dropping support for the WebKit1 API. Unfortunately the Webkit project doesn't support Microsoft Windows so that platform will continue to use the WebKit1 API, though with Gtk3. We've selected Gtk+-3.14.0 as the minimum version because it fully supports CSS theming.
- New editors to remove outdated or incorrect match data from the import maps, a new user interfacs for managing files associated with transactions, an improved facility for removing old prices from the price database, and a way to remove deleted files from the history list in the file menu.
- New Reports: A Reconciliation Report based on the Transaction Report,a Income GST Report, and a Cashflow Barchart report.
- A new CSV importer largely rewritten in C++, adding new features including the ability to re-import CSV files exported from GnuCash, along with a separate CSV price importer.
- A new preference panel for the Alphavantage API key so that Finance::Quote users need not edit /etc/gnucash/environment. We've removed all references to the various Yahoo! quote sources and made Alphavantage the default.
- Data file directories are now located appropriately to the operating system's conventions by default:
It's still possible to overried with the environment variable GNC_DATA_HOME, which replaces GNC_DOT_DIR in earlier versions of GnuCash.
- Windows: CSIDL_APPDATA/Gnucash
- MacOS: $HOME/Application Support/Gnucash
- Linux: $XDG_CONFIG_HOME/gnucash (or the default $HOME/.config/gnucash)
- Accounts in the Bayes import map are now linked by GUID instead of names so that the matcher won't have to be retrained if you rename an account. The Bayesian import maps are also stored in a flatter structure to allow faster access, especially in SQL. These changes mean that if you have Bayesian mapping data, once converted your database will be loadable only by GnuCash 2.6.20 and later.
- MySQL and SQLite3 date storage has changed a bit. Once converted, MySQL and SQLite3 database will be loadable only by GnuCash 2.6.19 and later.
- Numerics are rewritten to allow for more significant digits. The old 6-digit-maximum fraction is now 9-digits, and prices may have up to 18 digit precision.
- Chart Reports appearance is improved, including more modern chart colours as suggested by http://clrs.cc/.
- Transaction Report improvements, including regular expression filtering and many more options and features including a "Subtotal Summary Grid" The subtotal summary-grid will tabulate subtotals - prime-sortkey vertically, sec-sortkey horizontally. For example, with prime-sortkey = accounts, sec-sortkey = date, sec-subtotal = monthly will produce a monthly time series table.
- The About dialog box layout is improved and now includes the detected Finance::Quote version.
- GnuCash will always build the locale-specific tax modules. This was optional when building with autotools and never enabled when building with cmake. Note that the only supported tax locales are en_US and de_DE.
On Macs the Reconcile Window's menu moved to the menubar.
- GnuCash no longer supports Guile-1.8 and now does support Guile-2.2
New Features for Developers:
- Several parts of the engine and the SQL backend are rewritten in C++, an effort that will continue in the next development cycle. KVP is now private to libgncmod-engine and accessible outside via qof_instance_set and qof_instance_get. KVP and GUID are reimplemnted in C++ using boost::variant and boost::UUID respectively.
- C++ unit tests require GoogleTest. While it's possible to use prebuilt libgtest and libgmock on some distros, building static libraries for GnuCash is preferred. It may be necessary to provide the paths to the googletest and googlemock source with CMake parameters GTEST_ROOT and GMOCK_ROOT respectively.
- The date implementation is migrated to boost::date-time, replacing a Glib GDateTime implementation. This makes the earliest date recordable 1 January 1400CE instead of 1 January 1CE. We doubt any users will be affected.
We've reorganized the code into a core library directory, libgnucash, and application-specific directory, gnucash. The python bindings are now in a top-level directory, bindings; code pinched from other projects is in borrowed, the account templates, check templates, and pixmaps are consolidated in data, and common holds the cmake modules and test framework code. The bin directory's contents have moved to the top level gnucash directory and bin is removed. There are now directories for gschema, gtkbuilder and ui files directly in gnucash. In principle all files of each type should go into these global directories. The only exception is if such a file belongs to an optional module. In that case the file remains located inside that module's directory. Currently we have ui, glade and gschema file exceptions in aqb and ofx importers.
The build system is changed from Autotools to CMake. All options except python bindings and the python console demo are enabled by default. Highly parallel builds with Ninja are possible and recommended, except on Microsoft Windows.
- The Windows build system is rewritten to use MSYS2, Mingw-w64, Powershell, and jhbuild.
- Add a "pot" target to the build system so that translators can easily generate a new gnucash.pot from a git repository.
- Detect presence or absence of libxml2 and makeinfo during configuration; abort if the first is missing and don't build the (mostly obsolete) texinfo documentation if the latter is. Document both in README.dependencies.
- Replaced Timespec with time64 in the Scheme and Python bindings, introducing many new C time64 functions to accomodate the replacement. Timespec will eventually be removed from the C API as well.
- Some cruft removal in libgnucash/scm plus moving some code to its only use location. "main.scm" is renamed to "utilities.scm".
- The "printf" family of Scheme custom functions is replaced with the built-in "format" facility.
- Change a generally unnecessary warning about being unable to open a module (usually because the file is still being created) to a debug message. It appears mostly during highly parallel builds and was distracting.
- Appstream configuration is updated to the latest spec.
- Added two functions to the Scheme option API:
For example, unregister existing option from section "Accounts" name "Accounts", and recreate with different parameters e.g. limited account types.
- gnc:option-make-internal! will hide an existing option. e.g. a derived report can set the value for a Display/* option and hide it from the user.
- gnc:unregister-option will unregister option. This is primarily useful for derived options e.g. another report copies from transaction.scm and removes some options and recreates them with different parameters.
- Drop intltool in favour or using modern gettext. By default we require gettext 0.19.6 as this is needed to generate a translated version of gnucash.desktop and gnucash.appdata.xml. For platforms where this isn't available, setting ALLOW_OLD_GETTEXT=ON will allow building but some strings will not be extracted to gnucash.pot
- Pass GTEST_ROOT and GMOCK_ROOT through to distcheck. So that they don't have to be exported in the environment if they're needed.
- The Python Bindings and Console are now for Python 3, and enahanced to expose more GnuCash API. Compilation of GLib Schemas during build and installation can be disabled by setting -DCOMPILE_GSCHEMAS=OFF. This is intended *only* for distribution packaging scripts that run glib-compile-schemas themselves. Otherwise note that if you install to a DESTDIR you'll need to re-run glib-compile-scemas after moving the contents of $DESTDIR$PREFIX/share/glib-2.0/schemas to $PREFIX.
- The CuteCash front end has been removed. The code we need from GOffice has been brought into the GnuCash code base so GOffice is no longer a dependency. The register drawing code has been upgraded to draw directly on a cairo surface, removing the dependency on libgnomecanvas.
- GnuCash 3.0 adds the following dependencies: Boost, ICU, Googletest.
There's no such thing as bug-free software and if we held the release until all the bugs were fixed we'd never release anything. For a complete list of bugs search the GnuCash Bugzilla
Concurrent with the release of Gnucash 3.0 we're pleased to also release a new version 3.0 of the companion Help and Tutorial and Concepts Guide.
Getting GnuCash for Windows and MacOS X
GnuCash is provided for both Microsoft Windows XP® and later and MacOS X 10.9 (Mavericks)® and later in pre-built, all-in-one packages. An installer is provided for Microsoft Windows® while the MacOS X® package is a disk image containing a drag-and-drop application bundle.
Getting GnuCash as source code
If you want to compile GnuCash 3.0 for yourself, the source code can be downloaded from:
- Sourceforge: bzip2, all files.
- Github: bzip WARNING Do not try to use the github-generated files labelled "Source Code". They have not been processed with swig and will not build.
- You can also checkout the sources directly from the git repository as described here.
Getting the documentation
The documentation is available at Documentation page of the GnuCash website. The 3.0 documentation can be found under "GnuCash v3 (current stable release)" in multiple languages both for reading online and for download in pdf, epub, and mobi formats.
If you want to compile the GnuCash Documentation 3.0 for yourself, the source code can be downloaded from:
Detailed instructions for building GnuCash and the Documentation are in the wiki.
About the Program
GnuCash is a free, open source accounting program released under the GNU General Public License (GPL) and available for GNU/Linux, *BSD, Solaris,
Mac OSX and Microsoft Windows. Programming on GnuCash began in 1997, and its first stable release was in 1998.
© 2018 Herbert Thoma, herbie AT hthoma.de,
last changed 07. Sep. 2018