F# to ship as part of Visual Studio 2010


Last year, the head of the Microsoft’s Developer Division, S. Somasegar, announced that Microsoft had begun investing in F# as one of Microsoft’s supported languages on the .NET platform. I am now thrilled to announce one result of this investment: F# will ship as part of Visual Studio 2010! Since the September 2008 CTP of F#, the F# team has been working hard on integrating F# into the main development branch of Visual Studio 2010. Below I show a screen shot of using the F# development tools in the 2010 shell, with the new editor and the new look-back-in-time “Debug History” window.


 


Over the last year we’ve seen amazing growth in the F# developer community, and great excitement at conferences and user groups. Two of the recent highlights have been the PDC presentation on F# by Luca Bolognese, and the live demo of F# and other new language technologies at JAOO by Anders Hejlsberg, Where are Programming Languages Going. If you’d like to learn why Microsoft is adding a functional programming language to its Visual Studio and .NET development tools, and the kind of scenarios where this language gives particular productivity benefits, then I can’t think of any better place to start than these two presentations by two of Microsoft’s most experienced development and language experts.


 


In this first supported release, our aim has to be to focus on the core strengths of F# for exploratory programming with F# Interactive, programming with data and implementing parallel and asynchronous components. As we’ve talked to people privately about adding F# to Visual Studio 2010, some questions naturally arise, and I’ve attempted to answer those below. If you have more questions, please ask on the comments below!


 


Early screen shot of F# in Visual Studio 2010


 


 


 


Q. When will the next release of F# be? Will I be able to continue to use F# with VS2008?


o   Our next major release of F# will be as part of the first beta of Visual Studio 2010, and at around the same time we will make available a matching update release of the Visual Studio 2008/.NET2.0 F# compiler and tools.


 


Q. What about shared source?


Our plan is to make both the F# compiler and the core F# library available as shared source on CodePlex in the Visual Studio 2010 timeframe, most likely at the time Visual Studio 2010 ships. We also plan an active CodePlex project called the “F# Power Pack” which will contain tools such as the F# parser and lexer generators. We outlined these plans in a post to the F# mailing list in October.


Q.     Is F# in .NET 4.0?


o   The current plan of record is that the F# core libraries and compiler will ship as an additional component, not in the .NET Framework itself.  We expect this to be available as an F# redistributable package. Referencing this package from a Visual Studio setup project will be sufficient to deploy the core library DLL(s) it to a client machine.


 


Q.     What level of tool support should I expect?


o   As outlined above, our focus in this release of F# is in areas I like to characterize as data-rich and control-flow-rich programming, tackled using a functional programming approach (think algorithms, data manipulations, data transformations, parallel programming, and reactive programming components). The tool support we plan is thus based around editing, scripting, interactive evaluation, the project system, debugging, profiling and great integration with C# and Visual Basic.


 


Q.     Will this release include designer tools?


o   Our focus on delivering high-quality F# core tools is designed to augment Visual Studio’s amazing strengths as a presentation-rich object-oriented programming environment. As a result, we have made an explicit decision to leverage the strengths of C# and Visual Basic as presentational and designer-rich programming languages in this release. This means that F# users should use the Visual Studio designer tools to generate C# or Visual Basic code and incorporate those components into their F# applications. In Visual Studio 2010, we expect F# applications which include components built with designers (e.g. WinForms, ASP.NET, Silverlight and WPF applications with a designer front-end) will normally be authored as mixed language applications. We’ll be providing templates that guide F# developers through this process.


 


Q.     What about Mono?


o   The F# compiler and tools will continue to provide a means for Mono users to develop F# applications, initiall through the Visual Studio 2008/.NET2.0 tool chain (see above).


 


Q. F# began as an “OCaml-like language for .NET”? Will it stay that way?


o   F# shares core language constructs with the excellent OCaml  language, from INRIA. This was an early design decision that acknowledged the importance of the Caml language family as a pragmatic realization of functional programming and as a basis for language innovation.  F# itself has now matured to include constructs such as F# object oriented programming, units of measure in F#, F# reflective programming and F# computation expressions.  Looking ahead, our plan of record is to continue to allow the use of F# in a mode that supports cross-compilation of a common subset of F# and OCaml, much as is done today. This will normally require the use of the F# Power Pack components, which will be available separately from the Visual Studio 2010 integration.


 


Q.     Will Microsoft Research stay involved?


o   Yes indeed! F# is a joint advanced development project between Microsoft Research, Cambridge and the Microsoft Developer Division. I am very glad to be staying involved as the language architect and will remain at Microsoft Research. Our awesome team includes people in Cambridge, Redmond, Vancouver and China, and some team members operate from Germany and New York. I am continually amazed at the people I get to work with on this project and the skills they bring, and we hope to make it a prime example of innovative development at Microsoft.


 


Many thanks to everyone in the F# and broader .NET, MSR and language communities for their support and assistance in getting F# to this point. We have exciting times ahead, and we trust this development will make the use of F# compelling and realistic in all its key usage domains.


 


Happy programming and development!


Don


 


 


 

window.png

Comments (37)

  1. MichaelGG says:

    Congratulations! The F# CTP is excellent, and having even more integration and so on sounds awesome.

    1. I’d ask when "the first beta of Visual Studio 2010" is, but I know that’s probably not answerable now.

    2. Will F# use .NET 4.0 types, like Tuples? Will .NET 4.0 contain FastFunc or anything else from F#? Or will interop with C# stay pretty much the same as it is now?

    3. What is a "presentational programming language"? Just ’cause C# uses = instead of <- to setup a form? ;). At any rate, I expected that. My comment there is that it’d be really handy if the "code behind" files, while generated in C#, get subclassed in F# or something like that. I.e., I’d prefer to write as little "glue" code as possible.

    4. What can we "loyal users" do to help?

  2. Will the F# Compiler Kernel ship with the shared source? Mostly I’m wondering about what acronym is used for it.

  3. Frank Bakker says:

    To be honest I don’t really like to blog about stuff that is already ‘out there’ on the web. There are

  4. This sounds great. I certainly support the decision _not_ to go for designer tools at this point.

    Some questions:

    1) Can we expect close integration with things like the concurrency and coordination runtime, parallelfx and the like? Not that these aren’t great libraries by themselves, but F# has some unique (in the .NET space) language features to offer here that could make things even nicer, with little effort (I think).

    2) It worries me that your list of tools does not include (unit) testing. As you may know, the testing support integrated in Visual Studio today (mstest) does not work with F# projects. Is this planned?

    thanks, and keep up the good work! I’ve enjoyed many hours of programming F#, and hope to continue to do so.

    Kurt

  5. Stephan says:

    Congratulations, that’s great news! Two years ago, who would have thought that VS 2010 will  have F# support?

    Concentrating on the algorithmic and data driven side of programming and leaving the presentational aspects to C# makes a lot of sense to me. There’s a somewhat similar story with C++/CLI, which now focuses on the native-managed interfacing and leaves the rest to C# and (native) C++.

    Now that .Net cross-language development becomes more and more important, is there maybe a chance that multifile assemblies and .netmodules get better support from the IDE?

  6. petr says:

    Hi Don. I have one question. What about plans to add new language features? Can we expect some interesting like structural subtyping, something new for metaprogramming, maybe macros?

  7. It’s official… Η F# θα είναι μέρος του Visual Studio 2010, first class citizen με τις υπόλοιπες γλώσσες.

  8. Tom Kirby-Green says:

    Awesome news! 🙂 Viva la revolution.

  9. int19h says:

    > Will F# use .NET 4.0 types, like Tuples?

    I’ve already asked the BCL team about this, and here’s what they’ve answered (http://blogs.msdn.com/bclteam/archive/2008/11/04/what-s-new-in-the-bcl-in-net-4-0-justin-van-patten.aspx#9045620):

    "We are working with F# to make sure the Tuple is compatible. In fact, great deal of effort went into this already, more than what meets the eye here"

    So I guess the answer is "yes"

  10. int19h says:

    Don, a question regarding designer tools. It is really the long-term strategy for F# to “not get involved”, or is it just a result of prioritization of features for this release (i.e., you now have to have them done and polished within VS2010 timeframe or not at all, and there’s no way you can do it by release, with other more important features yet to do)?

    Don says: presentation-oriented designer tools that generate F# code are definitely feasible in the longer term.

  11. Dimitris Foukas says:

    This is good news for the FP community out there!

    I agree with Kurt that supporting the CCR (perhaps via the existing Erlang – style mailbox facility) would be a perfect display of the power of the FP paradigm. Scala is going that direction too with actors and lightweight events.

    Any chances that the Silverlight 2 runtime will be natively supported by F#? Async workflows make perfect sense in that environment.

    Also today the functionality of Workflow Foundation is exposed in a very imperative API. IMO it would be extremely helpful if the F# team could offer some functional "facade" to WF as an experimental feature.

    Finally, can we expect that one day F# will be able to be compiled to Javascript the same way GWT does with Java? With VOLTA out of the picture now this is a viable option…

  12. You’ve been kicked (a good thing) – Trackback from DotNetKicks.com

  13. Dimitris Foukas says:

    This is good news for the FP community out there!

    I agree with Kurt that supporting the CCR (perhaps via the existing Erlang – style mailbox facility) would be a perfect display of the power of the FP paradigm. Scala is going that direction too with actors and lightweight events.

    Any chances that the Silverlight 2 runtime will be natively supported by F#? Async workflows make perfect sense in that environment.

    Also today the functionality of Workflow Foundation is exposed in a very imperative API. IMO it would be extremely helpful if the F# team could offer some functional "facade" to WF as an experimental feature.

    Finally, can we expect that one day F# will be able to be compiled to Javascript the same way GWT does with Java? With VOLTA out of the picture now this is a viable option…

  14. Lars says:

    "As a result, we have made an explicit decision to leverage the strengths of C# and Visual Basic as presentational and designer-rich programming languages in this release."

    Sounds like an excuse tbh..

    I think you make a mistake here, it is very important. C# code don’t always match F# code very well. Im not saying you need to do the code generation the C# way, use the strengths of F# and make it better.

  15. Aaron Marten says:

    Don Syme has just announced that F# will ship in the box with Visual Studio 2010 .

  16. MikeGale says:

    F# grabbed my attention and has held it for some time.

    My past experience is great ideas often get ground into the dust and vanish.  It seems that the decision makers are dunderheads, though the truth is that their focus doesn’t match what I think is right.

    I’m really pleased to see that we are not looking at dunderheads here.  We see a really smart decision that will unlock so many minds that have been consigned to underperformance by the unnecessary plumbing nonsense of mainstream languages, and their low power.  This is no small part due to Don’s long term efforts.  Very well done.

    F# will have great legs and go a long way.

    In coming years I’ll be on the lookout for signs of restrictive decisions (maybe the appearance of dunderheadedness) in language decisions.  When that happens it might just herald the emergence of what comes after.

    I think F# will bring a lot of good minds into programming, minds that were repelled by the limitations.

    It’s a long time since I bothered to watch one let alone two long Internet presentations (I prefer concise, dense text).  I watched most of both of these.

    Viva F# A Luta Continua.

  17. I have been beating this drum for some time now, but the latest post from Don Syme confirms the trend.

  18. Yogesh says:

    Can you please tell me where to find more information on F#?

  19. Buenas, para aquellos que estáis siguiendo el nuevo lenguaje F# que va a ser soportado en la plataforma

  20. Krishna says:

    Hey Great News,Thanks a lot….!!!

  21. Kp says:

    Great News…but how long should one keep on getting known to languages…When will they stop these inventions and work on improvements.

  22. I agree, enough! says:

    I agree, how about concentrating on one language and quit trying to create new cash cows. Pick a language and keep improving it. I don’t have the time to learn a new language every 2 years!

  23. JHugard says:

    I generally find F# to be THE MOST READABLE of the dozen or so languages I have used professionally, perhaps the most expressive, and certainly the most fun I’ve had in quite some time.  Very much looking forward to even better integration, more features, and the chance to use F# for real production code.

    @Kurt

    I agree completely that full unit testing integration is imperative, especially given the role of Non-UI (e.g., library) code generation.  I’m disappointed, though, that there won’t be UI or Web designer support – this may limit how often I grab for F# when writing small GUI tools, though it will certainly remain my tool of choice for command-line tools.

    @Dimitris

    You wrote, "can we expect that one day F# will be able to be compiled to JavaScript the same way GWT does with Java?"

    See the "FSharp.WebTools" project on CodePlex: http://www.codeplex.com/fswebtools.  Should be exactly what you are looking for.

  24. Joel says:

    Excellent! I’ve been waiting for a long time. Hope it will be recognised much broader by industry in the coming future.

  25. Kangmo Kim says:

    Very… Cool!!

    Congratualations!!

  26. Immo Landwerth says:

    Will there also be an express edition such as “Visual F# 2010 Express Edition”?

    Don says: Our current plan is not to have a separate express edition, but instead to continue to provide a version of the development tools that can either be used as a standalone command line compiler, or as an add-in, initially to Visual Studio 2008.

  27. Erik Cox says:

    To be totally honest this is the 1st time I heard of #F…I mean I use all the languages that come with

    <a href="http://www.notionsolutions.com">VS</a&gt;

    2005 and that is it…so I would truly appreciate if anyone could tell me which of the previous VS languages will be most similar to the #F?!

  28. Don Syme has announced that F# would ship as part of Visual Studio 2010 in his blog entry, F# to ship

  29. Anders Cui says:

    在2007年,微软就透露F#将在未来的某个时刻成为.NET平台的头等语言。现在,它终于宣布F#将被包含在Visual Studio 2010中。

  30. There is something weird in F# :

    Try typing 2.5*2.5. The result is ; "val it: float = 6.25 "

    So we can ask ourselves what the type of "let f a = a*a" is :

    > let f a = a*a;;

    val f : int -> int

    Hum, that’s weird, suddently the operator overload doesn’t work anymore.

    f 2.5;;    

    f 2.5;;   

    –^^^^  

    stdin(17,3): error FS0001: This expression has type        

    float but is here used with type         

    int.

    How do you explain that ?

  31. Been a bit tide up the last couple of weeks but never the less I would like to start the new year with

  32. honu says:

    Definite congratulations on core strength esp. implementing parallel and asynchronous components.

    "… we expect F# applications which include components built with designers … as mixed language applications. We’ll be providing templates that guide F# developers through this process."

    "I’d prefer to write as little "glue" code as possible."

    Patience is the key to F# RIA component incorporation interface integration paradise future…

  33. Scott Seely says:

    When will F# assemblies support partial trust via AllowPartiallyTrustedCallersAttribute? I’d like to be able to standardize on one language for projects when possible, and APTCA would be needed for things like ASP.NET on Azure for the generated assemblies.

    Don says: We plan to address this by the release of Visual Studio 2010. A couple of technical issues blocked us for a bit on this issue but we’re making good progress now.

  34. Недавно было объявлено , что в составе стандартной поставки Visual Studio 2010 появится, помимо Visual

  35. Недавно было объявлено , что в составе стандартной поставки Visual Studio 2010 появится, помимо Visual

  36. Wondering why there’s a buzz around F# and functional programming, and want to know when and how they

  37. Microsoft’s new New England Research and Development Center is becoming a hub of .NET activity in the