Skip to content

Add F# Analyzers#603

Merged
64J0 merged 3 commits intogiraffe-fsharp:masterfrom
1eyewonder:fsharp-analyzers
Jul 25, 2024
Merged

Add F# Analyzers#603
64J0 merged 3 commits intogiraffe-fsharp:masterfrom
1eyewonder:fsharp-analyzers

Conversation

@1eyewonder
Copy link
Copy Markdown
Contributor

Description

I thought it would be beneficial if we were to add some analyzers to the project in order to catch some areas we might improve. This opens up some discussion/thinking for the maintainers to consider configuration and additional pipeline opportunities.

  1. Do we want to add analyzers to the build pipeline/PR checks? See docs
  2. Are there specific analyzers we want to trigger errors/warning/ignore?

I don't have any strong opinions and just wanted to share some other cool opportunities we could try and add to this PR or others if desired.

How to test

  1. Run dotnet tool restore
  2. Run dotnet msbuild /t:AnalyzeSolution
  3. See all the suggestions
    image

Related issues

I was looking through some issues and came across #577 which made me think of suggesting this.

@64J0
Copy link
Copy Markdown
Member

64J0 commented Jul 15, 2024

Hello @1eyewonder, thanks for opening this PR. I'll review it during this week. For now, what I'd say is:

  1. Do we want to add analyzers to the build pipeline/PR checks?

This idea is interesting. It must be helpful for PR reviews. If you don't want to tackle it with this PR, we can do it later, no problem.

@1eyewonder
Copy link
Copy Markdown
Contributor Author

If we go ahead and tackle it within this PR, I am ok with it, but I think we'll have to coordinate. I believe the GitHub Advanced Security settings needed to be configured (see docs linked above).

A repo which I've seen this feature active on is Fable

Here are some additional links to provide visual/examples to the PR reviews since that seems to be the area of interest.

@64J0
Copy link
Copy Markdown
Member

64J0 commented Jul 17, 2024

Ack, thanks for the additional material @1eyewonder! I'll try to take a proper look at this PR either this or next week.

@64J0 64J0 force-pushed the fsharp-analyzers branch from 1ffe7f4 to 6f1e7d4 Compare July 21, 2024 21:19
@64J0 64J0 requested review from 64J0, dbrattli and nojaf July 21, 2024 21:19
@64J0 64J0 force-pushed the fsharp-analyzers branch from 6f1e7d4 to a1b2052 Compare July 25, 2024 00:45
@64J0
Copy link
Copy Markdown
Member

64J0 commented Jul 25, 2024

Cool, I think it's working:

image

Copy link
Copy Markdown
Member

@64J0 64J0 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me

@64J0 64J0 merged commit 5385767 into giraffe-fsharp:master Jul 25, 2024
tonycknight added a commit to tonycknight/microbroker that referenced this pull request Jan 19, 2026
Updated
[dotnet-reportgenerator-globaltool](https://github.com/danielpalme/ReportGenerator)
from 5.4.4 to 5.5.1.

<details>
<summary>Release notes</summary>

_Sourced from [dotnet-reportgenerator-globaltool's
releases](https://github.com/danielpalme/ReportGenerator/releases)._

## 5.5.1

# Changes:
- Added support for .NET 10
- #​766: Added new setting "preserveTrailingEmptyLine".
- #​769: Added support for Cobertura files exported from Swift
(contributed by @​Vovanni)

This release requires .NET Framework 4.7 or .NET 8.0/9.0/10.0

## 5.5.0

# Changes:
- Added support for .NET 10
- #​762: Improved handling of generic classes in DynamicCodeCoverage
files (generated by dotnet-coverage)
- #​763: Added new setting "includeAllDatesInCharts".

This release requires .NET Framework 4.7 or .NET 8.0/9.0/10.0

## 5.4.18

# Changes:
- #​760: Improved light/dark mode when "Auto Dark Mode for Web Contents"
is enabled in Chrome/Edge
- #​762: Improved handling of generic classes in DynamicCodeCoverage
files (generated by dotnet-coverage)

This release requires .NET Framework 4.7 or .NET 8.0/9.0

## 5.4.17

# Changes:
- #​756: Added new report type 'Markdown'
- #​757: Improved title elements in SVGs charts embedded in MHTML report

This release requires .NET Framework 4.7 or .NET 8.0/9.0

## 5.4.16

# Changes:
- #​755: Improved MHTML reports (inline CSS)

This release requires .NET Framework 4.7 or .NET 8.0/9.0

## 5.4.15

# Changes:
- #​752: Added support for Scoverage input format
- #​753: Added tiny history charts to HTML reports (if JavaScript is
disabled)

This release requires .NET Framework 4.7 or .NET 8.0/9.0

## 5.4.14

# Changes:
- Added support for Testwell CTC++ coverage files (PRO version only)
- #​753: Added title elements to SVGs generated with SvgChart report
type

This release requires .NET Framework 4.7 or .NET 8.0/9.0

## 5.4.13

# Changes:
- #​751: Improved support for large numbers in LCOV files

This release requires .NET Framework 4.7 or .NET 8.0/9.0

## 5.4.12

# Changes:
- #​750: Cobertura reports now contain timestamp in UTC format

This release requires .NET Framework 4.7 or .NET 8.0/9.0

## 5.4.11

This release requires .NET Framework 4.7 or .NET 8.0/9.0

## 5.4.10

# Changes:
- #​746: Improved "raw mode" (settings:rawMode=true): Leave method names
unchanged

This release requires .NET Framework 4.7 or .NET 8.0/9.0

## 5.4.9

# Changes:
- #​744: Azure DevOps task: Added support for nodeJS 20

This release requires .NET Framework 4.7 or .NET 8.0/9.0

## 5.4.8

# Changes:
- #​737 Improved lcov support (take FNDA elements into account to
determine whether a code element has been covered)
- #​741 Charts does not render "Full method coverage" elements if
coverage information is not available
- Added new setting "applyMaximumGroupingLevel". This allows to apply
the maximum grouping level instead of the default 'By assembly' grouping
in HTML reports.

This release requires .NET Framework 4.7 or .NET 8.0/9.0

## 5.4.7

# Changes:
- #​731 Added option to break build when maximum risk hotspots metrics
are exceeded

This release requires .NET Framework 4.7 or .NET 8.0/9.0

## 5.4.6

# Changes:
- #​730 Added support for the REPORTGENERATOR_LICENSE environment
variable in the MSBuild task (contributed by @​0xced)

This release requires .NET Framework 4.7 or .NET 8.0/9.0

## 5.4.5

# Changes:
- #​724 Fixed splitting of possible glob patterns (contributed by
@​karl-sjogren)

This release requires .NET Framework 4.7 or .NET 8.0/9.0

