Difference between revisions of "GSOC 2019 Ideas"

From D Wiki
Jump to: navigation, search
(Removed all the links to the Hunt framework -- links to github repositories are not project ideas!)
Line 15: Line 15:
Some [https://wiki.dlang.org/GSOC_2018_Ideas ideas from the GSoC 2018] and [https://wiki.dlang.org/SAOC_2018_ideas the Symmetry Autumn of Code] pages remain unimplemented. Feel free to include here any of those you care about.
Some [https://wiki.dlang.org/GSOC_2018_Ideas ideas from the GSoC 2018] and [https://wiki.dlang.org/SAOC_2018_ideas the Symmetry Autumn of Code] pages remain unimplemented. Feel free to include here any of those you care about.
=== Hunt server-side system architecture ecology ===
Pure D language implementation of quickly develop server-side applications and build distributed system services. Like spring boot / spring cloud. It mainly includes the following components: WEB framework, logging, caching, distributed algorithm, service governance, database ORM, RPC framework, distributed lock, distributed task scheduling service, etc.
Main projects:
* [https://github.com/huntlabs/hunt-framework hunt-framework]: High-level D Programming Language Web framework that encourages rapid development and clean, pragmatic design. It lets you build high-performance Web applications quickly and easily.
* [https://github.com/huntlabs/hunt hunt]: Containers, event, async io, caching, logging, time, serialization and other core components are included.
* [https://github.com/huntlabs/hunt-net hunt-net]: Network library.
* [https://github.com/huntlabs/hunt-database hunt-database]: Database abstract layer library.
* [https://github.com/huntlabs/hunt-entity hunt-entity]: ORM for D, like java's JPA and PHP's doctrine2.
* [https://github.com/huntlabs/hunt-cache hunt-cache]: Cache manager library.
* [https://github.com/huntlabs/hunt-http hunt-http]: Http 1.1 / 2.0 / 3.0 and websocket protocol library.
* hunt-quic: QUIC network protocol library.
* [https://github.com/huntlabs/hunt-validation hunt-validation]: Validation library.
* hunt-time: Ported from java 11 time API.
* [https://github.com/huntlabs/hunt-raft hunt-raft]: Distributed protocol raft library.
* [https://github.com/huntlabs/hunt-imf hunt-imf]: Instant messaging framework.
* [https://github.com/huntlabs/hunt-grpc hunt-grpc]: gRPC for D.
* [https://github.com/huntlabs/hunt-sql hunt-sql]: SQL parsing and rendering library.
* [https://github.com/huntlabs/hunt-stomp hunt-stomp]: frame based protocol for WebSocket.
* hunt-markdown: Markdown parsing and rendering library.
* hunt-quartz: Ported from java quartz.
* hunt-task: Timing task scheduling service.
* hunt-service: Distributed RPC service framework.
* hunt-trace: Distributed event tracing service.
* [https://github.com/huntlabs/neton neton]: Service registration discovery and config management service.
=== Graphics library for resource constrained embedded systems ===
=== Graphics library for resource constrained embedded systems ===

Revision as of 10:54, 3 February 2019

This is the D Language Foundation's Google Summer of Code 2019 page.

If you are interested in working on a D project as part of GSoC 2019, as either a student or mentor, please contact Michael Parker at aldacron@gmail.com. Include "GSoC 2019" in the email subject line.


The timeline for GSoC 2019 can be found here.


The D ecosystem is always in need of improvement through the revision of existing projects and the creation of new ones. The core projects like the(standard library) and the compilers (Compilers) are always in need of attention. Other important areas include GUI support, integration with other languages, improving and enhancing the tooling, IDE and editor support, and more.

Please add your project ideas to the list below, being as descriptive as you can in the summaries. Students interested in participating can use the ideas listed here as jumping off points, so the more information you provide, the easier it will be for them to get started. If your idea is particularly complex or nuanced, consider leaving contact information so that interested parties may follow up.

Some ideas from the GSoC 2018 and the Symmetry Autumn of Code pages remain unimplemented. Feel free to include here any of those you care about.

Graphics library for resource constrained embedded systems

Create a 2D rasterizer, rich drawing primitives, and 2D graphics library suitable for resource constrained embedded systems (e.g. ARM Cortex-M) to be used in industrial controls, home appliances, medical devices, consumer electronics, and IoT just to name a few. The end goal would be something similar to Segger's emWin. The library would be used to drive LDCs similar to https://www.adafruit.com/product/3396 Requirements:

  • Hardware agnostic; should simply render to a frame buffer
  • No dependencies (No Phobos, no C standard library, and no official D runtime).
  • Consider using -betterC, but a custom minimal D runtime is also a viable option

Related work:

Proposed Project Mentors: TBA

Tabular data container (data frames)

Pandas, R and Julia have made data frames very popular. As D is getting more interest from data scientist (e.g. eBay or AdRoll) it would be very beneficial to use one language for the entire data analysis pipeline - especially considering that D (in contrast to popular languages like Python, R or Julia) - is compiled to native machine code and gets optimized by the sophisticated LLVM backend.

Minimum requirements:

  • conversion to and from CSV
  • multi-indexing
  • column binary operations, e.g. `column1 * column2`
  • group-by on an arbitrary number of columns
  • column/group aggregations

Proposed Project Mentor: TBA

C++ interops

There are many experiments in transparently interfacing D with C++, notably:

  • dpp by Atila Neves, that parses and translates headers on the fly
  • Calypso by Elie Morisse that bridges the two languages at the AST level.

There is also a lot of work in bringing STL types to the DRuntime (see https://github.com/dlang/druntime/pull/2310).

D would greatly benefit by seamlessly integrating the C++ ecosystem. There are many ways to accomplish this goal and it should be discussed with the community. Andrei already commented on the importance of a tool like Calypso in this thread: https://forum.dlang.org/post/m9s4cd$2s1v$1@digitalmars.com

Proposed Project Mentor: TBA

Persistent Data Structures

There is an ongoing effort to reduce the reliance of Phobos on the GC but the GC is not going anywhere given that it has many advantages over manual memory management. The community would greatly benefit from a wide range of functional programming techniques that have their roots in the usage of immutable and persistent data structures that heavily rely on the GC. Persistent Data Structures are heavily used in Scala and Clojure and they allow the programmer to reason about interactivity, sharing and parallelism.

The focus of this project would be to create a varying range of persistent data structures (sets, vectors, maps, strings, trees, lists, etc...) that respects the range interface and the semantics of Phobos.

Related Work:

Proposed Project Mentor: TBA