Repository navigation
fix(libSceCesCs): map the GB 18030 profiles as the console does - #10739
Conversation
MarcZX10
left a comment
There was a problem hiding this comment.
The console-measured table consolidation and per-profile tests are substantial. The required conventions check is failing because the PR title is the placeholder fix(libSceCesCs). Please update it to identify the behavior (for example, fix(libSceCesCs): map the GB 18030 profiles as the console does) and let the check rerun. I have not approved while that required check is red.
|
Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
I reviewed exact head There is also a real merge-order dependency with #10056. That PR explicitly depends on #10186, which in turn depends on #10185; these are not all independent updates. I compared the exact trees: #10056 and this PR both change Current checks: eligibility, intake, labels and report pass; the six host/product jobs are skipped. I did not run the guest CES test locally or independently verify the console measurements. The PR reports a current-host CES test run on its fork, which is useful evidence once the branches are composed. |
MarcZX10
left a comment
There was a problem hiding this comment.
The hosted conventions check fails on this exact head because the title fix(libSceCesCs) is not Conventional Commits syntax, as reported in my earlier comment. Please rename the PR with a typed scope and description (for example, fix(libSceCesCs): map GB 18030 profiles as measured on PS5) and rerun the conventions check. The merge-order dependency with #10056 also remains to be recorded: it overlaps this PR in the GB18030 tables and Chinese test, and it carries the #10186/#10185 stack. Eligibility, intake, labels and report pass; product test jobs are skipped. I have not run the guest CES test locally.
cb534c3 to
0641e03
Compare
|
@MarcZX10 thanks. The title is fixed ( |
MarcZX10
left a comment
There was a problem hiding this comment.
Reviewed updated head 0641e0355a67aac313c30563ffa9fdc569c6caaa. The title now passes conventions, the description records the real overlap/merge order with #10056, and the code and tests reflect the revised 2000/2005 supplementary mappings. The author reports all 14 guest_ces* tests passed on this head after applying it to main; the current hosted run confirms conventions, eligibility, labels, and report, while all product build jobs are skipped. I have not independently run the CES suite or verified the PS5 sweep. I found no new code blocker in the diff, but am leaving this as a comment review rather than treating the author-reported console/test evidence as independently verified.
MarcZX10
left a comment
There was a problem hiding this comment.
Reviewed exact head 0641e0355a67aac313c30563ffa9fdc569c6caaa. The title now meets the repository convention, and the description records the overlap/order with #10056 and its dependent stack; since either PR can land first and the second rebases, Depends on: none is consistent. The GB18030 table change and revised boundary expectations match the reported console behavior. The author reports all 14 guest_ces* tests passing on this head and provides the PS5 sweep details; I did not independently rerun the CES suite or console measurement. Hosted conventions, eligibility, labels, and report checks pass; product jobs are skipped by workflow policy. No remaining blocker found.
0641e03 to
edcc451
Compare
edcc451 to
0641e03
Compare
0641e03 to
9a914b7
Compare
|
Rebased onto current Main grew two things since this PR's last head that needed reconciling on rebase, both now folded in and covered by
No change to the 2000/2005 mapping tables or the core "what" of this PR. |
|
Windows run of this head
AI-assisted: yes (Claude Code) |
What
The GB 18030 tables followed ICU, and the sources disagree on 26 sequences, so the debt entry called them unmeasured. I measured both profiles on a PS5 with homebrew payloads that load the console's
libSceCesCs.sprx:sceCesMbcToUtf32over every one- and two-byte sequence, every four-byte sequence below0x8431A530, every0x81 0x30-led sequence and the supplementary range (sampled, plus its edges), andsceCesUtf32ToMbcover every value from U+0000 to U+110001. On the console:gb-18030-2000.ucmin the BMP, as here, but maps no supplementary character:0x90308130-0xE3329A35answer0x805C0020with length 4, and U+10000 and up do not encode.0xA8BCand0x8135F437swapped (U+1E3F and U+E7C7), the one difference between the two profiles' sweeps. It keeps the 24 PUA cells thatgb-18030-2005.ucmremaps to U+FE10-U+FE19, U+9FB4-U+9FBB and six supplementary ideographs, so those code points take their four-byte forms as in 2000. Above the BMP it maps plane 2 only, U+20000-U+2FFFF (0x95328236-0x9A348431), both ways.The 2005 profile now uses the 2000 tables with the swap, and
Gb18030.hppdrops the 2005 tables. Both profiles' encode and decode sweeps match the console apart from two topics covered elsewhere: the surrogate error code (#9175) and the lengths of rejected characters.Tested
guest_ces_chinese: the per-profile two-byte, four-byte and encode hashes and the supplementary sample hashes are re-pinned (the 2000 BMP hashes are unchanged), the boundary table now expects no supplementary character in 2000 and plane 2 only in 2005, the difference table keeps the swap only, and the scalar, UTF-16 and string checks use U+20000 in 2005 and refusals in 2000. The otherguest_ces*tests pass.guest_ces*sources pass against thisExport.cpp.cb534c3d82: everyguest_ces*test passes; its one failure,pr_overlap_encoding, fails the same way onmainon that runner.check_conventions.pypasses.pr_overlap.pyreports feat(libSceCesCs): encode UCS-2, UTF-8, UTF-16 and UTF-32 characters into any MBCS profile #9175, feat(libSceCesCs): add the Windows-1253, 1255 and 1257 profiles #9912, feat(ces): add eight sparse single-byte profiles #10056, fix(libSceCesCs): convert single-byte characters as measured on a PS5 #10183, fix(libSceCesCs): terminate and count MBCS string conversions as measured on a PS5 #10185, fix(libSceCesCs): encode EUC-JP and Shift-JIS as measured on a PS5 #10186 and refactor(libs): add full export headers for libs #10706 on nearby lines ofExport.cpp, theguest_ces*tests or the debt file; none changes the GB 18030 tables (refactor(libs): add full export headers for libs #10706 moves declarations into export headers). Merge order: feat(ces): add eight sparse single-byte profiles #10056 carries the commits of fix(libSceCesCs): terminate and count MBCS string conversions as measured on a PS5 #10185 and fix(libSceCesCs): encode EUC-JP and Shift-JIS as measured on a PS5 #10186, which list this PR as a same-line overlap, and it changes the same Chinese test; whichever of this PR and feat(ces): add eight sparse single-byte profiles #10056 lands second rebases onto the other and rerunsguest_ces_chinese.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)