Last update March 7, 2012

GSOC 2011 Ideas



Difference (last change) (no other diffs, normal page display)

Changed: 122,233c122
It would be very nice for everyone who has D as their favorite language to be able write code for more wide range of devices than PCs - in particular Android. This could help both the Android community which will have a powerful and fast language at their disposal and it will evolve D as it will become available to more people and more devices in an area of development that gets a lot of attention.
jam tangan
jam tangan murah
jam tangan kw
hostgator coupon
kata mutiara
Jasa SEO
EZido
RDAnet
pioneer deh-1300mp
asus a53e-xa2
asus tf101-b1
asus tf101-a1
asus n53sv-eh72
asus republic of gamers g74sx
asus acer a5250
acer chromebook ac700
asus asus 53u
lg infinia 55lw5600
Sonicview 360 premier
asus 7 cu ft freezer
asus 30 single wall oven
brother cs6000i sewing machine
brother 1034d serger
brother sewing machines
Yokohama Geolandar H/T-S
crib tent tots in mind
kidco peapod plus
foscam fi8910w
samsung pl120 review
gopro helmet cam
Canon SX130IS
powershot s100
ContourHD 1080p
canon vixia hf r21
digital picture frame
canon ef 50mm f1.4
canon ef 70-300mm review
wide angle lenses
moving comfort sports bra
moving comfort bra
womens argyle sweater
bebe dresses
ViewSonic VX2250WM
Le Pan TC 970
Apple MacBook Air MC965LL
Sennheiser CX 880
plantronics cs540
ultrasonic jewelry cleaner
Sennheiser RS120
bose quietcomfort 15 acoustic noise cancelling headphones
logitech harmony one remote
logitech harmony 900
sony mhc-ec69i
sony mhcec909ip
bose wave music system
sony htss380
logitech squeezebox touch
sony dvp-fx970
onkyo tx-nr509
onkyo tx - nr609
onkyo ht-s3400
energy 5.1 take classic home theater system
polk audio psw505
onkyo ht-s5400
onkyo tx-nr709
belkin pf60
onkyo ht-rc360
denon avr-1912
Yamaha YHT-S400BL
fujitsu scansnap s1500
brother hl-2270dw
epson workforce 545
hp laserjet p2055dn
bushnell 8mp trophy cam
toshiba 32c110u
panasonic viera tc-p60s30
VIZIO E220VA
hauppauge wintv dcr-2650
Acer AM3970-U5022
Acer AspireRevo AR3700-U3002
Dell Inspiron i570
Dell GX620
Gateway FX6860-UR20P
Western Digital My Passport Essential SE 1 TB USB 3.0
Fujitsu ScanSnap S1300
Epson Perfection V300
Fujitsu SCANSNAP S1100
NeatDesk Desktop Scanner and Digital Filing System
Epson WorkForce Pro GT-S50
Kodak P811BK
Epson Perfection V330
Viewsonic VX2453MH
Asus VE228H
ViewSonic VA2431WM
Samsung B2230
HP 2711x
ASUS ML228H
Epson PowerLite Home Cinema 8350
Optoma PK301
Epson EX7210
Epson EX5210
ViewSonic PJD5133
Acer X1161P
FAVI RioHD-LED-2
Epson EX3210
ViewSonic PJD6531w
Trinity 360 Breville 800JEXL
Skil 3320-02
Delta 46-460
Grizzly G0555
Delta 18-900L
It would be very nice for everyone who has D as their favorite language to be able write code for more wide range of devices than PCs - in particular Android. This could help both the Android community which will have a powerful and fast language at their disposal and it will evolve D as it will become available to more people and more devices in an area of development that gets a lot of attention.

Table of contents of this page
Networking   
XML processing   
Lexing and Parsing   
Benchmarking   
Integrated Development Environment plugins for e.g. Eclipse and Visual Studio   
ANTLR and Java based D parser for IDE usage   
Improved project model and build support for DDT   
Bindings to popular IPC/RPC protocols such as Protocol Buffers and Apache Thrift   
Garbage Collection   
D tools in D   
Logging   
Units   
Containers   
Database API   
Image Processing   
64Bit support on Windows / general Windows toolchain issues   
Android support   

