VisualFSharp v4.0.0 Release Notes
Release Date: 2015-11-30 // over 8 years ago-
Includes commits up to
dd8252eb8d20aaedf7b1c7576cd2a8a82d24f587
Language, compiler, runtime, interactive
- Normalization and expansion of
Array
,List
, andSeq
modules- New APIs for 4.0:
chunkBySize
,contains
,except
,findBack
,findInstanceBack
,indexed
,item
,mapFold
,mapFoldBack
,sortByDescending
,sortDescending
,splitInto
,tryFindBack
,tryFindIndexBack
,tryHead
,tryItem
,tryLast
- New APIs for 4.0:
- 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
Visual Studio
- โก๏ธ 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
- Normalization and expansion of