GSOC 2013 Ideas

From D Wiki
Revision as of 14:53, 27 March 2013 by AndreiAlexandrescu (talk | contribs) (Created page with "Refer to [ our GSoC 2013 page] for details about this project. ==LDC== LDC is based on LLVM, so this suggests several small project ideas, like...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Refer to our GSoC 2013 page for details about this project.


LDC is based on LLVM, so this suggests several small project ideas, like porting some of the LLVM tools/features designed for C/C++ to the D-LDC world. Things like:

  • Perform more static analysis, like abstract compilation or linting (Clang does both);
  • Develop a simple way to compile D for the browser with Emscripten to "asm.js" (this is a very small project);
  • Perform other run-time tests as done by Clang;
  • Use some of the D semantics to improve D code optimization (Walter talks about this all the time);
  • Implement better high level optimizations for D code that uses array ops.


Once remaining issues with shared libraries are resolved, it becomes feasible to use D code from dynamic languages. Clearly it's vital to provide easy path for calling it from Python, as it's used by most scientists. Although there's PyD, last few years saw rising interest in PyPy because it shows much better performance than CPython. For PyPy, the way to go seems to be generating extern(C) wrappers for classes/functions/etc. + CFFI bindings for that C code. First part of this can be reused for producing C++ wrapping code -- this is similar in goals to dtoh but here entities to be wrapped should be explicitly mentioned. Extra benefit of producing C++ bindings is ability to call SWIG on them to support other languages. So, perhaps, C++ is the number one target in this respect.