Welcome to the Google Summer of Code 2011 ideas page for the D Programming Language. This page lists potential projects of interest, each with a brief description. The best place to discuss these and related ideas is the digitalmars.D newsgroup (to which you can subscribe by using the mailing interface, NNTP, or simple HTTP browsing).

Networking    

Key skills: Understanding of networking protocols and protocol APIs in other languages. Familiarity with D's standard library is a plus.

D offers socket primitives but currently lacks a standard collection of high-level libraries for networking using protocols such as HTTP, FTP, SMTP, IMAP etc. Your task would be to essentially define how D does networking from high-level design all the way to the implementation. You'd discuss ideas with the community, absorb feedback, and create a compelling proposal for adding networking support to the D standard library.

XML processing    

Key Skills: Understanding of XML processing APIs and parsing models; understanding of D ranges and arrays.

D has currently a standard library for XML but it is too slow and inconvenient so that library is scheduled for deprecation. Therefore, the slate is clean for a new end-to-end design and implementation.

Lexing and Parsing    

Key Skills: Understanding of lexing and parsing theories; understanding of D's generative programming capabilities.

D has good generational capabilities, so it is possible to write a highly-integrated lexer/perser generator in D without resorting to additional tools. Such a project would be very useful to a variety of tasks, but it would likely strain D's generational capabilities to their limits requiring submitting and tracking bug reports for the compiler core.

Benchmarking    

Key Skills: Understanding of low-level timing mechanism available in Linux, Windows, and OSX operating systems. Familiarity with D's introspection mechanisms is a plus.

Defining good benchmarks is a difficult task requiring understanding of low-level, fine-grained timing mechanisms that are OS specific. (It also requires a good strategy of what to benchmark, but unfortunately that is difficult to automate.) A benchmarking framework could just require the user to define benchmark functions (e.g. starting with 'benchmark_') and would take care of timing execution, doing multiple iterations etc.

Integrated Development Environment plugins for e.g. Eclipse and Visual Studio    

Key Skills: Understanding of infrastructure of particular IDEs; understanding of D's syntax.

A few IDEs for D already exist. However, some of these are unfinished or could use additional help.

ANTLR and Java based D parser for IDE usage    

Essential aspects:
  • Flexible parser capable of parsing both D1 and D2 (potentially recognizing a superset of D, validating concrete language syntax after parsing).
  • Able to preserve comments and other other syntactical and textual information relevant to IDE usage (source ranges).
  • Performance minded, particularly with regards to memory usage (when relevant).
  • Good error recovery.
Some additional items that would be nice to have:
  • A good test suite for the parser
  • The ability to do incremental parsing. Something more or less like, being able to quickly parse a file given only a textual change delta, and the previously generated AST (before the textual changes).

Improved project model and build support for DDT    

  • Extend DDT project model to support inter-project dependencies. Support projects with a mix of source folders and native artifacts (object code), all with a well-defined buildpath.
  • Support multiple build targets and configurations (debug/release/unittest, or user defined build configurations).
  • Support a proper bundle modularization abstraction, similar to OSGi bundles. (projects become more structured entities with logical names and structured, versioned dependencies on other bundles)
  • Add build support for the above in IDE. Also support build from a command line tool. Possibly integrate or base it on an existing build framework (Ant, SCons, CMake, etc.)

Bindings to popular IPC/RPC protocols such as Protocol Buffers and Apache Thrift    

Key Skills: Intimate knowledge of cross-machine communication protocols.

Large-scale programming using D requires bindings to cross-machine and cross-language communication protocols. Such include Google's Protocol Buffers, Apache Thrift, and others. D's standard library currently includes no such protocol implementation. Providing such would motivate adoption of D for large-scale development.

Garbage Collection    

Key Skills: Knowledge of garbage collection approaches and algorithms.

D's garbage collector is rather simplistic. There are many improvements that could be added to it to the end of dramatically improving performance. This would encourage safe, simple code at the client level.

D tools in D    

Key Skills: experience in programming language parsing; familiarity with languages of the C line; knowledge of D-specific data structures and ranges is a plus.

