hubFS: THE place for F#

. . . are you on The Hub?
Welcome to hubFS: THE place for F# Sign in | Join | Help
in Search

Heart of Sharpness (The MSR F# Team's blog at The Hub)

F# 1.1.11 under preparation

We're in the process of nailing down the final details of the next release of F#.  It will be release 1.1.11.3 (or so)

If there are any issues that you think should absolutely be dealt with in this release please let us know by emailing us directly at fsbugs AT microsoft DOT com

The current change list reads as follows (not all entries are yet fully documented):

Optimizations and Code Quality. Fewer locals are now produced in many situations where inlining occurs. This improves the quality of the end x86 code, allows the JIT to inline more often and reduces the size of the metadata in generated assemblies.

Extensible expr.[idx] syntax for string, array, dictionary and other access operations.. The syntax expr.[idx] is now shorthand for accessing the Item property on a type. This means that expr.[idx] can be used to perform lookups on essentially any .NET collection type.

Note: As with overloaded operators on integers, the types string and the array types do not in reality support efficient Item properties. However F# arranges things to give the appearance that they do.

Improvements to inference related to 'null' values. 'null' constraints have now been incorporated into the inference process.

Instance members on List, Option, Set.

Instance members now permitted on types that may use null as a representation.

Implementation of Structural comparison, equality and hashing now in F# code (hence easier to debug).

Multiple namespaces fragments now permitted in a single file, and multiple fragments can be constrained by a single signature..

Fixes to non-zero-bounded multi-dimensional arrays.

Overload Resolution when Multiple Overloaded Operators Exist. Some .NET support multiple overloads for the same operator, which must be resolved according to a process similar to the resolution of overloaded methods. F# uses constraints to handle operator overloading, and now resolves the choice between multiple overloads using essentially the same technique as is used to resolve method overloading. For example, the following overloads now resolve correctly:

  let f1 (x:DateTime) (y:TimeSpan) : DateTime = x - y
  let g1 (x:DateTime) (y:DateTime) : TimeSpan = x - y
  // Return type is also sufficient:
  let f2 (x:DateTime) y : DateTime = x - y
  let g2 (x:DateTime) y : TimeSpan = x - y
  // Just argument types are also sufficient:
  let f3 (x:DateTime) (y:TimeSpan)  = x - y
  let g3 (x:DateTime) (y:DateTime)  = x - y

Type Qualified Disciminator Names. Ambiguity between constructors of a discriminated union can now be resolved by using the type-qualified path to the discriminator, for example:

    type XY = X | Y
    type YZ = Y | Z
    
    let y1 = XY.Y
    let y2 = YZ.Y
    
    let f xy = 
      match xy with 
      | XY.X -> "X"
      | XY.Y -> "Y"

    let g yz = 
      match yz with 
      | YZ.Y -> "X"
      | YZ.Z -> "Y"

The same is true of record field names, though this has been the case for some time now.

The --base-address flag. Base addresses indicate the default loading address for DLLs within a memory space. Loading a DLL at a default location can reduce the need for 'fixups' that occur when a native DLL gets relocatred. Native DLLs occur with F# code if you use NGEN with your F# DLLs, and it is recommended that you use an approriate base address if using NGEN and rebasing conflicts occur. Various tools and debuggers are available on the web to help determine if rebasing is occuring.

Use F# with Microsoft internal or self-built versions of the CLI. Some Microsoft internal or self-built implementations of the CLI have unusual, non-standard names such as v2.0.x86chk. The --cli-version flag can now be used to specify such a version.

Minor improvements and Bug Fixes

574	F# Compiler	issue with top level 
                           mutables (fsi.exe), reported by Andrew Fitzgibbon
389	F# Perf	        Printf implementation allocated too many closures
594	F# Compiler	tyvar lookup failed in ilreflect
595	F# Interactive	F# Interactive code generation bug when 
                            closures used inside interface implementations
596	F# Interactive	F# Interactive code generation bug: 
                           Implementing generic interfaces does not always 
                           correctly work around Reflection.Emit limitations
586	F# Compiler	local mutables spilled into other locals prior to use
588	F# Compiler	expr of constructor argument is not typed-expr
587	F# Compiler	poor error message on for i = 0 to 10 do .. done expr
590	F# Compiler	match exprA,exprB with ....  allocates tuples
592	F# Compiler	poor error message when a constructor is too generic
582	F# Compiler	fsi prints types of the latest interaction with full path
581	F# Compiler	Problem with pickling: Quotation <@ 1.3 @> gives NaN
576	F# Perf	        Reduce numer of generated IL locals
566	F# Compiler	interface inheritance/extension not being printed correctly
516	F# Compiler	permit C# events to be used as first class IEvent objects from F#
471	F# Compiler	Eliminate unnecessary .cctors
Published Wednesday, May 03, 2006 2:00 AM by dsyme

Comments

 

F# Releases said:

F# 1.1.11.6 has been released.&amp;nbsp; This release has a number of features and fixes which are detailed...
May 22, 2006 12:47 PM
Anonymous comments are disabled

This Blog

Post Calendar

<May 2006>
SuMoTuWeThFrSa
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

Syndication

Powered by Community Server, by Telligent Systems