-
Notifications
You must be signed in to change notification settings - Fork 56
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Be able to compile using upstream compiler #9
Comments
There are various issue that have already been fixed in later versions of upstream compiler but have to be picked for 2.070 base we use. For example:
Those changes provide most of patches in https://github.com/sociomantic-tsunami/ocean/tree/v2.4.x/docker/dmd-transitional/patches (I will provide PR that rearranges patches in more clear way later).
|
Thanks, updated the summary with a TODO list. |
Do you need a full list of fixes in later versions with PR links? I only picked some as an example. |
Just for the records, we are pushing for DIP1007 to add a feature to declare |
|
Crazy days. |
This didn't made it to 2.076, but it should be in 2.077, right? @mihails-strasuns-sociomantic do you know how much problems are expected to be found when moving from v2.071 to v2.076? We shouldn't expect huge breakage after the fixing of imports, right? |
Correct. |
Not much. A couple deprecations, and most likely some |
Cyclic import problem is probably the painful one (workaround are simple, but solving it properly often requires restructuring of modules). Other than that I don't expect much trouble but it is one of lowest priority things so I haven't put any research into it. |
Trying to compile with dmd v2.076, this is the current set of issues:
Look who removed it: dlang/druntime@bec52ee :D |
Damn.... |
We're not going to upgrade anytime soon anyway, are we ? 👼 |
The other set of errors is coming from druntime's binding that are adjusted for DIP1000:
|
How bad is this, is it something we can change at our end? I would really really want 2.077 to be the DMD upstream version we can start finally using. |
I wasn't aware of this plan. Is there any reason why ? The removal can be worked around trivially (this case is never hit in D2). For the void foo (scope void delegate (void* ptr))
{
}
void main ()
{
scope void delegate (scope void* ptr) oops = (scope void* ptr) {};
foo(oops);
} With our dmd-transitional, so we can add the |
It's been more than 2 years now that we are trying to fix the differences of what we need and upstream to be able to use upstream. Is not that v2.077 is special, is just that we finally got to solve the infamous
Because we don't want to maintain a fork of the compiler any more. |
Amen |
We should able to do that soon afaics. |
Before everyone gets excited, I should say this isn't very realistic goal (for anything but just ocean) right now. Going to discuss this with @leandro-lucarella-sociomantic and @mathias-lang-sociomantic but please hold the party a bit :) |
Updated ocean on my personal project, and had to convert it to D2 again.
|
What does this mean? I don't get the implications. Is this to update ocean to the latest DMD? |
@leandro-lucarella-sociomantic : Basically I'm using ocean in my private projects, which use upstream's compiler. It works fine thanks to rdmd, but since I have to And we use this identifier a lot, but it should die fairly soon (v4.x.x hopefully). |
Is there a dedicated issue about this? |
Can we assign this to v4.0.0 to make matters clearer ? (CC @mihails-strasuns-sociomantic ) |
Sounds good. I hoped to fit it into v3.x.x but doesn't seem like circular import issue can be resolved with strict backwards compatibility. |
v4.x.x HEAD is now tested with upstream compiler, thus this can be closed as done |
For now Ocean for D2 is stuck at 2.070.x, but even then there are custom modifications that are needed to be able to build / use it (this compiler is built as part of Ocean automated testing by applying patches to the upstream compiler.
These are the issues:
GC.stats
(Expose gc_stats as core.memory.GC.stats dlang/druntime#1610), available starting with 2.072Throwable
message that can be overridden by the user (reused) without re-allocating (Ocean reuse buffers for Exception to avoid allocating at all cost).scope
with different callback type as mentioned here.After all the issues are solved upstream, we still need to upgrade to an upstream DMD that have all the fixes, which might take a while too.
The text was updated successfully, but these errors were encountered: