On Friday, 24 August 2018 at 13:21:25 UTC, Jonathan M Davis wrote:
On Friday, August 24, 2018 6:05:40 AM MDT Mike Franklin via
Digitalmars-d wrote:
> You're basically trying to bypass the OS' public API if
> you're trying to bypass libc.
No I'm trying to bypass libc and use the OS API directly.
And my point is that most OSes consider libc to be their OS API
(Linux doesn't, but it's very much abnormal in that respect).
Well, it used to be the case that it was normal to call OS
directly by using traps, but since the context switch is so
expensive on modern CPUs we a have a situation where the calling
stub is a fraction of the calling cost these days. Thus most
don't bother with it.
What usually can happen if you don't use the c-stubs with dynamic
linkage is that your precompiled program won't work with new
versions of the OS. But that can also happen with static linkage.
Trying to bypass it means reimplementing core OS functionality
and risking all of the bugs that go with it.
It is the right thing to do for a low level language. Why have
libc as a dependency if you want to enable hardware oriented
programming? Using existing libraries also put limits on low
level language semantics.
If you're talking about avoiding libc functions like strcmp
that's one thing, but if you're talking about reimplementing
stuff that uses syscalls, then honestly, I think that you're
crazy.
No it isn't a crazy position, why the hostile tone? Libc isn't
available in many settings. Not even in webassembly.