ANNOUNCE: Gnucash 2.4.0 released
plongstaff at rogers.com
Wed Dec 22 12:05:50 EST 2010
Announcement: GnuCash 2.4.0 Release 2010-12-21
GnuCash 2.4.0 released
The GnuCash development team proudly announces GnuCash 2.4.0, the latest
stable release of the GnuCash Free Accounting Software. With this new
release series, GnuCash can use an SQL database using SQLite3, MySQL or
PostgreSQL. It runs on GNU/Linux, *BSD, Solaris, Microsoft Windows and
WARNING: You should uninstall any earlier GnuCash version from your
system prior to installing 2.4.0.
Failing to do so may result in startup errors. In particular on Windows
this may cause "Parse error: entry point not found" errors.
Major changes in the 2.4.0 release include;
* In addition to the XML backend, Gnucash can now use a SQLite3,
MySQL or PostgreSQL database to store the data. This is a new
implementation using libdbi. It supports all features including
the business features. In order to build with this, add
--enable-dbi to the configure command. In addition to the
libdbi-dev package for your distribution, you will also need the
appropriate DBD (libdbi driver) package for sqlite3, mysql or
* As a replacement for the current GtkHTML HTML engine used to
display reports and graphs, Gnucash can use WebKit. WebKit is
the engine used by Google Chrome on Windows and Safari on Apple.
In order to build with this, add --with-html-engine=webkit to
the configure command. You will need an appropriate webkit-dev
package. On win32, you will need to download the
webkit-1.1.90-win32.zip file from the source repository and put
it into the downloads directory of your gnucash build area.
* Updated AqBanking on Win32.
Source code for GnuCash 2.4.0 can be downloaded from:
* Sourceforge: bzip2, gzip, all files.
* You can also checkout the sources directly from the subversion
repository with this command:
svn co http://svn.gnucash.org/repo/gnucash/tags/2.4.0 gnucash
To install GnuCash, you will need Gnome 2, guile, slib. In addition you
will need swig if compiling from subversion.
The Gnucash 2.4.0 Win32 setup executable can be downloaded from
Sourceforge as well.
Mac OSX binary
The Gnucash 2.4.0 MacOSX package can be downloaded from Sourceforge as
Changes between 2.3.17 and 2.4.0 include:
* User-visible changes
* Update copyright notice dates to include 2010
* Use proper decimal separator for monetary amounts
* If you have a parent account with a subaccount whose
commodity allows more decimal places in the amount field
than the parent account does things don't work right if
you open a register for the parent account and all
subaccounts. This situation can occur if you have a
broker account with subaccounts for the securities held
in that broker account. If you open a register for the
top account and all subaccounts, it is impossible to
enter a transaction to buy or sell a fractional share of
the security where there are more digits after the
decimal point than the parent account allows. This
change fixes this if the subaccount allows no more than
six digits after the decimal point.
* When creating a new style sheet, make sure the name for
it is non-empty.
* Implement (but currently deactivated) auto-completion in
the invoice ledger using all entries from the current
book. Eventually, this will enable drawing the
auto-completion from all entries in the previous
invoices (i.e. book-wide), but in order to give the user
a good enough feedback during typing we additionally
need a quick-fill object over those book-wide entries.
Currently, the user cannot see whether the current
description would result in an auto-completion from
another invoice, and that's not yet enough.
* Implement auto-completion in the invoice/bill entry
* Take a first shot at adding auto-completion in the
business ledger, but currently it doesn't do anything
* Updated translations or translation-related changes
* Updated POTFILES.in
* Mark erroneous translation as fuzzy because it doesn't
have the correct c-format.
* Reverse inadvertent mods to po/POTFILES.in in r19904
* Updated Greek translation provided by Nikos
* Updated Japanese translation, copied from the
* Add "discount" to all glossary files because some
languages use different translations in billing terms
and invoices. Additional the german translation is added
to glossary/de.po. This change does not break the string
freeze as it is not user visible.
* Update German translation. (This includes the 14 new
strings which are already there but not yet being used.)
* Merge German translation with latest pot template. This
is merged using msgmerge --no-location de.po gnucash.pot
-o de.new.po and we use "--no-location" to make the
updates actually readable. (Unfortunately this doesn't
prevent the strings from changing ordering anyway. Oh
* Remove superfluous whitespace at end of string.
Incidentally, this way the string already exists and no
broken translation results.
* When extracting the translation strings from the scheme
files, sort the scheme files to obtain a stable ordering
of the output.
* Bugs fixed
* Bug #637346: Adding python-bindings to doxygen
documentation Patch by Christoph Holtermann.
* Bug #637041: Revert r19861 as the patch from bug#635439
causes a crash. The patch can be re-applied after the
2.4.0 release is out, but for now I prefer to defer it
until after the release. To be precise, this patch
reverts all parts of bug#635439: r19861, r19860, r19854,
* Bug #629446: TRY is now called plain Turkish Lira.
* Bug #454109: Online banking: grey out online actions
when there is no online account Patch by Manfred
Usselmann: Online actions are disabled for accounts
which have no bankcode and account id assigned This fix
does not require initialization of the AB_BANKING
* Bug #635926: Lower-case the name of the lock table to
avoid confusing Postgres. Also abstract it to a static
variable instead of repeating the string everywhere.
* Bug #635967: Slots didn't correctly read the path
semantics stored by 2.3.15 and earlier. Corrected, but
note that 2.3.15 and earlier didn't write lists to the
database, so users should re-save from XML using 2.3.17
* Bug #635355: Partly implement the correct "DTAUS import
and send" feature again. Patch by Manfred Usselmann. The
main part of the feature is delayed until the string
freeze is lifted. This part (without adding strings)
implements the infrastructure for sending only the
correctly imported transactions to the bank later.
* Bug #636459: Recursively delete slots contained in slots
of type KVP_TYPE_FRAME or KVP_TYPE_LIST.
* Bug #635859: Strip all trailing '/'es from kvp_slot
paths when loading. This changes round-tripping slightly
(because the resulting slot key won't have the trailing
slash when it's re-saved as xml). It may also change the
behavior of the facility using the slot, because the key
is changed. So far, the only known instances which trip
this bug are import-map-bayes, because descriptions may
have '/'es in them (and why shouldn't they).
Unfortunately, fixing this right (so that key values can
have embedded '/''es and be saved/retrieved from sql
databases will require changing the slot architecture in
ways that impact the engine. Since we don't have
adequate unit tests to be confident of not introducing a
regression, I'm applying this instead.
* Bug #609472: Fix translation of displayed style sheet
names in the style sheet editor.
* Bug #635911 GnuCash crashes out when trying to save-as
MySQL Disclaimer: This fix attempt is purely based on
the information given in the bug report and code
reading. I never could reproduce this bug but the code
suggests an unitialized pointer may be the the cause.
* Bug #635469: Add a (typemap for a) QofQueryParamList
typedef. Patch by Matthijs Kooijman: This is a typedef
for a GSList, that is used to identify the path from an
object to one of its parameters in search queries and
sorting. This typedef replaces GSList everywhere where
it's applicable. This relieves the need to special case
a few functions in the swig bindings and makes the
bindings for a bunch of other functions work as well.
Note this is (still) only an in typemap, since no useful
functions that return a QofQueryParamList are exposed in
the bindings right now anyway.
* Bug #635632: Update existing eguile reports to use new
for syntax. Patch by Matthijs Kooijman
<matthijs at stdin.nl>: This makes use of the new for
syntax introduced in the previous commit, making these
reports and templates a bit easier to read and modify.
* Bug #635632: Add custom for loop syntax for eguile
templates Patch by Matthijs Kooijman
<matthijs at stdin.nl>: The built-in for-each loop
construct is a bit cumbersome: It always requires an
explicit lambda and the list to loop over is the last
argument. Especially the latter makes it very hard to
read when the lambda is big and multiple for-each'es are
nested. For hashes, this prevents the need of the
cumbersome hash-fold and slightly better hash-for-each
(which still suffers from the same problems as for-each
and is not available in guile 1.6). This new syntax
allows for three distinct syntaxes: * Looping over a
single list: (for a in lst do (display a)) * Looping
over multiple lists: (for (a b) in (lsta lstb) do
(display (+ a b))) * Looping over a hash: (for key =>
value in hash do (display (* key value)))
* Bug #635469: Add bindings for running a qofquery on
invoices. This adds a new typedef "GncInvoiceList" with
the corresponding typemap, and adds two new functions
qof_query_run_for_invoices, which are trivial wrappers
around qof_query_create_for and qof_query_run
* Bug #635355: Add public declaration of gnc_info_dialog.
Patch by Manfred Usselmann.
* Bug #635439: Patch to autoset owner in the payment
dialog Patch by Matthijs Kooijman <matthijs at stdin.nl>
* Revert "Bug #635439: Patch to autoset owner in the
payment dialog" This reverts commit
* Bug #635439: Fix "Pay invoice" while the invoice dialog
is open. Patch by Matthijs Kooijman <matthijs at stdin.nl>:
If you use "Pay invoice", normally a new payment dialog
is opened which is completely filled in. However, when
there was already a dialog open, it was reused but only
the owner would be filled in. This patch makes sure that
the invoice and amount are filled in as well.
* Bug #635439: Patch to autoset owner in the payment
dialog Patch by Matthijs Kooijman <matthijs at stdin.nl>:
In the payment dialog, set the owner when an invoice is
selected Before, you would always need to select an
owner manually. If you would just select an invoice
(which was possible, since the invoice selection is not
disabled when no owner has been selected yet), pressing
OK would error out because no owner was selected. This
patch makes sure that when an invoice is selected, but
no owner is selected yet, the right owner is filled into
the owner selection box automatically. This also happens
when the wrong owner is selected, which can happen
because the invoice autocompletion is not limited to
invoices from the selected owner, but always completes
all invoices. This could cause weird behaviour: Select
an owner, then use completion to select an invoice by
another owner and press ok. This would cause the amount
for the invoice by the other owner to be charged against
the first owner. This patch prevents that by replacing
the first owner by the other owner in the dialog. This
patch also changes gnc_invoice_set_owner to no longer
reset the invoice selection to NULL. Instead, this is
now handled by
* Other code/build changes
* Update configure.ac to 2.4.0 Update gnucash-bin.c to
indicate stable version is 2.4.0, next stable version
2.6 Here we go...
* Add gnc-backend-dbi-priv.h to list of header files so
that 'make distcheck' passes
* Fixed date problem in MySql backend
* Removed accidentally created directory.
* Add enumeration of indexes in sql backends. This is a
first step to rewriting databases in a safe way. Indexes
are named entities in sql databases and so need to be
renamed along with the tables before creating and
populating a new set. This change also introduces a unit
test of the new enumeration, and that test has to be
able to see data structures which are private to
gnc-backend-dbi.c, so those data structures are moved to
a new file, gnc-backend-dbi-priv.h, which both
gnc-backend-dbi.c and tests/test-stuff.c can include.
* Add debug helper function qofeventid_to_string.
* Support for GncCommodityNamespace, better support for
GncCommodity, and example enhancements. Patch supplied
my Mark Jenkins.
* Changes to example Script to include added namespace
functionality This patch changes the example script to
reflect the capability of reading all namespaces. Patch
provided by Christoph Holtermann.
* Cutecash: Add generation of dummy gnc-version.h file.
* Add missing newline at end of file
* Replace more obsolete #define'd function names by their
* Add gitignore for backup files from make check.
* Replace more obsolete #define'd function names by their
* Make "make check" work when run from "make distcheck".
* Replace obsolete <QueryNew.h> #defines by the current
<qof.h> function names.
* Follow-up to r19928: Include gnc-version.h with
directory path to avoid picking the wrong file.
* Improve the cached quickfill for GncEntry description
lines of r19941.
* Add APIs to get/set a flag signifying that a transaction
is a book-closing txn. This is necessary for Bug #570042
but doesn't completely solve it until the reports are
updated to use the new API. This is backwards-compatible
with the slot data inserted by the book closing since
* Adds checking of gnc_commodity_namespace in glists In
src/base-typemaps.i check for return type
gnc_commodity_namespace is added so that it is returned
instead of gnc_type_monetary. Thanks to Christoph
Holtermann for the patch.
* Move price_database_example.py to the correct place and
remove incorrect path/file
* Change indent to 4 sp
* Implement prerequisites for full auto-completion in the
entry ledger. Added a cached quickfill for GncEntry
description lines. Extend QuickFillCell interface to be
able to use a common cached quickfill.
* Remove doubled include files. (Also, QuickFill.h doesn't
depend on gdk.h)
* Add messages to backend errors, ensuring that
qof_session_backend_get_message() will actually get a
useful message, or that there will be a descriptive
warning immediately before in the trace file.
* Move gnc-version.h and gnc-svninfo.h from gnome-utils to
* If the build directory is not the source directory and
the source directory is read only, the build fails. Fix
by only making guile-strings.c if building from SVN.
* Get rid of the rest of the gnc-prices man page, r19921
* Remove variable names that conflict with Python
keywords. Relevent when using SWIG autodoc feature for
* Add %feature("autodoc", "1"); to gnucash_core.i to pass
C documentation through to python interface.
* New example script for prices dababase. Thanks to
Christoph Holtermann for contributing to this.
* Remove obsolete gnc-prices man page
* Add Gnucash svn version to sql versions table.
* Insert missing space
* Re-enable -Werror in Makefile.am and remove %
feature("autodoc", "1"); from gnucash_core.i
* Add commodity price functions to bindings. See Bug
636457 for more details.
* Add PriceList to typemap for Python bindings
* Patch by Matthijs Kooijman. In r19863, some qofquery
bindings were added. For those to compile,
business-core.i now includes qofquery.h. However, this
causes the bindings for qofquery.h to be generated
twice: Once through engine.i and once through
business-core.i. The latter generated broken versions of
the bindings, breaking (at least) the receivable aging
report. This commit changes the %include to an %import,
so the new bindings still compile but the query bindings
don't get generated twice.
* Re-indentation of source code. This re-indentation was
done using astyle-1.24 using the following options:
astyle --indent=spaces=4 --brackets=break --pad-oper
* Make prototype for gnc_entry_ledger_get_entry public.
* Fix GtkSpinButton with page-size deprecated warning in
How can you help?
Translating: The new release comes with some new translation strings. If
you consider contributing a translation, we invite you to test this
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.
More information about the gnucash-announce