<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<meta name="CocoaVersion" content="1894.5">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 16.0px 'Inconsolata-dz for Powerline'}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 16.0px 'Inconsolata-dz for Powerline'; min-height: 21.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 12.0px; font: 16.0px 'Inconsolata-dz for Powerline'; color: #000080}
p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 16.0px 'Inconsolata-dz for Powerline'; min-height: 21.0px}
p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 16.0px 'Inconsolata-dz for Powerline'}
p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 16.0px 'Inconsolata-dz for Powerline'; color: #000080; min-height: 21.0px}
p.p7 {margin: 0.0px 0.0px 0.0px 12.0px; font: 16.0px 'Inconsolata-dz for Powerline'; color: #000080; min-height: 21.0px}
p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px 'Inconsolata-dz for Powerline'; min-height: 21.0px}
p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; font: 16.0px 'Inconsolata-dz for Powerline'; color: #808080}
</style>
</head>
<body>
<p class="p1">On 2020-06-28 18:01:08 +0000, c-smile said:</p>
<p class="p2"><br></p>
<p class="p3">Sciter's author here.</p>
<p class="p4"><br></p>
<p class="p5">Hi Andrew, thank for jumping-in.</p>
<p class="p4"><br></p>
<p class="p3">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.</p>
<p class="p4"><br></p>
<p class="p5">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).</p>
<p class="p4"><br></p>
<p class="p5">So, this means, that all the embedding principals work with D too?</p>
<p class="p4"><br></p>
<p class="p3">Just in case, initially Sciter was meant to be written in D. Here is the story: https://sciter.com/10-years-road-to-sciter/</p>
<p class="p4"><br></p>
<p class="p5">Oh, cool. Again, if this thing is so good integrated with D, that should be made more public.</p>
<p class="p4"><br></p>
<p class="p3">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.</p>
<p class="p4"><br></p>
<p class="p5">I agree... it feels very natural to do such frameworks in D.</p>
<p class="p6"><br></p>
<p class="p3">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.</p>
<p class="p4"><br></p>
<p class="p5">That's a very interesting thing! I have some questions:</p>
<p class="p4"><br></p>
<p class="p5">* 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.</p>
<p class="p4"><br></p>
<p class="p5">* 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.</p>
<p class="p4"><br></p>
<p class="p5">* 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?</p>
<p class="p4"><br></p>
<p class="p3">If to consider a "perfect and modern D GUI library":</p>
<p class="p7"><br></p>
<p class="p3">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</p>
<p class="p4"><br></p>
<p class="p5">I always see two parts:</p>
<p class="p4"><br></p>
<p class="p5">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.</p>
<p class="p4"><br></p>
<p class="p5">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.</p>
<p class="p6"><br></p>
<p class="p3">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).</p>
<p class="p4"><br></p>
<p class="p5">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.</p>
<p class="p4"><br></p>
<p class="p3">3. It shall use GPU rendering as much as possible. That's the must for high-DPI monitors.</p>
<p class="p4"><br></p>
<p class="p5">Yes. Or have a very sophisticated, hight speed sofware renderer.</p>
<p class="p4"><br></p>
<p class="p3">4. Implementation shall be compact - each D GUI application will include it statically and compilations time shall be short.</p>
<p class="p4"><br></p>
<p class="p5">Yep!</p>
<p class="p4"><br></p>
<p class="p3">Please let me know if someone will start doing anything close to the the above in D - I can help.</p>
<p class="p4"><br></p>
<p class="p5">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.</p>
<p class="p4"><br></p>
<p class="p5">Going to PM you for more details, that might not be that interesting for the community.</p>
<p class="p8"><br></p>
<p class="p9">--<span class="Apple-converted-space"> </span></p>
<p class="p9">Robert M. Münch</p>
<p class="p9">http://www.saphirion.com</p>
<p class="p9">smarter | better | faster</p>
</body>
</html>