- Allow specifying signals as symbols (#382 by mvz)
- Support Ruby 3.2 through 4.0, dropping support for Ruby 3.1 (#383 and #390 by mvz)
- Handle uninitialized Boxed out parameter (#396 by mvz)
- Handle fixed size arrays of GStrv (#403 by mvz)
- Return nil when wrapping a null pointer with GStrv (#404 by mvz)
- Handle zero-terminated arrays of GStrv (#405 by mvz)
- Read elements of GStrv as UTF8 strings (#406 by mvz)
- Handle null GValue return values and out parameters (#407 by mvz)
- Support vfuncs returning a value of type flags (#412 by mvz)
- Block reading of write-only properties (#413 by mvz)
- Ensure class structs are initialized (#415 by mvz)
- Update contribution guidelines (#360 by mvz)
- Support Ruby 3.1 through 3.4, dropping support for Ruby 3.0 (#366 by mvz)
- Load gobject-2.0 library in a way that does not require the dev package (#367 by mvz)
- Update tests for compatibility with GObjectIntrospection 1.81.2 (#378 by mvz)
- Support Ruby 3.2 (#331 by mvz)
- Require at least ffi 1.16.3 to avoid 'Can't modify frozen Hash' error (#350 by mvz)
- Support Ruby 3.1
- Rename
#object_classto#class_struct - Remove
GObject.object_class_from_instance - Limit public interface of
BaseMethodBuilder - Remove deprecated methods from
GObject::Object - Stop accepting blocks when defining a type
- Check parameter direction in signal argument conversion
- Drop support for JRuby
- Drop support for Ruby 2.6
- Skip setting destroy notifier state if types don't make sense
- Handle functions with multiple user-supplied callback arguments
- Drop support for Ruby 2.5
- Bump minimum supported version of gobject-introspection to 1.56.0
- Bump minimum supported version of glib to 2.56.0
- Handle functions that have swapped closure annotation
- Handle GPtrArray arguments in signal handlers
- Handle sized arrays with interface element types
- Officially support Ruby 3.0
- Rely on
GObject.boxed_freeto free GValue objects - Require 'set' in
callback_base.rb, which needs it (thanks, Jordan Webb!) - Make SizedArray handle
:filenameelements
- Make building and finding metaclasses via
Builder.build_classwork again
- Support disguised object class structs
- Handle the case where vfunc object arguments are null
- Bail out earlier when trying to register non-GObject class
- Small improvements
- Use
Module#prependfor overrides - Clean up initialization of structs, unions, and boxed types
- Make
GObject::Object#store_pointerprivate like in the superclass - Handle creating SizedArray of uint8 from a string
- Improve derived class setup
- Improve List and SList methods
- Make
ByteArray#appendreturn self - Improve packaging infrastructure (thanks, utkarsh2102!)
- Officially support Ruby 2.7
- Officially drop support for Ruby 2.4
- Store classes representing inline callback types in the class that defines them instead of in the main namespace, thus avoiding some potential name clashes
- Update development dependencies
- Various code quality improvements
- Record approved licenses for dependencies
- Load girepository-1.0 library in a way that does not require installing a development package.
- Allow access to properties for unintrospectable classes.
- Drop support for gobject-introspection below 1.46, the version available in Ubuntu Xenial.
- Merge extended property getter and setter into regular ones. This means you
can always just use
#get_propertyand#set_property. The methods#get_property_extendedand#set_property_extendedare deprecated and will be removed in GirFFI version 0.16 or later. - Support setting ByteArray properties directly with string values.
- Target Ruby 2.4+
- Implement getting and setting of flag properties and GValues.
- Add support for basic hashtable values larger than pointer.
- Support unintrospectable classes not derived from GObject but from some other fundamental object type.
- Make GPtrArray work with boxed types.
- Do not try to ref method reciever for struct instance methods marking the
instance receiver as transfer
:everything. - Support signals with GError arguments.
- Cache various methods on IBaseInfo and its subclasses.
- Generate aliases for accessor methods instead of relying on
method_missing.
- Add enum values as constants in the generated module.
- Do not generate field accessors for Object types. Object data should normally not be accessed directly.
- Silence some warnings.
- Allow overrides to be applied using
Module#prepend, as an alternative to alias chaining. - Make
ZeroTerminatedarray work with enum elements. - Various refactorings.
- Improve consistency of conversion between symbols and integers for enum types.
- Drop support for Ruby 2.1
- Support GLib 2.58
- Add
setup_method!andsetup_instance_method!, that raise an error when the given method is not found.
- Restore support for Ruby 2.1 and 2.2
- Drop support for GLib::IConv, which is no longer introspectable in glib 2.56.
- Drop support for Ruby 2.1 and 2.2
- Add support for Ruby 2.5
- Support glib 2.54 and gobject-introspection 1.54
- Allow conversion to native Boolean from any Ruby value
- Allow vfunc implementation using a regular method
- Fix build on JRuby
- Allow clearing properties that take a GObject value
- Handle GLists requiring an Interface type
- Internal test and code improvements. Some internal APIs have been removed or changed.
- Make
Strv#eachthread-safe. - Drop support for CRuby 2.0.
- Move
::type_initand baseStrvimplementation intoGObjectIntrospection, making it stand-alone. - Move
GLib::BooleantoGirFFI::Boolean. - Guard against instantiating abstract classes using the default constructor.
- Handle user-defined properties containing dashes
- Handle user-defined properties of a large number of types
- Update
ffi-bit_masksdependency and remove monkey-patch - Support gobject-introspection version 1.48
- Restore JRuby compatibility.
- Introduce
#ownedto flag unions and structs for release at garbage collection time. In JRuby's implementation, FFI::Pointer does not implement#autorelease=and#autorelease?, so this different technique is used to free pointers allocated by GLib. It is in fact doubtful that setting autorelease had any actual effect even on CRuby. - Immediately free string pointers whose ownership is transfered. Again, the #autorelease technique doesn't work on JRuby.
- Fix handling of callee-allocated out parameters in vfuncs. The
put_pointermethod was wrongly called, and JRuby is more picky about what types that method expects, exposing the bug.
- Introduce
- Ensure ownership of created RubyClosure objects
- Rework generated method code to use less indirection.
- Remove unused classes and methods
- Clearly distinguish boxed types from other structs
- Take ownership transfer into account in generated methods
- Properly free unions, structs and boxed types owned by GirFFI
- Block access to fields that have disguised types
- Abort if modules were defined earlier, e.g., through the gems from the ruby-gnome family.
- Extend integration testing with GObjectIntrospection's test libraries.
- Find signals on user-defined types.
- Allow getting and setting of properties with a callback value.
- Handle pointer-like signal arguments such as GList.
- Handle static methods on interface modules.
- Free most self-allocated boxed types using
GObject.boxed_free. - Correctly assign length arguments for zero-terminated arguments
- Pass nil user data as null pointer, and store a missing callback as nil. This
avoids passing a null callback and a non-null user data value, which causes
problems with
vte_terminal_spawn_sync()and perhaps other functions.
- Make allow-none arguments optional in Ruby
- Add Clutter example
- Clean up mainloop example
- Use bit masks for relevant functions in GObjectIntrospection
- Do not create a property accessor when a corresponding getter method exists
- Add field accessors for Object types for fields that don't have corresponding properties or getter methods
- Improve error handling for signals and properties that are not found
- Handle signals without GIR data
- Add interrupt handler to break out of main loops
- Propagate exceptions from callbacks during event loops
- Make default object constructor take a hash of properties
- Fix implementation of
ObjectBase.object_class - Make object class struct types inherit from their parent structs. This makes parent methods and fields available.
- Use
ObjectBase.object_classinstead of oldObject#type_classto find properties - Remove
Object#type_class - Automatically unpack GValue return values
- Use a BitMask to handle flag values
- Handle callback arguments as Ruby block arguments
- Use user data and destroy notify arguments to automate callback cleanup. This means you can no longer supply your own user data and notifiers.
- Support CRuby 2.3 and Rubinius 3.x
- Drop support for JRuby 1.7 and Rubinius 2.x.
- Change handling of initializers in subclasses
- Subclasses with their own GType revert to the default GObject constructor
- Subclasses cannot use their parent classes' non-default contructors
- Find signals in ancestor classes of unintrospectable types
- Improve GObject::Value
- Make
#wrap_ruby_valuework for object classes - Use non-deprecated methods for getting and setting char values
- Make
set_valueandget_valuework for interface types
- Make
- Handle classes with lower-case names
- Make
ObjectBaseaDataConverterso FFI handles it natively - Use more of gobject-introspection's test libraries for testing
- Simplify constructor overrides: Custom initializers will no longer be overwritten when setting up the corresponding constructor.
- Override
GObject::Object.newto not require a GType argument
- Fix handling of signal handler return values
- Do not create setters for properties that cannot be set
- Use inherited constructor for boxed types
- Make
InOutPointerwork correctly for boxed types- Make
.forwork with boxed types - Make
#set_valuework with boxed types
- Make
- Make GObject::Value support nil type:
- Make
.wrap_ruby_value(nil)work - Make
#set_valueand#get_valuework when the type isTYPE_INVALID - Make
.for_gtypework withTYPE_INVALIDandTYPE_NONE - Make
.from(nil)return aGObject::Valueinstead of nil - Make
#set_ruby_valueprivate
- Make
- Make
GObject::Object.signal_emitwork with gobject-introspection 1.46 - Replace or remove all custom
.newmethods - Make
setup_methodandsetup_instance_methodhandle symbol arguments
- Handle struct array fields with related length fields
- Update test library build process
- Drop official support for CRuby 1.9.3
- Officially support JRuby 9.0.0.0
- Change handling of initializers in custom subclasses
- Allow
ffi-gobjectandffi-glibto be required directly - Improve documentation
- Remove arbitrary refcount check from finalizer (by John Cupitt)
- Unset GValues in finalizer
- Dereference GObjects in finalizer
- Increase refcount for ingoing :object arguments of functions with full ownership transfer
- Increase refcount for receiver arguments with full ownership transfer
- Increase refcount for ingoing :object arguments of vfuncs with no ownership transfer
- Increase refcount for :object return values of vfuncs with full transfer
- Increase refcount for outgoing :object arguments of vfuncs with full ownership transfer
- Support Ruby 2.2
- Rename several methods. The old names are deprecated and will be removed in 0.8.0.
- Support constants with a falsy value
- Support type aliases that resolve to a type that is not introspectable
- Support callback arguments with direction :inout
- Provide
GObject.signal_connect_afterandGObject::Object.signal_connect_after - Handle setting GValues (and hence, properties) that have enum values
- Various refactorings & coding style cleanups
- Handle introspecting boolean constants
- Provide
config.hfor versions of the test libs that need it - Include gemspec in the gem
- Avoid needless casting from string to symbol by making
#setup_and_calltake a string - Avoid argument list unpacking by making
#setup_and_calltake an array of arguments rather than a variable number of arguments - Remove old example files
- Let rubygems know about required Ruby version
- Various clean-ups
- Work around
respond_to?behavior in JRuby 1.6.13 - Deprecate
setup_classin favor ofload_class - Support GValue containing GArray
- Provide constant
TYPE_BYTE_ARRAY - Don't recurse looking for signals and properties
- Clean up generated code:
- Avoid use of an ignored dummy argument
- Clean up trailing whitespace
- Drop support for Ruby 1.9.2
- Allow data argument for
GObject::Object#signal_connect - Let Ruby threads run during GLib's main loop
- Make all dependencies versioned
- Various refactoring & code cleanup
- Use closures as signal handlers, rather than callbacks
- Obtain reference to GVariant on creation
- Make struct arguments work in JRuby
- Various refactoring & code cleanup
- Correctly handle closure data arguments originating from C
- Handle callee-allocated simple types for callbacks and functions
- Handle callback out parameters that are zero-terminated arrays
- Handle virtual functions with GError arguments
- Support the GBytes type
- Handle virtual functions returning GObjects
- Avoid overwriting methods with getters for properties with dashes in the name
- Restore proper handling of enums in callback arguments
- Simplify Rake configuration
- Various small fixes
- Remove remaining Ruby 1.8 version checks
- Officially drop Ruby 1.8 compatibility.
- Store GType of generated types in a constant, removing the need to generate a
separate
get_gtypemethod for each type.
- Handle method setup for methods with unsafe names (i.e.,
g_iconv()) - Add override for GLib::IConv.open
- Type handling:
- Handle c arrays with separate length argument for signals
- Handle GHashTable values of type
:gint8and:guint32 - Handle signals with int64, Strv, uint64 arguments
- Handle arrays of integers cast as pointers
- Handle fields of callback type
- Handle nested GHashTable
- Argument handling:
- Refactor argument builder system
- Improve handling of user data arguments
- Handle signal and callback arguments with direction :out
- Handle aliases of container types by making the element type optional
- Handle signal and callback return values that need conversion
- User defined types:
- Pass explicit receiver to initialization block for UserDefinedTypeInfo
- Allow user defined types that are anonymous Ruby classes
- Register defined properties in a subclass
- Support setting virtual function implementations in a subclass
- Support adding an interface to a subclass
- Support implementing an interface's virtual functions in a subclass
- Use FFI's DataConvertor system to handle enums and callbacks
- Stop using deprecated GValueArray to construct argument array for
signal_emit - Make
ITypeInfo#g_typereturn correct value for c arrays - Make
get_propertyandset_propertyless smart, moving conversion into the property accessor definitions - Make
GObject::Value#get_valuehandle enums and flags - Clean up deprecated methods
- Uniform handling of callback, signal and method arguments
- Automatically convert array elements to GValue
- Support inline array fields
- Support struct fields
- Improved field setters and getters
- Support many more types of properties
- Support skipped arguments and return values
- Fix refcount for the result of IBaseInfo#container
- Check bounds in GLib::PtrArray#index and GLib::Array#index
- Deprecate several methods
- Lots of refactoring
- Handle GArrays of booleans and structs
- Improve handling of gbooleans
- Handle inline arrays of structs
- Implement equality operator for container types
- Fix element size calculation for GArray
- Represent enum types by modules wrapping
FFI::Enum - Support functions on enums
- Handle zero-terminated arrays of types other than int32
- Add override for
GLib::Variant#get_string - Handle non-throwing arguments and return values of type GError
- Handle arguments and return values of type GPtrArray
- Handle caller-allocated arguments of type GArray
- Deprecate
GObject::Value#ruby_value, replacing it with#get_value
- Make use of enums as element type for GHashTable and other containers work
- Handle introspectable types with introspectable parent types
- Handle SizedArray containing enums
- Support Rubinius
- Lots of refactoring
- Handle signal details in
GObject.signal_connectand.signal_emit - Make
GValue#set_valuecheck object GType compatibility - Eliminate GObject::Helper module
- Handle more argument types
- Support Ruby 2.0.0
- Properly handle zero-terminated arrays of
:filename - Loosen dependencies on ffi and minitest
- Update ffi dependency
- Add finalizer to release memory for IBaseInfo and descendents
- Remove deprecated methods
- Remove pretty-printing functionality
- Refactor argument handling
- Remove gobject-introspection version check
- Make tests pass with gobject-introspection 1.34
- Ongoing refactoring
- Make objects and interfaces wrap poiners in the class that matches their GType.
- Remove workarounds for older versions of gobject-introspection
- Mark certain methods as deprecated. These will be removed in 0.5.0
- Handle :filename type arguments in InPointer
- Refactoring
- Move Gtk+ bindings to their own gem (
gir_ffi-gtk).
- Correctly set FFI return type when callbacks that return GObjects have incomplete type specification.
- Correctly map Interface types in callbacks.
- Improve process of defining initializers in derived classes.
- Make interfaces know their GType.
- Make classes created by the Unintrospectable builder know their GType.
- Create property accessors instead of field accessors for GObjects.
- Add Ruby-style getter and setter methods (by Antonio Terceiro).
- Add
#signal_connectinstance method (by Antonio Terceiro). - Make GirFFI's tests pass with gobject-introspection 0.10.
- Improve unintrospectable type handling.
- Bug fixes and refactorings.
- Start implementing
#define_type, for creating descendent types that the GObject system knows about.
- Fix issue #7: methods that take GValues will autoconvert other values.
- Fix method lookup when include'ing a module that is an Interface.
- Various refactorings.
- Fix issue #19: Check if a GLib::PtrArray.add method was generated before attempting to remove it.
- Fix two issues with pretty printing that made output for GLib have syntax errors.
- Fix handling of output parameters that are arrays of pointers to structures
(i.e., of type
Foo***).
- Add support for properties, with
#get_propertyand#set_property. - Add support for fields.
- Create field accessor methods.
- Get rid of
#[]and#[]=.
- Explicitely load
libgirepositorywith ABI version 1. - Improve implementation of GLib container classes (GList etc.):
- Real constructors.
#appendand friends are instance methods now.- Conversion methods to cast Ruby containers to GLib containers.
- Start implementing pretty printing.
- Various refactorings.
- Put bindings for GObjectIntrospection in their own namespace.
GirFFI.setupno longer loads overrides.- Add
ffi-gtk2andffi-gtk3files for loading Gtk+ overrides.
- Support GObject Introspection version 1.30:
- Add support for layouts with fixed-length arrays.
- Handle type names starting with underscores.
- Call
g_signal_emitvdirectly to avoid conflict in introspection info with earlier versions of GObject Introspection.
- Remove IErrorDomain related code. This functinality was removed from GObject Introspection in version 1.29.17
- No longer use
_id2refto locate objects past as user data pointers. - Fix failing tests on JRuby.
- Change interface to the underlying builder in generated modules and classes.
- Handle string, enum, union, flags signal arguments.
- Handle string arguments in
GObject.signal_emit. - Handle enum signal arguments.
- Fix finding signals in non-introspectable types.
- Fix method setup in non-introspectable types.
- Refactoring.
- Handle GObject interfaces properly.
- Create types only defined by the GType system.
- Support GType array return values.
- More complete support for the basic types.
- Improved support for GList, GSList, GStrv, and GValue.
- Add support for GHashTable, GVariant, GByteArray, and GArray.
- Generate constants.
- When setting up a module, set up its dependencies as well.
- Test against the GIMarshallingTests test namespace.
- Use minitest/spec for testing.
- Various bug fixes and internal improvements.
- Generate modules with names starting with a lowercase letter (like
cairo). - Allow specifying the typelib version on setup.
- Rename methods
#methodsand#typeof the introspection classes to avoid clashing with standard Ruby methods. - Refactoring.
- Support gobject-introspection 0.10, drop support for earlier versions.
- Use Regress, not Everything, for testing.
- Deal with functions that are no longer introspectable.
- Correctly handle constructors that declare their return type different from their class.
- Implement
RubyClosure, aGObject::Closurefor handling ruby callbacks. - Handle GLib's singly and doubly linked lists.
- Handle callback types defined in-place (like
Closure'smarshal). - Refactoring.
- Cast returned GObjects to their actual type.
- Properly cast callback arguments.
- Handle the case where functions formally return interfaces.
- Make sure Gtk::Window has the correct number of references after creation.
- Refactoring and some small fixes.
- Don't create instance methods out of functions and vice versa.
- Find signals on interfaces, too.
- Implement tests for most of Everything.
- Correctly handle array + size arguments.
- Handle most other argument types.
- Various internal changes and other fixes.
- Lots of changes to the internals.
- Handle out-only arguments.
- Make use of callbacks from other namespaces work.
- Handle virtual methods where the invoker method has a different name.
- Implement usable
signal_connectandsignal_emit. - Sink floating references when creating a GObject.
- Implement Union type.
- Many small bug fixes.
- Update to restore Ruby 1.9 support.
- Handle functions with the 'throws' property set.
- Handle classes without specified fields.
- Several fixes to method creation.
- Initial release.