Commits viewable in [compare
view](https://github.com/danielpalme/ReportGenerator/compare/v5.4.4...v5.5.1).
</details>

Updated [fantomas](https://github.com/fsprojects/fantomas) from 7.0.1 to
7.0.5.

<details>
<summary>Release notes</summary>

_Sourced from [fantomas's
releases](https://github.com/fsprojects/fantomas/releases)._

## 7.0.3

# 7.0.3

### Fixed
* Application in indexed set should not be multiline.
[#​1999](https://github.com/fsprojects/fantomas/issues/1999)

Special thanks to @​Numpsy and @​nojaf!


[https://www.nuget.org/packages/fantomas/7.0.3](https://www.nuget.org/packages/fantomas/7.0.3)
    

## 7.0.2

# 7.0.2

### Changed
* Print version at beginning of execution when detailed verbosity is
set. [3148](https://github.com/fsprojects/fantomas/issues/3148)

### Fixed
* Anonymous records in interpolated strings.
[#​3162](https://github.com/fsprojects/fantomas/issues/3162)
* Preserve backticks in active pattern idents.
[#​3126](https://github.com/fsprojects/fantomas/issues/3126)
* New lines are added after comment in measure type.
[#​3145](https://github.com/fsprojects/fantomas/issues/3145)
* Idempotency problem with comments in applications on lambda
expressions.
[#​3128](https://github.com/fsprojects/fantomas/issues/3128)

Special thanks to @​alex-de-oliveira and @​dawedawe!


[https://www.nuget.org/packages/fantomas/7.0.2](https://www.nuget.org/packages/fantomas/7.0.2)
    

Commits viewable in [compare
view](https://github.com/fsprojects/fantomas/commits).
</details>

Updated [Giraffe](https://github.com/giraffe-fsharp/Giraffe) from 6.3.0
to 8.2.0.

<details>
<summary>Release notes</summary>

_Sourced from [Giraffe's
releases](https://github.com/giraffe-fsharp/Giraffe/releases)._

## 8.2.0

#### Breaking changes

- [Some security fixes for
Giraffe](https://github.com/giraffe-fsharp/Giraffe/pull/691) - Credits
@​Thorium
- New handlers added to improve security aspects, like `safeRedirectTo`,
`safeRedirectToExt`, `validateCsrfTokenExt` and more. Those deal with:
- URL validation in `redirectTo` to prevent cross-site scripting (XSS)
        - Cross-Site Request Forgery (CSRF) token validation helpers
- XML serializer's `Deserialize<'T>(xml: string)` method now uses a
configuration to prevent XXE attacks.
- [Remove [\<AllowNullLiteral\>] attribute from Json.ISerializer and
Xml.ISerializer](https://github.com/giraffe-fsharp/Giraffe/pull/685) -
Credits @​64J0
- With the release of .NET 9 we have [nullable reference
types](https://devblogs.microsoft.com/dotnet/nullable-reference-types-in-fsharp-9/).
- When this feature is enabled (`<Nullable>enable</Nullable>`), our
users started running into problems that boils down to
`Json.ISerializer` having the `AllowNullLiteral` attribute.
- Due to it, we decided to remove this attribute from both the
`Json.ISerializer` and the `Xml.ISerializer`.
- New automated tests were added to assert that the serializers are
still working properly.
        - We also updated some sample projects to use this feature.

#### Other updates

- [Remove Obsolete from
redirectTo](https://github.com/giraffe-fsharp/Giraffe/pull/695) -
Credits @​kerams
- [Could we avoid allocation of UTF8 byte
array?](https://github.com/giraffe-fsharp/Giraffe/pull/692) - Credits
@​Thorium
- [Update fsharp-analyzers and the analyzer
packages](https://github.com/giraffe-fsharp/Giraffe/pull/662) - Credits
@​Numpsy
- [Improve JSON
docs](https://github.com/giraffe-fsharp/Giraffe/pull/665) - Credits
@​64J0
- [Add issue
templates](https://github.com/giraffe-fsharp/Giraffe/pull/671) - Credits
@​64J0
- [Enhance routef support for named parameters and improve
documentation](https://github.com/giraffe-fsharp/Giraffe/pull/656) -
Credits @​RJSonnenberg
- [Fix assembly
version](https://github.com/giraffe-fsharp/Giraffe/pull/655)
- [Add GitHub dependabot
configuration](https://github.com/giraffe-fsharp/Giraffe/pull/621) -
Credits @​64J0
- [Add global rate limiting
sample](https://github.com/giraffe-fsharp/Giraffe/pull/622) - Credits
@​64J0
- [Add OpenApi section to the
documentation](https://github.com/giraffe-fsharp/Giraffe/pull/624) -
Credits @​64J0
- [Add AssemblyVersion
attribute](https://github.com/giraffe-fsharp/Giraffe/pull/629) - Credits
@​64J0
- [Add more links](https://github.com/giraffe-fsharp/Giraffe/pull/633) -
Credits @​64J0
- [Code scanning fix
patches](https://github.com/giraffe-fsharp/Giraffe/pull/638) - Credits
@​64J0
- [Add .NET 9 as target framework, fine-tune dependabot, update CI and
clean tests removing .NET 6/7 from target
frameworks](https://github.com/giraffe-fsharp/Giraffe/pull/639) -
Credits @​64J0
- [[Alpha] Add Endpoint routing functions
...WithExtensions](https://github.com/giraffe-fsharp/Giraffe/pull/634) -
Credits @​64J0

## 8.2.0-alpha-002

- [Remove Obsolete from
redirectTo](https://github.com/giraffe-fsharp/Giraffe/pull/695) -
Credits @​kerams

## 8.2.0-alpha-001

#### Breaking changes

- [Some security fixes for
Giraffe](https://github.com/giraffe-fsharp/Giraffe/pull/691) - Credits
@​Thorium
- New handlers added to improve security aspects, like `safeRedirectTo`,
`safeRedirectToExt`, `validateCsrfTokenExt` and more. Those deal with:
- URL validation in `redirectTo` to prevent cross-site scripting (XSS)
        - Cross-Site Request Forgery (CSRF) token validation helpers
- XML serializer's `Deserialize<'T>(xml: string)` method now uses a
configuration to prevent XXE attacks.
    - `redirectTo` handler now marked as Obsolete.

#### Other updates

- [Could we avoid allocation of UTF8 byte
array?](https://github.com/giraffe-fsharp/Giraffe/pull/692) - Credits
@​Thorium

## 8.1.0-alpha-001

#### Breaking changes

- [Remove [\<AllowNullLiteral\>] attribute from Json.ISerializer and
Xml.ISerializer](https://github.com/giraffe-fsharp/Giraffe/pull/685) -
Credits @​64J0
- With the release of .NET 9 we have [nullable reference
types](https://devblogs.microsoft.com/dotnet/nullable-reference-types-in-fsharp-9/).
- When this feature is enabled (`<Nullable>enable</Nullable>`), our
users started running into problems that boils down to
`Json.ISerializer` having the `AllowNullLiteral` attribute.
- Due to it, we decided to remove this attribute from both the
`Json.ISerializer` and the `Xml.ISerializer`.
- New automated tests were added to assert that the serializers are
still working properly.
        - We also updated some sample projects to use this feature.

#### Other updates

- [Update fsharp-analyzers and the analyzer
packages](https://github.com/giraffe-fsharp/Giraffe/pull/662) - Credits
@​Numpsy
- [Improve JSON
docs](https://github.com/giraffe-fsharp/Giraffe/pull/665) - Credits
@​64J0
- [Add issue
templates](https://github.com/giraffe-fsharp/Giraffe/pull/671) - Credits
@​64J0

## 8.0.0-alpha-003

- [Enhance routef support for named parameters and improve
documentation](https://github.com/giraffe-fsharp/Giraffe/pull/656) -
Credits @​RJSonnenberg

## 8.0.0-alpha-002

- [Fix assembly
version](https://github.com/giraffe-fsharp/Giraffe/pull/655)

## 8.0.0-alpha-001

With this release, we're improving the codebase a bit by fixing warnings
triggered by Ionide.Analyzers, and adding .NET 9 as a target framework
to the project.

Other than that, we're adding new router functions for the
`EndpointRouting` module which will let the user interact with Giraffe's
`ConfigureEndpoint` directly. This will let you use Asp.Net extensions
directly, like rate limiting, response caching, etc. Just remember its
type definition:

```fsharp
type ConfigureEndpoint = IEndpointConventionBuilder -> IEndpointConventionBuilder
```

And here we have the list of PRs related to this release:

- [Add GitHub dependabot
configuration](https://github.com/giraffe-fsharp/Giraffe/pull/621) -
Credits @​64J0
- [Add global rate limiting
sample](https://github.com/giraffe-fsharp/Giraffe/pull/622) - Credits
@​64J0
- [Add OpenApi section to the
documentation](https://github.com/giraffe-fsharp/Giraffe/pull/624) -
Credits @​64J0
- [Add AssemblyVersion
attribute](https://github.com/giraffe-fsharp/Giraffe/pull/629) - Credits
@​64J0
- [Add more links](https://github.com/giraffe-fsharp/Giraffe/pull/633) -
Credits @​64J0
- [Code scanning fix
patches](https://github.com/giraffe-fsharp/Giraffe/pull/638) - Credits
@​64J0
- [Add .NET 9 as target framework, fine-tune dependabot, update CI and
clean tests removing .NET 6/7 from target
frameworks](https://github.com/giraffe-fsharp/Giraffe/pull/639) -
Credits @​64J0
- [[Alpha] Add Endpoint routing functions
...WithExtensions](https://github.com/giraffe-fsharp/Giraffe/pull/634) -
Credits @​64J0

## 7.0.2

- [Moar fantomas](https://github.com/giraffe-fsharp/Giraffe/pull/614) -
Credits @​nojaf
- Format all F# source code using
[fantomas](https://github.com/fsprojects/fantomas).
- Started checking the `samples/`, `tests/` and `src/` contents to know
if they are complying with fantomas format.
- [HandleOptionGracefullyAnalyzer for ETag and Last-Modified at
Preconditional.fs](https://github.com/giraffe-fsharp/Giraffe/pull/613) -
Credits @​64J0
- [feat: add request limits on accept, content-type, and content-length
headers](https://github.com/giraffe-fsharp/Giraffe/pull/502) - Credits
@​stijnmoreels
    - Add request guards/limitation on:
        - `Accept` header
        - `Content-Type` header
        - `Content-Length` header
- [Add maintainers
info](https://github.com/giraffe-fsharp/Giraffe/pull/616) - Credits
@​nojaf
- [Fix ReadBodyFromRequestAsync disposing
ctx.Request.Body](https://github.com/giraffe-fsharp/Giraffe/pull/615) -
Credits @​64J0

## 7.0.2-alpha-002

- [Add maintainers
info](https://github.com/giraffe-fsharp/Giraffe/pull/616) - Credits
@​nojaf
- [Fix ReadBodyFromRequestAsync disposing
ctx.Request.Body](https://github.com/giraffe-fsharp/Giraffe/pull/615) -
Credits @​64J0

## 7.0.2-alpha-001

- [Moar fantomas](https://github.com/giraffe-fsharp/Giraffe/pull/614) -
Credits @​nojaf
- Format all F# source code using
[fantomas](https://github.com/fsprojects/fantomas).
- Started checking the `samples/`, `tests/` and `src/` contents to know
if they are complying with fantomas format.
- [HandleOptionGracefullyAnalyzer for ETag and Last-Modified at
Preconditional.fs](https://github.com/giraffe-fsharp/Giraffe/pull/613) -
Credits @​64J0
- [feat: add request limits on accept, content-type, and content-length
headers](https://github.com/giraffe-fsharp/Giraffe/pull/502) - Credits
@​stijnmoreels
    - Add request guards/limitation on:
        - `Accept` header
        - `Content-Type` header
        - `Content-Length` header

## 7.0.1

- [Add F# Analyzers](https://github.com/giraffe-fsharp/Giraffe/pull/603)
- Credits @​1eyewonder
- [Add F# compatible json
serializer](https://github.com/giraffe-fsharp/Giraffe/pull/609) -
Credits @​fpellet
- Add F# compatible json serializer with `FSharp.SystemTextJson`:
`Json.FsharpFriendlySerializer`
- [Update .vscode samples debug
configuration](https://github.com/giraffe-fsharp/Giraffe/pull/610) -
Credits @​64J0

## 7.0.0

Combination of the tags:

-
[6.4.1-alpha-1](https://github.com/giraffe-fsharp/Giraffe/releases/tag/v6.4.1-alpha-1)
-
[6.4.1-alpha-2](https://github.com/giraffe-fsharp/Giraffe/releases/tag/v6.4.1-alpha-2)
-
[6.4.1-alpha-3](https://github.com/giraffe-fsharp/Giraffe/releases/tag/v6.4.1-alpha-3)
-
[7.0.0-alpha-001](https://github.com/giraffe-fsharp/Giraffe/releases/tag/v7.0.0-alpha-001)

Credits: @​64J0, @​dbrattli, @​mrtz-j and @​esbenbjerre.

## 7.0.0-alpha-001

#### Breaking changes

- `NewtonsoftJson` and `SystemTextJson` modules are removed, the latter
is now module `Json`, NewtonSoft is not supported anymore, see PR
[Promote System.Text.Json as default JSON
serializer](https://github.com/giraffe-fsharp/Giraffe/pull/563).
- For more information, check the updated JSON documentation section:
[link](https://github.com/giraffe-fsharp/Giraffe/blob/master/DOCUMENTATION.md#json).
This has instructions on how to setup `NewtonsoftJson` back if you need
to keep it for your project.

#### Other updates

- [Add ability to Configure Endpoints via
IEndpointConventionBuilder](https://github.com/giraffe-fsharp/Giraffe/pull/599)
- Credits @​mrtz-j
- This PR enables us to reuse some of the built-in OpenApi generation to
generate OpenApi schemas from code.
- There's an example mentioned at the PR description, and a complete
sample project available at [this
repository](https://github.com/mrtz-j/Giraffe.OpenApi).
- It was inspired by [Oxpecker](https://github.com/Lanayx/Oxpecker) from
@​Lanayx.
- [Improve DEVGUIDE with SemVer pre-release
observation](https://github.com/giraffe-fsharp/Giraffe/pull/597) -
Credits @​64J0
- [Promote System.Text.Json as default JSON
serializer](https://github.com/giraffe-fsharp/Giraffe/pull/563) -
Credits @​esbenbjerre
- This PR removes the [Newtonsoft
JSON](https://github.com/JamesNK/Newtonsoft.Json) serializer and
promotes System.Text.Json as the default.
- The [JSON
section](https://github.com/giraffe-fsharp/Giraffe/blob/master/DOCUMENTATION.md#json)
of the documentation was updated, showing how someone could configure
the project to use the Newtonsoft JSON again.


## 6.4.1-alpha-3

- [Fix pre-release/release
workflows](https://github.com/giraffe-fsharp/Giraffe/pull/596) - Credits
@​64J0

## 6.4.1-alpha-2

- [Hotfix pre-release
workflow](https://github.com/giraffe-fsharp/Giraffe/pull/595) - Credits
@​64J0

## 6.4.1-alpha-1

- [Update README.md giraffe-template installation
command](https://github.com/giraffe-fsharp/Giraffe/pull/591) - Credits
@​dbrattli
- [Change dev instructions and
CI](https://github.com/giraffe-fsharp/Giraffe/pull/593) - Credits @​64J0
- [Fix EndpointRouting Guid regex +
tests](https://github.com/giraffe-fsharp/Giraffe/pull/594) - Credits
@​64J0

## 6.4.0

- [Upgrade to .NET
8](https://github.com/giraffe-fsharp/Giraffe/pull/574) - Credits
@​Banashek @​fpellet
- [Improve CI by updating actions version and avoid concurrent jobs for
the same PR](https://github.com/giraffe-fsharp/Giraffe/pull/582) -
Credits @​64J0
- [Add Fantomas validation to
CI](https://github.com/giraffe-fsharp/Giraffe/pull/587) - Credits @​64J0

## 6.4.0-alpha-1

* [Update to .net 8](https://github.com/giraffe-fsharp/Giraffe/pull/574)
- Credits @​Banashek @​fpellet

Commits viewable in [compare
view](https://github.com/giraffe-fsharp/Giraffe/compare/v6.3.0...v8.2.0).
</details>

Updated
[Microsoft.Extensions.Caching.Memory](https://github.com/dotnet/dotnet)
from 9.0.2 to 10.0.2.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Caching.Memory's
releases](https://github.com/dotnet/dotnet/releases)._

## 10.0.0-preview.6.25358.103

You can build .NET 10.0 Preview 6 from the repository by cloning the
release tag `v10.0.0-preview.6.25358.103` and following the build
instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.6.25358.103/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.6.25358.103/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 10.0.0-preview.5.25277.114

You can build .NET 10.0 Preview 5 from the repository by cloning the
release tag `v10.0.0-preview.5.25277.114` and following the build
instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.5.25277.114/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.5.25277.114/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 10.0.0-preview.4.25258.110

You can build .NET 10.0 Preview 4 from the repository by cloning the
release tag `v10.0.0-preview.4.25258.110` and following the build
instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.4.25258.110/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.4.25258.110/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 10.0.0-preview.3.25171.5

You can build .NET 10.0 Preview 3 from the repository by cloning the
release tag `v10.0.0-preview.3.25171.5` and following the build
instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.3.25171.5/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.3.25171.5/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 10.0.0-preview.2.25163.2

You can build .NET 10.0 Preview 2 from the repository by cloning the
release tag `v10.0.0-preview.2.25163.2` and following the build
instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.2.25163.2/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.2.25163.2/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 10.0.0-preview.1.25080.5

You can build .NET 10.0 Preview 1 from the repository by cloning the
release tag `v10.0.0-preview.1.25080.5` and following the build
instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.1.25080.5/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v10.0.0-preview.1.25080.5/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 9.0.113

<!-- This file is a template for a GitHub release notes post. -->
<!-- The line prefixed by 'Title:' will be submitted as the title of the
release notes, and the rest of the file will be submitted as the body.
-->

You can build .NET 9.0 from the repository by cloning the release tag
`v9.0.113` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v9.0.113/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v9.0.113/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 9.0.112

<!-- This file is a template for a GitHub release notes post. -->
<!-- The line prefixed by 'Title:' will be submitted as the title of the
release notes, and the rest of the file will be submitted as the body.
-->

You can build .NET 9.0 from the repository by cloning the release tag
`v9.0.112` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v9.0.112/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v9.0.112/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 9.0.111

<!-- This file is a template for a GitHub release notes post. -->
<!-- The line prefixed by 'Title:' will be submitted as the title of the
release notes, and the rest of the file will be submitted as the body.
-->

You can build .NET 9.0 from the repository by cloning the release tag
`v9.0.111` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v9.0.111/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v9.0.111/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 9.0.110

<!-- This file is a template for a GitHub release notes post. -->
<!-- The line prefixed by 'Title:' will be submitted as the title of the
release notes, and the rest of the file will be submitted as the body.
-->

You can build .NET 9.0 from the repository by cloning the release tag
`v9.0.110` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v9.0.110/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v9.0.110/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 9.0.109

<!-- This file is a template for a GitHub release notes post. -->
<!-- The line prefixed by 'Title:' will be submitted as the title of the
release notes, and the rest of the file will be submitted as the body.
-->

You can build .NET 9.0 from the repository by cloning the release tag
`v9.0.109` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v9.0.109/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v9.0.109/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 9.0.101

You can build .NET 9.0 from the repository by cloning the release tag
`v9.0.101` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v9.0.101/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v9.0.101/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 9.0.7

You can build .NET 9.0 from the repository by cloning the release tag
`v9.0.7` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v9.0.7/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v9.0.7/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 9.0.6

You can build .NET 9.0 from the repository by cloning the release tag
`v9.0.6` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v9.0.6/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v9.0.6/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 9.0.5

You can build .NET 9.0 from the repository by cloning the release tag
`v9.0.5` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v9.0.5/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v9.0.5/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 9.0.4

You can build .NET 9.0 from the repository by cloning the release tag
`v9.0.4` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v9.0.4/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v9.0.4/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

## 9.0.3

You can build .NET 9.0 from the repository by cloning the release tag
`v9.0.3` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v9.0.3/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v9.0.3/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated
[Microsoft.IO.RecyclableMemoryStream](https://github.com/Microsoft/Microsoft.IO.RecyclableMemoryStream)
from 2.3.2 to 3.0.1.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.IO.RecyclableMemoryStream's
releases](https://github.com/Microsoft/Microsoft.IO.RecyclableMemoryStream/releases)._

## 3.0.1

**Bug Fix**

Fix infinite loop bug when calling (Try)GetBuffer on a stream longer
than 1 GB when using the UseExponentialLargeBuffer option. (Issue #​344)

NuGet: [Microsoft.IO.RecyclableMemoryStream
3.0.1](https://www.nuget.org/packages/Microsoft.IO.RecyclableMemoryStream/3.0.1)

## 3.0.0


**Breaking Changes**

* Removed `int`-based constructor and `GetStream` overloads where
`long`-based methods exist.
* Removed all methods marked with `[Obsolete]`: 
    * `StreamDisposedEventArgs.ctor(Guid, string, string, string)`
* `RecyclableMemoryStreamManager.GetStream(Guid, string, Memory<byte>)`
    * `RecyclableMemoryStreamManager.GetStream(Memory<byte>)`
    * `RecyclableMemoryStreamManager.GetStream(string, Memory<byte>)`
* Enable nullable annotations and warnings. i.e., added
`<Nullable>enabled</Nullable>` to the project file.
* All overloads of `RecyclableMemoryStreamManager.GetStream` now return
type `RecyclableMemoryStream` instead of `MemoryStream`.
* Removed explicit targets for net462, netcoreapp2.1, and net5.0.
Supported targets are netstandard2.0, netstandard2.1, and net6.0 (there
are a few net6.0-specific optimizations).
* Moved all the configuration settings for
`RecyclableMemoryStreamManager` to the new
`RecyclableMemoryStreamManager.Options` class. Removed many of the
constructors as a result. This class will facilitate easier dependency
injection through use of the [Options
pattern](https://learn.microsoft.com/en-us/dotnet/core/extensions/options),
for those who need it.
* Renamed some settings' names to be more consistent (e.g.,
`MaximumLargePoolFreeBytes`)

**New Features**

* Added a new option for `RecyclableMemoryStreamManager`:
`ZeroOutBuffer`, which will cause all buffers to be cleared on
allocation and when returning to the pool. Off by default.

**Other Changes**
* Upgrade NUnit test library to version 4.
* Fix some spelling issues in comments and variable names.
* Update code to the latest recommended C# syntax.

NuGet: [Microsoft.IO.RecyclableMemoryStream
3.0.0](https://www.nuget.org/packages/Microsoft.IO.RecyclableMemoryStream/3.0.0)

Commits viewable in [compare
view](https://github.com/Microsoft/Microsoft.IO.RecyclableMemoryStream/compare/2.3.2...v3.0.1).
</details>

Updated [MongoDB.Driver](https://github.com/mongodb/mongo-csharp-driver)
from 2.27.0 to 3.6.0.

<details>
<summary>Release notes</summary>

_Sourced from [MongoDB.Driver's
releases](https://github.com/mongodb/mongo-csharp-driver/releases)._

## 3.6.0

This is the general availability release for the 3.6.0 version of the
driver.
### The main new features in 3.6.0 include:
- [CSHARP-5717](https://jira.mongodb.org/browse/CSHARP-5717): Typed
builders for vector indexes
- [CSHARP-5812](https://jira.mongodb.org/browse/CSHARP-5812): Support
lexical prefilters for vector search
- [CSHARP-5763](https://jira.mongodb.org/browse/CSHARP-5763):
Auto-embedding for vector search
- [CSHARP-5737](https://jira.mongodb.org/browse/CSHARP-5737): Add legacy
representation for TimeOnly
- [CSHARP-5705](https://jira.mongodb.org/browse/CSHARP-5705): Use
standard RID paths in MongoDB.Driver.Encryption packaging
- [CSHARP-5730](https://jira.mongodb.org/browse/CSHARP-5730): Support
static String.Compare method
- [CSHARP-1913](https://jira.mongodb.org/browse/CSHARP-1913): Support
using Dictionary fields as IEnumerable\<KeyValuePair\<TKey, TValue>>
- [CSHARP-5779](https://jira.mongodb.org/browse/CSHARP-5779): Support
Dictionary Keys and Values properties
- [CSHARP-5786](https://jira.mongodb.org/browse/CSHARP-5786): Add
Decimal128 ctor overload for byte/short, for compatibility with net10
- [CSHARP-5793](https://jira.mongodb.org/browse/CSHARP-5793): Map
MemoryExtensions Contains and SequenceEqual with null comparer to
Enumerable methods with no comparer parameter
- [CSHARP-5749](https://jira.mongodb.org/browse/CSHARP-5749): Support C#
14 changes that result in overloads now binding MemoryExtensions
extension methods
### Improvements:
- [CSHARP-5675](https://jira.mongodb.org/browse/CSHARP-5675): Where
possible, return null for average over the empty set
- [CSHARP-5666](https://jira.mongodb.org/browse/CSHARP-5666): Remove
GetBitArray allocations in BsonClassMapSerializer.DeserializeClass
- [CSHARP-5748](https://jira.mongodb.org/browse/CSHARP-5748): Use
KeyValuePairSerializer consistently for KeyValuePair
- [CSHARP-5663](https://jira.mongodb.org/browse/CSHARP-5663): Avoid
RentedBuffer boxing in DisposableSegment
- [CSHARP-5734](https://jira.mongodb.org/browse/CSHARP-5734): Update doc
comments for IBsonIdProvider GetDocumentId method
- [CSHARP-5348](https://jira.mongodb.org/browse/CSHARP-5348): Avoid
allocations for Bson*Context
- [CSHARP-5628](https://jira.mongodb.org/browse/CSHARP-5628): Add new
boolean expression simplifications to PartialEvaluator
- [CSHARP-5632](https://jira.mongodb.org/browse/CSHARP-5632):
Consolidate driver project Type extension methods in
Misc\TypeExtensions.cs
- [CSHARP-5785](https://jira.mongodb.org/browse/CSHARP-5785): Optimize
LINQ translation for First() and FirstOrDefault() methods with
predicates
- [CSHARP-5667](https://jira.mongodb.org/browse/CSHARP-5667): Switch to
'for' loop in BsonClassMapSerializer.SerializeClass to reduce
allocations
- [CSHARP-5807](https://jira.mongodb.org/browse/CSHARP-5807): Add
benchmarks with strong-typed POCOs
### Fixes:
- [CSHARP-5725](https://jira.mongodb.org/browse/CSHARP-5725): C# driver
stopped working with Unity since v3.2.0
- [CSHARP-5757](https://jira.mongodb.org/browse/CSHARP-5757): The
problem of filtering by derived types
### Maintenance:
- [CSHARP-3984](https://jira.mongodb.org/browse/CSHARP-3984): Remove
BinaryConnection.DropBox
- [CSHARP-5744](https://jira.mongodb.org/browse/CSHARP-5744): Fix
interruptInUse flaky tests
The full list of issues resolved in this release is available at [CSHARP
JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%203.6.0%20ORDER%20BY%20key%20ASC).
Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.6/).

## 3.5.2

> [!IMPORTANT]  
> ## .NET 10 / C# 14
> If you are targeting .NET 10 or using C# 14 in your project you should
upgrade to this release as soon as possible as it contains important
compatibilty fixes.
>
> Projects targeting prior versions of .NET or not using C# 14 can
upgrade at their convenience.

This is a patch release that contains fixes and stability improvements:
- [CSHARP-5793](https://jira.mongodb.org/browse/CSHARP-5793): Map
MemoryExtensions Contains and SequenceEqual with null comparer to
Enumerable methods with no comparer parameter

The full list of issues resolved in this release is available at [CSHARP
JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%203.5.2%20ORDER%20BY%20key%20ASC).
Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.5/).

## 3.5.1

This is a patch release that contains fixes and stability improvements:
- [CSHARP-5777](https://jira.mongodb.org/browse/CSHARP-5777): Avoid
ThreadPool-dependent IO methods in sync API
- [CSHARP-5743](https://jira.mongodb.org/browse/CSHARP-5743): Version
3.5 causes delays and disruptions because it is trying to access a
disposed semaphore slim
- [CSHARP-5749](https://jira.mongodb.org/browse/CSHARP-5749): Support C#
14 changes that result in overloads now binding MemoryExtensions
extension methods
- [CSHARP-5786](https://jira.mongodb.org/browse/CSHARP-5786): Add
Decimal128 byte constructor overload (net10 compat)

The full list of issues resolved in this release is available at [CSHARP
JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%203.5.1%20ORDER%20BY%20key%20ASC).
Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.5/).

## 3.5.0

This is the general availability release for the 3.5.0 version of the
driver.

> [!IMPORTANT]  
> ### Internal Changes for an Upcoming Feature
> This release includes low level changes to internal subsystems
including operation execution, timeout handling, and resource cleanup
logic - in preparation for supporting [Client-Side Operations Timeout
(CSOT)](https://jira.mongodb.org/browse/CSHARP-3393) in an upcoming
release.
> While these changes should be backward-compatible and not alter
existing behavior, they touch core driver infrastructure.
If you experience unexpected issues such as:
> - Operations timing out unexpectedly or not timing out when expected
> - Unusual delays or hangs in database calls
> - Differences in command cancellation behavior
> 
> Please [let us know via the MongoDB JIRA Driver
project](https://jira.mongodb.org/projects/CSHARP/issues/) or your
MongoDB support channel, providing driver logs and a reproduction if
possible.
>
> ### Experimental Support for Queryable Encryption Text Field Prefix,
Suffix and Substring Queries
> Substring, prefix and suffix search for Queryable Encryption are in
preview and should be used for experimental workloads only. These
features are unstable and their security is not guaranteed until
released as Generally Available (GA). The GA version of these features
may not be backwards compatible with the preview version.

### The main new features in 3.5.0 include:
- [CSHARP-5453](https://jira.mongodb.org/browse/CSHARP-5453): Add
builder for CSFLE schemas
- [CSHARP-3222](https://jira.mongodb.org/browse/CSHARP-3222): Add LINQ
support for median and percentile accumulators/window functions
- [CSHARP-5672](https://jira.mongodb.org/browse/CSHARP-5672): Support
sorting by value in PushEach operation
- [CSHARP-5625](https://jira.mongodb.org/browse/CSHARP-5625): Support
text indexes for explicit and automatic encryption
- [CSHARP-734](https://jira.mongodb.org/browse/CSHARP-734): SOCKS5 Proxy
Support
- [CSHARP-3458](https://jira.mongodb.org/browse/CSHARP-3458): Extend
IAsyncCursor and IAsyncCursorSource to support IAsyncEnumerable
### Improvements:
- [CSHARP-5603](https://jira.mongodb.org/browse/CSHARP-5603): Add Big
Endian support in BinaryVectorReader and BinaryVectorWriter
- [CSHARP-5614](https://jira.mongodb.org/browse/CSHARP-5614): Fix
deserialization of primitive arrays on Big Endian systems
- [CSHARP-5619](https://jira.mongodb.org/browse/CSHARP-5619): Replace
IConnection.SendMessages with the method to send a single message
- [CSHARP-5377](https://jira.mongodb.org/browse/CSHARP-5377): Eliminate
unnecessary killCursors command when batchSize == limit
### Fixes:
- [CSHARP-3435](https://jira.mongodb.org/browse/CSHARP-3435):
FilterDefinition Inject method should use root serializer
- [CSHARP-3662](https://jira.mongodb.org/browse/CSHARP-3662):
MongoClientSettings.SocketTimeout does not work for values under 500ms
on Windows for sync code
- [CSHARP-4040](https://jira.mongodb.org/browse/CSHARP-4040): Fix bug
when using field with same element name as discriminator
- [CSHARP-5587](https://jira.mongodb.org/browse/CSHARP-5587):
FindOneAndUpdate should insert correct discriminator value on upsert
- [CSHARP-3494](https://jira.mongodb.org/browse/CSHARP-3494): Fix
discriminator for generic types
- [CSHARP-5588](https://jira.mongodb.org/browse/CSHARP-5588): Unable to
select KeyValuePair Key when using camelCase convention
- [CSHARP-5633](https://jira.mongodb.org/browse/CSHARP-5633):
BsonSerializer.IsTypeDiscriminated is not thread-safe
### Maintenance:
- [CSHARP-5596](https://jira.mongodb.org/browse/CSHARP-5596): Remove
unused *OpcodeOperation classes
- [CSHARP-5617](https://jira.mongodb.org/browse/CSHARP-5617): Remove
unused IChannel.Query methods
- [CSHARP-5547](https://jira.mongodb.org/browse/CSHARP-5547): Remove
support for MongoDB 4.0

The full list of issues resolved in this release is available at [CSHARP
JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%203.5.0%20ORDER%20BY%20key%20ASC).
Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.5/).

## 3.4.3

This is a patch release that contains fixes and stability improvements:

- [CSHARP-5697](https://jira.mongodb.org/browse/CSHARP-5697): Fix
Client.BulkWrite failure in case complex type is being used as
Document's Id

The full list of issues resolved in this release is available at [CSHARP
JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%203.4.3%20ORDER%20BY%20key%20ASC).
Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.4/).

## 3.4.2

This is a patch release that contains fixes and stability improvements:
- [CSHARP-5661](https://jira.mongodb.org/browse/CSHARP-5661): Fix
UnobservedTaskException on socket connecting timeout


The full list of issues resolved in this release is available at [CSHARP
JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%203.4.2%20ORDER%20BY%20key%20ASC).

Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.4/).

Upgrading
There are no known backwards breaking changes in this release.

## 3.4.1

This is a patch release that addresses some issues reported since 3.4.0
was released:

- [CSHARP-5588](https://jira.mongodb.org/browse/CSHARP-5588) Fix issue
with conventions being ignored when using KeyValuePair in LINQ
- [CSHARP-5633](https://jira.mongodb.org/browse/CSHARP-5633) Fix thread
safety issue with BsonSerializer.IsTypeDiscriminated

The list of JIRA tickets resolved in this release is available at
[CSHARP JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%203.4.1%20ORDER%20BY%20key%20ASC).

Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.4/).

Upgrading
There are no known backwards breaking changes in this release.

## 3.4.0

This is the general availability release for the 3.4.0 version of the
driver.
 ### The main new features in 3.4.0 include:
- [CSHARP-5551](https://jira.mongodb.org/browse/CSHARP-5551): Support
KeyValuePair.Create<TKey,TValue>method in LINQ
- [CSHARP-5552](https://jira.mongodb.org/browse/CSHARP-5552): Add
support for $convert in LINQ
- [CSHARP-5505](https://jira.mongodb.org/browse/CSHARP-5505): Add
$geoNear stage aggregation builders
- [CSHARP-4935](https://jira.mongodb.org/browse/CSHARP-4935): Support
casting from an interface to a type that implements that interface in
LINQ queries
- [CSHARP-4779](https://jira.mongodb.org/browse/CSHARP-4779): Support
Dictionary(IEnumerable<KeyValuePair<TKey, TValue>> collection)
constructor in LINQ
- [CSHARP-5543](https://jira.mongodb.org/browse/CSHARP-5543): Add new
options for Atlas Search Text and Phrase operators
- [CSHARP-4535](https://jira.mongodb.org/browse/CSHARP-4535): Support
queries after casting IQueryable\<Derived> to IQueryable\<Base>
 ### Improvements:
- [CSHARP-5531](https://jira.mongodb.org/browse/CSHARP-5531): Reduce
memory allocations in BsonStreamAdapter.WriteDouble and WriteInt64
- [CSHARP-5529](https://jira.mongodb.org/browse/CSHARP-5529): Optimize
grouping.First().X to not retrieve the entire $$ROOT
 ### Fixes:
- [CSHARP-5540](https://jira.mongodb.org/browse/CSHARP-5540): Fix
exception when using AsQueryable().Last()
- [CSHARP-5471](https://jira.mongodb.org/browse/CSHARP-5471):
Incorrectly resolving the authentication mechanism parameters from SRV
connection string
- [CSHARP-5442](https://jira.mongodb.org/browse/CSHARP-5442): Fixed use
of serializer by Atlas Search operators

  > [!NOTE]
> Driver will start using registered serializers for Atlas Search
operators, to continue using the previous behavior use
`SearchDefinition.UseConfiguredSerializers(false)`

The full list of issues resolved in this release is available at [CSHARP
JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%203.4.0%20ORDER%20BY%20key%20ASC).
Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.4/).


## 3.3.0

This is the general availability release for the 3.3.0 version of the
driver.

> [!IMPORTANT]  
> A future minor release will raise the minimum supported MongoDB Server
version from 4.0 to 4.2. This is in accordance with [MongoDB Software
Lifecycle
Schedules](https://www.mongodb.com/legal/support-policy/lifecycles).
Support for MongoDB Server 4.0 will be dropped in a future release!

### The main new features in 3.3.0 include:

- [CSHARP-5469](https://jira.mongodb.org/browse/CSHARP-5469): Support
$lookup in CSFLE and QE
- [CSHARP-5205](https://jira.mongodb.org/browse/CSHARP-5205): Add option
to configure DEK cache lifetime
- [CSHARP-4883](https://jira.mongodb.org/browse/CSHARP-4883): Support
SkipWhile and TakeWhile methods in LINQ
- [CSHARP-5472](https://jira.mongodb.org/browse/CSHARP-5472): Support of
NamespaceType property into ChangeStreamDocument
- [CSHARP-5478](https://jira.mongodb.org/browse/CSHARP-5478): Support
for $rankFusion aggregation stage
- [CSHARP-5527](https://jira.mongodb.org/browse/CSHARP-5527): Support
for $sigmoid expression in LINQ
- [CSHARP-5506](https://jira.mongodb.org/browse/CSHARP-5506): Support
dictionary[key] for keys that aren't strings but are serialized as
strings in LINQ queries
- [CSHARP-1585](https://jira.mongodb.org/browse/CSHARP-1585): Support
for $elemMatch filters directly against the elements with no field name
- [CSHARP-5481](https://jira.mongodb.org/browse/CSHARP-5481): Implement
OfType and Is support for queries with scalar discriminators

### Improvements:

- [CSHARP-5496](https://jira.mongodb.org/browse/CSHARP-5496): Reduce
locks contention on server selection and connection checkout

### Fixes:

- [CSHARP-5513](https://jira.mongodb.org/browse/CSHARP-5513): Fix
ChangeStream DisambiguatedPaths implementation

### Maintenance:

- [CSHARP-5494](https://jira.mongodb.org/browse/CSHARP-5494): Deprecate
Hedged Reads options

The full list of issues resolved in this release is available at [CSHARP
JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%203.3.0%20ORDER%20BY%20key%20ASC).

Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.3/).

## 3.2.1

This is a patch release that addresses some issues reported since 3.2.0
was released:
- Fix potential leak with KMS retry mechanism -
[CSHARP-5489](https://jira.mongodb.org/browse/CSHARP-5489)
- Fix stack overflow exception on POCOs that represents tree-like
structures - [CSHARP-5493](https://jira.mongodb.org/browse/CSHARP-5493)

An online version of these release notes is available
[here](https://github.com/mongodb/mongo-csharp-driver/blob/master/Release%20Notes/Release%20Notes%20v3.2.1.md).

The list of JIRA tickets resolved in this release is available at
[CSHARP JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%203.2.1%20ORDER%20BY%20key%20ASC).

Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.2/).

## Upgrading

There are no known backwards breaking changes in this release.


## 3.2.0

This is the general availability release for the 3.2.0 version of the
driver.

The main new features in 3.2.0 include:

+ Support casting from an interface to a concrete type in a filter
expression - [CSHARP-4572](https://jira.mongodb.org/browse/CSHARP-4572)
+ Support for BSON Binary Vector subtype that helps make MongoDB Vector
Search more efficient and easy to work with -
[CSHARP-5202](https://jira.mongodb.org/browse/CSHARP-5202)
+ Support for additional methods in LINQ, such as Append, OfType,
Repeat, SequenceEqual -
[CSHARP-4872](https://jira.mongodb.org/browse/CSHARP-4872),
[CSHARP-4876](https://jira.mongodb.org/browse/CSHARP-4876),
[CSHARP-4878](https://jira.mongodb.org/browse/CSHARP-4878),
[CSHARP-4880](https://jira.mongodb.org/browse/CSHARP-4880)
+ Support strings with "Range" operator for Atlas Search -
[CSHARP-5429](https://jira.mongodb.org/browse/CSHARP-5429)
+ Added `ObjectSerializerAllowedTypesConvention` to more easily
configure allowed types for `ObjectSerializer` -
[CSHARP-4495](https://jira.mongodb.org/browse/CSHARP-4495)
+ Added Kubernetes Support for OIDC -
[CSHARP-5026](https://jira.mongodb.org/browse/CSHARP-5026)
+ Added `BsonDateOnlyOptionsAttribute` to control the serialization of
`DateOnly` - [CSHARP-5345](https://jira.mongodb.org/browse/CSHARP-5345)
+ Added array field support for "In" and "Range" operators in Atlas
Search - [CSHARP-5430](https://jira.mongodb.org/browse/CSHARP-5430)
+ Fixed an error where `BulkWrite` command would not be retried when
throwing a `ClientBulkWriteException` -
[CSHARP-5449](https://jira.mongodb.org/browse/CSHARP-5449)
+ Fixed a bug where `BsonGuidRepresentationAttribute` will not work on
nullable GUIDs -
[CSHARP-5456](https://jira.mongodb.org/browse/CSHARP-5456)
+ `EnumRepresentationConvention` will now also be applied to collection
of enums - [CSHARP-2096](https://jira.mongodb.org/browse/CSHARP-2096)
+ Automatically retry KMS requests on transient errors -
[CSHARP-5017](https://jira.mongodb.org/browse/CSHARP-5017)
+ LINQ aggregate Group now supports $addToSet operator -
[CSHARP-5446](https://jira.mongodb.org/browse/CSHARP-5446)
+ Minor bug fixes and improvements.

The full list of issues resolved in this release is available at [CSHARP
JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%203.2.0%20ORDER%20BY%20key%20ASC).

Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.2/).

## 3.1.0

This is the general availability release for the 3.1.0 version of the
driver.

The main new features in 3.1.0 include:

+ Support token field type and array field expressions with Atlas Search
builders for equals operator -
[CSHARP-4926](https://jira.mongodb.org/browse/CSHARP-4926)
+ Support `SearchIndexType` option when creating Atlas Search indexes -
[CSHARP-4960](https://jira.mongodb.org/browse/CSHARP-4960)
+ Support for valid SRV hostnames with less than 3 parts -
[CSHARP-5200](https://jira.mongodb.org/browse/CSHARP-5200)
+ Support for search sequential pagination -
[CSHARP-5420](https://jira.mongodb.org/browse/CSHARP-5420)
+ Support for Mql methods: `Exists`, `IsMissing` and `IsNullOrMissing`
in filters when possible -
[CSHARP-5427](https://jira.mongodb.org/browse/CSHARP-5427)
+ Support for Exact Vector Search (ENN) -
[CSHARP-5212](https://jira.mongodb.org/browse/CSHARP-5212)
+ Allow sort option to be supplied to update commands (updateOne, etc.)
- [CSHARP-5201](https://jira.mongodb.org/browse/CSHARP-5201)
+ Disabled TLS renegotiation when possible -
[CSHARP-2843](https://jira.mongodb.org/browse/CSHARP-2843)
+ Fix a bug in discriminator convention inheritance -
[CSHARP-5349](https://jira.mongodb.org/browse/CSHARP-5349)
+ New Serializers for ImmutableArray and other immutable collections -
[CSHARP-5335](https://jira.mongodb.org/browse/CSHARP-5335)
+ Minor bug fixes and improvements.

The full list of issues resolved in this release is available at [CSHARP
JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%203.1.0%20ORDER%20BY%20key%20ASC).

Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.1/).

## 3.0.0

The MongoDB .NET/C# driver team is pleased to announce our v3.0.0
release! The 3.0.0 release incorporates many user-requested fixes and
improvements that have been deferred as backwards-incompatible, as well
as internal improvements to pay down technical debt and improve
maintainability. Additional major changes include removal of a large
area of the public API (mainly from MongoDB.Driver.Core), which was not
intended for public use. Removed APIs are marked as deprecated in
[v2.30.0](https://www.nuget.org/packages/MongoDB.Driver/2.30.0) version.
For all the breaking changes and for the upgrade guidlines, please see
the [upgrade
guide](https://www.mongodb.com/docs/drivers/csharp/v3.0/upgrade/v3/).

The main new features in 3.0.0 include:
- [CSHARP-4904](https://jira.mongodb.org/browse/CSHARP-4904): Adding
.NET 6 target framework
- [CSHARP-4916](https://jira.mongodb.org/browse/CSHARP-4916): Removing
.NETSTANDARD 2.0 target framework
- [CSHARP-5193](https://jira.mongodb.org/browse/CSHARP-5193): Removing
LINQ2 provider
- [CSHARP-5233](https://jira.mongodb.org/browse/CSHARP-5233): Remove
IMongoQueryable interface
- [CSHARP-4145](https://jira.mongodb.org/browse/CSHARP-4145): Improved
Bulk Write API
- [CSHARP-4763](https://jira.mongodb.org/browse/CSHARP-4763): Client
side projections with Find and Select
- [CSHARP-3899](https://jira.mongodb.org/browse/CSHARP-3899): Removing
`MongoDB.Driver.Legacy` package
- [CSHARP-4917](https://jira.mongodb.org/browse/CSHARP-4917): Removing
`MongoDB.Driver.Core` package and various non-user-facing APIs (see
[v2.30.0](https://www.nuget.org/packages/MongoDB.Driver/2.30.0) for
deprecation messages)
- [CSHARP-5232](https://jira.mongodb.org/browse/CSHARP-5232): Embedding
MongoDB.Driver.GridFS package into `MongoDB.Driver` package
- [CSHARP-4912](https://jira.mongodb.org/browse/CSHARP-4912):
Refactoring the Client Side field level description to an optional
`MongoDB.Driver.Encryption` package. `MongoDB.Libmongocrypt` package is
not in use anymore and will not get any further updates
- [CSHARP-4911](https://jira.mongodb.org/browse/CSHARP-4911):
Refactoring the AWS authentication to an optional
`MongoDB.Driver.Authentication.AWS` package
- [CSHARP-5291](https://jira.mongodb.org/browse/CSHARP-5291): Removing
MONGODB-CR support
- [CSHARP-5263](https://jira.mongodb.org/browse/CSHARP-5263): Removing
support for TLS1.0 and 1.1
- [CSHARP-2930](https://jira.mongodb.org/browse/CSHARP-2930): Changing
default GUID serialization mode and removing GuidRepresentationMode
- [CSHARP-3717](https://jira.mongodb.org/browse/CSHARP-3717): Adding
DateOnly/TimeOnly support

The full list of issues resolved in this release is available at [CSHARP
JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%203.0.0%20ORDER%20BY%20key%20ASC).
Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v3.0/).

## 2.30.0

This is the general availability release for the 2.30.0 version of the
driver. Version 2.30.0 of the driver is the last scheduled 2.x release.
Further driver development will continue in 3.x versions.

Version 2.30.0 does not introduce new features or bug fixes. The single
purpose of 2.30 is to ease the migration to 3.x by marking the public
API that was removed in 3.0 as obsolete.

The full list of issues resolved in this release is available at [CSHARP
JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%202.30.0%20ORDER%20BY%20key%20ASC).

Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v2.30/).

## 2.29.0

This is the general availability release for the 2.29.0 version of the
driver.

Version 2.29.0 of the driver has been tested against MongoDB Server
version 8.0 and adds support for the following new features in server
version 8.0:

+ Support for v2 of the Queryable Encryption range protocol -
[CSHARP-4959](https://jira.mongodb.org/browse/CSHARP-4959)
+ Range indexes for Queryable Encryption are now GA -
[CSHARP-5057](https://jira.mongodb.org/browse/CSHARP-5057)

The following server 8.0 features are not yet supported and will be
supported in a later release of the driver:

+ Improved Bulk Write API -
[CSHARP-4145](https://jira.mongodb.org/browse/CSHARP-4145)
+ Update Sort option -
[CSHARP-5201](https://jira.mongodb.org/browse/CSHARP-5201)

The full list of issues resolved in this release is available at [CSHARP
JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%202.29.0%20ORDER%20BY%20key%20ASC).

Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v2.29/).

## 2.28.0

This is the general availability release for the 2.28.0 version of the
driver.

NOTICE: MongoDB 3.6 reached end-of-life in April 2021. The .NET/C#
Driver will be removing support for MongoDB 3.6 in an upcoming release.

The main new features in 2.28.0 include:

+ Provide Strong-Named Assemblies -
[CSHARP-1276](https://jira.mongodb.org/browse/CSHARP-1276)
+ Support additional numeric conversions involving Nullable<T> -
[CSHARP-5180](https://jira.mongodb.org/browse/CSHARP-5180)
+ CSFLE/QE KMIP support "delegated" protocol -
[CSHARP-4941](https://jira.mongodb.org/browse/CSHARP-4941)

## Bug fixes:
+ Verify that operands to numeric operators in LINQ expressions are
represented as numbers on the server -
[CSHARP-4985](https://jira.mongodb.org/browse/CSHARP-4985)
+ IReadOnlyDictionary indexer access fails to translate in v3 -
[CSHARP-5171](https://jira.mongodb.org/browse/CSHARP-5171)
+ Projection Expressions Fail to Deserialize Data Correctly -
[CSHARP-5162](https://jira.mongodb.org/browse/CSHARP-5162)
+ Enum conversion within IQueryable fails with Expression not supported
exception - [CSHARP-5043](https://jira.mongodb.org/browse/CSHARP-5043)
+ IMongoCollection.AsQueryable().Select() fails for array type
(regression) -
[CSHARP-4957](https://jira.mongodb.org/browse/CSHARP-4957)

The full list of issues resolved in this release is available at [CSHARP
JIRA
project](https://jira.mongodb.org/issues/?jql=project%20%3D%20CSHARP%20AND%20fixVersion%20%3D%202.28.0%20ORDER%20BY%20key%20ASC).

Documentation on the .NET driver can be found
[here](https://www.mongodb.com/docs/drivers/csharp/v2.28/).


Commits viewable in [compare
view](https://github.com/mongodb/mongo-csharp-driver/compare/v2.27.0...v3.6.0).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Tony Knight <tonycknight@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants