F# is a research project from Microsoft Research. It is not a Microsoft product. All opinions are my own. All content is provided "AS IS" with no warranties, and confers no rights.

I'm pleased to announce that a major new release of F# is now available (now version after some minor updates and fixes). This is the second major release in the version 1.0 release cycle, after the "preview" release in December. New features include Intellisense in the Visual Studio integration, CodeSense (on-the-fly type checking), PatternTips and MethodTips. The MLLib library of functional programming constructs has been expanded to include vectors, streams, further numeric types and systematic conversion functions to allow you to relate F# collections to the .NET collection abstractions.  Numerous other improvements have been made to the language, compiler and tools, as documented in the change log.

New samples and tutorials have been included, including Jack Palevich's port of three DirectX tutorials, and samples such as symbolic differentiation.

Although F# is a research language implementation, it aims to be a quality environment for the kind of large-scale symbolic programming commonly used to implement verification, analysis, optimization and transformation applications.  It is especially suited to situations where these programs require direct access to high-quality GUI, networking, data and graphics libraries as provided by .NET, and where some components may be written in other .NET languages such as C#.   It is also an excellent general purpose mixed imperative/functional programming language, suitable for authoring complex imperative and concurrent applications.  It combines ML-style type inference and orthogonal language constructs with the tools, runtime and libraries of the .NET Framework. F# programs can also be run on other CLI implementations such as Mono (though compilation must currently be performed on Windows x86). F# has a core language similar to that of OCaml's, and with care code can be written that cross-compiles on both systems.

Known issues with this release, updated 02/02/2005 (nearly all related to using VS 2003)

  • (Fixed from v1.0.2.0) VS 2003: Building from VS 2003 gives “cannot find fslibng.dll” error.  Workaround: set the FSHARP_HOME environment variable before running VS.   Normally you don’t need to set this.  This is due to some bizarre difference with reported module names when executing shell programs from inside VS 2003 and VS 2005.
  • VS 2005 Beta 1: devenv.exe enters a loop when running from an account other than the one used to install F#.  This is due to a bug in Visual Studio, exposed by any Visual Studio plugins based on the Babel package.  Workaround: Run regedit, go to and/or create a key called HKEY_CURRENT_USER\Software\Microsoft\Visual Studio\General and add the setting AllowBackgroundThreadCalls=1 if it is not there already (it will already be present for the account that you used to install F#)
  • VS 2003.  Cannot open sample solution files in VS 2003.  Workaround: open the sample project (.fsharpp) files instead.
  • VS 2003/.NET 1.1: Four "Failed to add to global assembly cache" messages appear when using .NET v1.1 (VS 2003).  These messages are normal when installing on .NET v1.1 - this is because the assemblies contain .NET v2.0 generic code, and thus include a dependency on v2.0.
  • VS 2003: When running FsVsPackageInstall.msi, it begins installation procedure but raise next error "Module C:\fsharp\bin\FsLangService.dll failed to register. HRESULT -2147024894. Contact your support personnel. [Exit Installation] [Try Again] [Continue]." Check that you set the FSHARP_TARGET_VS_VER environment variable to 7.1, as described in the installation notes when installing for VS 2003 w/o VSIP
  • VS 2003: When running FsVsPackageInstall.msi, it begins installation procedure but raise next error "Module C:\fsharp\bin\babelservice.dll failed to register. HRESULT -2147024770. Contact your support personnel. [Exit Installation] [Try Again] [Continue]." This is because you do not have msvcr80.dll on your machine,.  It is in the 'bin' directory but babelpackage.dll is incorrectly in the root directory of your installation.  Workaround:
    1. Choose Continue.  The installation should complete.  (If you get other errors wait for the next release after, which will fix this problem.)
    2. Move babelpackage.dll into your 'bin' directory
    3. Run 'regsvr32 bin\babelpackage.dll' from the root of your F# installation
  • All versions: The warning "This and other recursive references within..." appears when building some samples.  These are just letting you know that the code is using mutually-referential objects (value recursion). Use --no-warn 40 to ignore these. The program will run fine.