Is anyone hacking on druntime in a widespread fashion at the moment?
Jonathan M Davis
jmdavisProg at gmx.com
Sat Apr 14 10:58:34 PDT 2012
On Saturday, April 14, 2012 15:24:14 deadalnix wrote:
> Le 11/04/2012 22:41, Jonathan M Davis a écrit :
> > On Wednesday, April 11, 2012 22:01:36 deadalnix wrote:
> >> Le 11/04/2012 00:10, Alex Rønne Petersen a écrit :
> >>> I'm planning to go over druntime and add nothrow/pure everywhere I can,
> >>> but I don't want to disturb anyone else who's currently working on
> >>> patches that this could disrupt.
> >>
> >> Can't we consider this as an inference issue ?
> >
> > How so? Attribute inference exists only for templated functions and some
> > delegate stuff. We're talking primarily about extern(C) function
> > declarations here.
> >
> > - Jonathan M Davis
>
> As long as the function body is available, inference is possible. If it
> is possible, it is legitimate to wonder if the problem come from the
> fact that it isn't done, or that it isn't explicit in the source code.
But it doesn't work that way, and if it did, the signature of the function
could change depending on whether you were using a .di or .d file when
importing. D takes the tact that it's better to require that the programmer
mark functions as pure - particularly in a language where it's possible to
have function declarations with no definitions (it's also easier on the
compiler). Attribute inference was only added with templates, because without
it, you'd have to duplicate the template for all of the combinations of
nothrow, pure, and @safe, which was untenable.
Also, if you're talking about C functions, you _can't_ have the source code.
Again, druntime is a prime example of that. Even if the language had attribute
inference for all functions, you'd still have to explictly mark C functions as
pure for them to be pure, because the compiler doesn't have their source.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list