Skip to content

Releases: gircore/gir.core

0.6.0-preview.1

07 Nov 20:33
ead37a8
Compare
Choose a tag to compare
0.6.0-preview.1 Pre-release
Pre-release

This release is the first preview of the upcoming 0.6.0 release. To get an overview of the planned features of the 0.6.0 release please see the corresponding milestone.

Notworthy

  • Update to GNOME 47 which includes GTK 4.16 and libadwaita 1.6.
  • The dummy implementation of INotifyPropertyChanged on GObject.Object was removed.
  • Propertydefinitions have a new Notify / Unnotifymethod which simplifies registration for property specific notifications. For details see the FAQ.
  • The size of the C long datatype on windows is now always 32 bit. On unix it corresponds to 64 / 32 bit depending on the system architecture. In earlier releases it was always 64 bit which was only correct for 64 bit unix systems.
  • The size of C gsize is now equivalent to nint. In earlier releases it was equal to long which was wrong on 32 bit based systems.
  • Fixed implementation of the memory pressure feature of records. In earlier releases memory pressure was only removed if Dispose was called. Now memory pressure is released automatically for records. The feature is not yet implemented for classes and will be part the full 0.6.0 release.
  • First steps to publish the GirCore generator as a dotnet tool.

What's Changed

  • Remove INotifyPropertyChanged by @badcel in #1061
  • Property: Add Notify / Unnotify methods by @badcel in #1062
  • Improve long handling for structs by @badcel in #1065
  • Remove duplicate semicolon in return statements by @adamreeve in #1068
  • Map "gssize" to native integers by @badcel in #1069
  • Improve long handling 2 by @badcel in #1067
  • Add nullable annotation to nullable string array parameters in internal methods by @adamreeve in #1079
  • Disable rendering code for repositories only required via includes by @adamreeve in #1086
  • documenting System.DllNotFoundException troubleshooting by @lamg in #1085
  • Improve struct freeing by @badcel in #1072
  • Improve logging by @badcel in #1093
  • Support loading repositories from files embedded as resources in GirTool by @adamreeve in #1091
  • Readme: Update status by @badcel in #1096
  • Generator: Support opaque typed records with copy / free annotations by @badcel in #1088
  • Support copy annotation typed records by @badcel in #1103
  • Add new modifier to class methods that hide base class methods by @adamreeve in #1097
  • Add DBus sample to read desktop appearance color scheme by @badcel in #1110
  • Foreign typed records: Implement IDisposable by @badcel in #1112
  • Foreign typed records: Require to implement a handle release manually by @badcel in #1113
  • Opaque typed records: Support adding memory pressure by @badcel in #1114
  • ImageSurface: Support memory pressure by @badcel in #1115
  • GObject.Type: Mark struct as readonly and make it a record by @badcel in #1117
  • Improve alias support by @badcel in #1119
  • GObject.Type: Add IsFundamental method by @badcel in #1123
  • Differentiate between Long and CLong by @badcel in #1126
  • Object: Fix ToggleNotify called after callback is disposed by @badcel in #1128
  • Update gir files by @badcel in #1132
  • Refactor GdkPixbuf-2.0.Tests by @badcel in #1133
  • Update macos runner to version 14 by @badcel in #1134

New Contributors

Full Changelog: 0.5.0...0.6.0-preview.1

0.5.0

08 May 19:18
386b22a
Compare
Choose a tag to compare

This release is the final version of the 0.5.0 release. This is a follow up release to preview.4.

Notworthy

