NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1227 most downloaded on crates.io
FFI bindings to libglib-2.0
Last release 1 months ago
30 Aug 2026
Ships fairly regularly
a new release about every 4 weeks
Rarely documented
notes for 10 of 56 stable releases
1 version withdrawn
withdrawn after publishing
11 years old
60 releases · first in 2015
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="Bilal Elmoussaoui: Bump syn to
Bilal Elmoussaoui:
Bump syn to 3.0
Sebastian Dröge:
Update gir / gir-files
Regenerate with latest gir / gir-files
Fix some Rust 1.97 clippy warnings
deny: Allow duplicated syn 2.0 dependency
cairo-sys: Update to system-deps 8
pango: Add new enums
pango: Add bindings for new width attribute
pangocairo: Add new pango RenderComponent API
pango: Add v1_58 feature
pangocairo: Mark cairo context parameter as const
gio: Manually implement new UnixFDList API with correct types
glib: Add new nanosecond timeout source API
glib-macros: Use `TypeFlags::empty()` instead of `::NONE`
glib: Use `RegexMatchFlags::empty()` instead of `DEFAULT`
gio: Only require gio 2.89 for v2_90
gio: Only return the result from spawn_blocking() from the task completion callback
glib: Drain any remaining, pending sources after `MainContext::block_on()`
gio: Fix new 1.98 clippy warning
cairo: Update to system-deps 9
Update Cargo.lock
deny: Remove syn 2 override
glib: Re-add default flags member for RegexMatchFlags / RegexCompileFlags without version guard
Update versions to 0.22.9
Sophie Herold:
security: Update crossbeam-epoch to 0.9.20
Yang Lin:
fix: `g_free` alignments return from `pango_tab_array_get_tabs`
fix: call `g_free` on the return value of `g_filename_from_utf8` after the end of its lifetime
fix: Pack the return value early so that the `rustc` compiler can generate the `drop` glue on the error path when `matches!(status, err)`
fix: definitely memory leak happens on the paths of `from_glib_none` and `from_glib_full`
Zachary S:
glib: Use Ref(Mut)::filter_map in BoxedAnyObject::try_borrow(_mut).
Ángel Guzmán Maeso:
gio: Don't require the arguments of run() to be valid UTF-8
One column per quarter.
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="Alba Mendez: fix typo in Objec
Alba Mendez:
fix typo in ObjectExt::property_value docs
Sebastian Dröge:
Update gir / gir-files
Regenerate with latest gir / gir-files
gio: Add forgotten socket_msg_flags modules to lib.rs
Add various missing Gir.toml checks
Remove various unused dependencies
gio: Fix code style
gio-unix: Fix order of types in Gir.toml
gio: Add missing `unsafe`
Add AI contribution policy section to the README.md
Update Cargo.lock
Update versions to 0.22.8
Tau Gärtli:
Add safe wrapper for g_log_writer_default_set_debug_domains
Tomoaki Kawada:
glib: gate `BookmarkFile` with `cfg(feature = "v2.76")`
glib: remove `g_bookmark_file_copy` polyfill
glib: require `A: 'static` in `Variant::from_data[_with_type][_trusted]`
…of new clippy warnings glib-win32: Add back deprecated versions of package installation directory functions Update versions to 0.22.6
Dario Marino Saccavino:
gio-unix: Do not expose DesktopAppInfo on macos
Sebastian Dröge:
glib: Move compile tests from trybuild2 to trybuild
glib-macros: Move compile tests from trybuild2 to trybuild
Update Cargo.lock
glib-win32: Fix docs build
Regenerate with latest gir-files
win32: Mark `get_package_installation_directory_of_module()` as manual
glib: Add new `v2_90` version feature
glib: Fix a couple of new clippy warnings
glib-win32: Add back deprecated versions of package installation directory functions
Update versions to 0.22.6
github-actions[bot]:
Update gir-files
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="Carlos Martín Nieto: glib: use
Carlos Martín Nieto:
glib: use `pointer::addr()` to resolve strict provenance lint
glib: use exposed provenance when we cannot copy one
glib: make use of `mem::offset_of!()`
Sebastian Dröge:
Update gir-files
Regenerate with latest gir-files
Update versions to 0.22.3
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="Bernhard M. Wiedemann: glib-ma
Bernhard M. Wiedemann:
glib-macros: Use BTreeMap instead of HashMap
Biagio Festa:
glib-macros/async_test: unwrap result when setting default context
glib-macros/async_test: dont move main context within closure
glib/bytes: relax start offset constraint for `from_bytes`
Bilal Elmoussaoui:
ci: Switch from gsvbuild to MSVC
Generate bindings for win32/unix GLib/Gio
Build new crates on CI
gio/unix: Remove the manual fallback for MountEntry
glib: Lower host dep requirement
glib/unix: Add missing futures feature
gio/unix: Ignore a clippy lint
gio: Comment out a test & drop UnixFdMessage
gio/tests: Remove no longer useful headers
gio: Move various config options to gio-unix
glib: Remove no longer needed manual ffi functions
glib/sys: Don't generate UnixPipe
Regenerate with fixed GIR files
glib/source: Fix imports on Win32
glib/win32: Add missing imports
gio/win32: Manually implement streams
gio/win32: Add a type for GNetworkMonitorBase and drop duplicated manual ones
gio/win32: Add missing dep
deny: Drop no longer needed skips
Add missing licenses
Adapt to rust nightly docs changes
gio: Move test to gio-unix
gdk-pixbuf: Ignore another clippy lint
Fix docs for new crates
Force update windows-sys for new crates
win32: Always depend on windows-sys
win32: Guard std::os::windows usage
gio/win32: Add missing feature
Re-export preludes
glib: Use 'static lifetime for nick/name
Use 'a lifetime instead
glib: Mark push_thread_default as renamed
Casey Jao:
Clarify the GObject subclass mechanism
Add missing comment markers
Update glib/src/subclass/mod.rs
Clarify Rust-C analogy for external interface
Improve diagram
Fix alignment
François Laignel:
gio: fix compilation with beta toolchain
Guillaume Gomez:
Update `trybuild2` version to `1.3.0`
Marc-André Lureau:
glib: fix GStringBuilder::copy_into
glib-macros: make proc-macro-crate optional
glib: add 'futures' feature
workspace: use glib default-features = false
Maximiliano Sandoval:
image: Add python3-requests
binding_group: Rename transform fns to with_value
binding_group: Add lifetimes to BindingBuilder fns
binding_group: Add transforms with concrete types
binding_group: Add test for concrete transforms
Philipp Jungkamp:
gio: Fix segfault in ListStore::find_with_equal_func
gio: Add exit_code methods to ApplicationCommandLine
gio: Remove {set,get}_exit_status from Gir generation
gio: Fix ApplicationCommandLineExtManual draft
glib: Add logging bridge for structured logs
Renyi Zhao:
glib: Fix misuse of operator in subtract_days
pango: Fix out-of-bounds access in itemize functions
graphene: Fix UB in intersect_triangle by validating t_out before assume_init
cairo: Add bounds check for nth in region_get_rectangle to prevent UB
cairo: Fix integer overflow in create_for_data's len check
glib: Fix UB in spawn_async_with_pipes by validating success before assume_init
Rose Davidson:
cairo: Fix return type for cairo_script_create_for_stream.
cairo: write-to-stream callbacks should accept const pointers to data
Sebastian Dröge:
Post release version bump
Deploy 0.21 docs and drop 0.15 docs
glib: Fix new clippy warnings
glib: Only build regex compiletests if the corresponding feature is enabled
glib: Fix segfault in `List::retain()`
glib: Compare lengths in `<StrV as PartialEq<[&str]>>::eq` too
glib: Null-terminate on every iteration in `PtrSlice::extend_from_slice`
glib: Avoid more integer overflows when reserving space in `PtrSlice` / `Slice` / `StrV`
Update Cargo.lock
gio: Make etag in `File::replace_contents_async()` optional
glib-macros: Make main context the thread-default one in `#[async_test]`
pango: Generate new `FontColor` enum
pango: Add new `v1_57` feature
ci: Don't build pango with `--all-features` for now
glib: Fix pointer signedness
gio: `DataInputStream::read_line_async()` can return `None` slices
gio: Use correct finish function for `DataInputStream::read_line_utf8_async()`
Update Cargo.lock
Allows windows-sys 0.61 too
Update Cargo.lock
deny: Update
pango: Fix off-by-one in assertion for `pango::itemize()`
glib: Update expected compiler error texts in compiletests for rustc 1.90
glib: Fix some new 1.90 clippy warnings
Update dependencies
glib: Fix typo in comment
gio: Fix typo in docs
Update MSRV to 1.86
Update all dependencies
Switch MSRV CI to 1.86
glib: Fix typo in docs
ci: Only run glib-macros tests on stable
gio: Remove pointless, empty build.rs
glib: Fix `Regex::match` API
glib: Add some missing debug assertions to the `Regex` API
gio: Fix GSettings test
Update gir
Regenerate with latest gir
Remove `--cfg docsrs` from the Cargo.tomls
Update docs.rs hacks in cairo-sys build.rs
Don't pass `--cfg docsrs` via RUSTFLAGS on the CI
glib: Clean up `Regex` tests
Update various dependencies
glib-sys: Add type aliases for all the GLib types
Update MSRV to 1.92
Fix new clippy warnings
Update Cargo.lock
Update versions to 0.22.0-alpha.1
Add missing package metadata to Unix/Win32 crates
Add more missing package metadata to Unix/Win32 crates
Lower local workspace dependencies to any alpha version
Add workspace dependencies for Unix/Win32 crates
Untangle Win32/Unix crate dependencies some more
gio-win32: Fix FFI crate name
Run `cargo fix --edition`
Update to edition 2024
Change various code to avoid too early dropped temporaries
glib-macros: Fix downgrade macro
gio: Remove unnecessary parenthesis around type
Remove unnecessary unsafe blocks
Update gir
Regenerate with latest gir
gio: Fix indentation
glib: Allow wrapper macro to expand unsafe blocks
Fix a couple of new clippy warnings
Update versions to 0.22.0-alpha.2
Update Cargo.lock
Update to `resolver = "3"`
glib: Mark `setenv()` / `unsetenv()` as unsafe
Update GLib 2.88 version requirement to >= 2.87 and 2.86 to >= 2.86
glib-unix: Mark g_closefrom() as unsafe
gio: Generate new API
gio: Add missing v2_88 feature
ci: Run glib/gio tests with v2_88
Update Cargo.lock
Update versions to 0.22.0-alpha.2
cairo: Use dynamically linked x11-dl crate instead of x11
glib: Move some Windows-specific unsafe code in unsafe functions into unsafe blocks
Update gir
Regenerate with latest gir
gio: Add back `Socket::from_raw_fd()` / `::from_raw_socket()`
Update gir
Regenerate with latest gir
Update dependencies
Update versions to 0.22.0
Sebastian Wiesner:
Impl AsFd for FileDescriptorBased
Implement Display for ObjectPath
Add subscribe_to_signal
Use "named" parameters for subscribe_to_signal
Add receive_signal and receive_signal_parameters
Add simple example about DBus signals
Tau Gärtli:
Generate Gio.DBusObjectManagerClient
Move customized auto-generate code to manual
Combine impls
Mark as send+sync
Ignore C APIs
Manually implement interface-proxy-properties-changed
Suppress doc alias from checker
Split constructors to simplify signature
Update gir and no longer needed remove manual impls
Regen other crates
Split sync methods into overloads with and without fn
Split async+callback methods into overloads with and without fn
Overloads for new_for_bus
gio: Make DBusProxy subclassable
gio: Add object manager example
Thibault Saunier:
glib: Add Error::with_domain constructor and code getter
Tomoaki Kawada:
glib: Fix overflow in `StrV::reserve` when checking capacity
glib: Fix overflow in `StrV::extend_from_slice` when checking capacity
glib: Null-terminate on every iteration in `StrV::extend_from_slice`
glib: Compare lengths in `<StrVRef as PartialEq<[&str]>>::eq`
Zachary S:
glib: Don't drop `T` if `ThreadGuard<T>` is dropped on the wrong thread.
glib: Don't double-panic if `ThreadGuard::into_inner` is called on the wrong thread.
fbrouille:
Add gio::IOModule and gio::IOModuleScope
Add gio::File
Fix gio::file::measure_disk_usage
Add an example for gio::Vfs implementation
Add gio::subclass::FileEnumerator async vfuncs
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fix heap buffer overflow due to operator precedence
Ben Kimock:
Benji Smith:
Bilal Elmoussaoui:
v1_52Fina Wilke:
construct_only propertiesconstruct_only attributeJan Alexander Steffens (heftig):
ptr::offset/offset_from for private/impl offsetMaximiliano Sandoval R:
From for constant GStr slicesSebastian Dröge:
pango: rename removed clippy lint
Bilal Elmoussaoui:
Jason Francis:
From<GStringPtr> for GStringSeaDve:
ToValue::to_valueValueDelegateStaticType, FromValue, ToValue, HasParamSpec for Box<str>Sebastian Dröge:
v2_76 featureglib: Implement PartialEq and PartialOrd for WeakRef
Andrey Kutejko:
PartialEq and PartialOrd for WeakRefBilal Elmoussaoui:
ObjectImpl vfuncs overridesObjectImplJason Francis:
WatchedObject for BorrowedObjectMathieu Duponchelle:
Matteo Biggio:
SimpleAction: take ownership of value without leaking itPaolo Borelli:
HasParamSpec for Vec<String> and StrVHasParamSpec for SharedBoxedStrV::join() methodStrV::contains() methodSeaDve:
Properties macro docsSebastian Dröge:
NULL to g_list_store_find_with_equal_func_full()glib: Deprecate paramspec new() functions in favour of the builder
Aaron Erhardt:
Alberto Ruiz:
animation_get_size()Andrey Kutejko:
Bilal Elmoussaoui:
Make GioFuture handle infallible futuresFrom traits for StrVGuillaume Gomez:
clone! proc macroclone! UI testsJason Francis:
impl From<T> for Variant to move into variantsInto<Variant> for SettingsExtManual::setimpl From<T> for Value for manually implemented typesInto<Value> instead of ToValue when possibleDatagramBasedwritev methodswritev in stream impls for io::Write, AsyncWriteSourceId::as_rawspawn/spawn_localThreadPool push methodsspawn_blocking#[inline] to more GString trait methodsDisplay for GStrGStr::to_bytes to as_bytesGStr and GString constructorsGStr methods constToGlibPtr check interior string nuls in debug modeFrom implementations for GStringToGlibPtr implementations for more string typesGStringBuilder::as_gstr and AsRef<GStr>gformat! for directly formatting into a GStringIntoGStr traitsGString to store small inline stringsIntoGStrGFileDescriptorBasedstrcmp for GStringPtr comparisonsGStr::from_ptr_checked()Matteo Biggio:
ToGlibPtr<*mut _> for boxed typesMaximiliano Sandoval R:
ExitCodeMițca Dumitru:
g_utf8 APIscompile_resourcesPaolo Borelli:
ActionEntry: take proper types instead of stringsSimpleAction: take state by valueStrV for the simple proxy resolver APIStrV for TlsConnectionreorder_itemsStrV for the file_info APIGStr for the manual extension point implementationStrVItem to GStrPtr and make it cloneable and transparentkey_file: return PtrSlice<GStrPtr>GStrPtr to GStringPtrGStringPtr: remove impl AsRef, provide explicit to_gstr() and to_str()as_slice constFromIterator for ListStoredefault = value attribute ListModel::iter() infallibleSebastian Dröge:
ObjectBuilder::type_ObjectSubclass::obj() as a shorter alias for instance()g_object_run_dispose()imp.instance() to imp.obj()pango::Language::from_string() infallibleObjectImpl::set_property() and property()Language::get_preferred()v2_76 featureIntoGlibPtr for Option<T>function_name! macro and make use of that for glib::BoolErrorFrom<&GStr> and From<GString> for Cow<GStr>GStr::from_ptr_lossy() and GString::from_ptr_lossy()GStringBuilder as BoxedInline to avoid a useless additional heap allocationGStringBuilder by construction always returns an UTF-8 string and never a NULL pointerGStringBuilder construction to have fewer function callsPhantomData as Stash::Storage if nothing has to be stored except for a lifetime&GStr for ToGlibPtr::to_glib_none()[Type]::to_glib_none() to not have an additional heap allocationVec for [T]::to_glib_none()[T]::to_glib_none()UserDirectory::NDirectories enum variantOsStr::to_str() instead of OsString::into_string() to avoid unnecessary heap allocationsas_ptr() implementation and add new function to borrow values from pointers directlyglib::PtrSlice API more complete and similar to Vecglib::ObjectRefg_malloc() instead of g_malloc0() if we initialize the result anywayToGlibPtrFromSlice impls for shared/boxed/object/boxed-inlineglib::Slice API more complete and similar to VecPtrSlice to Slice and backglib::SList and glib::List API more complete and similar to LinkedListglib::StrV for NULL-terminated string arraysList/SList with Copy typesglib::wrapper! for BoxedInlineglib::wrapper! for BoxedInline with generic parametersFromGlibContainerAsVec implVec FFI translation functionsIntoGlibPtr instead of to_glib_full() in more placesIntoGlibPtr implementation for BoxedInlineValueArray pspec element specOption wrappingValue::from_type_unchecked()Value::from_type_unchecked() where applicableIntoGStr trait in a couple of placesgformat! macro if GString is not in scopeMainContext::spawn_from_within() for spawning non-Send futures from another threadParamSpec::is() helper functionnew() functions in favour of the builderObjectSubclass::instance() / from_instance() in favour of the shorter versionsObjectBuilder a bit more efficientFrom<&String> for GStringObject constructors(Async)InitableBuilder publicGStr manuallyIntoStrV in scope for v2_60 tooTimeZone::adjust_time() instead of ignoring itObject::new_default() to Object::new() and remove deprecated APIOption<Duration> from AnimationIter::delay_time()SystemTime instead of Duration for PixbufAnimation::iter() and PixbufAnimationIter::advance()transfer-none return values in subclassing are staying alive long enough'static &str in File::enumerate_children_async() and enumerate_children_future()NULL debug assertion to from_glib_full() and others for GObjectsValueArray Value traits manually because of the custom paramspecYuraIz:
ranfdev:
#[properties] derive macroconstruct_cell, too experimentalBoxedimpl Parse for ReceivedAttrsPropertyGet for T: HasParamSpecgio: Implement g_cancellable_set_error_if_cancelled() manually to work around non-standard GError behaviour
Aaron Erhardt:
Colin Walters:
g_cancellable_set_error_if_cancelled() manually to work
around non-standard GError behaviourGuillaume Gomez:
Jason Francis:
Sebastian Dröge:
imp.instance() to imp.obj()ObjectSubclass::obj()Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →