<div dir="ltr"><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Wed, 19 Mar 2025 at 12:31, Jonathan M Davis via Digitalmars-d <<a href="mailto:digitalmars-d@puremagic.com">digitalmars-d@puremagic.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Tuesday, March 18, 2025 8:18:13 PM MDT Meta via Digitalmars-d wrote:<br>
> "This language is garbage collected, and they're fucking ashamed<br>
> of that!"<br>
><br>
> This guy is surprisingly perceptive and 100% accurate with his<br>
> cutting observations hahaha.<br>
<br>
Plenty of us aren't (in fact, personally, I'd never have gotten into D if it<br>
didn't have a GC), but it certainly comes across that way a lot of the time<br>
because of attempts to make the folks happy who don't want the GC. IMHO,<br>
while being able to do stuff without using the GC is great, we've harmed<br>
ourselves by continually trying to make C/C++ people who hate the GC happy<br>
with D. And we keep getting into arguments about how to do stuff because<br>
there's a divide between those folks who are happy that D has a GC and those<br>
who don't want anything to do with the GC. The result is kind of<br>
schizophrenic.<br>
<br>
- Jonathan M Davis<br></blockquote><div><br></div><div>We should have a 2-tier system, low-level functions to do the work which don't enforce a particular runtime ecosystem, and then some helpful wrappers that add convenience for scripting.</div><div>I reckon a similar and probably bigger problem for phobos though is the template over-application and bloat. That should be addressed in the same stroke with a low-level implementation; effort should be made to minimise template args, and then all the high-level template-ey stuff that does all sorts of adaptation should be in the higher level.</div><div>I never want to see 8 different copies of a function because it's called with byte,ubyte,short,ushort,int,uint,long,ulong... where one opcode is different because it performed a different width sign-extension, and where the sign-extension should have been performed by the calling code anyway! Phobos is lousy with this sort of problem, and the binaries it produces are orders of magnitude bigger than they should be a lot of the time. Very aggressive optimisation might fix it, but it's basically just random chance as to whether optimisation will successfully collapse some insane code down to something appropriate or not.</div></div></div>