Since 0.5.0-preview.4

  • All bindings were updated to support the GNOME SDK version 46. Among other things this adds support for GTK 4.14 and libadwaita 1.5. (#1052)
  • The libraries get build explicitly for .NET 8 (#1038). Remark: If support for .NET 6 / 7 is dropped those versions will get droped from GirCore with the following release, too
  • preview.4 added support for typed records but was missing a parameterless constructors. (#1002 )
  • Support for foreign records was added (#1010 )
  • Support for untyped records was added (#1013)
  • Support for untyped foreign records was added (#1029)
  • New samples for GTK were created by @kashifsoofi (#1022, #1024)
  • A bug was fixed if an object was not freed on main thread (#1045)
  • A bug was fixed if an interface was passed as a parameter into a method / function (#1055)
  • The homepage got updated with new content and a new docfx version (#1039, #1040)

0.5.0-preview.4

  • This release adds support for typed records constructors, methods, functions and fields. Previously in the public record API there was only the record type available without any possibility to access it's data. If you used some custom code to access this data please verify if you can replace this code with the newly available API. In general the available API surface should have improved significantly. (#965, #985, #986, #994)
  • The generation of typed records lead to several API breaks in the GObject namespace especially for the class GObject.Value. Those manually written methods originated from the very beginning of the project which were leaning into the direction to divert a lot farther from the original API. API breaks happened in other namespaces, too as manually written bindings got replaced by generated bindings which often have a slightly different method signature. (#981, #982, #991)
  • Enumerations got rebased on int instead of long to match their C definition. (#989)
  • More bindings for async methods (#993)

0.5.0-preview.3

  • Update to the latest Gnome SDK version 45. This includes GTK 4.12 and Libadwaita 1.4
  • Improved API surface for opaque records which are not registered in the GObject type system.

0.5.0-preview.2

  • More bindings for async methods (#953).
  • The parameterless Gio.Application.Run method got removed as it is not part of the official Gio Api. Additionally Gio.Application.RunWithSynchronizationContext now has a parameter to provide arguments. To achieve the original behaviour just pass null as a parameter (#956).
  • Fixed a bug introduced in preview.1 which caused an exception if an opaque typed record was used in a GObject.Value (#959).

0.5.0-preview.1

  • The Gtk-4.0.DependencyInjection project was removed as there is not one way to do dependency injection right. Every project needs to find it's own solution.
  • Improved API surface for opaque records which are registered as boxed types with the GObject type system.

What's Changed since 0.5.0-preview.4

Full Changelog since 0.4.0: 0.4.0...0.5.0

0.5.0-preview.4

13 Jan 11:31
ce3bceb
Compare
Choose a tag to compare
0.5.0-preview.4 Pre-release
Pre-release

This release is the fourth preview of the upcoming 0.5.0 release. This is a follow up release to preview.3.

Noteworthy:

  • This release adds support for typed records constructors, methods, functions and fields. Previously in the public record API there was only the record type available without any possibility to access it's data. If you used some custom code to access this data please verify if you can replace this code with the newly available API. In general the available API surface should have improved significantly. (#965, #985, #986, #994)
  • The generation of typed records lead to several API breaks in the GObject namespace especially for the class GObject.Value. Those manually written methods originated from the very beginning of the project which were leaning into the direction to divert a lot farther from the original API. API breaks happened in other namespaces, too as manually written bindings got replaced by generated bindings which often have a slightly different method signature. (#981, #982, #991)
  • Enumerations got rebased on int instead of long to match their C definition. (#989)
  • More bindings for async methods (#993)

If you encounter any errors, missing features or encounter problems to adopt to the new version please open an issue.

Important

There is currently no public parameterless constructor available for typed records. To create a new instance of a typed record you need to create a managed handle first. For example to create an instance of Gdk.Rgba it would be: new Gdk.RGBA(RGBAManagedHandle.Create()). There will be a new parameterless constructor in the next version.

What's Changed

New Contributors

Full Changelog: 0.5.0-preview.3...0.5.0-preview.4

0.5.0-preview.3

13 Nov 10:34
555492b
Compare
Choose a tag to compare
0.5.0-preview.3 Pre-release
Pre-release

This release is the third preview of the upcoming 0.5.0 release. This is a follow up release to preview.2.

Noteworthy:

  • Update to the latest Gnome SDK version 45. This includes GTK 4.12 and Libadwaita 1.4
  • Improved API surface for opaque records which are not registered in the GObject type system.

What's Changed

  • Prefer zero terminated string array over length based arrays. by @badcel in #962
  • Support opaque untyped records by @badcel in #942
  • Update dependencies by @badcel in #972

Full Changelog: 0.5.0-preview.2...0.5.0-preview.3

0.5.0-preview.2

11 Oct 19:29
87fc0b8
Compare
Choose a tag to compare
0.5.0-preview.2 Pre-release
Pre-release

This release is the second preview of the upcoming 0.5.0 release. This is a follow up release to preview.1.

Noteworthy:

  • More bindings for async methods (#953).
  • The parameterless Gio.Application.Run method got removed as it is not part of the official Gio Api. Additionally Gio.Application.RunWithSynchronizationContext now has a parameter to provide arguments. To achieve the original behaviour just pass null as a parameter (#956).
  • Fixed a bug introduced in preview.1 which caused an exception if an opaque typed record was used in a GObject.Value (#959).

What's Changed

Full Changelog: 0.5.0-preview.1...0.5.0-preview.2

0.5.0-preview.1

02 Sep 19:24
85a91e3
Compare
Choose a tag to compare
0.5.0-preview.1 Pre-release
Pre-release

This release is the first preview of the upcoming 0.5.0 release.

Noteworthy:

  • The Gtk-4.0.DependencyInjection project was removed as there is not one way to do dependency injection right. Every project needs to find it's own solution.
  • Improved API surface for opaque records which are registered as boxed types with the GObject type system.

What's Changed

New Contributors

Full Changelog: 0.4.0...0.5.0-preview.1

0.4.0

19 Jul 19:52
627a5c0
Compare
Choose a tag to compare

This release features a lot of improvements all over the board and several new contributors which is very much appreciated.

Noteworthy:

  • Lot's of improvements in regard to strings, callbacks, primitive value types and arrays which should improve the available API quite a bit. This includes support for Span<T> in the API to allow writing code without memory duplication if data is exchanged between .NET and native binaries.
  • Constants are now generated as const instead of static readonly
  • Several methods can now have the same name if it is defined in the gir file. This means that some existing APIs got a different name.
  • Support for C aliases. If a C library defines an alias a struct is generated to represent the alias. This makes the API more readable as the C# API does not need fall back to the underlying type anymore. There are implicit casts in place which should make it easy to continue to pass in primitive types into such parameters.
  • Properties clashing with it's containing class name were not generated before. Now they get generated and receive a suffix (_).
  • It is now possible to catch exceptions inside callbacks. Beforehand those were crashing the application. Now it is possible to use GLib.UnhandledException.SetHandler() to handle any unhandled exception.
  • There are now bindings for GtkSourceView available including some simple sample.
  • Windows: It is now obsolete to explicitly set the apartment state to STA in an application. This is done automatically during initialization if the operating system is windows.
  • It is possible to explicitly enable a SynchronizationContext to integrate async methods with GLib.MainLoop to avoid manual dispatching of code back into the main thread of GLib. This can be used either via GLib.MainLoop.RunWithSynchronizationContext() or Gio.Application.RunWithSynchronizationContext().
  • WebKit2-5.0 got replaced by WebKit-6.0 which introduces some API changes. The samples were updated accordingly.
  • Update to LibAdwaita 1.3
  • Update to Gtk 4.10

What's Changed

New Contributors

Full Changelog: 0.3.0...0.4.0

0.3.0

05 Feb 20:31
d95c297
Compare
Choose a tag to compare

This release features a new nuget package WebKit2 and it's depending libraries. Check out the WebKit samples to get a first impression. There was a new C testing library written by @cameronwhite, several bugs were squashed and new API was made available.

Noteworthy:

  • Explicit support for .NET 7. If you use this version with .NET 7 some reflection code is not executed in contrast to .NET 6.
  • Classes now have a static GetGType method #753
  • Support for detailed signals via GObject.Signal.Connect method #752

What's Changed

New Contributors

Full Changelog: 0.2.0...0.3.0

0.2.0

05 Jan 19:27
a336006
Compare
Choose a tag to compare

This release features initial support for interfaces, support for global and class functions, updated gir files (support for libadwaita 1.2), more cairo bindings and several bugfixes and code cleanups.

Noteworthy:

  • Module initialization is now done automatically if GIO / GTK /Adw Application is used #701
  • Object indexers to connect signals got removed #726

What's Changed

Full Changelog: 0.1.0...0.2.0

0.1.0

04 Dec 19:13
3347479
Compare
Choose a tag to compare

What's Changed

Read more