Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/brs-commit-checker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ on:
# Jira user name & API token is used for processing sensitive tickets comes from Github Secrets
# stored in the repository

permissions:
contents: read

jobs:
commit-report:
runs-on: ubuntu-latest
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/icu_exhaustive_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ concurrency:
env:
SHARED_MVN_ARGS: '--show-version --no-transfer-progress'

permissions:
contents: read

jobs:
# Runs exhaustive tests for ICU4J on Linux
icu4j-linux:
Expand Down
9 changes: 6 additions & 3 deletions .github/workflows/release-check-sign.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,12 @@ on:
env:
RELEASE_FOLDER: '${{ github.workspace }}/releaseDist'

permissions:
contents: read

jobs:
sign_and_checksums:
if: ${{ inputs.gitReleaseTag && startsWith(inputs.gitReleaseTag, 'release-') }}
if: ${{ inputs.gitReleaseTag && (startsWith(inputs.gitReleaseTag, 'release-') || startsWith(inputs.gitReleaseTag, 'icu4x/')) }}
runs-on: ubuntu-22.04 # Updated in BRS
environment: release-env

Expand Down Expand Up @@ -45,12 +48,12 @@ jobs:
run: |
source icu4j/releases_tools/shared.sh
pushd ${RELEASE_FOLDER}
rm *.asc
sha512sum -b icu4c* > SHASUM512.txt
md5sum -b *.jar > icu4j-${github_rel_version}.md5
md5sum -b icu4c-*-data-bin-*.zip > icu4c-${github_rel_version}-binary.md5
md5sum -b icu4c-*-sources.* > icu4c-${github_rel_version}-sources.md5
find . -type f -name 'icu4c*' -exec gpg --no-tty --batch --pinentry-mode loopback --passphrase=$MAVEN_GPG_PASSPHRASE -a --output {}.asc --detach-sig {} \;
gpg --no-tty --batch --pinentry-mode loopback --passphrase=$MAVEN_GPG_PASSPHRASE -a --output SHASUM512.txt.asc --detach-sig SHASUM512.txt
find . -type f -exec gpg --no-tty --batch --pinentry-mode loopback --passphrase=$MAVEN_GPG_PASSPHRASE -a --output {}.asc --detach-sig {} \;
popd
env:
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/release-icu4c-fedora.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ on:
env:
RELEASE_FOLDER: '${{ github.workspace }}/releaseDist'

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-22.04 # Updated in BRS
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/release-icu4c-ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ on:
env:
RELEASE_FOLDER: '${{ github.workspace }}/releaseDist'

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-22.04 # Updated in BRS
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/release-icu4j-maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ env:
SHARED_MVN_ARGS: '--no-transfer-progress --show-version --batch-mode'
RELEASE_FOLDER: '${{ github.workspace }}/releaseDist'

permissions:
contents: read

jobs:
publish:
runs-on: ubuntu-22.04 # Updated in BRS
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/wait-for-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ on:
pull_request:
branches: '**'

permissions:
contents: read

