Comments (5)
I'm fine on whatever license.
I think's production ready, but not feature complete, there's a lot of things that still missing, from what I remember now:
- Revisit GVariant implementation.
- Check missing bits on GValue implementation.
- Support to declare GObject properties.
- Improve structs, so a Point struct with just 2 integers don't need to allocate heap memory.
- Support to declare signals with GObjects, enums and any other Crystal object as parameters (currently only number, bool and String are supported).
- Support to declare interfaces to GObject type system
- Support to implement GObject interfaces on user types.
- Support to implement virtual functions.
Most of these things are not hard to do. Maybe the submission to Gnome circle can give a bit of visibility to the project, and if I have time I can then write some blog posts on planet.gnome about the bindings development, so yes, I think it's a good idea.
However we still have not much applications done with this bindings yet. I'm rewriting Tijolo using this binding but the current last release still using GTK3 + https://github.com/jhass/crystal-gobject and leaking memory :-(.
I didn't know about your Collision application, so I think it would be nice to also add a list of apps using the gtk4/adwaita shard on README, not only for visibility, but also because it helps people new to GTK to try out the shard.
About having a "central authority", I think this would be useful if the central authority be gnome itself, however they use their own instance of gitlab, I not only prefer to work on github as I think github has more visibility, but if some day we get blessed by gnome org we can move the repo to their gitlab instance and keep mirrors on github.
from gi-crystal.
I'm fine on whatever license.
Not sure if one of the two projects should re-license just so they are the same one or just leave it as is.
However we still have not much applications done with this bindings yet. I'm rewriting Tijolo using this binding but the current last release still using GTK3 + https://github.com/jhass/crystal-gobject and leaking memory :-(.
I didn't know about your Collision application, so I think it would be nice to also add a list of apps using the gtk4/adwaita shard on README, not only for visibility, but also because it helps people new to GTK to try out the shard.
Yeah, I don't think Collision alone is going to be enough 😢 Other options are either going around migrating any gtk3 crystal apps to gtk4 or getting around to finishing some wip apps I have or get some new people to give it a try!
For newcomers I had written https://ultimate-gtk4-crystal-guide.geopjr.dev some time ago (switched to a new frontend recently), but it might be a bit outdated or wrong in some places as it mostly documents my workflow. However it does cover everything Collision supports + more (gresource, UI files, css, icons, i18n with gettext, bundling files, flatpak, makefile, multithreading, creating an example stat info app step by step & others). Perhaps we could work on that to have a defacto guide (I think gtk-rs also has a similar book) to help newcomers.
Collision has been around for like almost a year(?) and hadn't had a single bug report related to the bindings which is a +1 on the stability of them.
About having a "central authority", I think this would be useful if the central authority be gnome itself, however they use their own instance of gitlab, I not only prefer to work on github as I think github has more visibility, but if some day we get blessed by gnome org we can move the repo to their gitlab instance and keep mirrors on github.
I think I used the wrong word, I meant that eg. If gi-crystal introduces a breaking change or important fix then you or the central authority(?) should be able to instantly update the other libraries (like libadwaita.cr or gettext) so users won't have to wait for (in the case of libadwaita.cr) me to update it or review and merge a PR for them to use it.
I don't really have an opinion on the others, let me know if there's anything I can help with (even indirectly like guides, websites, logos etc)!
from gi-crystal.
Perhaps we could work on that to have a defacto guide (I think gtk-rs also has a similar book) to help newcomers.
I think translate the gtk-rs book to Crystal would be a very good idea, however besides English not being my mother language I prefer to spend my spare time making gi-crystal better rather than translating (to Crystal, not Portuguese!) a book, even knowing it would be extreme valuable.
About get told about breaking changes, I think this isn't a problem now, and probably not in the future as well if depending shards stick to a version in shard.yml
instead of just use master
branch. To be extra safe an application can also include in the released tarball the generated bindings, so the code doesn't stop compiling if some new version of glib/gtk/etc introduces some construct that crashes the generator.
Anyway, every time I start coding Tijolo I find new bugs/missing features on gi-crystal, so I think we felt it as production ready just because there's not much people using it yet, hehehe
from gi-crystal.
BTW I just enabled discussions https://github.com/hugopl/gi-crystal/discussions 🙂
from gi-crystal.
Great! You can turn this into a discussion by clicking the "Convert to discussion" button on the sidebar (so it doesn't count as an issue!)
from gi-crystal.
Related Issues (20)
- Boolean return type for vfuncs are not converted
- Enforce type safety on vfunc return types.
- WebKit2 library define a None enum != 0 and fail to compile
- Enum and flags can't be ignored in binding.yml
- Virtual functions does not obey return value ownership transfer HOT 1
- Virtual functions that return nullable objects fail to compile
- Support GC resistant GObject subclasses HOT 2
- Boolean false constants are bindinded with true value
- Error compiling harf_buzz - can't use variable name 'extents' inside assignment to variable 'extents' HOT 3
- nullable transfer full params doesn't check for null before increase object reference.
- transfer full interface parameters don't get their reference increased.
- Fail to compile with newer libraries. HOT 1
- g_unichar must be Crystal Char, not UInt32
- Interface casts crashes
- [Request] non-void signals HOT 2
- Parameters with filename tag must be declared as Path | String
- ::Bytes should be used on array of unsigned chars parameters
- User signals with nilable parameters doesn't work. HOT 1
- syntax error in './gsk-4.0/path_point.cr:122:13': can't use variable name 'center' inside assignment to variable 'center' HOT 3
- Latest glib API changes HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gi-crystal.