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, and Seq modules
      • New APIs for 4.0: chunkBySize, contains, except, findBack, findInstanceBack, indexed, item, mapFold, mapFoldBack, sortByDescending, sortDescending, splitInto, tryFindBack, tryFindIndexBack, tryHead, tryItem, tryLast Collection API additions
    • 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 on List.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 #loading 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