VisualFSharp v4.1 Release Notes

  • ๐Ÿš€ Releases

    • โšก๏ธ Visual Studio 2017 updates 15.0 to 15.8 (exclusive)
    • .NET Core SDK versions 1.0 to 2.1.400 (exclusive)

    Language and Core Library features

    • Struct tuples
    • ๐ŸŽ‰ Initial support for consuming C#-style ref returns
    • ๐Ÿ‘ Struct record support with the [<Struct>] attribute
    • ๐Ÿ‘ Struct Discriminated Union support with the [<Struct>] attribute
    • ๐Ÿ‘ Result<'TSuccess, 'TFailure> type, with supporting functions in FSharp.Core
    • ๐Ÿ‘Œ Support for the fixed keyword to pin a pointer-tyle local to the stack
    • Underscores in numeric literals
    • ๐Ÿ‘ Caller Info Attribute Argument support
    • ๐Ÿ‘ namespace rec and module rec to support mutually referential types and functions within the same file
    • Implicit "Module" suffix added to modules that share the same name as a type
    • Tuple equality for F# tuples and System.Tuple

    Compiler improvements

    • ๐Ÿ‘Œ Support for generating Portable PDBs
    • Significant improvements to error messages, particularly to aid with suggestions
    • ๐ŸŽ Performance improvements
    • Interoperability improvements
    • ๐Ÿ‘Œ Support for geenerating F# AssymblyInfo from properties for .NET SDK projects
    • ๐Ÿ --debug:full support for F# on .NET Core on Windows
    • ๐Ÿ‘ MakeTuple support for struct tuples
    • โš  Warnings are forwarded when searching for method overloads
    • ๐Ÿ‘Œ Support for emitting an enum-specific warning when pattern matching over one
    • ๐Ÿ›  Many smaller bug fixes

    FSharp.Core features

    • ๐Ÿ‘Œ Support for NativePtr.ByRef
    • ๐Ÿ‘Œ Support for Async.StartImmediateAsTask
    • ๐Ÿ‘Œ Support for Seq.transpose/Array.transpose/List.transpose
    • ๐Ÿ‘ IsSerializable support for Option and Async<'T>
    • ๐Ÿ›  Many smaller bug fixes

    IDE features for F# tools in Visual Studio

    Most items here contributed by community members.

    • 0๏ธโƒฃ Default installation of F# wherever .NET Core is installed
    • Significant memory reductions in F# tooling
    • IntelliSense Filters and Glyphs
    • ๐Ÿ‘Œ Support for Go to All
    • ๐Ÿ‘ Find all Reference support
    • ๐Ÿ‘ In-memory cross-project references support
    • ๐Ÿ‘ QuickInfo supports type colorization
    • ๐Ÿ‘ QuickInfo supports navigable links that will invoke Go to Definition
    • ๐Ÿ‘ Inline Rename support
    • ๐Ÿ‘ Go to Definition from F# to C# support
    • Semantic document highlighting for selected symbols
    • ๐Ÿ‘Œ Support for Structured Guidelines and code outlining, which is toggleable
    • ๐Ÿ‘Œ Support for EditorBrowsable(EditorBrowsableState.Never)
    • Code fix for making Record and Discriminated Union case lables upper-case
    • Code fix to make suggestions for an unkown identifier
    • Code fix for prefixing or replacing an unused value with an underscore
    • Code fix to add the new keyword to a disposable type
    • Code fix to add an open statement at the top for a symbol coming from an unopened namespace or module
    • Code fix to simplify a name by removing unnecessary namespace qualifiers
    • Graying out unused values in the editor
    • Colorized fsi.exe when ran as a standalone console application
    • ๐Ÿ‘ Autocompletion support, including symbols from unopened namespaces
    • Colorization for mutable values to distinguish them from immutable values
    • ๐Ÿ‘Œ Support for move up/down on solution folder nodes
    • ๐Ÿ‘Œ Support for Blue (High Contrast) theming
    • ๐Ÿ‘ Full support for .NET Core and .NET Standard projects, with the ability to create new ASP.NET Core projects in F#
    • ๐Ÿ’ป Full support for ASP.NET Web SDK tooling, such as Azure publish UI, for F# projects
    • ๐Ÿ‘ Property page auto-sizing support for different monitors
    • ๐Ÿ‘ Smart indentation support which auto-indents based on scope and auto-deindents for bracket-like characters
    • ๐Ÿ“š XML documentation comment width scaling to prevent it running horizontally off the screen
    • Multiple settings pages to modify tooling settings
    • ๐Ÿ‘Œ Support for Drag and Drop across folders
    • ๐Ÿ‘Œ Support for nightly builds of the tools
    • Expanded debugger view for lists from 50 items to 5000 items
    • ๐Ÿ‘Œ Support for Optimization APIs in the compiler service
    • ๐Ÿ‘Œ Support for IsNameGenerated in the F# symbols API