Skip to content

Commit f19f6bd

Browse files
leandromohbaronfel
authored andcommitted
Create Language-Version-History.md (#8540)
* Create Create Language-Version-History.md c# has one file like this here: https://github.com/dotnet/csharplang/blob/master/Language-Version-History.md so looks fine f# should have too. I am learning F# and missed it from this official repository * replace quotes for language markdown * adjusts on 4.7 section * adds references for version 1 and 1.1 * adds object expressions * Rename Create Language-Version-History.md to Language-Version-History.md * start line with upper case * removes Tailcall attribute, it is not implemented * removed 4.7 preview features
1 parent 9a87342 commit f19f6bd

File tree

1 file changed

+107
-0
lines changed

1 file changed

+107
-0
lines changed

Language-Version-History.md

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
Features Added in F# Language Versions
2+
====================
3+
4+
# [F# 1.0](https://docs.microsoft.com/en-us/archive/blogs/dsyme/welcome-to-dons-f-blog)
5+
6+
- Discriminated unions
7+
- Records
8+
- Tuples
9+
- Pattern matching
10+
- Type abbreviations
11+
- Structs
12+
- Signature files
13+
- Imperative programming
14+
- Modules (no functors)
15+
- Nested modules
16+
- .NET Interoperability
17+
18+
# [F# 1.1](https://docs.microsoft.com/en-us/archive/blogs/dsyme/a-taste-of-whats-new-in-f-1-1)
19+
20+
- Interactive environment
21+
- Object programming
22+
- Encapsulation Extensions
23+
24+
# [F# 2.0](https://fsharp.org/specs/language-spec/2.0/FSharpSpec-2.0-April-2012.pdf)
25+
26+
- Active patterns
27+
- Units of measure
28+
- Object expressions
29+
- Sequence expressions
30+
- Asynchronous programming
31+
- Agent programming
32+
- Extension members
33+
- Named arguments
34+
- Optional arguments
35+
- Array slicing
36+
- Quotations
37+
- Native interoperability
38+
- Computation expressions
39+
40+
# [F# 3.0](https://fsharp.org/specs/language-spec/3.0/FSharpSpec-3.0-final.pdf)
41+
42+
- Type providers
43+
- LINQ query expressions
44+
- CLIMutable attribute
45+
- Triple-quoted strings
46+
- Auto-properties
47+
- Provided units-of-measure
48+
49+
# [F# 3.1](https://fsharp.org/specs/language-spec/3.1/FSharpSpec-3.1-final.pdf)
50+
51+
- Named union type fields
52+
- Extensions to array slicing
53+
- Type inference enhancements
54+
55+
# [F# 4.0](https://fsharp.org/specs/language-spec/4.0/FSharpSpec-4.0-final.pdf)
56+
57+
- `printf` on unitized values
58+
- Extension property initializers
59+
- Non-null provided types
60+
- Primary constructors as functions
61+
- Static parameters for provided methods
62+
- `printf` interpolation
63+
- Extended `#if` grammar
64+
- Multiple interface instantiations
65+
- Optional type args
66+
- Params dictionaries
67+
68+
# [F# 4.1](https://fsharp.org/specs/language-spec/4.1/FSharpSpec-4.1-latest.pdf)
69+
70+
- Struct tuples which inter-operate with C# tuples
71+
- Struct annotations for Records
72+
- Struct annotations for Single-case Discriminated Unions
73+
- Underscores in numeric literals
74+
- Caller info argument attributes
75+
- Result type and some basic Result functions
76+
- Mutually referential types and modules within the same file
77+
- Implicit `Module` syntax on modules with shared name as type
78+
- Byref returns, supporting consuming C# `ref`-returning methods
79+
- Error message improvements
80+
- Support for `fixed`
81+
82+
# [F# 4.5](https://docs.microsoft.com/en-us/dotnet/fsharp/whats-new/fsharp-45)
83+
84+
- Versioning alignment of binary, package, and language
85+
- Support for `Span<'T>` and related types
86+
- Ability to produce `byref` returns
87+
- The `voidptr` type
88+
- The `inref<'T>` and `outref<'T>` types to represent readonly and write-only `byref`s
89+
- `IsByRefLike` structs
90+
- `IsReadOnly` structs
91+
- Extension method support for `byref<'T>`/`inref<'T>`/`outref<'T>`
92+
- `match!` keyword in computation expressions
93+
- Relaxed upcast with `yield` in F# sequence/list/array expressions
94+
- Relaxed indentation with list and array expressions
95+
- Enumeration cases emitted as public
96+
97+
# [F# 4.6](https://docs.microsoft.com/en-us/dotnet/fsharp/whats-new/fsharp-46)
98+
99+
- Anonymous records
100+
- `ValueOption` module functions
101+
102+
# [F# 4.7](https://docs.microsoft.com/en-us/dotnet/fsharp/whats-new/fsharp-47)
103+
104+
- Compiler support for `LangVersion`
105+
- Implicit `yield`s
106+
- No more required double underscore (wildcard identifier)
107+
- Indentation relaxations for parameters passed to constructors and static methods

0 commit comments

Comments
 (0)