On Tuesday, 20 June 2017 at 11:08:15 UTC, Moritz Maxeiner wrote:
On Tuesday, 20 June 2017 at 11:00:00 UTC, Nemanja Boric wrote:
On Monday, 19 June 2017 at 21:45:56 UTC, Moritz Maxeiner wrote:
On Monday, 19 June 2017 at 21:35:56 UTC, Steven Schveighoffer
wrote:
IIRC, Tango did not depend on libc at all. It only used
system calls. So it certainly is possible.
How did they invoke those system calls? They are usually
access via libc on POSIX systems, so you don't have to
implement accessing e.g. vdso on Linux yourself.
Tango just didn't use C abstractions (`FILE*`, say), but
rather it would call functions such `read(2)`, `write(2)`,
`seek(2)`, etc. and implement buffering/seeking/etc manually.
Only the second one of those are the system calls I was talking
about :p
Yeah, I saw the Steve's answer late, but there's no editing posts
here :(. :-)
So, the library just declared `extern (C) read (...);`/`extern
(C) write`.. and expected for the right library (which doesn't
have to be libc, just the one that exposes these syscall
wrappers) linked.
If you have a library that exposes to you via C API those
functions that you need of libc, then that library *is* your
(albeit partial) libc (since a libc is defined as any library
that exposes such functions). In any case, that's the same way
that druntime depends on libc AFAIK.
Yeah, that stands, but I thought the point of this topic was that
(IIRC, not a phobos experienced user) Phobos (_not_ druntime)
uses C _standard library_ abstractions for many things, and
that's why the OP said we can't beat C in speed. I don't think
it's reasonable thing to think that writing syscall wrappers
would help D gain to much speed :-).