Small @nogc experience report
Shachar Shemesh
shachar at weka.io
Wed Sep 19 16:52:59 UTC 2018
I've got plenty to say, but here is the long and the short of it: Use Mecca.
On 07/09/18 19:44, Peter Alexander wrote:
> 3. It was really frustrating that I had to make the compiler happy
> before I was able to run anything again. Due to point #1 I had to move
> code around to restructure things and wanted to make sure everything
> continued working before all GC allocations were removed.
mecca.lib.reflection has "as".
https://weka-io.github.io/mecca/docs/mecca/lib/reflection/as.html
Here is how you use it:
void fun() @nogc {
as!"@nogc"( some code that is not @nogc );
}
>
> 4. I used std.algorithm.topNCopy, which is not @nogc. The error just
> says "cannot call non- at nogc function [...]". I know there are efforts to
> make Phobos more @nogc friendly, but seeing this error is like hitting a
> brick wall. I wouldn't expect topNCopy to use GC, but as a user, what do
> I do with the error? Having to dig into Phobos source is unpleasant.
> Should I file a bug? What if it is intentionally not @nogc for some
> subtle reason? Do I rewrite topNCopy?
>
> 5. Sometimes I wanted to add writeln to my code to debug things, but
> writeln is not @nogc, so I could not. I could have used printf in
> hindsight, but was too frustrated to continue.
mecca.log has logging facilities that are @nogc.
Now, to be fair, they are not actually @nogc, as by default it uses
writeln. It is, however, annotated with @nogc, for precisely the reasons
you encountered.
Shachar
More information about the Digitalmars-d
mailing list