On Friday, 22 May 2026 at 17:20:21 UTC, Anton Pastukhov wrote:
I have a fork of DlangUI.

Some thoughts on D/UI efforts.

First and foremost, D is nearly ideal language for UI frameworks, yes. So I understand why ["Уж сколько их упало в эту бездну" / "Oh, how many of them fell into this abyss"](https://ruverses.com/marina-tsvetaeva/how-many-has-this-chasm-already-swallowed/7085/), myself is included :)

### Text Layout

Big part of UI is correct text rendering. That means support of not just LTR but RTL and ideally TTB text layouts. DLangUI lacks this as far as I can see in its codebase. Emojis rendering is part of this too (what is the modern UI without those grim faces?)

1. To properly handle those, UI framework should use HarfBuzz (glyphs composition), libgrapheme (text reordering), UNICODE symbol classifications (icu4c?) and/or the like.

2. Otherwise the framework shall operate by more high level constructs like IDWriteTextLayout, Pango, CoreText, etc. Those allow to deal with text rendering and measurement in a box without diving onto separate glyphs level (that is the abyss, indeed). But those text layout frameworks are closely tied with particular graphics stacks and usually cover just basic layouts (text-in-a-box, but not text-inside-arbitrary-shape).

### Windowing Backends

SDL, GLFW and Co. are mostly about basic window creation and support of so called "message pumps" - waiting for physical events from input devices (e.g. MOUSE_DOWN) and dispatching/transforming them into logical events (CLICK, DBLCLICK, etc.).

But there are quite many desktop UI events and features that are coming from window managers and UI subsystems that are not that trivial. Standard dialogs, native window styles, drag-n-drop, gesture handling. Think about animated touchpad scroll for example (good luck to implement that with SDL on major desktop OSes).

I am pretty confident that Window and Application abstractions should end up using more high-level (than SDL) API levels. On Windows and MacOSX there are no other options as their native API (HWND, NSWindow) and that is sufficient.

But on Linux, on that "UI Zoo", we should ideally cover more options: window and application management should use GTK/Gnome, KDE/Plasma, etc. Only those provide proper desktop integration facilities and events. Use of naked X11 and Wayland API should be left as a last resort only.

### General thoughts

"Ложка дорога к обеду" / "Price of spoon is higher when time is closer to dinner".

I mean that time for pure D UI was gone 10 years or so ago. It could be D at Mozilla but not that esoteric Rust. My educated guess is that Rust was born in understanding that development in large and distributed community required better (more strict and robust in many senses) language. So they are trying to do the whole thing in Rust now. Instead of D, sigh.

So the practical option now is, I think, to decompose universal application framework into UI layer and the rest (a.k.a. BLL - business logic layer).

Brute reality says that UI layer shall be made in C/C++ so it can be shared (and effort paid off considering #1 and #2) with other languages.

At the end UIL and BLL use quite different code flows, ownership graphs and life cycles so such split is natural and allows to get the best of two worlds.

My pardon if for someone all this may sound as a demotivator but this was not my intent.
  • Dcanvas, a fork ... Anton Pastukhov via Digitalmars-d-announce
    • Re: Dcanvas... Sergey via Digitalmars-d-announce
      • Re: Dca... Anton Pastukhov via Digitalmars-d-announce
    • Re: Dcanvas... c-smile via Digitalmars-d-announce
      • Re: Dca... Anton Pastukhov via Digitalmars-d-announce
        • Re:... c-smile via Digitalmars-d-announce
          • ... Anton Pastukhov via Digitalmars-d-announce
            • ... just say no to phobos brainrot via Digitalmars-d-announce
              • ... Anton Pastukhov via Digitalmars-d-announce
            • ... c-smile via Digitalmars-d-announce
              • ... Dejan Lekic via Digitalmars-d-announce
                • ... c-smile via Digitalmars-d-announce
                • ... Adam D. Ruppe via Digitalmars-d-announce
                • ... c-smile via Digitalmars-d-announce

Reply via email to