Discussion about deprecating @nogc and workarounds

Lance Bachmeier no at spam.net
Sat Sep 7 14:39:13 UTC 2024


On Saturday, 7 September 2024 at 13:28:39 UTC, Richard (Rikki) 
Andrew Cattermole wrote:
> On 08/09/2024 1:06 AM, Lance Bachmeier wrote:
>> On Saturday, 7 September 2024 at 08:05:10 UTC, Kapendev wrote:
>> 
>>> BetterC is weird, but it does do something. If `@nogc` were 
>>> to be removed, BetterC could act as a replacement for those 
>>> who want to avoid using the gc and enforce that at compile 
>>> time.
>> 
>> How do you replace this code with BetterC? Answer: You don't.
>> 
>> ```
>> import std;
>> void main() {
>>      writeln(add(3, 4));
>> }
>> @nogc int add(int x, int y) { return x+y; }
>> ```
>> 
>> The use cases of @nogc and BetterC are very different. With 
>> BetterC you lose classes, dynamic arrays, and associative 
>> arrays, among other things.
>
> Just because you lose access to almost all of druntime and 
> phobos does not mean you cannot replace almost everything.
>
> ```d
> module app;
> import sidero.base.console;
>
> @safe nothrow @nogc:
>
> void main() {
>     writeln(add(3, 4)); // 7
> }
>
> int add(int x, int y) {
>     return x + y;
> }
>
> ```
>
> So far the only thing I haven't been able to find a solution 
> for when needed is exceptions in terms of niceness.

On run.dlang.io:

```
onlineapp.d(1): Error: unable to read module `console`
onlineapp.d(1):        Expected 'sidero/base/console.d' or 
'sidero/base/console/package.d' in one of the following import 
paths:
import path[0] = /dlang/dmd/linux/bin64/../../src/phobos
import path[1] = /dlang/dmd/linux/bin64/../../src/druntime/import
```

Searching on code.dlang.org: Found 0 packages. So not much of a 
replacement.


More information about the Digitalmars-d mailing list