Skip to content

Latest commit

 

History

History
107 lines (87 loc) · 3.2 KB

Language-Version-History.md

File metadata and controls

107 lines (87 loc) · 3.2 KB

Features Added in F# Language Versions

  • Discriminated unions
  • Records
  • Tuples
  • Pattern matching
  • Type abbreviations
  • Object expressions
  • Structs
  • Signature files
  • Imperative programming
  • Modules (no functors)
  • Nested modules
  • .NET Interoperability
  • Interactive environment
  • Object programming
  • Encapsulation Extensions
  • Active patterns
  • Units of measure
  • Sequence expressions
  • Asynchronous programming
  • Agent programming
  • Extension members
  • Named arguments
  • Optional arguments
  • Array slicing
  • Quotations
  • Native interoperability
  • Computation expressions
  • Type providers
  • LINQ query expressions
  • CLIMutable attribute
  • Triple-quoted strings
  • Auto-properties
  • Provided units-of-measure
  • Named union type fields
  • Extensions to array slicing
  • Type inference enhancements
  • printf on unitized values
  • Extension property initializers
  • Non-null provided types
  • Primary constructors as functions
  • Static parameters for provided methods
  • printf interpolation
  • Extended #if grammar
  • Multiple interface instantiations
  • Optional type args
  • Params dictionaries
  • Struct tuples which inter-operate with C# tuples
  • Struct annotations for Records
  • Struct annotations for Single-case Discriminated Unions
  • Underscores in numeric literals
  • Caller info argument attributes
  • Result type and some basic Result functions
  • Mutually referential types and modules within the same file
  • Implicit Module syntax on modules with shared name as type
  • Byref returns, supporting consuming C# ref-returning methods
  • Error message improvements
  • Support for fixed
  • Versioning alignment of binary, package, and language
  • Support for Span<'T> and related types
  • Ability to produce byref returns
  • The voidptr type
  • The inref<'T> and outref<'T> types to represent readonly and write-only byrefs
  • IsByRefLike structs
  • IsReadOnly structs
  • Extension method support for byref<'T>/inref<'T>/outref<'T>
  • match! keyword in computation expressions
  • Relaxed upcast with yield in F# sequence/list/array expressions
  • Relaxed indentation with list and array expressions
  • Enumeration cases emitted as public
  • Anonymous records
  • ValueOption module functions
  • Compiler support for LangVersion
  • Implicit yields
  • No more required double underscore (wildcard identifier)
  • Indentation relaxations for parameters passed to constructors and static methods