CVS instability coming up -- afterward new g-wrap will be required.

Rob Browning rlb@defaultvalue.org
Wed, 09 Jan 2002 15:01:05 -0600


Just a warning that I'm about to start comitting a whole raft of
changes to make gnucash unstable CVS compatible with the new g-wrap.
Once I'm finished, everyone (as the helpful configure message will
warn you) will need to do a make distclean (most likely), update to
latest CVS, and then upgrade to at least g-wrap 1.3.2.

You can get g-wrap-1.3.2.tar.gz from
ftp.gnucash.org/pub/g-wrap/sources.

For those interested, some improvements include:

  - much better run-time wrapper error checking/handling.  As an
    example, g-wrapped functions accepting/returning limited range
    integer types will now signal range and type errors independently.

  - the beginings of glib support, including support for <gw:gint64>
    (independent of guile version across 1.3.4, 1.4, and 1.5 --
    i.e. we work around earlier guile's bit-operation problems), and
    support for the somewhat strange "composite type", gw:glist-of,
    which allows you to specify arguments/return-values with complex
    composed types like this:

      (gw:glist-of (<gw:gchars> caller-owned) caller-owned)

    This specifies a C argument or return value that's a GList* of
    g_new allocated character strings, where the caller owns both the
    spine of the list and the actual strings.  G-wrap will
    automatically convert back and forth between the scheme side
    scheme list and the C side GList* generating and destroying both
    the GList and it's contents when appropriate.  You should even be
    able to say something like this if you really wanted to:

      (gw:glist-of
       (gw:glist-of (<gw:gchars> callee-owned) callee-owned) 
       caller-owned)

    In all of these cases, g-wrap should be careful about destroying
    partially converted C-side values when errors occur, before
    throwing the actual scheme side error -- reducing the possibility
    of a memory leak, which can be important for anyone trying to
    recover from such an error.

  - wrapping/handling gnome-guile objects transparently so you can
    wrap your own functions and they'll accept/return gnome guile
    objects via the modules (g-wrap gtkobj) and (g-wrap gw-gtk)

      (gw:wrap-as-gtkobj '<my-foo-gtkobj> "FooWidget")

  - modularized support for g-wrap's own guile side C pointer wrapper
    system "wct" via (g-wrap gw-wct) and gw:wrap-as-wct.

  - support for wrapping C side constant values via
    (gw:wrap-value my-gl-red '<gw:int> "GL_RED")

  - major overhaul of internals to provide more flexibility for those
    writing their own types.

  - much more extensive "make check" regression testing.  This has
    been a major help finding/fixing bugs during development.

-- 
Rob Browning
rlb @defaultvalue.org, @linuxdevel.com, and @debian.org
Previously @cs.utexas.edu
GPG=1C58 8B2C FB5E 3F64 EA5C  64AE 78FE E5FE F0CB A0AD