Difference between revisions of "SAOC 2018 ideas"
m (Clarify the purpose of this page.) |
(Add Andre Pany's Mago-MI suggestion.) |
||
Line 38: | Line 38: | ||
* support dub install for distributions | * support dub install for distributions | ||
* support building a {snap, Debian, Arch, ...} package out of DUB package | * support building a {snap, Debian, Arch, ...} package out of DUB package | ||
+ | |||
+ | === Multi IDE debugger support (for windows) === | ||
+ | ---- | ||
+ | |||
+ | Mago, [http://rainers.github.io/visuald/visuald/StartPage.html the debug engine used in VisualD], includes a tool called Mago-MI, which has a GDB compatible interface. Therefore, you can use Mago-MI on Windows as replacement for GDB. Several IDEs uses this feature to enable debugging with 1 code line for Windows/Linux/MacOS. It is used in an experimental state in IntelliJ. There is [https://code.visualstudio.com/ also support in Visual Studio Code] and [https://github.com/buggins/dlangide in DLangIDE for which it was originally built]. | ||
+ | |||
+ | There are several issues which could be addressed in Symmetry Autumn of Code: | ||
+ | |||
+ | - Mago-MI is written in C++. This makes bug fixing hard. Rewriting it in D might make sense. | ||
+ | |||
+ | - While the installation of Mago-MI is easy if you want to debug OMF executables, it is very hard if you want to debug COFF executables. You need another executable from Mago, you have to register DLLs via regserv and you have to manually create a registry entry. An installation procedure for installing Mago-MI would be great. | ||
+ | |||
+ | - There are some bugs in Mago-MI and DMD (wrong debug information) which makes debugging hard ([https://github.com/rainers/mago/issues/21 see this issue] and [https://github.com/rainers/mago/issues/23 this one]). Also [ https://github.com/rainers/mago/issues/14 Mago-Mi is missing some features]. There are more bugs but not investigated so far. | ||
+ | |||
+ | - As Visual Studio Code is already supported by the D Language Foundation, using this as a reference client of Mago-MI would make sense. | ||
+ | |||
+ | |||
+ | While this proposal seems only related to Windows, the nature of Mago-Mi is to enable IDEs having 1 code line for debugging on Windows/Linux/MacOS. Therefore, overall investment in this project is good for all platforms. | ||
[[Category:Student_projects]] | [[Category:Student_projects]] |
Revision as of 14:04, 23 July 2018
This is a list of potential project ideas for applicants to the Symmetry Autumn of Code. Projects on this page are simply suggestions, not detailed proposals. It is up to any applicant who chooses one to flesh out the idea to a degree suitable for a project proposal as part of the SAoC application.
Contents
HTTP/2 for Vibe.d
HTTP/2 is a major revision of the HTTP network protocol. Among its advantages belong decreased latency due to (e.g. due to compressed HTTP headers or pipelined requests) or server-push from the server which allows the server to send resources to the client before they are requested. Therefore, Vibe.d - D's flagship web application framework - would vastly profit from implementing HTTP/2.
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:
- https://github.com/TurkeyMan/color
- https://bitbucket.org/timosi/minlibd
- https://github.com/JinShil/stm32f42_discovery_demo
DUB: D's package manager
DUB - D's package manager - is one of the central infrastructure tools in the D world as a convenient build and package management tool for the D community. With D gaining more and more popularity, it's also a key tool to guarantee D's further adoption. Thus there are many great ideas to improve DUB:
- separate compilation and caching
- extensibility through DUB
- control flow directives
- build system support for C/C++
- git support
- support dub install for distributions
- support building a {snap, Debian, Arch, ...} package out of DUB package
Multi IDE debugger support (for windows)
Mago, the debug engine used in VisualD, includes a tool called Mago-MI, which has a GDB compatible interface. Therefore, you can use Mago-MI on Windows as replacement for GDB. Several IDEs uses this feature to enable debugging with 1 code line for Windows/Linux/MacOS. It is used in an experimental state in IntelliJ. There is also support in Visual Studio Code and in DLangIDE for which it was originally built.
There are several issues which could be addressed in Symmetry Autumn of Code:
- Mago-MI is written in C++. This makes bug fixing hard. Rewriting it in D might make sense.
- While the installation of Mago-MI is easy if you want to debug OMF executables, it is very hard if you want to debug COFF executables. You need another executable from Mago, you have to register DLLs via regserv and you have to manually create a registry entry. An installation procedure for installing Mago-MI would be great.
- There are some bugs in Mago-MI and DMD (wrong debug information) which makes debugging hard (see this issue and this one). Also [ https://github.com/rainers/mago/issues/14 Mago-Mi is missing some features]. There are more bugs but not investigated so far.
- As Visual Studio Code is already supported by the D Language Foundation, using this as a reference client of Mago-MI would make sense.
While this proposal seems only related to Windows, the nature of Mago-Mi is to enable IDEs having 1 code line for debugging on Windows/Linux/MacOS. Therefore, overall investment in this project is good for all platforms.