F# 1.0.1 Now Available: Intellisense, CodeSense, MethodTips, VS 2003, Larger Library and more


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 1.0.2.0 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 1.0.2.0, 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.

     

  • Comments (10)

    1. neville says:

      Hi,

      Tried to download F#. Seems the link is broken.

      Any suggestions ?

    2. Don Syme says:

      Re the broken link: I’m not sure which link you mean – I’ve checked most of them just now – but try http://research.microsoft.com/downloads – this is working.

      Don

    3. Chris Nahr says:

      Don, I think he’s referring to the extremely confusing link roundabout in the MSDN Research area.

      When you click the "F# Compiler web site" link from the Research Downloads list, you get a page that has a "Download F#" link at the top right.

      Okay, so you click that link, and you get another page with another link entitled "F# Compiler Preview".

      However, when you click that link you’re suddenly back at the top of the Downloads list where you started!

      It took me a long while to figure out that you have to click on "F# Compiler" at the top of the F# entry in that list to actually download the compiler. I assumed it was just another link to the "F# Compiler web site".

    4. Andy says:

      Hello

      I am very interested in using F# in a research project, but I am in need someting that can be interpreted ( a user would enter commands in the language, in they would be evauated ) as apposed to a batch compile.

      So, would it be possible to get the source code for F#?

      thanks.

    5. Don Syme says:

      Hi Andy,

      I’ve long planned a source release, but have always had other priorities. There’s no reason why we shouldn’t go ahead with one, especially if we have some project proposals from other reearchers to justify it, e.g. if you really planned to implement an read-eval loop. Send me an email and we can discuss it further.

      It would be quite tempting to implement the read-eval loop at the level of Common IL. F#, the Abstract IL toolkit and the bootsrapped F# compiler may be a good starting point for that. You could then have a plug-in architecture that would allow code to be entered in diffent languages.

      Don

    6. ;) says:

      Tried to download with opera, does not work, works if u use MS Explorer

    7. Phil Rand says:

      I encountered the FsLangService.dll failure to register, with F# 1.1.13.8 on a fresh install of VS 2005.  It turned out I had a stale FSHARP_HOME environment variable from a previous F# install.  Once I removed it, InstallFSharp.msi worked fine.