haskell-gi

Generate Haskell bindings for GObject Introspection capable libraries

https://github.com/haskell-gi/haskell-gi

LTS Haskell 23.1:0.26.12
Stackage Nightly 2024-12-22:0.26.12
Latest on Hackage:0.26.12

See all snapshots haskell-gi appears in

LGPL-2.1-only licensed by Will Thompson and Iñaki García Etxebarria
Maintained by Iñaki García Etxebarria ([email protected])
This version can be pinned in stack with:haskell-gi-0.26.12@sha256:27c4e43ce3f906324c67603092f179f5b0bcda0505c93d23b2ca00ede21cda24,5150

Generate Haskell bindings for GObject Introspection capable libraries. This includes most notably Gtk+, but many other libraries in the GObject ecosystem provide introspection data too.

Changes

0.26.12

  • Add support for the .gir format dialect generated by vala.

0.26.11

  • Don’t try to guess which callback arguments are user_data arguments, as this can lead to problems, as in issue 447.

0.26.9

  • Add a workaround for a GHC issue stopping parallel compilation in GHC >= 9.6.
  • Fix compilation issues regarding time_t and similar types in introspection data.

0.26.8

  • Add support for scope type “forever”: see this issue.

0.26.7

0.26.6

  • Work around changing conventions about what the closure n annotation means: many annotations appear on the callback, pointing to the user_data argument, but sometimes it also appears on the user_data argument, pointing to the callback. See issue 407 for a place where this becomes a problem.

0.26.5

  • Add a reference to ?self argument in signals. See issue 408 for the motivation.

0.26.0

  • Support for ‘HasField’ methods, which allows the syntax ‘widget.show’ or ‘widget.add child’ for invoking methods using the new RecordDotSyntax in ghc 9.2.

  • And an implicit ‘?self’ parameter for callbacks, for accessing the calling object. See issue 346 where this is necessary in practice in gtk4 to use event controllers.

  • Add an ‘After’ attribute to connect to signals after the default handler on constructors/setters using attribute syntax, similar to On.

  • Add resolveSignal for showing what an overloaded signal resolves to: resolveSignal button #notify will output GI.GObject.Objects.Object.Object::notify.

0.25.0

  • Support non-GObject object attributes.

  • Support for ghc 9.0.1.

  • Improvements in the generated Haddocks.

  • Remove the command line version of the bindings generator.

  • Remove support for non-IsLabel overloading.

  • Add resolveMethod for showing what an overloaded method resolves to: resolveMethod #show widget will output GI.Gtk.Objects.Widget.widgetShow.

0.24.5

  • Fix an accidental double free for GValues, see issue 320.

  • Accept docsections in gir files, although they are currently ignored. See issue 318.

0.24.4

  • Relax bound on ansi-terminal.

0.24.3

  • Provide type init functions for GParamSpec types. This solves a puzzling linker error saying that the “intern” symbol could not be resolved, see issue 297 and issue 298.

0.24.2

  • Support for allocating GArrays of known size structs in caller-allocates arguments.

0.24.1

  • Add support for delete-attr override, to remove attributes.

  • Allow (but ignore) destroyers in scope async callbacks.

0.24.0

  • Added support for non-GObject objects

0.23.2

  • Fix a possible segfault in functions that return an out pointer to a dynamically allocated array, but do not initialize the array if it has zero size. See #289 for an example.

0.23.1

  • Check whether symbols exist in the dynamic library before trying to generate bindings for them, in order to avoid linker errors.

0.23.0

  • gobjectType now does not require a proxy argument, it needs to be used with TypeApplications instead.

  • Annotated signals are supported: on widget (signal ::: "detail").

  • Safe coercions to parent types supported, with asA.

  • Support for GObject subclassing, and registering custom properties.

  • Use TypeApplications in AttrInfo implementation, and inherited methods implementation.

  • Add an allocating setting operator (:&=).

  • Support for exporting class structs.

  • IsGValue instances for GObjects and boxed objects.

0.22.6

  • Fix generated IsX typeclasses for non-GObject interfaces.

0.22.5

  • Add support for inheriting overloading info.

0.22.4

  • Do not generate bindings for struct/union fields pointing to private/class structs, which we do not bind.

0.22.3

  • Sometimes struct fields marked as not introspectable contain invalid introspection info. We are lenient in these cases with parsing errors, and simply ignore the fields.

0.21.5

  • Add support for callback-valued properties.

0.21.4

  • Try to guess signedness of enums and flags on the C side, fixes #184.

0.21.3

  • Do not add nodes in overrides if a node with the same name already exists, fixes #171.

0.21.2

  • Do not free Ptr Word8 types after performing the call to C, since they only get passed along. Otherwise one could easily double free in functions such as GdkPixbuf.pixbufNewFromData.

  • Fix a leak on optional ScopeTypeAsync callbacks.

0.20.4

  • Improve marshaling of array arguments with no specified size. This improves the generated bindings for various functions, for instance GObject.signalEmitv.

  • Replace the enable-overloading flags with a explicit CPP check of the version of haskell-gi-overloading we are being compiled against, see issue 124 for the rationale.

0.20.3

  • Make the overloading code protected by a CPP conditional, depending on ENABLE_OVERLOADING being defined. See issue 107.

  • Wrap boxed structs/unions as transient ManagedPtrs in callbacks. This is needed to fix a number of issues, including issue 96 and issue 97.

0.20.2

  • Fixes for GHC 8.2.1.

0.20.1

  • gtk-doc parser and haddock generator: while by no means perfect, now the autogenerated bindings come with some reasonable autogenerated documentation.

  • Many bugfixes. A particularly important one is for issue 82, which made compilation of gi-glib fail, for the latest version of gobject-introspection.