[HN Gopher] GTK4 Bindings for Common Lisp ___________________________________________________________________ GTK4 Bindings for Common Lisp Author : oumua_don17 Score : 90 points Date : 2022-09-20 15:42 UTC (7 hours ago) (HTM) web link (github.com) (TXT) w3m dump (github.com) | kazinator wrote: | I'm guessing this is small because it relies on GObject | Inspection. | | This is a Gnome feature whereby C libraries are accompanied by an | XML description of functions and types. The XML description | annotates semantics, not only syntax. Like if a function has a | pointer parameter, does it have to be malloced, and does the | caller free it or the callee? This information is not possible to | determine from parsing C header files. | | If you can parse the GObject XML, you can then generate FFI | bindings (which can be done in Lisp easily without any textual | code generation hacks). | audidude wrote: | Before people get too up-in-arms about that being XML, that is | just the first step in the GObject Introspection compilation. | | The second step builds a .typelib file which is a mmap()'able | data-structure used at runtime by dynamic languages. It's | smaller as it doesn't contain things like function/class | documentation. | | Additionally, the language bindings tend to use the | GIRepository base structure which handles loading those | mmap()'able data structures with an C API on-top of it. | [deleted] | [deleted] | tabtab wrote: | It's not good D.R.Y. to reinvent a binding library for each and | every application language. What's needed is a state-ful GUI | markup standard. Then any language that can emit and read XML can | use the GUI kit/browser/component, no binders needed. | JasonFruit wrote: | That way, your language can use any toolkit, such as WebKit or | Gecko. | spicybright wrote: | If you did that, you limit what the API of a framework can do, | you either can't use ones that fall outside that spec, or you | have to jump through hacky hoops to get it working. | | Experienced engineers know D.R.Y. has it's uses, but isn't a | good hill to die on. | 13415 wrote: | What's the advantage? This merely seems to add another layer of | abstraction. | Spivak wrote: | What you're describing is GObject inspection. It's literally a | series of XML documents that can be used to autogenerate ffi | bindings in any language. The future is now. | pavon wrote: | No one will want to write GUI code that directly parses and | generates XML, so every language will end up putting wrappers | around that, and you are back to where you started with an | expensive translation layer in-between. | | Having a machine format that describes the interface and | facilitates auto-generating the bindings, like GObject | introspection is a better option and exists today. Even then | the auto-generator will need to be custom for each language, to | handle integration with the language's standard library data | structures, memory management and the like. | sylware wrote: | Does GTK4 finally implement its own C coded unicode text shaper | (or at least, a roman script text shaper)? No I don't want that | horrible c++ diareha which is harfbuzz. | chris_wot wrote: | What is the problem with harfbuzz? we use it extensively in | LibreOffice, works great! | nerdponx wrote: | I love that LibreOffice lets me use the full range of | OpenType features in fonts. Do I have Harfbuzz to thank for | that? | | But please let me edit the sample text in the OpenType | features modal, so I can actually see the effects of my | changes without leaving the entire Font window :) | audidude wrote: | Perhaps GTK 4.8 is the GTK for you. | | https://blog.gtk.org/2022/09/19/inside-the-gtk-font- | chooser/ | nerdponx wrote: | Based on the font chooser, absolutely. Thanks for this | link. | | ...but did they fix the file picker yet? | colejohnson66 wrote: | What's wrong with Harfbuzz? | audidude wrote: | Harfbuzz exposes a C API, why would you need to use C++? | | Additionally, it works extremely well with GTK 4 via Pango and | you can often interoperate between the two layers if you even | _need_ to touch a hb_face_t /etc. In fact, the only time I had | to mess with Harfbuzz was when integrating GPU-rendered glyphs | via Behdad's GLyphy shaders. | sylware wrote: | It has a C API, but it is written using c++. A long time ago, | I did a build of GTK3, to remove the c++ dependency, I did an | implemention of this C API in C, only for roman scripts | though. I bet this C API was "obsolescence planned" and if I | ever need GTK again (unlikely), I will code again a C | implementation for roman scripts. | | There is an alternative from IBM, ICU, it was properly coded | in C, but it was switched to toxic c++. | audidude wrote: | Sounds like C++ has hurt you quite a bit. | | I mean, I don't use it, and I've been writing C for a solid | 25 years, but Behdad is one of the best engineers I've ever | met in my life. So I definitely don't share your opinion of | the code or the quality. | sylware wrote: | c++ is toxic for humanity because of its grotestquely and | absurdely complex and massive syntax and its compilers. | This is not a matter of opinion, this is an absolute | unquestionable truth. | | Carefull, I am not saying plain and simple C is better: | it is only orders of magnitude less worse as there is | already way too much in its syntax. Some would call that, | the "most reasonable compromise". | audidude wrote: | Cool story. | sylware wrote: | The beyond sanity complexity of c++ is not a story | unfortunately. The real sad story is that some ppl think | they are smart because they code c++. | ducktective wrote: | Also see: https://lispcookbook.github.io/cl-cookbook/gui.html | | These may be of special interest: | | A lightweight QML-only ECL binding to Qt5/Qt6 : | https://gitlab.com/eql/lqml | | CLOG - The Common Lisp Omnificent GUI : | https://github.com/rabbibotton/clog | mikessoft_gmail wrote: | [deleted] ___________________________________________________________________ (page generated 2022-09-20 23:01 UTC)