News for hackers. Stuff that matters.
Re:Beautiful Binary Search in D by gavinray on Saturday February 18, 2023 @12:48PM (#34849071)
D is the systems language I enjoy writing the most out of C++, Rust, and Go.

It feels a lot like a mix between C# and JS, but at the low level access of C++.

It has a lot of unique features but the "killer feature" by far for me is Contract Programming and Invariants

https://tour.dlang.org/tour/en/gems/contract-programming

Invariants changed my life, so much so that I built a GCC plugin to add them to C++

It used to be the case that the developer tooling wasn't very good, but the "code-d" VS Code plugin has matured greatly in the last few years and has some features you won't find even in bigger languages

(Like the ability to colorize source code lines with GC profiling info or test coverage status)

---

Another useful bit of info is that AddressSanitizer and tools like LLVM libFuzzer work with the LDC compiler

Re:Beautiful Binary Search in D by agumonkey on Saturday February 18, 2023 @12:55PM (#34849152)
Is your gcc plugin a personal project or something you built for a team ? I find the idea brilliant in itself but I wonder if other people felt the need, and uses / enjoy this kind of improvements.

I want to add profile/coverage info in emacs now :)

D is a strange point in PL landscape, it's been here for ages, never took off (for some value of taking off) even though it seems there's a lot to like.

Re:Beautiful Binary Search in D by dataflow on Saturday February 18, 2023 @01:22PM (#34849477)
D never took off IMO because you can't abstract away a GC. The moment your callees rely on a GC, you have no choice but to have one in your program. The idea that you can avoid it in practice just because the language doesn't mandate it is therefore an illusion, and so it's not surprising at all that it isn't replacing C++.
Re:Beautiful Binary Search in D by gavinray on Saturday February 18, 2023 @01:37PM (#34849647)
I'm not sure I follow

Is this about D code that interops with C/C++?

You have "extern (C++)" and @nogc for that

Re:Beautiful Binary Search in D by dataflow on Saturday February 18, 2023 @01:44PM (#34849725)
No, it's about pure D code. Some (many) people just don't want a GC in their program and that's why they use C++. If they switch to D, they'll have to put up with a GC if any of their dependencies needs one, and the probability of that being the case is... high.
Re:Beautiful Binary Search in D by mhh__ on Saturday February 18, 2023 @01:46PM (#34849753)
@nogc eliminates that risk.

The GC also doesn't run if you don't call it so mitigating it's downsides while keeping the good aspects isn't all that hard.

Re:Beautiful Binary Search in D by dataflow on Saturday February 18, 2023 @01:48PM (#34849776)
You disable GC for the whole program? And what do you do when one of your dependencies relies on it? Just live with a memory leak?

Bear in mind you're simply not going to convince anti-GC folks that you can have the "good aspects" of a GC without the bad ones, and they're the folks you're trying to market to. To many C++ programmers the only good GC is one that is absent. You can tell them they're wrong all you want, but regardless of who's right, it's always been a losing battle.

Re:Beautiful Binary Search in D by mhh__ on Saturday February 18, 2023 @01:56PM (#34849854)
It won't compile.

You can also make it so it will compile but won't collect unless you ask it to explicitly.

We don't exclusively market to C++ developers. D replaced PHP and Java for quite a few D users.

Re:Beautiful Binary Search in D by dataflow on Saturday February 18, 2023 @02:00PM (#34849903)
It won't compile, and... how is that a solution? You've basically told some users they can't use your language in that case. That's problem solved?

If you see PHP and Java replacement as taking off, that's awesome. I was addressing those who want to see it replace C++.

Re:Beautiful Binary Search in D by mhh__ on Saturday February 18, 2023 @02:07PM (#34849979)
The express purpose of the @nogc attribute is to enforce that code under it's influence doesn't use the GC.

There is lots of @nogc code available to depend upon

Re:Beautiful Binary Search in D by dataflow on Saturday February 18, 2023 @02:21PM (#34850130)
> There is lots of @nogc code available to depend upon

That's not sufficient here. You can literally have a billion @nogc libraries, and even if there was one single GC-requiring library that many people want to use, the problem would be still there.

The only way to make this work is to ensure most libraries people want to use work fine without a GC (or have @nogc alternatives that people would actually want to use). While not theoretically impossible, practically speaking, that's incredibly hard to pull off when you have a shiny GC sitting there.

Re:Beautiful Binary Search in D by dymk on Saturday February 18, 2023 @03:51PM (#34850946)
In practice, "lots" isn't good enough. The whole ecosystem should work, not just lots.
Re:Beautiful Binary Search in D by mhh__ on Saturday February 18, 2023 @03:53PM (#34850974)
In practice (I.e. actual practice that pays my rent) it's been good enough for me
Re:Beautiful Binary Search in D by dymk on Saturday February 18, 2023 @04:04PM (#34851070)
Then why did D get lapped by Rust if @nogc is good enough and the ecosystem is good enough?

If the answer is along the lines of "corporate backing", why did Rust get corporate backing and D didn't?

Re:Beautiful Binary Search in D by mhh__ on Saturday February 18, 2023 @04:25PM (#34851265)
Rust did memory safety better than D did, which was a very attractive prospect and then Rust was also lucky enough to get a following of people who very noisy about it.

Also in a world where JavaScript (excel, even) is dominant let's not ascribe these things to purely rational factors.

Re:Beautiful Binary Search in D by gavinray on Saturday February 18, 2023 @01:59PM (#34849885)
Aye, you can turn off GC entirely, for the whole program

There's even a mode of D that operates this way by default, "-betterC" meant to be a C replacement

The GC really is an entirety opt-in component.

I'd encourage you/other folks to give D an honest try, you might be surprised

Re:Beautiful Binary Search in D by dataflow on Saturday February 18, 2023 @02:03PM (#34849940)
You're not understanding my point unfortunately. I never said you can't turn it off. I said if you do, and any of your dependencies expect it to be on, then you have a problem. (Yes, I have tried D. That's how I know this.)
Re:Beautiful Binary Search in D by gavinray on Saturday February 18, 2023 @02:10PM (#34850008)
Ohhh, fair enough, yeah I see what you're saying.

Yeah you're boned in that case I think and that's a real problem that can pop up if you want full @nogc

EDIT: Maybe not based on Max's comment

D-Plug (Audio FX plugins) is one example of having to build up a dependency stack of @nogc compatible deps, a lot of that is in-house stuff.

Not impossible but it's a commitment, at which point you may as well use something else unless you REALLY want to use D, for sure.

Re:Beautiful Binary Search in D by dataflow on Saturday February 18, 2023 @02:27PM (#34850177)
> a lot of that is in-house stuff.

That's exactly the issue. Having to reinvent every wheel you need just isn't a selling point.

Re:Beautiful Binary Search in D by mhh__ on Saturday February 18, 2023 @02:09PM (#34849997)
If you actually turn it off (as in GC.disable()) they won't know either way, it's just a memory allocator to them.
Re:Beautiful Binary Search in D by suby on Saturday February 18, 2023 @01:27PM (#34849539)
This is the logic I personally used in deciding not to use D.
Re:Beautiful Binary Search in D by dataflow on Saturday February 18, 2023 @01:36PM (#34849635)
Yeah, I'm pretty sure it's the reason many C++ folks reject it. It's kind of ironic that having too many useful features can hurt you, but that seems to be what's happening here. I feel like they might actually have a shot at solving it by literally dropping GC support, but it's hard to say at this point. I don't know if the standard library still has anything that needs a GC, but making sure that's not the case might be a good first step if they're ever interested in going im this direction.
Re:Beautiful Binary Search in D by funnymony on Saturday February 18, 2023 @04:32PM (#34851320)
Conveniences like closures depend on gc
Re:Beautiful Binary Search in D by dataflow on Saturday February 18, 2023 @04:34PM (#34851333)
C++ has had closures without a GC for over a decade now.
Re:Beautiful Binary Search in D by pjmlp on Saturday February 18, 2023 @05:58PM (#34851968)
As syntactic sugar for how C++ functors used to be implemented, and they also bring their own set of issues when interoperating with co-routines.
Re:Beautiful Binary Search in D by dataflow on Saturday February 18, 2023 @07:07PM (#34852555)
If anything that's a statement about coroutines, not closures. And even then, not every coroutine has problems. I don't see a logical implication from that to a GC requirement.
Re:Beautiful Binary Search in D by Kukumber on Saturday February 18, 2023 @09:50PM (#34853763)
Re:Beautiful Binary Search in D by Simon_O_Rourke on Saturday February 18, 2023 @04:00PM (#34851031)
> This is the logic I personally used in deciding not to use D.

Good call - I was unfortunate enough that I had to use it professionally for a few years. As comic book guy in the Simpsons would say "Worst language ever!".

Re:Beautiful Binary Search in D by keldaris on Saturday February 18, 2023 @04:18PM (#34851197)
Can you elaborate on your experience? There's a lot of negative D opinions from people who've barely used it and, for obvious self-selection reasons, a lot of positive ones from long term true believers. It would be interesting to see a negative experience from someone who used it extensively nonetheless.
Re:Beautiful Binary Search in D by christophilus on Saturday February 18, 2023 @05:08PM (#34851624)
I’m interested in hearing more. Also, I’m curious what language you use as a your daily driver?
Re:Beautiful Binary Search in D by layer8 on Saturday February 18, 2023 @04:16PM (#34851175)
I mean, the same is true for C++. If some C++ library you use employs GC, you can’t abstract that away either. The actual difference is how frequent such libraries are in the respective ecosystem.
Re:Beautiful Binary Search in D by masklinn on Saturday February 18, 2023 @04:33PM (#34851327)
> The actual difference is how frequent such libraries are in the respective ecosystem.

That’s a difference without a distinction: people will use the defaults unless they can’t.

So in C++ libraries will avoid GCs unless their work basically requires it, whereas in D they’ll require it unless the author is constrained to a nogc requirement.

Re:Beautiful Binary Search in D by dataflow on Saturday February 18, 2023 @04:19PM (#34851213)
I basically said as much https://news.ycombinator.com/item?id=34850130

Though, I'm not sure you could even have a precise GC for C++ even if you wanted to, given the way most C++ is written.

Re:Beautiful Binary Search in D by pjmlp on Saturday February 18, 2023 @01:21PM (#34849467)
D has suffered from lack of corporate sponsor, and there were a couple of reboots trying to chase the next big thing that would bring more people in, this allowed other language ecosystems to improve their shortcomings, thus reducing the distance in language features.

From my point of view in systems programming, experience with Oberon back in the day and such, I would really like that we would be talking more about D and less about Rust and Go, but unfortunately it isn't how things went.

Re:Beautiful Binary Search in D by shrimp_emoji on Saturday February 18, 2023 @01:47PM (#34849764)
>D has suffered from lack of corporate sponsor

But Digital Mars is a company. D:

>From my point of view in systems programming, experience with Oberon back in the day and such, I would really like that we would be talking more about D and less about Rust and Go, but unfortunately it isn't how things went.

As someone who has no idea what Oberon is or does sorry and believes that using anything other than Rust is literally pouring blood on your hands and de facto proscribes you in the future inquisitions on digital harm through software, why?

Re:Beautiful Binary Search in D by tmtvl on Saturday February 18, 2023 @05:00PM (#34851557)
Oberon is the language Niklaus Wirth designed after Pascal and Modula.
Re:Beautiful Binary Search in D by gavinray on Saturday February 18, 2023 @01:02PM (#34849227)
It was a small personal project, I posted about it here some months ago fwiw:

https://news.ycombinator.com/item?id=34211482

D has no (FAANG) corporate sponsor and it does all things well/has no particular speciality, these two things make it hard to compete with marketing of other languages I think

There's a small but dedicated and active community

Re:Beautiful Binary Search in D by agumonkey on Saturday February 18, 2023 @01:37PM (#34849650)
> does all things well

a great feature IMO, helps communication in large teams I believe (in the imaginary world where teams use D :)

thanks for the link,

have the best day

Re:Beautiful Binary Search in D by mhh__ on Saturday February 18, 2023 @01:48PM (#34849771)
This world is not imaginary
Re:Beautiful Binary Search in D by agumonkey on Sunday February 19, 2023 @06:53AM (#34856803)
Even better then :)

Maybe it's like some languages that don't chase growth/viral/visibility but exist calmly doing work.

Re:Beautiful Binary Search in D by gavinray on Saturday February 18, 2023 @02:04PM (#34849948)
I mean to say it's sort of a solid general purpose language/jack of all trades, with no particular speciality or thing it's deficient at