- 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_class
to#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_free
to free GValue objects - Require 'set' in
callback_base.rb
, which needs it (thanks, Jordan Webb!) - Make SizedArray handle
:filename
elements
- Make building and finding metaclasses via
Builder.build_class
work 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#prepend
for overrides - Clean up initialization of structs, unions, and boxed types
- Make
GObject::Object#store_pointer
private like in the superclass - Handle creating SizedArray of uint8 from a string
- Improve derived class setup
- Improve List and SList methods
- Make
ByteArray#append
return 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_property
and#set_property
. The methods#get_property_extended
and#set_property_extended
are 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
ZeroTerminated
array 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#each
thread-safe. - Drop support for CRuby 2.0.
- Move
::type_init
and baseStrv
implementation intoGObjectIntrospection
, making it stand-alone. - Move
GLib::Boolean
toGirFFI::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_masks
dependency and remove monkey-patch - Support gobject-introspection version 1.48
- Restore JRuby compatibility.
- Introduce #owned to 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_pointer
method was wrongly called, and JRuby is more picky about what types that method expects, exposing the bug.
- 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_class
instead of oldObject#type_class
to 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_value
work for object classes - Use non-deprecated methods for getting and setting char values
- Make
set_value
andget_value
work for interface types
- Make
- Handle classes with lower-case names
- Make
ObjectBase
aDataConverter
so 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.new
to 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
InOutPointer
work correctly for boxed types- Make
.for
work with boxed types - Make
#set_value
work with boxed types
- Make
- Make GObject::Value support nil type:
- Make
.wrap_ruby_value(nil)
work - Make
#set_value
and#get_value
work when the type isTYPE_INVALID
- Make
.for_gtype
work withTYPE_INVALID
andTYPE_NONE
- Make
.from(nil)
return aGObject::Value
instead of nil - Make
#set_ruby_value
private
- Make
- Make
GObject::Object.signal_emit
work with gobject-introspection 1.46 - Replace or remove all custom
.new
methods - Make
setup_method
andsetup_instance_method
handle 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-gobject
andffi-glib
to 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_after
andGObject::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.h
for versions of the test libs that need it - Include gemspec in the gem
- Avoid needless casting from string to symbol by making
#setup_and_call
take a string - Avoid argument list unpacking by making
#setup_and_call
take 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_class
in 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_gtype
method 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
:gint8
and: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_type
return correct value for c arrays - Make
get_property
andset_property
less smart, moving conversion into the property accessor definitions - Make
GObject::Value#get_value
handle 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_connect
and.signal_emit
- Make
GValue#set_value
check 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_connect
instance 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_property
and#set_property
. - Add support for fields.
- Create field accessor methods.
- Get rid of
#[]
and#[]=
.
- Explicitely load
libgirepository
with ABI version 1. - Improve implementation of GLib container classes (GList etc.):
- Real constructors.
#append
and 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.setup
no longer loads overrides.- Add
ffi-gtk2
andffi-gtk3
files 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_emitv
directly 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
_id2ref
to 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
#methods
and#type
of 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::Closure
for 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_connect
andsignal_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.