-
Notifications
You must be signed in to change notification settings - Fork 178
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Consider splitting locale-fallbacking data out of icu_properties #5120
Comments
I agree there's room for improvement here. If |
Concrete proposal:
|
@robertbastian Do you agree with the above conclusion? |
I don't see the value of feature-gating them. We're not feature-gating existing |
Does the following unattributed comment (I think from @Manishearth?) address your concern?
|
I'm asking what the cost of not splitting exemplar chars into a child crate is. |
I don't think that's a question that can be answered at the moment since this is about future-proofing. Maybe exemplar chars data decides to add a lot more details, like rules to determine phonemes, what is a vowel, legal syllables, etc, and maybe that data gets big enough that we don't want it unconditionally in |
@robertbastian confirms consensus on the first bullet point: "exemplar_chars lives in icu_locale" but not bullet points 2-3. |
This is still in the 2.0 critical path because we are not in alignment about whether adding it as a default feature in the future is a breaking change. |
It's a bit annoying to put something that needs fallback into the |
Is that issue resolved if we move forward with the previously proposed |
It's not an issue like a circular dependency, it's just that this one crate would need to access itself in order to obtain fallback information. It just feels cleaner if
|
The issue was in the data crates. The data crates can use |
My understanding of the issue you raised was |
We can also change it to |
About the exemplar chars feature: I discussed it with @robertbastian and I'm convinced by this argument: "we don't feature-gate classes in other crates that we don't plan to split out into a child crate, so we shouldn't do it in Our design for Why do we care about letting clients disable components they don't need?
Now I can see an argument that
Since these use cases exist, Note: the feature Another potential area of inconsistency is that we don't always feature-gate components that are optional in other components. This is a good call-out that we might want to be more consistent about. For example, @robertbastian Did I miss anything? |
I'm not convinced by any of those use cases. Text layout engines don't need exemplar chars or locale directionality, they use bidi properties. I still don't see how having these features is not going to be messy, but if I'm overruled I'm overruled. |
You're right. The one user we know we have for exemplar chars uses it for spell checking. I corrected my list to say "spell checkers" instead of "layout engines". I also changed LocaleDirectionality to say "layout engines" instead of "text layout engines" because you can use LocaleDirectionality to decide between a RTL or LTR layout of your app. Do you agree that these are legitimate use cases that amount to something on the order of 10% or more of the users of Separate from icu_locale_fallback, we may have icu_locale_displaynames, which is definitely not needed for all users of icu_locale and which definitely contributes to compile times (I can produce evidence for those claims upon request). Are you in alignment that icu_locale_displaynames is feature-gated in icu_locale? If not, what other solution would you like to propose for people who need icu_locale without display names? |
I prefer to achieve consensus and mutual understanding of values. This isn't about politics; it's about weighing the tradeoffs. I would like to understand your perspective better on features being "messy" and how we should weight that cost relative to the benefits I've laid out. |
Current state of the repo:
Proposal:
LGTM: @robertbastian @sffc @Manishearth |
servo/rust-url#939 shows the build of
icu_properties
blocking onicu_locid_transform
getting compiled. I gather the exemplar_chars module is the culprit.We should consider splitting the exemplar_chars module, which is locale-dependent CLDR data and not locale-independent Unicode Database data into a different crate.
The text was updated successfully, but these errors were encountered: