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 :-).


Reply via email to