GDC/ProjectIdeas

From D Wiki
Jump to: navigation, search

This is a list of project ideas for GDC - potential improvements, new features, et cetera. As well as a list of ongoing projects going on within GDC.


Fix known bugs

  • There are lots of bugs in bugzilla. Everyone is welcome to look at them, reproduce them, comment on them, fix them, etc!
  • Other platforms should start being tested with the CI system.
  • There are a number of XBUG markers in testsuite. Some of them are for bugs in GDC that no one has looked at in a long time. There should be fewer!


Periodic Tasks

  • Merge the d/dfrontend sources with upstream DMD releases.
  • Merge the libphobos/libdruntime sources with upstream Druntime releases.
  • Merge the libphobos/src sources with upstream Phobos releases.
  • Create a release branch and test building GDC with each GCC release.
  • Update the latest development branch of GDC to be continually in sync with latest GCC development changes.

See GDC/CurrentReleaseTasks for version specific tasks.

General

(These listed are mixed active/idle stuff that needs more explanation of what's going on!)

  • Merging GDC into upstream GCC.
  • Porting D to MinGW.
  • GCC LTO support is broken horribly, any attempt to use LTO will result in ICE'ing the LTO compiler.
  • Support all variants of --enable-threads= and --enable-tls in the GC.


Documentation

  • The documentation in d/README is inadequately little, and contains references to old changes that are no where else to be found. This should be improved, and old documentation archived on the wiki.
  • Missing d/NEWS and d/CONTRIBUTE documentation.
  • The GDC manpage d/gdc.texi could be better written.
  • GDC Extended Assembler needs better documentation with multiple examples, such as that found in LDP for GCC.


Internals

  • d/d-asmstmt.cc
  • This file implements the ExtAsmStatement class that handles GCC-style inline assembler may be a problem as is non-standard to the D frontend.
  • It also currently does not handle the ability to jump to D labels via a fifth section after the clobber list contains a list of all labels to which the assembly may jump (ie: Just like __asm__ goto in GCC).
  • The only supported GDC-style @attribute's are "noinline", "forceinline", "flatten", and "target". This may need extending as seen fit.
  • d/d-dmd-gcc.h
  • This header is the only glue header used by the D frontend, this implements GDC-specific function hooks that call the GCC backend / performs platform agnostic tasks while the frontend is still in its semantic stages. This header should not really exist, and all functions be moved to a common header (ie: target.h) shared between compiler backends.
  • The macros IN_GCC and GCC_SAFE_DMD which are used to conditionally compile code in the frontend to work against GDC and its backend should be gradually removed from the D frontend, and either made into a runtime hook (ie: target.h, port.h, etc), or GDC (or DMD) should be fixed to handle the discrepancy between compiler backends.
  • d/lang.opt
  • Remove -fsplit-dynamic-arrays code-gen switch and clean-up expand_intrinsic; d_build_call; etc...


Maintenance

  • To be considered as a project part of GCC, the code in GDC should ideally conform to coding standards of GCC. This should be fixed up in all areas of the code - whatever standard the D frontend or Phobos uses from upstream is not a concern.