On May 8, 2012, at 10:24 AM, foobar wrote: > On Tuesday, 8 May 2012 at 17:03:10 UTC, Lars T. Kyllingstad wrote: >> On Tuesday, 8 May 2012 at 16:35:05 UTC, foobar wrote: >>> On Tuesday, 8 May 2012 at 14:59:43 UTC, Lars T. Kyllingstad wrote: >>>> On Tuesday, 8 May 2012 at 14:48:27 UTC, foobar wrote: >>>>> [...], what if I find it useful to use e.g. FORTRAN code, should the >>>>> relevant functions also be in the stdlib? >>>> >>>> No, FORTRAN has absolutely nothing to do with D. C, on the other hand, >>>> does. Both druntime and Phobos depend heavily on the C stdlib. The GC >>>> uses malloc/free, std.stdio.File is a wrapper around FILE*, etc. >>>> >>>> -Lars >>> >>> Irrelevant. For all I care druntime could be implemented in Klingon. That >>> doesn't mean its API needs to include Klingon as well. That's called >>> "encapsulation". >> >> Um... so you don't mind the C/POSIX declarations being there, you just want >> them to be private so you aren't tempted to use them in your own code? > > Yes, pretty much. > They are an implementation detail of druntime/phobos. > > Other vendors may choose to implement the tool-chain with another language in > mind and as long as the API remains the same I shouldn't need to care e.g. > how the GC allocation is implemented (Perhaps it's done with FORTRAN's memory > allocation routines). > > If I ,the user, want to interface with C I need to use the "official" C > headers in Deimos. This is after all the official location for that.
I think this is two separate issues. The GC implementation is very much hidden already. The only point of exposure for standard C headers is in core.*, and frankly, I think the only ones actually used are core.sys.windows and core.sys.posix (posix admittedly being a superset of standard C, as stated before).
