Open wilzbach opened 5 years ago
This topic becomes more and more important, I add the gsoc2021 label.
I'm going to remove this from GSOC 2021 as we don't have a mentor for it.
I got frustrated by this before so I would be interested in solving this :)
Added GSOC '21 since I am available to mentor it
Alright so D Language Foundation wasn't able to participate in GSoC 2021 but there is SAoC coming up next.
I would like to ask if this project would be a good fit for SAoC, do you think 4 months time frame of SAoC lines up with the work expected from this project or would it fall short (i.e. too easy) ?
This is a good fit for SAoC.
Description
Let's see that in project X you use an XML parser of v1. This XML parser depends on a collections library with v1. Now, however, the team decides to a add a JSON parser too, but this one depends on a newer version of the collections library with v2. The result is that the team can't use the JSON parser in their project and currently the only viable strategies are:
(1) is very cumbersome, requires a lot of manual work and makes it hard to sync up with upstream. (2) is often not possible.
Hence, the aim of this project is to allow people to use v1 and v2 of collections in parallel in their dub projects. Rust allows to fix this dependency hell problem by appending a unique suffix to each symbol of the conflicting versions. This works as long as each dependency only uses one direct version of a dependency. This is a very reasonable assumption and this approach should work for D too.
What are rough milestones of this project?
0) investigate solutions used in other languages or active research 1) create two DMD PR
--mangle-suffix=v1.1
)--mangle-suffix-map=json:v1.1
) 2) add the respective CLI flags to all dub invocations (be sure only to do so if frontend >= X)Optional improvements:
How does this project help the D community?
It is a first milestone and a requirement to moving the standard library Phobos to Dub. Additionally, it will have a massive impact on the D community as any bigger D project that has a non-trivial amount of dependencies runs into a dependency hell.
Recommended skills
What can students expect to get out of doing this project?
Rating
Medium
Project Type
Infrastructure/Automation
Point of Contact/Possible Mentors
@wilzbach @maxhaton
References