Looking for a Lua alternative

Siarhei Siamashka siarhei.siamashka at gmail.com
Fri Dec 15 13:24:03 UTC 2023


On Friday, 15 December 2023 at 10:53:44 UTC, Bastiaan Veelo wrote:
> On Thursday, 14 December 2023 at 18:26:40 UTC, Siarhei 
> Siamashka wrote:
>> On Thursday, 14 December 2023 at 18:18:21 UTC, matheus wrote:
>>> Allocate();
>>> GC.disable();
>>> run_the_game();
>>> GC.enable();
>>
>> Is the `run_the_game()` part of code supposed to be annotated 
>> with the `@nogc` attribute?
>
> It depends, I guess. If it is not `@nogc` annotated, it can 
> still allocate and if it does it can run out of memory, unless 
> it calls `GC.collect` at the right moments. If it is `@nogc` 
> annotated, it cannot allocate and then the whole `GC.disable` 
> and `GC.enable` become unnecessary.

That's exactly my concern and the compiler isn't very helpful in 
this scenario.

Would it be useful to have something like `@vettedgc` attribute, 
for annotating the part of code, where each GC allocation needs 
to be pedantically reported by the compiler as a warning? And 
some sort of `@permitgc` attribute to suppress these warning in a 
few selected places inside of this code if really necessary?

I would suggest to maybe somehow differentiate between "hard" 
`@nogc` variety, where the garbage collector isn't even linked at 
all. And "soft" `@nogc` variety, where GC allocations are 
generally strongly discouraged, but allowed as explicitly 
annotated exceptions in a few selected places after careful 
review. The former is useful for hardcore bare metal embedded use 
cases and that's what the compiler supports right now. The latter 
would be maybe useful for game developers.


More information about the Digitalmars-d mailing list