Difference between revisions of "GDC/ProjectIdeas"

From D Wiki
Jump to: navigation, search
m
 
(4 intermediate revisions by 2 users not shown)
Line 6: Line 6:
 
* There are lots of bugs in [http://bugzilla.gdcproject.org bugzilla]. Everyone is welcome to look at them, reproduce them, comment on them, fix them, etc!
 
* There are lots of bugs in [http://bugzilla.gdcproject.org bugzilla]. Everyone is welcome to look at them, reproduce them, comment on them, fix them, etc!
  
* There are testsuite failures running 'make check-d' on many systems. Each one of these failures should be investigated, and either fixed or the testsuite adjusted.  See the [https://d.puremagic.com/test-results/?projectid=2 autotester] results for more details on some of the regularly tested platforms, however other platforms should start being well tested too!
+
* 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!  
 
* 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!  
Line 13: Line 13:
 
'''Periodic Tasks'''
 
'''Periodic Tasks'''
  
* Merge the <code>d/dfrontend</code> sources with upstream DMD releases.
+
* Merge the <code>d/dfrontend</code> sources with upstream DMD releases (stable branch).
  
* Merge the <code>libphobos/libdruntime</code> sources with upstream Druntime releases.
+
* Merge the <code>libphobos/libdruntime</code> sources with upstream Druntime releases (stable branch).
  
* Merge the <code>libphobos/src</code> sources with upstream Phobos releases.
+
* Merge the <code>libphobos/src</code> sources with upstream Phobos releases (stable branch).
  
 
* Create a release branch and test building GDC with each GCC release.
 
* Create a release branch and test building GDC with each GCC release.
Line 23: Line 23:
 
* Update the latest development branch of GDC to be continually in sync with latest GCC development changes.
 
* 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'''
 
'''General'''
Line 29: Line 30:
  
 
* Merging GDC into upstream GCC.
 
* Merging GDC into upstream GCC.
 
* Porting D to ARM.
 
  
 
* Porting D to MinGW.
 
* Porting D to MinGW.
  
* Improve GDB with a more complete D debugging support.
+
* GCC LTO support is broken horribly, any attempt to use LTO will result in ICE'ing the LTO compiler.
 
 
* Implement DEH chaining support (as documented in TDPL?)
 
 
 
* Maybe convert DMD-style IASM routines to GDC-style EASM.
 
  
 
* Support all variants of <code>--enable-threads=</code> and <code>--enable-tls</code> in the GC.
 
* Support all variants of <code>--enable-threads=</code> and <code>--enable-tls</code> in the GC.
 
* Remove dependency on <code>_tlsstart</code> and <code>_tlsend</code> symbols from within the library/compiler.
 
 
* Implement shared library support.  The current implementation upstream is unsupported / not merged into GDC.
 
 
* Update GDC's <code>gcc.atomic</code> from using GCC's <code>__sync</code> builtins to <code>__atomic</code>, update mappings to <code>core.atomic</code> module.
 
  
  
Line 54: Line 43:
  
 
* Missing d/NEWS and d/CONTRIBUTE documentation.
 
* Missing d/NEWS and d/CONTRIBUTE documentation.
 
* There is documentation on [http://www.prowiki.org/wiki4d/wiki.cgi?GdcHacking wiki4d] that needs moving and updating to somewhere more easily accessible.
 
  
 
* The GDC manpage d/gdc.texi could be better written.
 
* The GDC manpage d/gdc.texi could be better written.
Line 63: Line 50:
  
 
'''Internals'''
 
'''Internals'''
 
* <code>d/d-asmstmt.cc</code>
 
:* This file implements the <code>ExtAsmStatement</code> 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 <code>__asm__ goto</code> in GCC).
 
  
 
* The only supported GDC-style <code>@attribute</code>'s are <code>"noinline"</code>, <code>"forceinline"</code>, <code>"flatten"</code>, and <code>"target"</code>.  This may need extending as seen fit.
 
* The only supported GDC-style <code>@attribute</code>'s are <code>"noinline"</code>, <code>"forceinline"</code>, <code>"flatten"</code>, and <code>"target"</code>.  This may need extending as seen fit.
 
* <code>d/d-dmd-gcc.h</code>
 
:* 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: <code>target.h</code>) shared between compiler backends.
 
  
 
* The macros <code>IN_GCC</code> and <code>GCC_SAFE_DMD</code> 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: <code>target.h</code>, <code>port.h</code>, etc), or GDC (or DMD) should be fixed to handle the discrepancy between compiler backends.
 
* The macros <code>IN_GCC</code> and <code>GCC_SAFE_DMD</code> 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: <code>target.h</code>, <code>port.h</code>, etc), or GDC (or DMD) should be fixed to handle the discrepancy between compiler backends.
 
* <code>d/lang.opt</code>
 
:* Remove <code>-fsplit-dynamic-arrays</code> code-gen switch and clean-up expand_intrinsic; d_build_call; etc...
 
 
  
  
 
'''Maintenance'''
 
'''Maintenance'''
 
* There are bug reports for GDC scattered over the place.  The documented place to raise bugs are in the [http://bugzilla.gdcproject.org GDC Bugzilla], however some are in [https://d.puremagic.com/issues/buglist.cgi?keywords=GDC&query_format=advanced&keywords_type=allwords&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED D's bugzilla], and some are older bugs are in [https://bitbucket.org/goshawk/gdc/issues?status=new&status=open Bitbucket Issue Tracker].  These should all be moved into one place for ease of tracking.
 
 
* MinGW [https://bitbucket.org/goshawk/gdc/downloads downloads] should be hosted elsewhere.
 
  
 
* To be considered as a project part of GCC, the code in GDC should ideally conform to [http://gcc.gnu.org/codingconventions.html 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.
 
* To be considered as a project part of GCC, the code in GDC should ideally conform to [http://gcc.gnu.org/codingconventions.html 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.
  
* The configure and makefiles as part of libgphobos / libgdruntime should be cleaned up and improved to handle more targets and compilation scenarios (ie: Are Canadian-crosses even supported?).
+
[[Category:GDC Compiler]]

Latest revision as of 03:02, 18 February 2018

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 (stable branch).
  • Merge the libphobos/libdruntime sources with upstream Druntime releases (stable branch).
  • Merge the libphobos/src sources with upstream Phobos releases (stable branch).
  • 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

  • The only supported GDC-style @attribute's are "noinline", "forceinline", "flatten", and "target". This may need extending as seen fit.
  • 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.


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.