The aim is to boost the production of fundamental tools for analysis of D source code in D: lexical, syntactic, at best first steps of semantic analysis; producing code representations as D data structures.

At term, the objective is to allow using the output of this project to produce a variety of further D tools in D: compilation, optimisation, statistics, documentation, debugging, plugins for code editors...

There are 2 existing projects along those lines, which could be used at least to explore the topic, possibly more: SDC https://github.com/bhelyer/SDC (prototype phase) and DIL http://code.google.com/p/dil/.

This project may indeed be connected to "Lexing and Parsing" above, if timing permits it.

Logging    

Key Skills: Familiarity with a logging framework is a plus.

Having a simple and standard way of logging in D will help the development/debugging of D applications. The framework should be easy to use to foster its adoption by D developers. Google's Logging library for C++ can be of some inspiration.

Units    

Key Skills: Experience in metaprogramming is a plus.

This projects seeks to provide physical units as part of D's standard library. Allowing the use of units simplifies programming and helps avoiding bugs. It has been a success in F# see Units of Measure in F#. For C++ Boost.Units is well known.

Containers    

Key Skills: Knowledge in data structures. Understanding of ranges in D is a plus.

D's standard library includes an implementation of a singly-linked list, an array with deterministic control of memory, a binary heap, and a red-black tree (see std.container). The aim of this project is to provide more data structures allowing them to be used with ranges.

Database API    

Key Skills: Familiarity with DBMS libraries is a plus.

Having a standard way of accessing databases in D will greatly simplify the development of D database-enabled applications. The framework should be easy to use to foster its adoption by D developers. Java Database Connectivity and Python Database API Specification can be of some inspiration.

Image Processing    

Manipulation of image files is a common programming task, which currently has absolutely no support from the D standard library. The primary goal of this project is to provide a standard interface for loading images from files (PNG, BMP, JPEG) into RGB arrays, and for creating files from such arrays. This basic functionality will make it easy to create sophisticated image processing libraries, using D's advanced metaprogramming capabilities. The project can optionally demonstrate this by implementing some basic image processing algorithms.

64Bit support on Windows / general Windows toolchain issues    

Recently x64 code generation has been added to dmd's backend and can already be used quite well on Linux because gcc's toolchain (along with the ELF and DWARF formats) is the de facto standard there.

Unfortunately the situation on Windows is a lot different because the toolchain is completely custom (and closed-source, excluding dmd). This has always been causing problems for many users but the rise of x64 has worsen the situation.

Contributors could concentrate on one or more of the following issues:

Furthermore OMF would have to be specifically extended to support 64Bit code. Hence adding COFF output to dmd would be a good idea.
  • symbolic debug info format: CodeView? is used. Similar situation.
  • 64 bit librarian: correlated with the aforementioned format issues.
  • linker: OPTLINK was originally written in Assembler for performance reasons. It is gradually being ported to C behind the scenes but will still take a lot of time until a 64Bit version could be available. Moreover there have been a lot of frustating bugs caused by it in the past and a replacement is generally desirable.
  • C compiler: The Digital Mars C compiler is used. It shares the backend and toolchain with dmd. Thus you can't compile 64Bit C code right now which is needed for compiling druntime and using external C libraries. Correlated with the OMF issue.
  • C runtime: snn.lib is closed-source and there's no 64Bit version, furthermore it is only available as a static library. Some efforts have been made to replace it with the Visual C runtime using Unilink but it's a tough task and also requires compiler changes: http://www.mail-archive.com/digitalmars-d@puremagic.com/msg50465.html. Using MinGW?'s runtime is another option but hasn't been examined yet.

Android support    

It would be very nice for everyone who has D as their favorite language to be able write code for more wide range of devices than PCs - in particular Android. This could help both the Android community which will have a powerful and fast language at their disposal and it will evolve D as it will become available to more people and more devices in an area of development that gets a lot of attention.

FrontPage | News | TestPage | MessageBoard | Search | Contributors | Folders | Index | Help | Preferences | Edit

Edit text of this page (date of last change: March 7, 2012 20:38 (diff))