Copyright (c) Microsoft Corporation. All Rights Reserved.
See License.txt in the project root for license information.
All notable changes to this project will be documented in this file.
4.0.0 - Visual Studio 2015 Update 1 - 30 November 2015
- Perf:
for i in expr do body
optimization #219 - Remove type provider security dialog and use custom icon for type provider assembly reference #448
- Perf: Enable parallel build inside Visual Studio #487
- Perf: Remove StructBox for Value Types #549
- Add compiler warnings for redundant arguments in raise/failwith/failwithf/nullArg/invalidOp/invalidArg #630
- Add a compiler warning for lower case literals in patterns #666
- Fix scope of types for named values in attributes improperly set #437
- Add general check for escaping typars to check phase #442
- Fix AccessViolationException on obfuscated assemblies #519
- Fix memory leaks while reloading solutions in Visual Studio #591
- Enable breakpoints in
with
augmentations for class types #608 - Fix false escaping type parameter check error #613
- Fix quotation of readonly fields #622
- Keep the reference icons when opening references #623
- Don't suppress missing FSI transitive references #626
- Make Seq.cast's non-generic and generic IEnumerable implementations equivalent #651
4.0.0 - 20 July 2015
Includes commits up to dd8252eb8d20aaedf7b1c7576cd2a8a82d24f587
- Normalization and expansion of
Array
,List
, andSeq
modules - Other new APIs
Option.filter
,Option.toObj
,Option.ofObj
,Option.toNullable
,Option.ofNullable
String.filter
Checked.int8
,Checked.uint8
Async.AwaitTask
(non-generic)WebClient.AsyncDownloadFile
,WebClient.AsyncDownloadData
tryUnbox
,isNull
- New active pattern to match constant
Decimal
in quotations - Slicing support for lists
- Support for consuming high-rank (> 4) arrays
- Support for units of measure in
printf
-family functions - Support for constructors/class names as first-class functions
- Improved exception stack traces in async code
- Automatic
mutable
/ref
conversion - Support for static arguments to provided methods
- Support for non-nullable provided types
- Added
NonStructuralComparison
module containing non-structural comparison operators - Support for rational exponents in units of measure
- Give fsi.exe, fsiAnyCpi.exe nice icons
Microsoft.
optional in namepsace paths from FSharp.Core- Support for extension properties in object initializers
- Pre-support (not yet used) for additional nativeptr intrinsics
- Simplified, more robust resolution of type references in quotations
- Support for inheritance of types that have multiple interface instantiations
- Extended preprocessor grammar
- Support for implicit quotation of expressions used as method arguments
- Support for multiple properties in
[<StructuredFormatDisplay>]
- Eliminate tuple allocation for implicitly returned formal arguments
- Perf: fsc.exe now uses
GCLatencyMode.Batch
- Perf: Improved
hash
/compare
/distinctBy
/groupBy
performance - Perf:
Seq.toArray
perf improvement - Perf: Use
OptimizedClosures.FSharpFunc
in seq.fs where applicable - Perf: Use literals and mutable variables instead of ref cells for better performance in SHA1 calc
- Perf: Use smart blend of
System.Array.Copy
and iterative copy for array copies - Perf: Change
Seq.toList
to mutation-based to remove reliance onList.rev
- Perf: Change
pdbClose
to test if files are locked before inducing GCs - Perf: Use server GC mode for compiler
- Bugfix: Changed an error message within the Set module to use the correct module name.
- Bugfix: Fix assembly name of warning FS2003
- Bugfix #132: FSI Shadowcopy causes a significant degrade in the fsi first execute time
- Bugfix #131: Fix getentryassembly return value when shadowcopy is enabled in FSI
- Bugfix #61 Nonverifiable code generated with units of measure conversion
- Bugfix #68 BadImageFormatException with Units of Measure
- Bugfix #146 BadImageFormatException in both Release and Debug build with units of measure
- Bugfix: Incorrent cross-module inlining between different .NET profiles
- Bugfix: Properly document exceptions in
Array
module - Bugfix #24: Error reporting of exceptions in type providers
AddMemberDelayed
- Bugfix #13: Error on FSI terminal resize
- Bugfix #29: Module access modifier
internal
does not give internal access if no namespaces are used - Bugfix: Fix typo in error message for invalid attribute combination
- Bugfix #27: Private module values can be mutated by other modules
- Bugfix #38: ICE - System.ArgumentException: not a measure abbreviation, or incorrect kind
- Bugfix #44: Problems using FSI to
#load
multiple files contributing to the same namespace - Bugfix #95:
[<RequireQualifiedAccess>]
allows access to DU member if qualified only by module name - Bugfix #89: Embedding an untyped quotation in a typed quotation results in ArgumentException
- Bugfix: Show warning when Record is accessed without type but
[<RequireQualifiedAccess>]
was set - Bugfix #139: Memory leak in
Async.AwaitWaitHandle
- Bugfix #122:
stfld
does not give.volatile
annotation - Bugfix #30: Compilation error "Incorrect number of type arguments to local call"
- Bugfix #163: Array slicing does not work properly with non 0-based arrays
- Bugfix #148: XML doc comment generation adding empty garbage
- Bugfix #98: Using a single, optional, static parameter to a type provider causes failure
- Bugfix #109: Invalid interface generated by --sig
- Bugfix #123: Union types without sub-classes should be sealed
- Bugfix #68: F# 3.1 / Profile 259:
<@ System.Exception() @>
causes AmbiguousMatchException at runtime - Bugfix #9: Internal error in FSI: FS0192: binding null type in envBindTypeRef
- Bugfix #10: Internal error: binding null type in envBindTypeRef
- Bugfix #266:
windowed
error message incorrectly flags "non-negative" input when "positive" is what's needed - Bugfix #270: "internal error: null: convTypeRefAux" in interactive when consuming quotation containing type name with commas or spaces
- Bugfix #276: Combining struct field with units of measure will result managed type instead of unmanaged type
- Bugfix #269: Accidentally
#load
ing a DLL in script causes internal error - Bugfix #293:
#r
references without relative path are not loaded when file is local - Bugfix #237: Problems using FSI on multiple namespaces in a single file
- Bugfix #338: Escaped unicode characters are encoded incorrectly
- Bugfix #370:
Seq.sortBy
cannot handle sequences of floats containing NaN - Bugfix #368: Optimizer incorrectly assumes immutable field accesses are side-effect free
- Bugfix #337: Skip interfaces that lie outside the set of referenced assemblies
- Bugfix #383: Class with
[<AllowNullLiteral(false)>]
barred from inheriting from normal non-nullable class - Bugfix #420: Compiler emits incorrect visibility modifier for internal constructors of abstract class
- Bugfix #362: Depickling assertion followed by nullref internal errors in units-of-measure case
- Bugfix #342: FS0193 error when specifying sequential struct layout of a type
- Bugfix #299: AmbiguousMatchException with
[<ReflectedDefinition>]
on overloaded extension methods - Bugfix #316: Null array-valued attribute causes internal compiler error
- Bugfix #147: FS0073: internal error: Undefined or unsolved type variable: 'a
- Bugfix #34: Error in pass2 for type FSharp.DataFrame.FSharpFrameExtensions, error: duplicate entry 'Frame2.GroupRowsBy' in method table
- Bugfix #212: Record fields initialized in wrong order
- Bugfix #445: Inconsistent compiler prompt message when using
--pause
switch - Bugfix #238: Generic use of member constraint solved to record field causes crash
- Updated all templates (except tutorial) to include AssemblyInfo.fs setup in the same manner as default C# project templates
- Add keyboard shortcuts for FSI reset and clear all
- Improved debugger view for Map values
- Improved performance reading stdout/stderr from fsi.exe to F# Interactive window
- Support for VS project up-to-date check
- Improved project template descriptions, make it clearer how to target Xamarin platforms
- Intellisense completion in object initializers
- Add menu entry "Open folder in File Explorer" on folder nodes
- Intellisense completion for named arguments
Alt+Enter
sends current line of code to interactive if there is no selection- Support for debugging F# scripts with the VS debugger
- Add support for hexadecimal values (like 0xFF) ??to MSBuild property BaseAddress
- Updated menu icons used for F# interactive to align with other VS interactive windows
- Bugfix: Fix url of fsharp.org website in vs templates
- Bugfix #141: The "Error List" window does not parse MSBuild messages correctly
- Bugfix #147: Go to definition doesn't work for default struct ctors
- Bugfix #50: Members hidden from IntelliSense still show up in tooltips
- Bugfix #57 (partial): Visual Studio locking access to XML doc files
- Bugfix #157: Should not allow Framework 4 / F# 3.1 combination in project properties
- Bugfix #114: Portable Library (legacy) template displays wrong target framework version
- Bugfix #273: VS editor shows bogus errors when scripts use multi-hop
#r
and#load
with relative paths - Bugfix #312: F# library project templates and portable library templates do not have
AutoGenerateBindingRedirects
set to true - Bugfix #321: Provided type quickinfo shouldn't show hidden and obsolete members from base class
- Bugfix #319: Projects with target runtime 3.0 don't show up correctly on the VS project dialog
- Bugfix #283: Changing target framework causes incorrect binding redirects to be added to app.config
- Bugfix #278: NullReferenceException when trying to add some COM references
- Bugfix #259: Renaming files in folders causes strange UI display
- Bugfix #350: Renaming linked file results in error dialog
- Bugfix #381: Intellisense stops working when referencing PCL component from script (requires
#r "System.Runtime"
) - Bugfix #104: Using paste to add files to an F# project causes the order of files in the project and on the UI to get out of sync
- Bugfix #417: 'Move file up/down' keybindings should be scoped to solution explorer
- Bugfix #246: Fix invalid already rendered folder error
- Bugfix #106 (partial): Visual F# Tools leak memory while reloading solutions
3.1.2 - 20 August 2014
Includes commits up to 3385e58aabc91368c8e1f551650ba48705aaa285
- Allow arbitrary-dimensional slicing
- Ship versions FSharp.Core.dll built on portable profiles 78 and 259
- Support "shebang" (
#!
) in F# source files - Vertical pipes disallowed in active pattern case identifiers
- Enable non-locking shadow copy of reference assemblies in fsi/fsianycpu
- Inline codegen optimization using structs
- Perf improvement for
Seq.windowed
- exe.config files for fsc, fsi, fsianycpu now use simple version range instead of long set of explicit version redirects
- Bugfix #72: Indexer properties with more than 4 arguments cannot be accessed
- Bugfix #113:
Async.Sleep
in .NETCore profiles does not invoke error continuation - Bugfix #91: String module documentation is false
- Bugfix #78: Allow space characters in active pattern case identifiers
- Bugfix: Invalid code generated when calling VB methods with optional byref args
- Bugfix #69: Invalid code generated when calling C# method with optional nullable args
- Bugfix #9: XML doc comments on F# record type fields do not appear when accessing in C#
- Bugfix #59: Compiler always requires System.Runtime.InteropServices, this is not present in all portable profiles
- Bugfix #17: Incorrect generation of XML from doc comments for Record fields
- Bugfix #7: NullRef in list comprehension, when for loop works
- Bugfix #1: Type inference involving generic param arrays
- Bugfix #37: Perf regression in 3.1.0 related to resolving extension methods
- Bugfix: Can't run F# console application with 'update' in name
- Bugfix: Slicing and range expression inconsistent
- Bugfix: Invalid code is generated when using field initializers in struct constructor
- Project templates for F# portable libraries targeting profiles 78 and 259
- Enable non-locking shadow copy of reference assemblies in fsi/fsianycpu (VS options added)
- Allow breakpoints to be set inside of quotations
- Support "Publish" action in project system for web, Azure
- Bugfix #126: F# package installer does not honor custom install paths for express SKUs
- Bugfix #75: Microsoft.FSharp.Targets shim not deployed with F# SDK
- Bugfix: Fix crash in smart indent provider
- Bugfix #55: Cannot add reference to F# PCL project
- Bugfix: Typos in tutorial project script
- Bugfix: Required C# event members do not appear in intellisense when signature is (object, byref)
3.1.1 - 24 January 2014
- Improve F# compiler telemetry
- Bugfix: Improper treatment of * in AssemblyVersion attribute
- Bugfix:
sprintf "%%"
returns"%%"
in F# 3.1.0, previously returned"%"
in F# 3.0 and earlier - Bugfix: F# 3.0 1D slice setter does not compile in F# 3.1.0
- Enable installation of Visual F# on VS Desktop Express
- Added support for showing xml doc comments for named arguments
- Visual F# package deployable on non-VS machines. Deploys compiler and runtime toolchain plus msbuild targets
- Bugfix: Errors when attempting to add reference to .NET core library
- Bugfix: Crash in
FSComp.SR.RunStartupValidation()