Skip to content

Improve invariant globalization mode to be more complete #43774

Closed

Description

@marek-safar

The improvements to make invariant globalization mode more complete have been suggested since this mode was introduced. This issue extracts information from various existing comments and suggestion for easier .NET6 tracking.

  • Make basic lower/upper casing of non-ASCII characters work. The experience is pretty bad today if you are non-English speaking and like to use your native alphabet. The size footprint for doing this does not seem prohibitive.
  • Throw exceptions when somebody asks for non-invariant culture-specific data to make the bugs caused by missing globalization support easy to discover. We return bogus invariant data silently today.

Related issues

Activity

  1. GrabYourPitchforks commented on Oct 23, 2020

    @GrabYourPitchforks
    Member

    Also related: #20674, which is philosophically a "how do we want OrdinalIgnoreCase to behave in an ICU world?" question.

  2. Wraith2 commented on Oct 23, 2020

    @Wraith2
    Contributor

    Libraries can require globalization information to function correctly, for example SqlClient. Currently the way to check if the library is running in invariant mode is CultureInfo.GetCultureInfo("en-US").EnglishName.Contains("Invariant") which could be slow if it causes a culture instantiation and isn't obvious. It would be nice if there were a cleaner way to detect the mode.

  3. added
    enhancementProduct code improvement that does NOT require public API changes/additions
    and removed
    untriagedNew issue has not been triaged by the area owner
    on Oct 23, 2020
  4. added this to the 6.0.0 milestone on Oct 23, 2020
  5. tarekgh commented on Oct 23, 2020

    @tarekgh
    Member

    Throw exceptions when somebody asks for non-invariant culture-specific data to make the bugs caused by missing globalization support easy to discover. We return bogus invariant data silently today.

    I would be careful doing that. apps using libraries which they don't control and libraries can be creating non invariant cultures. Apps will not have any choice at that time but not using such libraries.

  6. jkotas commented on Oct 23, 2020

    @jkotas
    Member

    We can add compat quirks if we find this to be a problem.

  7. tarekgh commented on Oct 24, 2020

    @tarekgh
    Member

    We can add compat quirks if we find this to be a problem.

    I am pretty sure we'll get a lot of noises with that and the volume of complain can be none trivial.

  8. added
    Priority:1Work that is critical for the release, but we could probably ship without
    on Nov 10, 2020
  9. danmoseley commented on Nov 10, 2020

    @danmoseley
    Contributor

    @tarekgh could you add an estimated cost label? https://github.com/dotnet/runtime/labels?q=cost

  10. added
    Cost:SWork that requires one engineer up to 1 week
    on Nov 10, 2020
  11. tarekgh commented on Nov 10, 2020

    @tarekgh
    Member

    @danmosemsft done.

  12. added
    User StoryA single user-facing feature. Can be grouped under an epic.
    on Nov 10, 2020
  13. added
    trackingThis issue is tracking the completion of other related issues.
    and removed
    User StoryA single user-facing feature. Can be grouped under an epic.
    enhancementProduct code improvement that does NOT require public API changes/additions
    on Nov 16, 2020
  14. ghost added
    in-prThere is an active PR which will close this issue when it is merged
    on Jul 12, 2021
  15. ghost removed
    in-prThere is an active PR which will close this issue when it is merged
    on Jul 15, 2021
  16. ghost locked as resolved and limited conversation to collaborators on Aug 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Cost:SWork that requires one engineer up to 1 weekPriority:1Work that is critical for the release, but we could probably ship withoutTeam:Librariesarea-System.GlobalizationtrackingThis issue is tracking the completion of other related issues.

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions