- Added code to use the parentLocales data in supplementalData.xml to determine the "parent locale ID" to use when
the requested resource bundle is not present (ICU-21126).
- Added code to change the parent-chain search path to handle the script better (ICU-21125; algorithm was described
in CLDR-15265):
- The base search patch is now ll_Ssss_RR -> ll_RR -> ll_Ssss -> ll -> root
- If the requested script is not the default script for the requested language and region, we automatically
avoid fallbacks that will implicitly change the script.
- Added new code to the CLDR-to-ICU data generation tool to generate source code, and used it to generate the lookup
tables for the new resource-fallback logic (we can't use the existing resource files for this, since that would
involve opening a resource bundle while trying to open another resource bundle). The data-generation stuff is
intended to be generic enough to allow for us to generate more static data tables in the future.
- Commented out a few collator tests, and changed one resource bundle test, because they're incompatible with the
new fallback logic (specifically, the default-script logic).
This fixes a warning on gcc 9.4.0, which is triggered because the third argument to strncpy() depends on the length of the second argument (but should actually indicate the buffer size). Replacing by memcpy() seems harmless because a null terminator is appended further below, and the buffer is sized to be "large enough" elsewhere.
See https://github.com/duckdb/duckdb/issues/4391 for details.
Fixing the warning is important for us, because the checks in the duckdb repository treat all warnings as errors.
* Update `U_PF_IPHONE` to be 0 when building for macOS/macCatalyst.
* add macro definition for `attribute((visibility("hidden")))` for cases
where internal structs exist within exposed classes.
This cleans up inconsistent annotations between declared APIs in headers
vs defined implementations in cpp's. This better ensures the API's
referenceable in headers represent what is exposed and defined in the
ultimate binary library's symbol table.
This is the normal standard way in C, C++ as well as Java and there's no
longer any reason for ICU to be different. The various internal macros
providing custom boolean constants can all be deleted and code as well
as documentation can be updated to use lowercase true/false everywhere.
Removed logKnownIssue(ICU-21322) in plurults.cpp, ICU-21322 is done and the
entire if-statement was commented out.
Replaced CLDR-13700 with CLDR-13701 in several TODOs. 13700 is a duplicate of
13701.
Likewise for CLDR-14502 --> CLDR-14582.
PR#1999 from ICU 71 release missed some of the cases.
The makefile hardcodes paths to the build directory into icu-config. It doesn’t
need to do this and it unnecessarily breaks build reproducibility. This patch
makes a simple change to avoid this.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Adjust RuleBasedBreakIterator::BreakCache::populateNear() to retain the cache
the cache contents in additional cases where are still useful, resulting in
improved performance.
This change is related to PR #2039, which addressed the same problem. This one
retains the cache contents in more situations.