Skip to content
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

Vibe.d fails to compile with 2.081 #2181

Closed
Sandman83 opened this issue Jul 4, 2018 · 6 comments
Closed

Vibe.d fails to compile with 2.081 #2181

Sandman83 opened this issue Jul 4, 2018 · 6 comments

Comments

@Sandman83
Copy link

After an update of dmd to 2.081.0 and dub to 1.10.0 vibe-d fails to compile:

reproducing steps:

In an empty directory

dub init --type=vibe.d -n
dub build

The second command fails with the error:

~/.dub/packages/vibe-d-0.8.4/vibe-d/stream/vibe/stream/wrapper.d(179,22): Error: no property connected for type const(InterfaceProxy!(ConnectionStream))
~/.dub/packages/vibe-d-0.8.4/vibe-d/stream/vibe/stream/wrapper.d(187,19): Error: no property connected for type InterfaceProxy!(ConnectionStream)
~/.dub/packages/vibe-d-0.8.4/vibe-d/stream/vibe/stream/wrapper.d(188,15): Error: no property close for type InterfaceProxy!(ConnectionStream)
~/.dub/packages/vibe-d-0.8.4/vibe-d/stream/vibe/stream/wrapper.d(198,22): Error: no property waitForData for type InterfaceProxy!(ConnectionStream)

@wilzbach wilzbach changed the title wrapper fails to compile Vibe.d fails to compile with 2.081 Jul 5, 2018
@wilzbach
Copy link
Member

wilzbach commented Jul 5, 2018

Yeah anything depending on Vibe.d fails to build due to this with DMD 2.081.0.
Digger points me to dlang/dmd#7959
I started a Bugzilla issue: https://issues.dlang.org/show_bug.cgi?id=19064

@wilzbach
Copy link
Member

wilzbach commented Jul 5, 2018

FWIW the old core package bundled (i.e not vibe-core, but the one in this repo) doesn't have this issue and thus a workaround for now is switching back to it with libevent or libasync:

subConfiguration "vibe:core" "libevent"

@Sandman83
Copy link
Author

I tried to use the new getOverloads with the last parameter set to true in the three occurrences of getOverloads in vibe-core/internal/interfaceproxy.d
but this alone does not fix anything... So, either there are more relevant occurrences of getOverloads, or its due to getOverloads itself... or, or...
And yes, it was a little bit confusing, to find out that not the packaged vibe-core is used, but the one which is stand alone.

@wilzbach
Copy link
Member

wilzbach commented Jul 5, 2018

I was thinking of hacking overloadMethods and inject a special fallbak if no tuple is found.
However, I haven't been able to figure out how to get the return type of a symbol that gets an empty tuple from getOverloads as

  • std.traits.MemberFunctionsTuple (doesn't work as it uses getOverloads internally)
  • __traits(getVirtualFunctions is an empty tuple too
  • mixin("typeof("~I.stringof~"."~member~")") doesn't work because the symbol I isn't in the current scope
  • typeof(__traits(getMember, I, member)).stringof as it might return sth. like "@safe void()" or "nothrow @safe ulong()", or "@safe bool(Duration timeout = max())" so parsing the return type would be a bit challenging.

BTW we already have an upstream PR for this (dlang/dmd#8456). So maybe we can get a quick 2.081.1 release.
Also it's very unfortunate that since a few weeks the Project Tester was offline and before Vibe.d wasn't disabled due to issues with the dub registry.

@wilzbach
Copy link
Member

wilzbach commented Jul 7, 2018

Note that the DMD upstream PR was merged and Martin already release a beta for 2.081.1: https://forum.dlang.org/post/phqb8s$73c$1@digitalmars.com

@wilzbach
Copy link
Member

The final 2.081.1 release is now out and Vibe.d finally builds with the latest, stable dmd again:

https://forum.dlang.org/post/pi3b0n$1bph$1@digitalmars.com

I added vibe-core (dlang/ci#215) and re-enabled the disabled vibe.d projects (dlang/ci#214) on the project tester, s.t. hopefully such a serious regression can never happen again.

I'm going to close this now. If you still experience issues with 2.081.1, please reopen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants