On 11/10/2014 03:48 PM, Steven Schveighoffer wrote:
Opinion from those in the know:
When extern(C) is used in druntime, my understanding is that the reason
is twofold:
1. Because the compiler requires certain symbols for hooks.
2. To get around some requirements that "druntime knows better", su
On 11/11/14 11:01 AM, Dicebot wrote:
On Monday, 10 November 2014 at 23:22:00 UTC, Sean Kelly wrote:
On Monday, 10 November 2014 at 23:08:55 UTC, Logan Capaldo wrote:
So just to be clear, there are _some_ legitimate uses of extern (C)
in druntime, yes? rt_init/rt_term, rt_loadLibrary
On Monday, 10 November 2014 at 23:22:00 UTC, Sean Kelly wrote:
On Monday, 10 November 2014 at 23:08:55 UTC, Logan Capaldo
wrote:
So just to be clear, there are _some_ legitimate uses of
extern (C) in druntime, yes? rt_init/rt_term, rt_loadLibrary,
thread_init(? think this one can be
On Monday, 10 November 2014 at 23:08:55 UTC, Logan Capaldo wrote:
So just to be clear, there are _some_ legitimate uses of extern
(C) in druntime, yes? rt_init/rt_term, rt_loadLibrary,
thread_init(? think this one can be bootstrapped from D code),
...?
Yes. There are a few functions meant
wrote:
Right now question is, however, are there any legitimate
uses of
`extern(C)` in druntime or those all can be replaced with
`pragma(mangle, "XXX") extern(D)`?
[snip]
What about things that are "meant" to be called from C? E.g.
`rt_init`/`rt_term`?
Those should remain
`extern(C)` in druntime or those all can be replaced with
`pragma(mangle, "XXX") extern(D)`?
I don't think there's any reason to use extern (C) in druntime any more.
I guess that nails it, will make a PR
What about things that are "meant" to be called from C? E.g
On Monday, 10 November 2014 at 19:44:05 UTC, Dicebot wrote:
On Monday, 10 November 2014 at 17:48:04 UTC, Sean Kelly wrote:
On Monday, 10 November 2014 at 16:59:47 UTC, Dicebot wrote:
Right now question is, however, are there any legitimate uses
of `extern(C)` in druntime or those all can be
On Monday, 10 November 2014 at 17:48:04 UTC, Sean Kelly wrote:
On Monday, 10 November 2014 at 16:59:47 UTC, Dicebot wrote:
Right now question is, however, are there any legitimate uses
of `extern(C)` in druntime or those all can be replaced with
`pragma(mangle, "XXX") extern(D)`?
On Monday, 10 November 2014 at 16:59:47 UTC, Dicebot wrote:
Right now question is, however, are there any legitimate uses
of `extern(C)` in druntime or those all can be replaced with
`pragma(mangle, "XXX") extern(D)`?
I don't think there's any reason to use extern (C) in druntime
any more.
es.dlang.org/show_bug.cgi?id=8887 (with possibly
making any differences compile-time error initially for soft
transition)
Right now question is, however, are there any legitimate uses of
`extern(C)` in druntime or those all can be replaced with
`pragma(mangle, "XXX") extern(D)`?
On Monday, 10 November 2014 at 15:52:56 UTC, Steven Schveighoffer
wrote:
On 11/10/14 10:40 AM, Dicebot wrote:
This was an answer to "you can't forward declare extern
(D) functions"
I think Sean's point is that is another historical reason why
we used extern(C), back when pragma(mangle) didn't
On 11/10/14 10:40 AM, Dicebot wrote:
This was an answer to "you can't forward declare extern
(D) functions"
I think Sean's point is that is another historical reason why we used
extern(C), back when pragma(mangle) didn't exist.
-Steve
This was an answer to "you can't forward declare extern
(D) functions"
???
$ cat a.d
module a;
pragma(mangle, "foo")
extern(D) void foo()
{
import std.stdio;
writeln("in extern foo");
}
$ cat b.d
module b;
pragma(mangle, "foo")
extern void foo();
void main()
{
foo();
}
$ ./a
in extern foo
Also, eliminating compile time dependencies between namespaces.
Everything can import core.*, but nothing outside rt is allowed
to import rt modules and nothing outside gc is allowed to import
gc modules. This allows us to theoretically choose the compiler
runtime and GC at link time and also a
they are all implemented
in D. I don't want to limit those functions to only things that C supports.
Would it make sense to change to use pragma(mangle)? or is there some
other reason why we use extern(C) in druntime? I'm asking the old
veterans who may know some of the history, i.e. Wa
16 matches
Mail list logo