[Issue 14100] New: Remove barriers to D being a systems programming language

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sun Feb 1 00:23:29 PST 2015


https://issues.dlang.org/show_bug.cgi?id=14100

          Issue ID: 14100
           Summary: Remove barriers to D being a systems programming
                    language
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: DMD
          Assignee: nobody at puremagic.com
          Reporter: bugzilla at digitalmars.com

From: https://github.com/klamonte/cycle/blob/master/docs/no_more_d.md


•DMD emits references to C-language compiler instrinsics (__umoddi3, __udivdi3,
etc.). Any new druntime will have to provide these. It would be best if D had
its own D-language compiler intrinsics instead, which could also take advantage
of D features like pure.


•The druntime itself has many hard dependencies on libc/Win32. It should be
split into a compiler-facing "libd" part that provide the extern (D) linkage
funtions, and one or more libc-facing parts that build upon "libd". "libd"
itself only needs to call realloc() (to achieve the functions of malloc,
realloc, and free) which could be provided by a kernel or libc.


•druntime and phobos are in the end just thin wrappers around libc/Win32. A
native-D-system cannot create something like a new file abstraction API,
because in the end it must always wrap a FILE *, file descriptor, or HANDLE.
Same for sockets. To get a new abstraction, druntime needs to be able to make
syscalls.


•DMD has lost its ability to create fully-statically-linked executables. There
appears to be no momentum on getting this back. Kernels obviously are not
shared libraries.


•DMD behaves differently based on what operating system it is running on, i.e.
it is not a cross-(OS/ABI)compiler. The D language spec itself is OS and
arch-independent, with fixed sizes for all primitive types, so it should
actually be easier to make D a cross-compiler than C. This is a problem when
one wants a slightly different ABI than the host C-based OS has. DMD's current
backend license restrictions forces one to move to a different compiler.


•D has worked very hard to be a good citizen in the C/C++ space. This is a
great strength when one wants to incorporate C code into D applications.
However, it has painted D into a corner: despite having a very cool syntax that
could stand on its own for bare-metal programming, all D compilers are
hamstrung by the pre-defined C ABIs, the externally-imposed momentum regarding
shared libraries, and the C/C++ mechanisms for language features like TLS and
exception handling.

--


More information about the Digitalmars-d-bugs mailing list