Skip to content

Instantly share code, notes, and snippets.

@jacob-carlborg
Last active February 28, 2019 11:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jacob-carlborg/4970286be6e44d0f3c44afc05a342b1d to your computer and use it in GitHub Desktop.
Save jacob-carlborg/4970286be6e44d0f3c44afc05a342b1d to your computer and use it in GitHub Desktop.
GSoC D Ideas

GSoC Ideas

DMD as a Library

The basic work has already been done but a lot more could be done to make DMD more suitable as a library.

  • Mostly removing global state. Also make the diagnostic handling configurable. Now all diagnostic messages that occurs after parsing are always outputted to stderr. Making more things pure is a good way to find global state. Although I've found that there's a lot of dependency on the dmd.root.rmem which cannot be made pure with out faking pure on malloc or implementing a new pure allocator.

  • Add support for source code transformations. As a start this would require start and end locations for all tokens and AST nodes.

Cross-Compiling in DMD

This has been requested several times before. Might also make the platform specific code simpler to implement.

DSTep

Add C++ support. Probably a bunch of other improvements that can be made.

DWT/JPort

JPort is a tool to automatically translate Java code to D code. The task would be to finish this tool. This would allow to automatically update to newer versions of SWT and add support for macOS. The current version of DWT doesn't work on the latest version of GTK because it uses APIs that are outdated.

Objective-C Integration

  • Upstreaming the remanings of DIP 43
  • Integrate the Objective-C support in LDC as well

Cross-Database Interface/Library

iOS support for LDC

This was started by Dan and it would be awesome if it could be finished and upstreamed to LDC.

Official Docker Images

Official Docker images with DMD, LDC and GDC. Either official in the Docker sense, i.e. available at the top level namespace, or official images from the D language foundation, i.e. available on the download page on dlang.org. There could also be images pre-configured for cross-compiling to various targets.

Make Mecca Cross-Platform

Currently Mecca only works on Linux x86-64 (I have an open PR for macOS). The task would be to add support for more platforms, at least Posix platforms. Although it's been three months since I opened that PR and not a single review comment.

HTTP3 Library

Ideally socket independent so it can be used with Phobos, vibe.d, Mecca or any other socket implementation.

Phobos

Serialization

A package/module for serialization. Would consist of a format independent frontend and multiple backends for the different formats, i.e. JSON, XML and so on.

YAML

A package/module for parsing and outputting YAML.

Async IO

A package/module for async IO and event handling.

HTTP

A package/module for HTTP, server and client. We already have an HTTP client in the form of curl, but I would be really nice to not be dependent on libcurl. The priority would be on the server, since I don't think that can be handled by curl.

druntime

Remove Dependency on the Standard C Library

Remove Dependency on the Standard C Library and only depend on the kernel. This might not be entirely possible due to dependencies on other system libraries, like for implementing TLS for example. Mike Franklin seem to have quite a lot of good ideas related to this topic.

Syscall Interface

A module for doing syscalls that doesn't depend on the C wrappers. This should not set errno, to allow more calls to be pure. I have some ideas how to make the interface safer with the help of metaprogramming.

Pure Allocator

Implement an allocator that can be pure. Could be backed by mmap and the corresponding function on Windows. Possibly the allocator from the garbage collector could be extracted to a separate module, which the GC would then reuse. I'm not sure if people would find this useful or if they're satisfied with the "fake pure malloc" pattern.

Might depend on the syscall interface.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment