The latest crates update is about tightening up the safety guarantees.

Initialization and threads

  • gdk and gtk will panic if you try to use them prior to calling gtk::init or from any thread but the main1 one. We intend to add a set of APIs with static checks but there’s no specific plan at the moment.
  • glib::idle_add and glib::timeout_add now require the closure to be Send because it might get executed on a different thread.
  • gtk has got relaxed versions of these, that don’t require Send but will panic if called from non-main1 thread.
  • Panicking in a callback will terminate the process because unwinding across FFI is not allowed.

Unfinished APIs

What’s up with the documentation?

We’ve realized that we can’t take the documentation from an LGPL licensed library and just slip it into an MIT-licensed one. Consequently we had to move almost all doc comments into a separate repo. We will keep maintaining online documentation and @GuillaumeGomez is working on a tool, that will allow to put the doc comments back locally.

  1. We currently define the main thread as one, on which gtk::init was called. This does not reflect the OSX requirements well and will be adjusted in the future. 2