diff --git a/buildtools/checkpackages/FSharp.Core_notshipped.fsproj b/buildtools/checkpackages/FSharp.Core_notshipped.fsproj
index f104ff30fe7..7301910fba3 100644
--- a/buildtools/checkpackages/FSharp.Core_notshipped.fsproj
+++ b/buildtools/checkpackages/FSharp.Core_notshipped.fsproj
@@ -3,7 +3,7 @@
- ne87.0
+ net9.0
diff --git a/docs/release-notes/.FSharp.Compiler.Service/9.0.200.md b/docs/release-notes/.FSharp.Compiler.Service/9.0.200.md
index 8bfd9d8155b..aff63bf27d5 100644
--- a/docs/release-notes/.FSharp.Compiler.Service/9.0.200.md
+++ b/docs/release-notes/.FSharp.Compiler.Service/9.0.200.md
@@ -55,4 +55,4 @@
### Breaking Changes
-* Aliasing `StructAttribute` will now produce a warning (part of [Language suggestion #1136](https://github.com/fsharp/fslang-suggestions/issues/1136), [PR #18098](https://github.com/dotnet/fsharp/pull/18098))
\ No newline at end of file
+* Aliasing `StructAttribute` will now produce a warning (part of [Language suggestion #18298](https://github.com/fsharp/fslang-suggestions/issues/18298), [PR #18355](https://github.com/dotnet/fsharp/pull/18355))
\ No newline at end of file
diff --git a/docs/release-notes/.FSharp.Compiler.Service/9.0.202.md b/docs/release-notes/.FSharp.Compiler.Service/9.0.202.md
new file mode 100644
index 00000000000..54ee092c09b
--- /dev/null
+++ b/docs/release-notes/.FSharp.Compiler.Service/9.0.202.md
@@ -0,0 +1,59 @@
+### Fixed
+
+* Fix missing TailCall warning in Sequential in use scope ([PR #17927](https://github.com/dotnet/fsharp/pull/17927))
+* Fix false negatives for passing null to "obj" arguments. Only "obj | null" can now subsume any type ([PR #17757](https://github.com/dotnet/fsharp/pull/17757))
+* Fix internal error when calling 'AddSingleton' and other overloads only differing in generic arity ([PR #17804](https://github.com/dotnet/fsharp/pull/17804))
+* Fix extension methods support for non-reference system assemblies ([PR #17799](https://github.com/dotnet/fsharp/pull/17799))
+* Ensure `frameworkTcImportsCache` mutations are threadsafe. ([PR #17795](https://github.com/dotnet/fsharp/pull/17795))
+* Disallow abstract member with access modifiers in sig file. ([PR #17802](https://github.com/dotnet/fsharp/pull/17802))
+* Fix concurrency issue in `ILPreTypeDefImpl` ([PR #17812](https://github.com/dotnet/fsharp/pull/17812))
+* Fix nullness inference for member val and other OO scenarios ([PR #17845](https://github.com/dotnet/fsharp/pull/17845))
+* Fix internal error when analyzing incomplete inherit member ([PR #17905](https://github.com/dotnet/fsharp/pull/17905))
+* Add warning when downcasting from nullable type to non-nullable ([PR #17965](https://github.com/dotnet/fsharp/pull/17965))
+* Fix missing nullness warning in case of method resolution multiple candidates ([PR #17917](https://github.com/dotnet/fsharp/pull/17918))
+* Fix failure to use bound values in `when` clauses of `try-with` in `seq` expressions ([PR #17990](https://github.com/dotnet/fsharp/pull/17990))
+* Fix locals allocating for the special `copyOfStruct` defensive copy ([PR #18025](https://github.com/dotnet/fsharp/pull/18025))
+* Fix lowering of computed array expressions when the expression consists of a simple mapping from a `uint64` or `unativeint` array. [PR #18081](https://github.com/dotnet/fsharp/pull/18081)
+* Add missing nullable-metadata for C# consumers of records,exceptions and DU subtypes generated from F# code. [PR #18079](https://github.com/dotnet/fsharp/pull/18079)
+* Reduce excess memory usage in TransparentCompiler. [PR #17543](https://github.com/dotnet/fsharp/pull/17543)
+* Fix a race condition in file book keeping in the compiler service ([#18008](https://github.com/dotnet/fsharp/pull/18008))
+* Fix trimming '%' characters when lowering interpolated string to a concat call [PR #18123](https://github.com/dotnet/fsharp/pull/18123)
+* Completion: fix qualified completion in sequence expressions [PR #18111](https://github.com/dotnet/fsharp/pull/18111)
+* Symbols: try to use ValReprInfoForDisplay in Mfv.CurriedParameterGroups ([PR #18124](https://github.com/dotnet/fsharp/pull/18124))
+* Shim/file system: fix leaks of the shim [PR #18144](https://github.com/dotnet/fsharp/pull/18144)
+
+### Added
+
+* Let `dotnet fsi --help` print a link to the documentation website. ([PR #18006](https://github.com/dotnet/fsharp/pull/18006))
+* Deprecate places where `seq` can be omitted. ([Language suggestion #1033](https://github.com/fsharp/fslang-suggestions/issues/1033), [PR #17772](https://github.com/dotnet/fsharp/pull/17772))
+* Support literal attribute on decimals ([PR #17769](https://github.com/dotnet/fsharp/pull/17769))
+* Added type conversions cache, only enabled for compiler runs, guarded by language version preview ([PR #17668](https://github.com/dotnet/fsharp/pull/17668))
+* Added project property ParallelCompilation which turns on graph based type checking, parallel ILXGen and parallel optimization. By default on for users of langversion=preview ([PR #17948](https://github.com/dotnet/fsharp/pull/17948))
+* Adding warning when consuming generic method returning T|null for types not supporting nullness (structs,anons,tuples) ([PR #18057](https://github.com/dotnet/fsharp/pull/18057))
+* Sink: report SynPat.ArrayOrList type ([PR #18127](https://github.com/dotnet/fsharp/pull/18127))
+* Show the default value of compiler options ([PR #18054](https://github.com/dotnet/fsharp/pull/18054))
+* Support ValueOption + Struct attribute as optional parameter for methods ([Language suggestion #1136](https://github.com/fsharp/fslang-suggestions/issues/1136), [PR #18098](https://github.com/dotnet/fsharp/pull/18098))
+* Cancellable: add safer APIs to check the token ([PR #18175](https://github.com/dotnet/fsharp/pull/18175))
+
+### Changed
+
+* Make ILTypeDef interface impls calculation lazy. ([PR #17392](https://github.com/dotnet/fsharp/pull/17392))
+* Remove non-functional useSyntaxTreeCache option. ([PR #17768](https://github.com/dotnet/fsharp/pull/17768))
+* Better ranges for CE `let!` and `use!` error reporting. ([PR #17712](https://github.com/dotnet/fsharp/pull/17712))
+* Better ranges for CE `do!` error reporting. ([PR #17779](https://github.com/dotnet/fsharp/pull/17779))
+* Better ranges for CE `return, yield, return! and yield!` error reporting. ([PR #17792](https://github.com/dotnet/fsharp/pull/17792))
+* Better ranges for CE `match!`. ([PR #17789](https://github.com/dotnet/fsharp/pull/17789))
+* Better ranges for CE `use` error reporting. ([PR #17811](https://github.com/dotnet/fsharp/pull/17811))
+* Better ranges for `inherit` error reporting. ([PR #17879](https://github.com/dotnet/fsharp/pull/17879))
+* Better ranges for `inherit` `struct` error reporting. ([PR #17886](https://github.com/dotnet/fsharp/pull/17886))
+* Warn on uppercase identifiers in patterns. ([PR #15816](https://github.com/dotnet/fsharp/pull/15816))
+* Better ranges for `inherit` objects error reporting. ([PR #17893](https://github.com/dotnet/fsharp/pull/17893))
+* Better ranges for #nowarn error reporting; bring back #nowarn warnings for --langVersion:80; add warnings under feature flag ([PR #17871](https://github.com/dotnet/fsharp/pull/17871))
+* Better ranges for #nowarn error reporting; bring back #nowarn warnings for --langVersion:80; add warnings under feature flag ([PR #17871](https://github.com/dotnet/fsharp/pull/17871))
+* CheckAndThrow can be invoked only from within Cancellable context ([PR #18037](https://github.com/dotnet/fsharp/pull/18037))
+* Make ILTypeDef base type calculation lazy. ([PR #18005](https://github.com/dotnet/fsharp/pull/18005))
+* Revert EnforceAttributeTargets Feature. ([PR #18005](https://github.com/dotnet/fsharp/pull/18005))
+
+### Breaking Changes
+
+* Aliasing `StructAttribute` will now produce a warning (part of [Language suggestion #18298](https://github.com/fsharp/fslang-suggestions/issues/18298), [PR #18355](https://github.com/dotnet/fsharp/pull/18355))
\ No newline at end of file
diff --git a/docs/release-notes/.Language/9.0.md b/docs/release-notes/.Language/9.0.md
index 2785a646e56..d2247aa35c4 100644
--- a/docs/release-notes/.Language/9.0.md
+++ b/docs/release-notes/.Language/9.0.md
@@ -21,6 +21,7 @@
* Enforce AttributeTargets on implicit constructors. ([PR #16845](https://github.com/dotnet/fsharp/pull/16845/))
* Enforce AttributeTargets on structs and classes ([PR #16790](https://github.com/dotnet/fsharp/pull/16790))
* Ensure consistent interaction between ``#line` and `#nowarn` directives ([PR #17649](https://github.com/dotnet/fsharp/pull/17649))
+* Revert EnforceAttributeTargets Feature. ([PR #18005](https://github.com/dotnet/fsharp/pull/18005))
### Changed
diff --git a/eng/Versions.props b/eng/Versions.props
index 3007a6046ed..b3461535634 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -14,7 +14,7 @@
9
0
- 201
+ 202
0
@@ -37,7 +37,7 @@
$(FSMajorVersion).$(FSMinorVersion).$(FSBuildVersion)
- 9.0.100
+ 9.0.201
$(FSCorePackageVersionValue)-$(PreReleaseVersionLabel).*
diff --git a/src/Compiler/Facilities/LanguageFeatures.fs b/src/Compiler/Facilities/LanguageFeatures.fs
index 5401ea26a1b..a6832b21340 100644
--- a/src/Compiler/Facilities/LanguageFeatures.fs
+++ b/src/Compiler/Facilities/LanguageFeatures.fs
@@ -216,9 +216,9 @@ type LanguageVersion(versionText) =
LanguageFeature.LowerSimpleMappingsInComprehensionsToFastLoops, languageVersion90
LanguageFeature.ParsedHashDirectiveArgumentNonQuotes, languageVersion90
LanguageFeature.EmptyBodiedComputationExpressions, languageVersion90
- LanguageFeature.EnforceAttributeTargets, languageVersion90
// F# preview
+ LanguageFeature.EnforceAttributeTargets, previewVersion // Not enabled due to a number of external library dependencies on unenforced attributes
LanguageFeature.UseTypeSubsumptionCache, previewVersion
LanguageFeature.UnmanagedConstraintCsharpInterop, previewVersion // not enabled because: https://github.com/dotnet/fsharp/issues/17509
LanguageFeature.FromEndSlicing, previewVersion // Unfinished features --- needs work
diff --git a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/CustomAttributes/AttributeUsage/AttributeUsage.fs b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/CustomAttributes/AttributeUsage/AttributeUsage.fs
index 9b7cdc5a053..b8a16585d3a 100644
--- a/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/CustomAttributes/AttributeUsage/AttributeUsage.fs
+++ b/tests/FSharp.Compiler.ComponentTests/Conformance/BasicGrammarElements/CustomAttributes/AttributeUsage/AttributeUsage.fs
@@ -98,7 +98,7 @@ module CustomAttributes_AttributeUsage =
[]
let ``E_AttributeTargets01_fs`` compilation =
compilation
- |> withLangVersion90
+ |> withLangVersionPreview
|> verifyCompile
|> shouldFail
|> withDiagnostics [
@@ -134,7 +134,7 @@ module CustomAttributes_AttributeUsage =
let ``E_AttributeTargetIsField01_fs`` compilation =
compilation
|> withOptions ["--nowarn:25"]
- |> withLangVersion90
+ |> withLangVersionPreview
|> verifyCompile
|> shouldFail
|> withDiagnostics [
@@ -187,7 +187,7 @@ module CustomAttributes_AttributeUsage =
[]
let ``E_AttributeTargetIsMethod02_fs`` compilation =
compilation
- |> withLangVersion90
+ |> withLangVersionPreview
|> withOptions ["--nowarn:25"]
|> verifyCompile
|> shouldFail
@@ -218,7 +218,7 @@ module CustomAttributes_AttributeUsage =
[]
let ``E_AttributeTargetIsMethod03_fs`` compilation =
compilation
- |> withLangVersion90
+ |> withLangVersionPreview
|> withOptions ["--nowarn:25"]
|> verifyCompile
|> shouldFail
@@ -336,7 +336,7 @@ module CustomAttributes_AttributeUsage =
[]
let ``E_AttributeTargetIsStruct_fs`` compilation =
compilation
- |> withLangVersion90
+ |> withLangVersionPreview
|> verifyCompile
|> shouldFail
|> withDiagnostics [
@@ -366,7 +366,7 @@ module CustomAttributes_AttributeUsage =
[]
let ``E_AttributeTargetIsClass_fs`` compilation =
compilation
- |> withLangVersion90
+ |> withLangVersionPreview
|> verifyCompile
|> shouldFail
|> withDiagnostics [
@@ -387,7 +387,7 @@ module CustomAttributes_AttributeUsage =
[]
let ``E_AttributeTargetIsClass01_fs`` compilation =
compilation
- |> withLangVersion90
+ |> withLangVersionPreview
|> verifyCompile
|> shouldFail
|> withDiagnostics [
@@ -485,7 +485,7 @@ module CustomAttributes_AttributeUsage =
[]
let ``E_AttributeTargetIsField03_fs`` compilation =
compilation
- |> withLangVersion90
+ |> withLangVersionPreview
|> verifyCompile
|> shouldFail
|> withDiagnostics [
@@ -505,7 +505,7 @@ module CustomAttributes_AttributeUsage =
[]
let ``E_AttributeTargetIsProperty01_fs`` compilation =
compilation
- |> withLangVersion90
+ |> withLangVersionPreview
|> verifyCompile
|> shouldFail
|> withDiagnostics [
@@ -525,7 +525,7 @@ module CustomAttributes_AttributeUsage =
[]
let ``E_AttributeTargetIsCtor01_fs`` compilation =
compilation
- |> withLangVersion90
+ |> withLangVersionPreview
|> verifyCompile
|> shouldFail
|> withDiagnostics [
@@ -562,7 +562,7 @@ module CustomAttributes_AttributeUsage =
[]
let ``E_AttributeTargetIsEnum01_fs`` compilation =
compilation
- |> withLangVersion90
+ |> withLangVersionPreview
|> verifyCompile
|> shouldFail
|> withDiagnostics [
@@ -599,7 +599,7 @@ module CustomAttributes_AttributeUsage =
[]
let ``E_AttributeTargetsIsDelegate01_fs`` compilation =
compilation
- |> withLangVersion90
+ |> withLangVersionPreview
|> verifyCompile
|> shouldFail
|> withDiagnostics [
@@ -648,7 +648,7 @@ type InterruptibleLazy<'T> private (valueFactory: unit -> 'T) =
[]
let ``E_AttributeTargetIsInterface_fs`` compilation =
compilation
- |> withLangVersion90
+ |> withLangVersionPreview
|> verifyCompile
|> shouldFail
|> withDiagnostics [
@@ -670,7 +670,7 @@ type InterruptibleLazy<'T> private (valueFactory: unit -> 'T) =
[]
let ``E_AttributeTargetIsClass02_fs`` compilation =
compilation
- |> withLangVersion90
+ |> withLangVersionPreview
|> verifyCompile
|> shouldFail
|> withDiagnostics [