NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1575 most downloaded on crates.io
Rust bindings for the GdkPixbuf library
Last release 7 months ago
20 Feb 2026
Ships fairly regularly
a new release about every 5 weeks
Rarely documented
notes for 6 of 42 stable releases
1 version withdrawn
withdrawn after publishing
11 years old
46 releases · first in 2016
<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
One column per quarter.
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:
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: HasParamSpecexamples: spawn async gio task on the current thread context
Paolo Borelli:
Sebastian Dröge:
gdk-pixbuf: Add PixbufAnimation subclassing support
Bilal Elmoussaoui:
PixbufAnimation subclassing supportPixbufAnimationIter definitionPixbufAnimationIter subclassing supportPixbufLoader subclassing supportColin Walters:
as_ptr generated implsJason Francis:
types::register_type()Sebastian Dröge:
ObjectImpl::set_property() and property()gio: 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
Your coding agent can read these notes before it upgrades. Set up the MCP server →