diff --git a/Directory.Build.props b/Directory.Build.props index 6cd0c9477..47caaf1b5 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -10,9 +10,9 @@ true $(MSBuildThisFileDirectory)Shared.ruleset NETSDK1069 - - $(NoWarn);NU5105;NU1507;SER001;SER004;SER005;SER009 + + $(NoWarn);NU5105;NU1507;SER004;SER005;SER009 https://github.com/StackExchange/StackExchange.Redis/releases https://seredis.dev/ MIT diff --git a/docs/exp/SER001.md b/docs/exp/SER001.md index 2def8be6e..565a2278c 100644 --- a/docs/exp/SER001.md +++ b/docs/exp/SER001.md @@ -1,15 +1,25 @@ -At the current time, [Redis documents that](https://redis.io/docs/latest/commands/vadd/): +# SER001 — retired + +**This diagnostic is no longer produced.** Vector set support in current library versions is not marked +experimental, so nothing emits `SER001` and no suppression is needed. The page is kept because the +diagnostic's help link pointed here, and older builds still carry it. + +If you have a suppression for `SER001` — in a `csproj`, a `.editorconfig`, or a `#pragma` — it is now +inert, and can be removed whenever it suits you. + +## What it used to mean + +At the time, [Redis documented that](https://redis.io/docs/latest/commands/vadd/): > Vector set is a new data type that is currently in preview and may be subject to change. -As such, the corresponding library feature must also be considered subject to change: +The corresponding library feature therefore had to be considered subject to change too: -1. Existing bindings may cease working correctly if the underlying server API changes. -2. Changes to the server API may require changes to the library API, manifesting in either/both of build-time - or run-time breaks. +1. Existing bindings might cease working correctly if the underlying server API changed. +2. Changes to the server API might require changes to the library API, manifesting in either/both of + build-time or run-time breaks. -While this seems *unlikely*, it must be considered a possibility. If you acknowledge this, you can suppress -this warning by adding the following to your `csproj` file: +Acknowledging that was what the suppression meant: ```xml $(NoWarn);SER001 @@ -19,4 +29,9 @@ or more granularly / locally in C#: ``` c# #pragma warning disable SER001 -``` \ No newline at end of file +``` + +## Reserved, not recycled + +`SER001` is not reused for anything else, so an old suppression cannot silently hide an unrelated +warning. The same applies to the other retired identifiers — see `Experiments.cs`. diff --git a/src/RESPite/Shared/Experiments.cs b/src/RESPite/Shared/Experiments.cs index 61a1e5fe8..22dd8437f 100644 --- a/src/RESPite/Shared/Experiments.cs +++ b/src/RESPite/Shared/Experiments.cs @@ -8,9 +8,10 @@ internal static class Experiments // note: {0} is substituted with the DiagnosticId by the analyzer, e.g. .../exp/SER002 public const string UrlFormat = "https://seredis.dev/exp/{0}"; - // Retired experiments: these server features are now stable and no longer gated. + // Retired experiments: these features are now stable and no longer gated. // The DiagnosticIds remain reserved (do NOT reuse them) so old callers' suppressions // and the /docs/exp pages stay meaningful: + // SER001 = vector sets // SER002 = Server_8_4 (Redis 8.4 features) // SER003 = Server_8_6 (Redis 8.6 features) // SER006 = Server_8_8 (Redis 8.8 features)