Detailed Release Notes for F# February 2010 Release

Today we have announced the February 2010 release of the F# language. The detailed release notes for this release are below.

Language

 

XML Doc Comments. You can now specify <summary>, <remarks>, <parameters> and other attributes explicitly. XML Doc comments are checked for basic validity when the comments are displayed by the F# Visual Studio implementation.

Support for generating CAS attributes. The F# compiler now emits Code Access Security attributes.

‘unmanaged’ constraint . Certain inlined F# library operations on native pointers are only valid on unmanaged types. The new unmanaged constraint has been added to the F# language and these operators, to give added safety.

‘use’ bindings warn instead of error when sent to F# Interactive. In response to user feedback, sending a “use” binding now only gives a warning instead of an error when sent to F# interactive, which improves the use of F# interactive as an adhoc debugging tool.

Support for CLIEvent attribute in FSI.exe and in Object Expressions. The CLIEvent attribute is used to indicate that an F# property returning a first class event value should be compiled as a C#/.NET event. Use of this attribute now emits correct metadata when used in F# Interactive, and the attribute may be used on properties in object expressions.

Libraries

Removal of deprecated functionality

Many deprecation warnings that have been introduced over the past few releases have now been removed. When porting code to the newest F# release from older releases, it is highly recommended that you migrate first to the October 2009 CTP release, so that the useful deprecation warnings are available.

Async API Implementation Improvements

The implementation of F# Async has been improved for performance and scalability.

Reduce the size of FSharp.Core

FSharp.Core.dll is now ~40% smaller, both for .NET, Mono and for Silverlight.

SourceConstructFlags.NonpublicRepresentation renamed to NonPublicRepresentation

Thanks to Steve Gilham for pointing this out

FSharp Power Pack: Moved to CodePlex, also much functionality moved to FSharp.PowerPack.Compatibility.dll

The F# PowerPack has moved to CodePlex. Some functionality has been split out into FSharp.PowerPack.Comaptibility.dll and you may need to add a reference to that DLL. For example List.contains, List.mem, List.mem_assoc, List.assoc, Hashtbl, Arg, Sys, Obj, Printexc and friends are there.

WebExtensions

The Microsoft.Fsharp.Control.WebExtensions module is now auto-opened, so you no longer need to open this explicitly in your code.

Visual Studio

Support for Operator Colorization

Operators colorization settings are now respected by the F# editor.

XML Doc comments generated by default for F# Libraries

All F# library projects now generate XML doc comment files by default. RC warning: This made an .xml file-locking issue in the F# language service more common. This will be addressed in the RTM release, but is a known issue in the RC release.

Upgrading from VS2008 to VS2010 remains targeting .NET2.0/3.0/3.5

With F#’s multitargeting support in VS2010, projects upgraded to VS2010 now remain targeting their existing framework target. This makes it easy to use VS2010 to continue developing projects targeted at pre-.Net4 frameworks.

Localization of F# in VS2010

The F# tooling in VS2010 is now localized into the Visual Studio languages, enabling developers working in many new languages to leverage F#. The full set of localized Visual Studio releases will be available after the RTM of the English release.

F# Redistributable

The F# Redist is an installer for the F# runtime (FSharp.Core.dll) which can be used as a pre-requisite by applications which depend on F#. It is also built into the setup and deployment project support in VS2010.

F# on Mono/Linux/Mac

F# on Mono

We have made some significant improvements to the experience of using F# Interactive and the F# compiler on Mono/Linux/Mac.

Ø The --readline option is now enabled by default when running FSI.EXE on all platforms (except Mono on Windows, where a known bug prevents it being enabled)

Ø A new compiler option --resident is available when running the F# compiler fsc.exe on Mono. This starts a copy of the compiler as a service, which stays resident, improving subsequent compilation times. This reduces typical compilation times for small programs on Mono by a factor of 3-5x.