On Friday, 15 September 2023 at 20:38:12 UTC, Atila Neves wrote:
On Friday, 15 September 2023 at 16:40:38 UTC, monkyyy wrote:
On Friday, 15 September 2023 at 16:09:44 UTC, bachmeier wrote:
On Friday, 15 September 2023 at 14:50:27 UTC, monkyyy wrote:
d as is, is gc'ed to hell and back
That's why I use it.
nogc is a bandaid to advertise its something its not.
This is what the spec says. I don't see anything wrong with it. It restricts what you can do inside a function and that's what it's supposed to do.
a language includes its std and there's no alternative for std: string, algorithm, range to be nogc'ed
std.string, I get, but algorithm and range are poster children for
@nogc. I'm not going to claim that nothing in those packages allocates on the GC heap, but I'd be very surprised if there were many functions that did.
Which is good because allocating when not needed is silly, not because avoiding the GC is a good idea. It isn't. If your program is slow and you profiled and it's GC allocation that's slowing it down, then think about doing something else.
I'm mostly talking about existing data structures and string handling(strings being probably the most important data structure)
Given my definition of language above of compiler + std, a betterc project is probably using libc for strings and rolling their own data structures; at which point they can't use my code(I use import std casually) I don't want to use their code even if it even works.
Not getting involved in your attribute debates, to use std.algorithm I need data structures that were designed to work with it(and probably tested with it), and static arrays aren't on the list.
I mostly rant and rave about this on discord but I've been complaining about this for years, but for stepovs idea of templates where you get n*m solutions out of n+m code you should attempt to balance n algorithms with m data structures, and nogc by disabling the one good data structure makes 100ish algorithms x 1 ==100 into 100x0==0 making the situation so much worse.
If you want nogc to be usable(rn if I want to make something with wasm I would need to write a bunch of data structures), the problem with data structures, in general, should be addressed.