About
G-Wrap is a tool (and Guile library) for generating function wrappers for inter-language calls. It currently only supports generating Guile wrappers for C functions.
G-Wrap is mostly used by guile-gnome.
You can find a bug tracker, and mailing list information on the Savannah project page.
G-Wrap has already undergone two major overhauls; the most recent one resulted in the 1.9 unstable series, which will lead to G-Wrap 2.0.
Download
The 1.9.x series of releases can be found on http://savannah.nongnu.org/download/g-wrap/.
The G-Wrap releases up to 1.3.4 are available from http://ftp.gnucash.org/pub/g-wrap/source/.
Recent Releases
1.9.13
f71d3324574f3213d53240b4d831c864b592db49 g-wrap-1.9.13.tar.gz
0f367a43c256821f7a5616ebd5d89839eebc1637 g-wrap-1.9.13.tar.gz.sig
Changes from 1.9.12:
- Fix the dependency declaration on libffi in the g-wrap-2.0-guile pkg-config file. - An alignment issue leading to testsuite failures on sparc has been fixed. - The g-wrap-config manpage from the Debian package is now included in the source, and installed.
1.9.12
90237cac83bf83d767081a33da748de9 g-wrap-1.9.12.tar.gz
b072f3f8188bb4e5a67cb53fe4b05cf0 g-wrap-1.9.12.tar.gz.sig
Changes from 1.9.11:
- Fix the g-wrap-2.0-guile pkg-config file (bug #25187).
1.9.11
f6f54c2a2ce3d8257ccaf19f923cbe45 g-wrap-1.9.11.tar.gz
631c842abd9592a66f01068c5972cb9f g-wrap-1.9.11.tar.gz.sig
Changes from 1.9.10:
- Fix `double' return value handling on big-endian platforms. - libffi is no longer distributed with g-wrap, as it is available as a stand-alone package now (instead of being burried in the GCC sources).
Changes from 1.9.10:
- Fix `double' return value handling on big-endian platforms. - libffi is no longer distributed with g-wrap, as it is available as a stand-alone package now (instead of being burried in the GCC sources).
1.9.10
1ea56bbb10a92154d7c1df9582a73e69 g-wrap-1.9.10.tar.gz
cc244da4c799f7f73ad2c6c64ca59ec2 g-wrap-1.9.10.tar.gz.sig
Changes from 1.9.9:
- Fix WCT nullable behaviour for 'new' (i.e. non-compat) wrapsets; there is now a SRFI-39 parameter 'gw-wcts-nullable?' controlling the nullable behaviour; this parameter is #f by default, and set to #t when generating compat wrapsets.
1.9.9
9014d7ed8d395ff335a6a4bf5778ed4e g-wrap-1.9.9.tar.gz
417e172d915b2a4db2717bb690e9d1f3 g-wrap-1.9.9.tar.gz.sig
Changes from 1.9.8:
- Support per-(type-)instance use of #:allowed-options - Build fixes: - Fix example build when libffi is not installed on the system. - Fix GLib build (was deactivated by accident) - Distribute and install SRFI 34/35 again - libffi updated from GCC SVN - It is now possible to have invisible output arguments; these won't show up as return values of the Scheme procedure.
1.9.8
Released files, with md5sum:
b6deb04db3e1008f7d1db4ab7df594b2 g-wrap-1.9.8.tar.gz
fdec12be38dc260d5d42c256824ff39b g-wrap-1.9.8.tar.gz.sig
Changes from 1.9.7:
- New feature: function flags. At the moment there is a single flag specifying whether to leave "Guile mode" when calling the wrapper functions. See the Guile manual on "scm_without_guile" for more information. - Don't rely on libc to provide (v)asprintf, take the implementation from gnulib. - The minimal GLib bindings now build against GLib 2.x. However, their use is deprecated in favour of the much more complete GLib bindings in guile-gnome (http://www.gnu.org/software/guile-gnome/).
1.9.7
Released files, with md5sum:
4e980fd3f464d53ecee12184569c32bf g-wrap-1.9.7.tar.gz
88f5cc2bae5db7beec0b8f6ac082ac62 g-wrap-1.9.7.tar.gz.sig
Changes from 1.9.6:
- The shared libraries now reside in $(pkglibdir)/modules (e.g. /usr/lib/g-wrap/modules). - Users are now allowed to chose in which module generic functions should be defined. - New feature: aggregated typespecs. See the node `Wrapping a C Function' of the manual for details. - Users can now specify a free and a mark function, as well as an equality predicate for wrapped C types (WCTs) in `wrap-as-wct!'. - Improved documentation with an API reference (yet to be finished). - Several bugfixes.
1.9.6
Released files, with md5sum:
4d83964f51376500eedced538c1620cb g-wrap-1.9.6.tar.gz
8b46e35c545fe52a19b45207cb742417 g-wrap-1.9.6.tar.gz.sig
Changes form 1.9.5:
- Support for size_t and ssize_t data types.
1.9.5
Released files, with md5sum:
a8b0da86fe723aeb1694f2d149991300 g-wrap-1.9.5.tar.gz
391bdba6d7c0f1ea87a63623f0b62243 g-wrap-1.9.5.tar.gz.sig
Changes from 1.9.4:
- Bugfixes
+ The minimal GLib wrappers are now installed as (g-wrap gw-glib),
as expected by GnuCash.
+ A problem with generic specializer class lookup has been fixed.
+ A problem with generics specialization and default arguments has
been fixed.
+ A problem with default arguments, when combined with
invisible arguments (such as output arguments) has been fixed.
1.9.4
Released files, with md5sum:
d843c9b1aac9a2960de765cf736c56fb g-wrap-1.9.4.tar.gz
8eab22a61e4077dddbcf913b988091d0 g-wrap-1.9.4.tar.gz.sig
Changes from 1.9.3:
- Enhanced generics support: now all arguments of methods are
specialized, not only the first one.
- Bugfixes
+ Now ships with (g-wrap gw-wct) compatibilty module needed by
GnuCash at runtime.
+ Fixes for handling output arguments:
- Wrapped functions with void return value and output arguments
now return expected results
- Optional argument count is now correctly computed in the
presence of output arguments
+ The libffi alignment requirements are now honored. This fixes bus
errors on many non-x86 architectures.
+ On big-endian architectures libffi-wrapped functions that return
char now work correctly.
+ Some "uninitialized variable" warnings were fixed in generated code
which caused compiles with GCC 4.0 to fail (Debian Bug#290305).
1.9.3
Released files, with md5sum:
53c1ac85c4b88aacb781cd08ed8c7046 g-wrap-1.9.3.tar.gz
fe27e2f07f5025193fbbe7287ab1a0ed g-wrap-1.9.3.tar.gz.sig
Changes from 1.9.2:
- Comes with a compatibility layer that allows GnuCash to be built
with it.
- Reverts the enhanced generics support, which was introduced in
1.9.2, since that currently breaks guile-gnome.
- Bugfixes
+ g-wrap-2.0-guile.pc is now generated correctly, even if the
internal libffi is used.
+ Types used by constants are now considered when calculating the
set of referenced types in a wrapset. This bug led to missing code
and compile errors when a type defined in another wrapset was used
by only by a constant.
+ On platforms which lack alloca(), the version shipped with
G-Wrap should now build correctly.