@nogc and Phobos
Steven Schveighoffer
schveiguy at gmail.com
Sat Mar 11 14:41:01 UTC 2023
On 3/11/23 7:04 AM, bomat wrote:
> Hi all,
>
> I am a C++ programmer in my "day job" and was playing around with D to
> maybe use it in a personal project.
>
> I'm using Dear ImGui for the graphical user interface, for which I use
> this port:
> https://github.com/KytoDragon/imgui/
>
> It works fairly well so far, just one problem: Dear ImGui is obviously
> `@nogc`, and I noticed that it doesn't mix with standard library functions.
> I tried `std.process.executeShell()` (which I'd kinda need for my
> project unless I want do do OS specific API calls), and
> `std.stdio.writeln()` (which I won't exactly be needing, just as a very
> basic test).
>
> So my question is:
> Is Phobos essentially incompatible to `@nogc`?
> Or is there a trick for mixing GC code with non-GC code that I don't know?
Most of Phobos uses exceptions, which require the gc.
>
> I'm assuming the second, for if the first was true I'd say that D would
> be pretty much useless when combined with non-D libs...
I think it is an error to mark a library which centers on callbacks with
always being @nogc. You can work around nothrow and @safe, but not @nogc.
This also brings up a point that there just isn't a way to do a
callback-centered library that can be simultaneously used with nogc or
gc, unless you template based on that. It's not a good situation, and I
don't know of a good solution.
-Steve
More information about the Digitalmars-d-learn
mailing list