ANNOUNCE: Gnucash 2.4.0 released

Phil Longstaff plongstaff at
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
Mac OSX.

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 file from the source repository and put
        it into the downloads directory of your gnucash build area.
      * Updated AqBanking on Win32.
Getting GnuCash
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 gnucash

To install GnuCash, you will need Gnome 2, guile, slib. In addition you
will need swig if compiling from subversion.

Win32 binary
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 
              * Mark erroneous translation as fuzzy because it doesn't
                have the correct c-format.
              * Reverse inadvertent mods to po/ in r19904
              * Updated Greek translation provided by Nikos
              * Updated Japanese translation, copied from the
                Translation Project.
              * 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 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
                or later.
              * 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>: 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>: 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_create_for_invoices and
                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>
              * 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>:
                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>:
                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 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
                current names.
              * Add gitignore for backup files from make check.
              * Replace more obsolete #define'd function names by their
                current names.
              * 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 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
                is incomplete
              * Remove variable names that conflict with Python
                keywords. Relevent when using SWIG autodoc feature for
                python bindings.
              * 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 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
                --pad-header --suffix=none
              * Make prototype for gnc_entry_ledger_get_entry public.
                Add documentation.
              * 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
release already. 

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 mailing list