-
Notifications
You must be signed in to change notification settings - Fork 790
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
Tracking Issue for C# 11.0 Interop for F# 6.1/7.0 #13007
Comments
I think (1) is the biggest one, with (2) probably also being a nice-to-have. The rest I could see not doing any work for. |
Is nullness checking off the table for .NET 7? Finishing #11394 would also be nice. Otherwise agreed on 1. (This is perhaps besides the point, but personally I'd rather see finishing ref assembly support, parallel type checking and IL gen than new language features for this release.) |
Around nullness checking, performance and F# codebases that are already null safer than industry average since V1. Is there going to be a "experimental F# SPO optimizer" version, that is going to elide, desugar Option and ValueOption, leveraging flow analysis and type checker improvements related to nullness checking, into tighter and monorphized code?
|
I put the above into priority order - (1) and (2) are necessary to do. The nullness branch is up-to-date, lots of work needed there though |
I want to add one that is .NET 7, rather than C#, but it is driven by .NET, so may belong on this list: trimmability of FSharp.Core. I would hate to see F# cut out of Native AOT. Other than that, 2 ( |
Agreed @KathleenDollard, F# should be a part of the AOT story with no more caveats that C# (within reason!) |
I'm sorry if my question is off topic, but is there a issue like this but for F# specifically? Like this is "What features of .Net and C# F# wants to support for .Net 7 release". Is there a "What features F# wants for itself for .Net7 release" one? Again, sorry for off topic. It's just that I find it quite hard to find information about F# roadmap. |
knowing:
The endorsement of @KathleenDollard on this particular topic is a very good indication this is headed the right way, I hope it helps the people who needs it badly, whenever it is viable to ship in the dotnet sdk, from Microsoft perspective, and that in meantime, it carries the effect on perception about future of the language of those that got impacted by earlier decisions. Congratulations! |
I added #8654 to the list |
Related: #11564 (remove setter for init only properties) |
the issue would be C# >= 7.0 compatibility ideally, umbrella issue of what is missing so it doesn't break expectations. Is there an issue already for having |
@smoothdeveloper I don't think so, but it is a neat idea. |
Is there any chance generic attributes can be included? |
Originally posted in #13119, more appropriate to post it here. Will we also be able to produce interfaces with abstract static members in the near future? I've already had great success replacing a few kloc boilerplate infra for object mapping with abstract static interface members in C#. This also brought a measurable efficiency gain over the previous approach of late binding lambdas stored in a dictionary keyed by source/dest type pair compared to the simplicity of an abstract static constrained call. I can similarly imagine how it would allow a fair few SRTP code patterns to be replaced with something reflection free, and fully supported at the IL level in F# as well. |
It's not a goal for current PR, and likely not for the Fall release (since there is a bunch of work that needs to be done besides this feature and there are only a few of us for now :)). I wouldn't mind supporting it in future if @dsyme sees it fit for F#. |
We should support this |
Another point on the list would be |
Thanks, Fred, I've added it to the original list. One question by "access should be blocked`, do you mean, we should just emit a compilation error if user is trying to use such feature? |
Yes. In C#/VB, if we see the user using a thing with this attribute, we error and say "'location' requires compiler feature 'attribute string', which is not supported by this version of the C# compiler." |
I've been playing around with static abstracts in F# with the latest release, but while attempting to get interop working, I stumbled on a very troubling discussion: dotnet/csharplang#5955 Apparently the decision has been made to scale back the scope of this feature in C#, eliminating some of the most promising use cases, perhaps until additional annotations are provided to restrict their use. Has this affected design decisions in F#? I haven't seen it mentioned anywhere here. You can still compile these patterns in the latest version of C# with the right combination of magical incantations, and interop them with the latest F#, but I worry about using them if they may be lost in the future. |
Okay we need an issue to track F# language updates for the next release.
The target is to release by Fall 2022 --- so it's going to be a small set of features, this is not an ordered or prioritized list
Feel free to discuss and add suggestions here in this thread.
>>>
). C# 11.0 featureCompilerFeatureRequiredAttribute
, more info.Background: we believe we need to do a good job supporting this style:
https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/tutorials/static-abstract-interface-methods
/cc @dsyme , @KathleenDollard , @jonsequitur , @vzarytovskii , @baronfel
The text was updated successfully, but these errors were encountered: