D is dead (was: Dicebot on leaving D: It is anarchy driven development in all its glory.)
Mike Franklin
slavo5150 at yahoo.com
Fri Aug 24 10:18:31 UTC 2018
On Friday, 24 August 2018 at 09:46:08 UTC, Jonathan M Davis wrote:
> For any kind of normal operating system, you _have_ to use
> libc. It's part of the OS. Some pieces could be done without
> it, but on the whole, you use libc if you want to talk to the
> OS. That's just life. The only exceptions I'm aware of to that
> are embedded devices, and my understanding is that if anything,
> such devices are more and more likely to run a fullblown OS,
> making it that much less likely that you'd ever do anything
> without libc.
That is not true. You can write your own system calls. Here's
"hello world" with no libc:
---object.d
module object;
alias immutable(char)[] string;
private long __d_sys_write(long arg1, in void* arg2, long arg3)
{
long result;
asm
{
mov RAX, 1;
mov RDI, arg1;
mov RSI, arg2;
mov RDX, arg3;
syscall;
}
return result;
}
void write(string text)
{
__d_sys_write(2, text.ptr, text.length);
}
private void __d_sys_exit(long arg1)
{
asm
{
mov RAX, 60;
mov RDI, arg1;
syscall;
}
}
extern void main();
private extern(C) void _start()
{
main();
__d_sys_exit(0);
}
---main.d
module main;
void main()
{
write("Hello, World\n");
}
$dmd -c -lib -conf= object.d main.d -of=main.o
$ld main.o -o main
$size main
text data bss dec hex filename
176 0 0 176 b0 main
$main
Hello, World
You just need to re-implement what you need in D. For Phobos,
that might be a big job (or maybe not, I haven't looked into it).
For druntime, it's not so bad -- it's mostly just memcpy,
memcmp, malloc, free, and maybe a couple of others. Those are
not trivial implementations, but it's not out of reach, and I
think there is opportunity with, with CTFE, templates, __traits,
inline asm, and a number of other D features, to do even better
than C, and make it more type- and memory-safe while we're at it.
Implementing those building-blocks in D, would be good for the
language, would solve a number of issues I'm currently having
with druntime updates, and would be a fun project for those that
are interested in that kind of stuff.
Mike
More information about the Digitalmars-d
mailing list