On 2020-06-28 18:01:08 +0000, c-smile said:


Sciter's author here.


Hi Andrew, thank for jumping-in.


Sciter API is pretty compact, it is exposed from sciter.dll as a structure ( https://github.com/c-smile/sciter-sdk/blob/master/include/sciter-x-api.h#L50 ) and normally application use 20-30 functions of it. Sciter is perfectly suitable for D. D integration was one of design targets from the very beginning.


I didn't know that D was taken into account for Sciter nor that it's well suited to work with D. Might be a good addition to your web-page (if it's not already there and I overlooked it).


So, this means, that all the embedding principals work with D too?


Just in case, initially Sciter was meant to be written in D. Here is the story: https://sciter.com/10-years-road-to-sciter/


Oh, cool. Again, if this thing is so good integrated with D, that should be made more public.


I still think that among native languages D lang is the most suitable one for GUI development. GC is the must for UI if to consider complex ownership graphs that frequently contain loops.


I agree... it feels very natural to do such frameworks in D.


Having said that, it is possible but quite hard to make an embeddable/shared (to other systems) GUI engine in D, for very same reason as the above. The most feasible approach, I think, is along the lines of my Quark project ( https://quark.sciter.com ) - self- sufficient executables that contain GUI engine linked statically.


That's a very interesting thing! I have some questions:


* Our goals is to create a zero-dependency standalone EXE application. As I read this, this is possible? We would have additional D/C code we want to all "link" statically.


* Does quark does anything against reverse engineering? I mean, all the script stuff is very nice, but we have to be sure, things are not changed, extracted, etc.


* Is the scriping engine, which seems to be genuinly done from scratch, fully JS compatible? Or how does it fit into the overall web-stack space? Can exteranl frameworks be used, too? Or do these need some Sciter specific adjustments?


If to consider a "perfect and modern D GUI library":


1. It should have unified DOM serializable to HTML/XHTML. There are many good reasons for that, from Accessibility (a.k.a. Section 508), to things like enabling React alike functionality and JSX. D syntax may even support JSX natively in the way I did in Sciter's script: https://sciter.com/docs/content/script/language/ssx.htm


I always see two parts:


1. The "how to code it" part, which should use a declarative DSL that integrates with the rest of the D application code pretty simple and without any friction. If there HTML/CSS/JS is the best combo, could be discussed. At the end of the day, I think this is all more about taste than technological superiority.


2. The "how to display" part. I prefer to have a GUI toolkit, that doesn't use any native widgets, instead just renders the stuff the app needs. I want access from high-level abstraction to low-levels, so I can get in between and do whatever is required for my app.


2. It should be style-able, so is CSS or its subset. It is again flexible and 95% UI developers know it already. Style-ability here means not just colors but flexibility and configurability of element flows (layout manager in Java AWT terms).


Agree, again, if this is CSS or something else, can be discussed. But of course you are right, that more and more people know this CSS stuff, it doesn't make a lot of sense to reinvent the wheel.


3. It shall use GPU rendering as much as possible. That's the must for high-DPI monitors.


Yes. Or have a very sophisticated, hight speed sofware renderer.


4. Implementation shall be compact - each D GUI application will include it statically and compilations time shall be short.


Yep!


Please let me know if someone will start doing anything close to the the above in D - I can help.


I might turn this the other way and take a deeper look into what you have. Beside, doing a GUI library is a fun project, I have a clear business use-case behind it.


Going to PM you for more details, that might not be that interesting for the community.


-- 

Robert M. Münch

http://www.saphirion.com

smarter | better | faster