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

Bring back Assembly Neutral Interfaces #7176

Open
lilith opened this issue Dec 30, 2016 · 11 comments
Open

Bring back Assembly Neutral Interfaces #7176

lilith opened this issue Dec 30, 2016 · 11 comments
Assignees
Labels
area-TypeSystem-coreclr enhancement Product code improvement that does NOT require public API changes/additions
Milestone

Comments

@lilith
Copy link

lilith commented Dec 30, 2016

We were very close to achieving loose coupling in .NET via Assembly Neutral Interfaces... then victory was snatched from our grasp with its removal in 2015. I know this would also need to be added to .NET Full, but it is a very worthwhile feature.

Diamond dependencies are a problem, MxN adapter proliferation is madness, and this is a pain point even for basic tasks. This small thing would represent a significant reduction in pain/friction for OSS authors seeking interoperability with other packages. We're tired. We want our time and keystrokes to go farther, and preferably while remaining on .NET

True structural typing has been suggested for C#, but it looks like this is unlikely to get any attention. foreach + GetEnumerator alone gets this special ability. ANI consumption was supported by all CLR languages.

If the NuGet ecosystem is never able to expand past the interfaces in System.*, how will we ever start making progress on library compatibility?

Adding dependencies just for interface assemblies does not happen, particularly if interoperability is not absolutely crucial. It's not worth the risk and cost.

I'd like to reiterate the comments when the supporting ~900 lines of code for ANI were pulled.

"BOOOOOOOO!" - @ChrisMcKee
"Why?" - @adamralph
"yeah, whats with this?" - @Jetski5822
"NOOO!" - @markrendle

And kindly request that this feature be reconsidered for inclusion in both versions of .NET.

@jkotas
Copy link
Member

jkotas commented Dec 31, 2016

The ANI prototype had bad performance characteristics. It would be performance disaster if it gets used broadly in the form that it was implemented.

@davidwrighton and @jaredpar are looking into how to do it properly.

@davidfowl
Copy link
Member

That's the first I'm hearing about this and it makes me very happy 😊

@damianh
Copy link

damianh commented Dec 31, 2016

@jkotas Is there an issue to track this or anything to share (even thoughts) at this point?

I, for one, look forward to killing LibLog.

@graemechristie
Copy link

Is there any update on this @davidwrighton and @jaredpar ? Is there somewhere we can track the progress of the new feature ?

@jaredpar
Copy link
Member

@graemechristie no updates as of yet. A couple of other items have priority at the moment. Going to switch back to ANI / other type system innovations later in the summer.

@graemechristie
Copy link

Are there any more updates on this @davidwrighton and @jaredpar ?

@msftgits msftgits transferred this issue from dotnet/coreclr Jan 31, 2020
@msftgits msftgits added this to the Future milestone Jan 31, 2020
@kzu
Copy link
Contributor

kzu commented Jul 6, 2020

Would love to see some movement on this one. I think it can be big to grow the ecosystem more easily and achieve quicker agreements on shared contacts.

@adamralph
Copy link
Contributor

I guess now that .NET is going to be a single platform (.NET 5) and no more .NET Framework, this will be easier?

@jaredpar
Copy link
Member

jaredpar commented Jul 6, 2020

I plan to revisit this for the post .NET 5 world. Still heads down on .NET 5 at the moment though.

@dotnet-policy-service dotnet-policy-service bot added backlog-cleanup-candidate An inactive issue that has been marked for automated closure. no-recent-activity labels Jan 5, 2025
@lilith
Copy link
Author

lilith commented Jan 6, 2025 via email

@dotnet-policy-service dotnet-policy-service bot removed no-recent-activity backlog-cleanup-candidate An inactive issue that has been marked for automated closure. labels Jan 6, 2025
@julealgon
Copy link

@lilith , @davidfowl 's blog post link in the OP is now broken. Is that mantained somewhere else? Can the link be updated?

I found this other article that explains this concept while looking for it:


I plan to revisit this for the post .NET 5 world.

@jaredpar do you have any updates on this since that last post you shared?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-TypeSystem-coreclr enhancement Product code improvement that does NOT require public API changes/additions
Projects
None yet
Development

No branches or pull requests