Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
F Sharp (programming language)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==History== ===Versions=== {| class="wikitable" |- ! F#<br/>version ! Language specification ! Date ! [[Computing platform|Platforms]] ! [[Runtime system|Runtime]] |- | 1.x | | May 2005<ref>{{cite web|last=Syme|first=Don|title=F# 1.0.8 released|url=http://blogs.msdn.com/b/dsyme/archive/2005/05/21/420795.aspx|publisher=Microsoft|access-date=September 7, 2014}}</ref> |[[Microsoft Windows|Windows]] |[[.NET Framework|.NET]] 1.0 - 3.5 |- | 2.0 | [http://fsharp.org/specs/language-spec/index.html#f-20 August 2010] | April 2010<ref>{{cite web|last=Syme|first=Don|title=F# 2.0 released as part of Visual Studio 2010|url=http://blogs.msdn.com/b/dsyme/archive/2010/04/12/f-2-0-released-as-part-of-visual-studio-2010.aspx|publisher=Microsoft|access-date=September 7, 2014}}</ref> |[[Linux]], [[macOS]], [[Microsoft Windows|Windows]] |[[.NET Framework|.NET]] 2.0 - 4.0, [[Mono (software)|Mono]] |- | 3.0 | [http://fsharp.org/specs/language-spec/index.html#f-30 November 2012] | August 2012<ref>{{cite web|last=Zander|first=Jason|title=Visual Studio 2012 and .NET Framework 4.5 released to the web|url=http://blogs.msdn.com/b/jasonz/archive/2012/08/15/visual-studio-2012-and-net-framework-4-5-released-to-the-web.aspx|publisher=Microsoft|access-date=September 7, 2014}}</ref> |[[Linux]], [[macOS]], [[Microsoft Windows|Windows]];<br/>[[JavaScript]],<ref name="js"/> [[Graphics processing unit|GPU]]<ref name="gpgpu"/> |[[.NET Framework|.NET]] 2.0 - 4.5, [[Mono (software)|Mono]] |- | 3.1 | [http://fsharp.org/specs/language-spec/index.html#f-31 November 2013] | October 2013<ref>{{cite web|title=Visual Studio 2013 released to web|date=17 October 2013 |url=http://blogs.msdn.com/b/visualstudio/archive/2013/10/17/visual-studio-2013-released-to-web.aspx|publisher=Microsoft|access-date=September 7, 2014}}</ref> |[[Linux]], [[macOS]], [[Microsoft Windows|Windows]];<br/>[[JavaScript]],<ref name="js"/> [[Graphics processing unit|GPU]]<ref name="gpgpu"/> |[[.NET Framework|.NET]] 2.0 - 4.5, [[Mono (software)|Mono]] |- | 4.0 | [http://fsharp.org/specs/language-spec/index.html#f-40 January 2016] | July 2015<ref>{{cite web|title=Announcing the RTM of Visual F# 4.0|url=http://blogs.msdn.com/b/dotnet/archive/2015/07/20/announcing-the-rtm-of-visual-f-4-0.aspx|publisher=Microsoft|access-date=September 15, 2015}}</ref> |<!-- [[Linux]], [[macOS]], [[Microsoft Windows|Windows]];<br/>[[JavaScript]], [[Graphics processing unit|GPU]] --> |<!-- [[.NET Framework|.NET]] 2.0 - 4.5, [[Mono (software)|Mono]] --> |- | 4.1 | [http://fsharp.org/specs/language-spec/index.html#f-41 May 2018] |March 2017<ref>{{Cite news|url=https://blogs.msdn.microsoft.com/dotnet/2017/03/07/announcing-f-4-1-and-the-visual-f-tools-for-visual-studio-2017-2/|title=Announcing F# 4.1 and the Visual F# Tools for Visual Studio 2017|access-date=2017-03-08|language=en-US}}</ref> |[[Linux]], [[macOS]], [[Microsoft Windows|Windows]], [[JavaScript]],<ref name="js"/> [[Graphics processing unit|GPU]]<ref name="gpgpu"/> |[[.NET Framework|.NET]] 3.5 - 4.6.2, [[.NET]], [[Mono (software)|Mono]] |- | 4.5 | |August 2018<ref>{{cite web|title=Announcing F# 4.5|date=14 August 2018|url=https://blogs.msdn.microsoft.com/dotnet/2018/08/14/announcing-f-4-5/|publisher=Microsoft|access-date=August 14, 2018}}</ref> |[[Linux]], [[macOS]], [[Microsoft Windows|Windows]], [[JavaScript]],<ref name="js"/> [[Graphics processing unit|GPU]]<ref name="gpgpu"/> | [[.NET Framework|.NET]] 4.5 - 4.7.2,<ref>{{Cite web|url=https://www.nuget.org/packages/FSharp.Core/4.5.0|title=FSharp.Core 4.5.0}}</ref> [[.NET]] Core SDK 2.1.400<ref>{{cite web|title=Download .NET Core 2.1 (Linux, macOS, and Windows)|url=https://dotnet.microsoft.com/download/dotnet/2.1|publisher=Microsoft|access-date=May 13, 2021}}</ref> |- | 4.6 | |March 2019<ref>{{cite web|title=Announcing F# 4.6|date=29 March 2019|url=https://devblogs.microsoft.com/dotnet/announcing-f-4-6/|publisher=Microsoft|access-date=March 29, 2019}}</ref> |[[Linux]], [[macOS]], [[Microsoft Windows|Windows]], [[JavaScript]],<ref name="js"/> [[Graphics processing unit|GPU]]<ref name="gpgpu"/> | [[.NET Framework|.NET]] 4.5 - 4.7.2,<ref>{{Cite web|url=https://www.nuget.org/packages/FSharp.Core/4.6.0|title=FSharp.Core 4.6.0}}</ref> [[.NET]] Core SDK 2.2.300<ref>{{cite web|title=Download .NET Core 2.2 (Linux, macOS, and Windows)|url=https://dotnet.microsoft.com/download/dotnet/2.2|publisher=Microsoft|access-date=May 13, 2021}}</ref> |- | 4.7 | |September 2019<ref>{{cite web|title=Announcing F# 4.7|date=23 September 2019|url=https://devblogs.microsoft.com/dotnet/announcing-f-4-7/|publisher=Microsoft|access-date=September 23, 2019}}</ref> |[[Linux]], [[macOS]], [[Microsoft Windows|Windows]], [[JavaScript]],<ref name="js"/> [[Graphics processing unit|GPU]]<ref name="gpgpu"/> | [[.NET Framework|.NET]] 4.5 - 4.8,<ref>{{Cite web|url=https://www.nuget.org/packages/FSharp.Core/4.7.0|title=FSharp.Core 4.7.0}}</ref> [[.NET]] Core SDK 3.0.100<ref>{{cite web|title=Download .NET Core 3.0 (Linux, macOS, and Windows)|url=https://dotnet.microsoft.com/download/dotnet/3.0|publisher=Microsoft|access-date=May 13, 2021}}</ref> |- | 5.0 | |November 2020<ref name="blogs.msdn.microsoft.com2">{{Cite web|url=https://devblogs.microsoft.com/dotnet/announcing-f-5/|title=Announcing F# 5|date=November 10, 2020}}</ref> |[[Linux]], [[macOS]], [[Microsoft Windows|Windows]], [[JavaScript]],<ref name="js"/> [[Graphics processing unit|GPU]]<ref name="gpgpu"/> | [[.NET]] SDK 5.0.100<ref>{{cite web|title=Download .NET 5.0 (Linux, macOS, and Windows)|url=https://dotnet.microsoft.com/download/dotnet/5.0|publisher=Microsoft|access-date=May 13, 2021}}</ref> |- | 6.0 | |November 2021<ref>{{Cite web|url=https://devblogs.microsoft.com/dotnet/fsharp-6-is-officially-here/|title=F# 6 is officially here!|date=November 9, 2021}}</ref> |[[Linux]], [[macOS]], [[Microsoft Windows|Windows]], [[JavaScript]],<ref name="js"/> [[Graphics processing unit|GPU]]<ref name="gpgpu"/> | [[.NET]] SDK 6.0.100<ref>{{cite web|title=Download .NET 6.0 (Linux, macOS, and Windows)|url=https://dotnet.microsoft.com/download/dotnet/6.0|publisher=Microsoft|access-date=November 14, 2021}}</ref> |- | 7.0 | |November 2022<ref>{{Cite web|url=https://devblogs.microsoft.com/dotnet/announcing-fsharp-7/|title=Announcing F# 7|date=November 8, 2022}}</ref> |[[Linux]], [[macOS]], [[Microsoft Windows|Windows]], [[JavaScript]],<ref name="js"/> [[Graphics processing unit|GPU]]<ref name="gpgpu"/> | [[.NET]] SDK 7.0.100<ref>{{cite web|title=Download .NET 7.0 (Linux, macOS, and Windows)|url=https://dotnet.microsoft.com/en-us/download/dotnet/7.0|publisher=Microsoft|access-date=November 8, 2022}}</ref> |- | 8.0 | |November 2023<ref>{{Cite web|url=https://devblogs.microsoft.com/dotnet/announcing-fsharp-8/|title=Announcing F# 8|date=November 14, 2023}}</ref> |[[Linux]], [[macOS]], [[Microsoft Windows|Windows]], [[JavaScript]],<ref name="js"/> [[Graphics processing unit|GPU]]<ref name="gpgpu"/> | [[.NET]] SDK 8.0.100<ref>{{cite web|title=Download .NET 8.0 (Linux, macOS, and Windows)|url=https://dotnet.microsoft.com/en-us/download/dotnet/8.0|publisher=Microsoft|access-date=November 14, 2023}}</ref> |- | 9.0 | |November 2024<ref>{{Cite web|url=https://learn.microsoft.com/en-us/dotnet/fsharp/whats-new/fsharp-9|title=What's new in F# 9|date=November 12, 2024}}</ref> |[[Linux]], [[macOS]], [[Microsoft Windows|Windows]], [[JavaScript]],<ref name="js"/> [[Graphics processing unit|GPU]]<ref name="gpgpu"/> | [[.NET]] SDK 9.0.0<ref>{{cite web|title=Download .NET 9.0 (Linux, macOS, and Windows)|url=https://dotnet.microsoft.com/en-us/download/dotnet/9.0|publisher=Microsoft|access-date=January 13, 2025}}</ref> |} ===Language evolution=== F# uses an open development and engineering process. The language evolution process is managed by [[Don Syme]] from [[Microsoft Research]] as the [[benevolent dictator for life]] (BDFL) for the language design, together with the F# Software Foundation. Earlier versions of the F# language were designed by [[Microsoft]] and [[Microsoft Research]] using a closed development process. F# was first included in Visual Studio in the [[Visual Studio#2010|2010 edition]], at the same level as [[Visual Basic (.NET)]] and C# (albeit as an option), and remains in all later editions, thus making the language widely available and well-supported. F# originates from Microsoft Research, Cambridge, UK. The language was originally designed and implemented by [[Don Syme]],<ref name="historyMSR">{{cite web |url=https://www.microsoft.com/en-us/research/project/f-at-microsoft-research/ |title=F# Historical Acknowledgements |website=[[Microsoft]]}}</ref> according to whom in the fsharp team, they say the F is for "Fun".<ref>{{cite web |url=http://www.networkworld.com/article/2271225/software/the-a-z-of-programming-languages--f-.html |title=The A-Z of programming languages: F# |last1=Edwards |first1=Kathryn |date=23 December 2008 |website=[[Network World]] |publisher=IDG |access-date=8 August 2016 |archive-date=13 November 2018 |archive-url=https://web.archive.org/web/20181113210720/https://www.networkworld.com/article/2271225/software/the-a-z-of-programming-languages--f-.html |url-status=dead}}</ref> Andrew Kennedy contributed to the design of units of measure.<ref name="historyMSR"/> The Visual F# Tools for Visual Studio are developed by Microsoft.<ref name="historyMSR"/> The F# Software Foundation developed the F# open-source compiler and tools, incorporating the open-source compiler implementation provided by the Microsoft Visual F# Tools team.<ref name="fsharporg"/> {| class="wikitable" |+ Summary of versions |- ! F#<br/>version ! Features added |- ! 1.0 |valign="top"| * Functional programming * Discriminated unions * Records * Tuples * Pattern matching * Type abbreviations * Object-oriented programming * Structs * Signature files * Scripting files * Imperative programming * Modules (no functors) * Nested modules * .NET interoperability |- ! 2.0 | * Active patterns * Units of measure * Sequence expressions * Asynchronous programming * Agent programming * Extension members * Named arguments * Optional arguments * Array slicing * Quotations * Native interoperability * Computation expressions |- ! 3.0<ref>{{cite web|last=McNamara|first=Brian|title=More About F# 3.0 Language Features|url=http://blogs.msdn.com/b/fsharpteam/archive/2012/07/19/more-about-fsharp-3.0-language-features.aspx|access-date=September 7, 2014|publisher=Microsoft}}</ref> | * Type providers * LINQ query expressions * CLIMutable attribute * Triple-quoted strings * Auto-properties * Provided units-of-measure |- ! 3.1<ref>{{cite web|last=McNamara|first=Brian|title=Announcing a pre-release of F# 3.1|url=http://blogs.msdn.com/b/fsharpteam/archive/2013/06/27/announcing-a-pre-release-of-f-3-1-and-the-visual-f-tools-in-visual-studio-2013.aspx|access-date=September 7, 2014|publisher=Microsoft}}</ref> | * Named union type fields * Extensions to array slicing * Type inference enhancements |- ! 4.0<ref>{{Cite news|title=Announcing the RTM of Visual F# 4.0|language=en-US|url=https://blogs.msdn.microsoft.com/dotnet/2015/07/20/announcing-the-rtm-of-visual-f-4-0/|access-date=2017-03-08}}</ref> | * 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 * Tailcall attribute * Multiple interface instantiations * Optional type args * Params dictionaries |- ! 4.1<ref>{{Cite news|title=Announcing F# 4.1 and the Visual F# Tools for Visual Studio 2017|language=en-US|url=https://blogs.msdn.microsoft.com/dotnet/2017/03/07/announcing-f-4-1-and-the-visual-f-tools-for-visual-studio-2017-2/|access-date=2017-03-08}}</ref> | * 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' |- ! 4.5<ref name="blogs.msdn.microsoft.com2"/> | * 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 'byref's * '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# seq/list/array expressions * Relaxed indentation with list and array expressions * Enumeration cases emitted as public |- ! 4.6 | * Anonymous record types |- ! 4.7<ref name="blogs.msdn.microsoft.com.4.7">{{Cite web|url=https://devblogs.microsoft.com/dotnet/announcing-f-4-7/|title=Announcing F# 4.7|date=23 September 2019}}</ref> | * Implicit yields * No more required double underscore * Indentation relaxations for parameters passed to constructors and static methods * 'nameof' function * Open static classes |- ! 5.0<ref name="blogs.msdn.microsoft.com.5.0">{{Cite web|url=https://devblogs.microsoft.com/dotnet/announcing-f-5/|title=Announcing F# 5|date=10 November 2020}}</ref> | * FSharp.Core now targets netstandard2.0 only * Package references in F# scripts * Support for Jupyter, nteract, and VSCode Notebooks * String Interpolation * Support for nameof * Open Type declarations * Enhanced Slicing * F# quotations improvements * Applicative Computation Expressions * Improved stack traces in F# async and other computation expressions * Improved .NET interop * Improved Map and Set performance in FSharp.Core * Improved compiler performance * Improved compiler analysis for library authors |- ! 6.0<ref>{{Cite web|url=https://docs.microsoft.com/en-us/dotnet/fsharp/whats-new/fsharp-6|title=What's new in F# 6 - F# Guide|date=10 March 2023}}</ref> | * Tasks * Simpler indexing * Augments to "active patterns" * Overloaded custom operations in computation expressions * βasβ patterns * Indentation syntax revisions * More implicit conversions * More implicit upcast conversions * Implicit integer conversions * First-class support for .NET-style implicit conversions * Optional warnings for implicit conversions * Formatting for binary numbers * Discards on use bindings * InlineIfLambda optimizer directive * Resumable code * More collection functions * Map has Keys and Values * More intrinsics for NativePtr * More numeric types with unit annotations * Informational warnings for rarely used symbolic operators |- ! 7.0<ref>{{Cite web |url=https://devblogs.microsoft.com/dotnet/announcing-fsharp-7/ |title=Announcing F# 7 |date=8 November 2022}}</ref> | * Static abstract members support in interfaces * Making working with SRTPs (statically resolved type parameters) easier * Required properties checking * Init scope and init-only properties * Reference assemblies support * F# self-contained deployments & Native AOT * Added support for N-d arrays up to rank 32. * Result module functions parity with Option. * Fixes in resumable state machines codegen for the tasks builds. * Better codegen for compiler-generated side-effect-free property getters * ARM64 platform-specific compiler and ARM64 target support in F# compiler. Dependency manager #r caching support * Parallel type-checking and project-checking support (experimental, can be enabled via VS setting, or by tooling authors) * Miscellaneous bugfixes and improvements. |- ! 8.0<ref>{{Cite web|url=https://devblogs.microsoft.com/dotnet/announcing-fsharp-8/|title=Announcing F# 8| date=14 November 2023}}</ref> | * _.Property shorthand for (fun x -> x.Property) * Nested record field copy and update * while! (while bang) feature <ref>{{Cite web |url=https://devblogs.microsoft.com/dotnet/simplifying-fsharp-computations-with-the-new-while-keyword/ |title=Simplifying F# computations with the new 'while!' keyword' |date=20 September 2023}}</ref> * Extended string interpolation syntax * Use and compose string literals for printf and related functions * Arithmetic operators in literals * Type constraint intersection syntax * Extended fixed binding * Easier [<Extension>] method definition * Static members in interfaces * Static let in discriminated unions, records, structs, and types without primary constructors * try-with within seq{}, [], and [||] collection expressions * Recursive calls and yield! within exception handler * Tail call attribute * [<Struct>] unions can now have > 49 cases * Strict indentation rules * New diagnostics from the compiler * Switches for compiler parallelization |- ! 9.0<ref>{{Cite web|url=https://learn.microsoft.com/en-us/dotnet/fsharp/whats-new/fsharp-9|title=What's new in F# 9| date=12 November 2024}}</ref> | * Nullable reference types * Discriminated union .Is* properties * Partial active patterns can return bool instead of unit option * Prefer extension methods to intrinsic properties when arguments are provided * Empty-bodied computation expressions * Hash directives are allowed to take non-string arguments * Extended #help directive in fsi to show documentation in the REPL * Allow #nowarn to support the FS prefix on error codes to disable warnings * Warning about TailCall attribute on non-recursive functions or let-bound values * Enforce attribute targets * Updates to the standard library (FSharp.Core) * Developer productivity improvements * Performance improvements * Improvements in tooling |}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)