baronfel / fsharp-lang-testbed

0 stars 0 forks source link

Expand support for byref to match C# 7 #21

Open baronfel opened 7 years ago

baronfel commented 7 years ago

Idea 11125137: Expand support for byref to match C# 7

Status : planned

Submitted by Keith Battocchi on 12/17/2015 12:00:00 AM

14 votes

C# is adding support for byref locals and returns (see https://github.com/dotnet/roslyn/issues/118, slated for milestone 1.3). This will result in many libraries that expose these features (which the CLR already supports), but methods with such return types aren't currently usable from F#. F# already supports byref locals, but doesn't support implementing byref-returning methods nor does it support calling byref-returning methods. At a minimum, F# should support calling byref-returning-methods (e.g. SomeRefReturningMethod(x,y,z) <- w), since C# users will be creating methods like these and being unable to call them will limit F#'s reach. It would be nice if on top of that base level of support F# also supported declaring such methods, using the same safety rules that C# is using (e.g. the only refs that are safe to return are those that point to values stored on the heap or existing refs that are passed into the method).