jobs:
enforce-all-checks:
runs-on: ubuntu-22.04 # Updated in BRS
Expand Down
6 changes: 4 additions & 2 deletions icu4c/source/common/unicode/unistr.h
Original file line number Diff line number Diff line change
Expand Up @@ -4173,8 +4173,10 @@ operator+ (const UnicodeString &s1, const UnicodeString &s2);
* @return UnicodeString(s1).append(s2)
* @stable ICU 76
*/
template<typename S, typename = std::enable_if_t<ConvertibleToU16StringView<S>>>
inline UnicodeString operator+(const UnicodeString &s1, const S &s2) {
template<
typename US, typename S,
typename = std::enable_if_t<ConvertibleToU16StringView<S> && std::is_same_v<US, UnicodeString>>>
inline UnicodeString operator+(const US &s1, const S &s2) {
return unistr_internalConcat(s1, internal::toU16StringView(s2));
}

Expand Down
12 changes: 6 additions & 6 deletions icu4c/source/data/misc/zoneinfo64.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@
// License & terms of use: http://www.unicode.org/copyright.html
//---------------------------------------------------------
// Build tool: tz2icu
// Build date: Wed Apr 9 14:46:22 2025
// Build date: Mon Dec 15 22:36:35 2025
// tz database: ftp://ftp.iana.org/tz/
// tz version: 2025b
// ICU version: 78.0.1
// tz version: 2025c
// ICU version: 78.1
//---------------------------------------------------------
// >> !!! >> THIS IS A MACHINE-GENERATED FILE << !!! <<
// >> !!! >>> DO NOT EDIT <<< !!! <<
//---------------------------------------------------------

zoneinfo64:table(nofallback) {
TZVersion { "2025b" }
TZVersion { "2025c" }
Zones:array {
/* ACT */ :int { 358 } //Z#0
/* AET */ :int { 370 } //Z#1
Expand Down Expand Up @@ -1024,9 +1024,9 @@ zoneinfo64:table(nofallback) {
} //Z#217
/* America/Thunder_Bay */ :int { 220 } //Z#218
/* America/Tijuana */ :table {
trans:intvector { -1514739600, -1451667600, -1343145600, -1234803600, -1222963200, -1207242000, -873820800, -761418000, -686073600, -661539600, -620755200, -608144400, -589384800, -576082800, -557935200, -544633200, -495039600, -481734000, -463590000, -450284400, -431535600, -418230000, -400086000, -386780400, -368636400, -355330800, -337186800, -323881200, -305737200, -292431600, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1175421600, 1193562000, 1207476000, 1225011600, 1238925600, 1256461200, 1268560800, 1289120400 }
trans:intvector { -1514739600, -1451667600, -1343145600, -1234803600, -1222963200, -1207242000, -873820800, -761418000, -686073600, -661539600, -620755200, -608144400, -589384800, -576082800, -557935200, -544633200, -526489200, -513183600, -495039600, -481734000, -463590000, -450284400, -431535600, -418230000, -400086000, -386780400, -368636400, -355330800, -337186800, -323881200, -305737200, -292431600, -273682800, -260982000, -242233200, -226508400, -210783600, -195058800, -179334000, -163609200, -147884400, -131554800, -116434800, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1175421600, 1193562000, 1207476000, 1225011600, 1238925600, 1256461200, 1268560800, 1289120400 }
typeOffsets:intvector { -28084, 0, -28800, 0, -28800, 3600, -25200, 0 }
typeMap:bin { "03010301020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
typeMap:bin { "030103010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
finalRule { "US" }
finalRaw:int { -28800 }
finalYear:int { 2011 }
Expand Down
14 changes: 14 additions & 0 deletions icu4c/source/test/intltest/ustrtest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2549,6 +2549,13 @@ void UnicodeStringTest::TestU16StringView() {
assertEquals("any + sv16", UnicodeString(true, u"anysv16", 7), x);
x = any + str16;
assertEquals("any + str16", UnicodeString(true, u"anystr16", 8), x);

// Check that ICU’s operator+ do not make the standard ones ambiguous on standard types.
// See ICU-23299.
std::u16string u16String = u"breites ";
char16_t mutableU16Array[] = u"Feld";
const std::u16string concatenation = u16String + mutableU16Array;
const std::u16string concatenationWithPointer = u16String + &*mutableU16Array;
}

void UnicodeStringTest::TestWStringView() {
Expand Down Expand Up @@ -2646,6 +2653,13 @@ void UnicodeStringTest::TestWStringView() {
assertEquals("any + sv16", UnicodeString(true, L"anysv16", 7), x);
x = any + str16;
assertEquals("any + str16", UnicodeString(true, L"anystr16", 8), x);

// Check that ICU’s operator+ do not make the standard ones ambiguous on standard types.
// See ICU-23299.
std::wstring wideString = L"breites ";
wchar_t mutableWideArray[] = L"Feld";
const std::wstring concatenation = wideString + mutableWideArray;
const std::wstring concatenationWithPointer = wideString + &*mutableWideArray;
#endif
}

Expand Down
Binary file not shown.