microsoft / microsoft/STL

`<format>`: Investigate deriving `_Grapheme_Extend_ranges` from other tables

Open
#3,696 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

format performance
Dominant language
C++
Stars
11.1k
Forks
1.7k
Avg merge
4d 15h
Merged PRs (30d)
22

Description

For followup after we merge #3656.

@cpplearner:

  • _Grapheme_Extend_ranges represents code points with the Unicode property Grapheme_Extend=Yes.
    • Characters in these ranges are escaped unless they immediately follow an unescaped character. ([format.string.escaped]/(2.2.1.2.2))
    • It would be more space efficient to reuse the existing data for Grapheme_Cluster_Break: Grapheme_Extend=Yes is Grapheme_Cluster_Break=Extend minus Emoji_Modifier=Yes, and Emoji_Modifier=Yes is just 1F3FB..1F3FF. I chose to define a new array for simplicity.

@barcharcraz:

This is a fairly decent amount of data. We should at least open an issue to derive these from the other tables.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review #3656 and the quoted [format.string.escaped] wording first. Compare the existing Grapheme_Cluster_Break data with _Grapheme_Extend_ranges and determine whether the latter can be derived as described, including the 1F3FB..1F3FF Emoji_Modifier exception. Done means the duplicate range data is removed without changing the specified escaping behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
backend
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.