ICU Meeting Minutes 2011 (Archived)

Current and past meeting minutes

2011/12/21 & 2011/12/28

No meeting


  1. ICU 49 M2
  1. M2 download page
  2. Remaining M2 tickets (not in reviewing status)
  3. trunk is open for post M2 work
  4. Next target - RC on Feb 29, 2012
  1. Post M2 tasks
  1. 49 ticket triage
  2. Promotion of previously draft APIs
  1. ICU4C Peter (create ticket, remove #ifdefs in branch, review)
  2. ICU4J Yoshito
  3. Target: mid Jan (proposal), finish review by end of Jan
  1. API proposals
  1. deprecate the API for ISO comment (Markus; designated API reviewer: Mark; ticket #8934) - Approved
  2. deprecate the API for Unicode 1.0 character names (Markus; designated API reviewer: Mark; ticket #8934) - Approved (just make sure no strong objections from users)
  1. Remove data for those 1.0 names
  2. Long-term: Remove data structure support for those 1.0 names
  3. Maybe conditional on supporting new Name_Alias values which provide alternate names for most control codes?
  4. Send another notice to icu-design & icu-support; propose to deprecate, don’t wait for Name_Alias support
  1. revisit #8697 Make C++/J parseCurrency @draft in ICU 49 (Peter)
  1. Current internal is:
    virtual Formattable& parseCurrency(const UnicodeString &text,
    Formattable &result, ParsePosition &pos) const;
  2. Per meeting 2011/09/28 approved:
    virtual CurrencyAmount& parseCurrency (const UnicodeString &text,
    CurrencyAmount &result, ParsePosition &pos) const;
  3. But that will not work since CurrencyAmount is immutable
  4. Return by value? virtual CurrencyAmount parseCurrency (const UnicodeString &text,
    ParsePosition &pos) const;
  5. Or as pointer, passing ownership to caller?
  1. API pre-proposal: Ordinal formatting (Markus)
  1. MessageFormat “{baseNr,ordinal,one{He is on #st base}two{He is on #nd base}three{He is on #rd base}other{He is on #th base}}”
  2. Probably reuse PluralRules with something like a factory, e.g., forOrdinals(Locale)
  3. Probably reuse PluralFormat with some option
  4. Yoshito: thinking about pluggable messageformat.   “{baseNr, ______, ….. }” -> handle_____( entire arg string )
  1. propose into JDK to get this functionality in base JDK as well
  2. problem: deep parsing required for nested (complex) messagepatterns.
  3. simple messages are easier.
  4. problem: would need to recursively call MessagePattern parser for plugin, have access to MessagePattern internals.
  5. Counter proposal: use ICU’s MessageFormat, because they’re not seeing ICU’s CLDR data either, e.g., for {number} and {date} formatting.
  1. No concerns now with moving forward with the “ordinal” argument type.
  1. C++: Can we drop --disable-threads & ICU_USE_THREADS? (Markus)
  1. Fewer build options = easier to test/ship/support ICU (would remove one little release task)
  2. Using ICU in a single-threaded environment is slightly more efficient if ICU never attempts to lock mutexes etc.
  3. It is easier to port ICU4C to a new platform if you need not support threading, but even cell phones have multithreaded OSes now...
  4. Simplify mutex code
  5. Users could use existing API to override mutex functions with dummies
  6. Ok to propose to icu-design? - agreed, ok
  1. Further BCP47 integration? - #6791
  1. BCP 47 as the pivot - I don’t think we can (want to) make this change in near future
  2. close this ticket, new ticket (#9005) for convenient function makes us easier to handle both BCP 47 and traditional format transparent.
  1. CurrencyDisplayNames (Doug)
  1. Doug will post complete proposal - review it again for 49
  2. revised proposal sent, this time with apis embedded in the message instead of as links
  1. Fix to include the data file zip (Peter)
  1. Steven will fix the JSP.
  2. Issue was the =ver parameter was missing, fixed the jsp for better error reporting than ‘null..’
  1. IncomingBugs • BuildStatus • perf


  1. Welcome Will Mason (wmason)
  2. Pool/postponed tickets management
  1. “Better than UNSCH”
  2. “Not promising for particular release but really want to get done, time permitting”
  3. Proposal:
  1. single “pool”.
  2. Rename 50 pool to “Postponed” or something (see below)
  3. 49 pool may already be a semi-commitment for 49
  4. CLDR uses “postponed” to mean “discuss in a future meeting”.
  5. “later” or “future” or “soonish”
  6. CLDR uses “soon” about like we are discussing here
  7. Consensus: rename “50 (pool)” to “future” [DONE], no change to “49 (pool)”; when version 49 is released, move remaining 49* to “future”
  1. CLDR 21m2 / ICU49m2 milestone status (Peter)
  1. Unicode 6.1 roll-in (as of 10:20 AM PT, working for ICU4C in Markus’s branch!)
  1. Hopefully done and on the trunk by Friday
  1. CLDR 21m2 integration (will start as soon as Unicode 6.1 in trunk, should be <1 day)
  2. Reviews -
  1. tzdata legal notice -
  1. will put on download pages, repository page (Steven)
  2. will not continue updating the 1:1 mirror of tzdata/tzcode.
  1. Discuss best approach to (variant Chinese pinyin collations)
  1. One more possible option - Mark will take it back to the CLDR community.
  1. Priority on import changes in collation 
  1. Markus: It would be really nice if this will get done by 49
  2. Consensus - trying to get this done..
  3. But, it should be done early - do not want to delay 49 release by this.
  1. CLDR: fyi, additions to SentenceBreak
  2. Holiday meeting schedule
  1. Cancel the meetings - Dec 21/28
  2. Reconvene Jan 4
  1. IncomingBugs • BuildStatus • perf


  1. Steven & Markus propose to make Will Mason (willchido) an ICU committer. - approved
  2. Google would like to add more part-time ICU contributors (Markus)
  1. half dozen - Markus will work on the paper work with Steven in next couple of weeks
  1. API proposals
  1. Normalizer2 pairwise composition (Markus; designated API reviewer: Mark; ticket #8804) - approved
  1. Revised proposal: UChar32 composePair(UChar32 a, UChar32 b) returns only the composite
  1. Normalizer2::getRawDecomposition(code point) (Markus; designated API reviewer: Mark; ticket #8804) - approved
  2. Normalizer2::getEasyToUseInstance() (Markus; designated API reviewer: Mark; ticket #8246) - approved with getNFKCCasefoldInstance() without ‘_’
  1. Revised proposal: getNFCInstance(), getNFDInstance(), getNFKCInstance(), getNFKDInstance(), getNFKC_CasefoldInstance() without parameters except UErrorCode
  1. getNFKCCasefoldInstance()
  1. ICU 49 M2
  1. Unicode 6.1? (Markus)
  1. should be good for testing
  2. might not be production quality yet
  3. If Mark can push what he has today, Markus can try integrating the data by the end of Thursday in his branch.
  4. Should we merge Markus’s branch for 6.1 work into trunk now?
  1. Peter: more opportunity for testing
  2. Markus: shoot for integration into trunk on Friday
  1. CLDR 21m2 data should be in by Dec 7
  2. Code freeze & review schedule - see the top of page
  3. Release manager?
  1. C: Markus (ticket #8878)
  2. J: Yoshito (ticket #8877)
  1. Chinese calendar support
  1. Latest proposal - withdraws proposed change to use of UCAL_IS_LEAP_MONTH
  2. Two ICU bugs #8958, #8959
  1. IncomingBugs • BuildStatus • perf


  1. Cancelled (Thanksgiving)


  1. CLDR 21 schedule update
  1. m2 Dec 7
  2. release Feb 1
  1. Unicode 6.1 data status (Peter)
  1. TODO(Mark): update FractionalUCA.txt
  2. TODO(Mark): regenerate derived files
  3. TODO: decide what to do with BidiTest.txt (discussed at UTC?)
  4. TODO(Mark): Update for latest UAX #29 grapheme break changes
  5. TODO: Update for UAX #14 line break changes
  6. Need to wait for files on Unicode site to be updated, need to check schedule for that
  1. FYI, revised Chinese calendar proposal (Peter)
  2. Server Move Status (Steven)
  1. Remaining items?
  1. continuous build stuck?
  2. Macro: enscript formatter
  3. perf build results
  1. Decommissioning old server 11/22 (Tuesday)
  2. Backup data in /disk2/incoming on new server
  1. Others
  2. IncomingBugs • BuildStatus • perf


  1. ICU4J Freezable TimeZone (Yoshito; designated API reviewer: Markus ticket #8345) - Approved
  1. Yoshito will file a ticket for ICU4J Calendar implementation to utilize frozen time zone
  1. It looks we need Calendar#getTimeZoneReference or something for DateFormat consumption for efficiency
  1. internalGetTimeZone()?
  2. public @internal - Agreed
  1. Calendar#getTimeZone is not final... so, strictly speaking, current code in Calendar class itself calling Calendar#getTimeZone() method cannot be simply replaced with a reference to its own time zone field if there is a user defined Calendar subclass overriding Calendar#getTimeZone()... OK
  2. Q: field IS_LEAP_MONTH values besides 0,1? Agreed
  3. While we’re at it, special designation for first month of year  正月, 2月, 3月, …
  4. Add bug numbers to doc
  5. Resolve CLDR issues by e-mail over next week, decide what to do about ICU impl.
  6. Expand doc into chapter of user guide
  1. Usually IBMers update…
  2. CLDR updates (not yet made, but we will - no issue)
  1. metazone mapping for Europe/Kiev, Europe/Uzhgorod, Europe/Zaporozhye, Europe/Simferopol (supplemental/metaZones.xml) - not critical
  2. time zone alias in timezone.xml for Europe/Tiraspol (was added in in 2011m, then moved to backward in 2011n)
  1. ICU updates
  1. zoneinfo64: Already tested/prepared by Michael Ow actually... (just not checked in)
  2. No reason to update ICU mirror of tzcode/tzdata (IANA now provides all versions)
  3. ICU misc/metaZones.txt & misc/timezoneTypes.txt updates: Michael will update today
  1. Solution for now
  1. check metaZones.txt & timezoneTypes.txt into trunk
  2. patch test code known to fail (with timebomb till post m2)
  1. Segmentation data (changed property values), coordinate with changes for #8932
  2. Collation updates
  3. StandardizedVariants.txt (not in ICU’s unidata, probably don’t care)
  4. BidiTest.txt?
  1. Dec 14 (Wed) ICU 49m2 release
  2. Dec 12 (Mon) Final check-in based on review feedback
  3. Dec 8 (Thu) Review (initial round) complete
  4. Dec 5 (Mon) Final check-in for features/bug fixes
  1. TimeZone.countEquivalentIDs throws NPE - to ICU4J maint-4-8 - Approved


  1. Unicode 6.1 update progress (Markus)
  1. C & J branches/markus/uni61  (Steven: fired off a single build on the C branch, will add to continuous build soon)
  2. Sent email on oct25 about new API constants
  3. Properties all updated
  4. Submitted several issues, mostly minor
  5. FractionalUCA.txt bug, need to restore second primary-lead-byte for “space” reordering group; have temporary, partial workaround
  6. BidiTest.txt auto-LTR test data wrong
  7. Need to evaluate collation test failures
  1. 2 new conformance test failures
  2. further failures from cintltst & Java tests
  1. Need to evaluate translit roundtrip test failures; maybe just exclude new characters?
  1. IncomingBugs BuildStatus • perf


  1. ICU4J - FindBug / Missing hashCode implementation in classes implementing equals
  1. Proposal - add

    public int hashCode() {
            assert false : "hashCode not designed";
            return 42; // any arbitrary constant will do
  2. OK - will do this.
  1. ICU4C (Steven/Yoshito)
  1. Already tagged - release-4-8-1-1
  2. Steven is working on the release page
  3. Later today - official release
  1. New Web Server (live before 11/22/11)
  1. Server system upgrade
  2. Steven will send a note about the down time later
  1. IncomingBugs BuildStatus • perf


  1. Canceled (Unicode conference)


  1. API proposals
  1. Default script for Java 5 and 6 using system property user.script (Yoshito; designated API reviewer: ???; ticket #8446) - Approved
  1. Maintenance release candidate bugs; for procedure follow example of ticket #8787
  1. Numeric month name parsing problem - Approved
  1. ICU4J JCite - guidelines for embedding coding example (Yoshito)
  1. Self-contained example allowing a user to cut & paste to try it without copying dependencies other than icu4j.jar
  2. Put such self-contained examples in “demos” or new directory “samples”?
  1. The contents of “demos” are mostly very old GUI demo apps
  2. Some are simple console apps (such as MessagePattern examples recently added)
  3. Options
  1. continue to use “demos” - mixed bag
  2. break down “demos” into two sub-packages - the old GUI based demo apps vs. simple console apps
  3. create a new directory “samples”, for self-contained console app samples / move a few sample code currently in “demos” to “samples” - agreement
  1. Feedback from Helena - use consistent term - example / sample / demo   ( also icuapps -srl)
  2. yoshito will clean up the proposal and add it into the codling guideline doc.
  1. When can we upgrade our minimum Java level to Java 6?
  1. Java 6 was released on December 11, 2006 (
  2. Eclipse platform needs Java 5 as minimum for now
  3. No practical blocking issue at least for now...
  4. Java 5 already EOL: “J2SE 5.0 entered its end-of-life on April 8, 2008 and is no longer supported by Sun as of November 3, 2009.” - “Premier Support” ran out in May 2011, “Extended Support” ends in May 2014 (from the “Java for Business Support Roadmap”)
  5. Yoshito/Dragan to contact Eclipse team to ask their plan.
  1. ICU4C 4.8 maintenance release (
  1. end of October
  1. IncomingBugs BuildStatus • perf


  1. 49M1 status
  1. tagged milestone-49-0-1
  2. Download page -
  3. API change report
  1. C:
  2. J:
  1. C test failure -
  1. not a regression, fix this after M1
  2. not a ship stopper
  1. BRS -
  2. Tickets to be included in What’s new
  1. 8630    Java 7 Locale Category support    
  2. 8512    Make TimeZoneNames/TimeZoneFormat APIs formal    
  3. 8579    u_printf could be a convenience function    
  4. 8745    MessagePattern as Nodes      
  5. 8779    add TimeZone::getUnknown()      
  6. 8811    "Support for deprecation of the ""commonlyUsed"" element for CLDR metazones"    
  7. 7877    Request for explicit constructors in UnicodeString    
  8. 8452    un-autoconf platform.h    
  9. 8453    smaller binaries with static-linked ICU    
  10. 8515    Port UCNV_GET_MAX_BYTES_FOR_STRING to CharsetEncoderICU    
  11. 8575    option for not including utf headers by default
  12. 8606    add Normalizer2.getCombiningClass(c)
  13. 8680    require C++ namespace support
  1. CLDR 2.0.1 removed short currency symbols from root.xml (Markus)
  1. E.g., GH₵ for GHS, USh for UGX
  2. We now just have the ISO code and the long name
  3. Poor user experience for users who do use those currencies
  5. Assessment spreadsheet:
  1. Other items
  2. IncomingBugs BuildStatus • perf


  1. API proposals
  1. promote 4 UText comparison functions to @draft (Peter; designated API reviewer: Andy; ticket #8123; icu-design proposal sent 9/14) - Andy wants to look close by next week
  1. Need better doc (what are the units of length, etc.)
  2. Investigate case folding issues a little bit more
  3. Better names (Markus)
  4. Delete first two, keep other two @internal? (Andy, Markus) or else ...CompareUpTo()? (Markus)
  5. Go with deleting first two, keeping others @internal, adjust docs as necessary (i.e. proposal withdrawn).
  6. That means, No new APIs
  1. Promote NumberFormat/DecimalFormat parseCurrency to @draft (Peter; designated API reviewer: John; ticket #8697; icu-design proposal sent 9/14, revised 9/26)
  1. In J, parseCurrency should take CharSequence instead of String
  2. In C++, what should be the right return type? Can we return CurrencyAmount directly? From e-mail discussion:
    virtual CurrencyAmount &parseCurrency (const UnicodeString &text, CurrencyAmount &result, ParsePosition &pos) const; -
  1. DecimalFormat(pattern, locale, status) (Andy; designated API reviewer: Yoshito; ticket #8632)
  1. withdraw because it’s a trivial wrapper? (Markus)
  2. Withdrawn for now - add some doc if necessary
  1. “punctuation APIs”: LocaleData.ES_PUNCTUATION for LocaleData.getExemplarSet() (Mark; designated API reviewer: Yoshito; ticket #8825, #8808)
  1. In C, shouldn’t it be ULocaleDataExemplarSetType::ULOCDATA_ES_PUNCTUATION (like others in ulocdata.h)? - Peter
  2. Add C ULocaleDataExemplarSetType::ULOCDATA_ES_CURRENCY too, to match Java LocaleData?
  5. Approved
  2. Corresponding C/C++ ULOCDATA_ES_PUNCTUATION
  1. TimeZoneFormat/TimeZoneNames serialization format
  1. why ULocale?
  1. Cannot change any more for backward serialization compatibility support
  2. BCP47 string - we still cannot map ULocale to BCP47 without data loss - it may not be significant for locale service behavior
  1. Status of import in collation - (John/Umesh)
  1. Collation resources containing imports take a long time to build.
  2. No support for “source=locale” as specified in TR35.
  3. Work plan?  Is import far enough along that we can actually start putting import statements into CLDR data?  If not, then when?
  1. pull out the new EOR stuff using import from CLDR v21m1 (ICU 49m1)
  1. get rid of imports
  2. collation type EOR in root should not be harmful
  1. tickets?
  2. Umesh/John to look into issues blocking this next week
  1. identify remaining issues
  2. Umesh to fix the ICU implementation
  1. Note: anonymous submissions are finally fixed. (Steven)
  1. fed up with important bugs/comments and no userid.
  3. Also, unauth users are again prohibited from setting these fields:
  1. keywords.permission = TICKET_MODIFY
  2. load.permission = TICKET_MODIFY
  3. milestone.permission = TICKET_MODIFY
  4. owner.permission = TICKET_MODIFY
  5. priority.permission = TICKET_MODIFY
  6. revw.permission = TICKET_MODIFY
  7. tweaks = priority,keywords,owner,cc,milestone,load,revw,weeks,xref
  8. weeks.permission = TICKET_MODIFY
  9. xref.permission = TICKET_MODIFY
  1. Example code snippet in ICU API reference doc (yoshito)
  1. ICU4CDoxygen \snippet command (only in Doxygen 1.7.5(.1) released just last month (2011 Aug)).
  2. Example:
  1. in ucnv.h:
    * \snippet samples/ucnv/convsamp.cpp ucnv_open

    in convsamp.cpp:
     //! [ucnv_open]
     conv = ucnv_open("koi8-r", &status);
     //! [ucnv_open]
  1. Preferrably, get snippets from tests (intltest /cintltst), otherwise samples
  2. make samples compile at build time
  1. ICU4J
  1. JCite JavaDoc tag -
  2. <icu4j_root>/samples directory for “self contained” examples
  1. Self contained - has “main”, only depends on icu4j.jar (or icu4j-charset.jar)
  2. “” + API subpackage name + lowercase type
  1. package name for examples->
  2. Actual example code class -
  1. May want to add annotation like below -
  1. @ICUSample(
            name = "Print time zone transitions",
            description = "Iterate through time zone transitions for America/Los_Angeles starting year 2000 for 10 years",
            apis = {"", ""}
  1. 49M1
  1. BRS - yoshito will create a sheet
  2. Review -
  3. dragan - C
  4. ticket work in progress (both should be
  1. Steven - library suffix?
  2. Peter - date parse problem with “1月”
  1. IncomingBugs BuildStatus • perf


  1. API proposals
  1. TimeZoneNames & TimeZoneFormat (Yoshito; designated API reviewer: John; ticket #8512)
  1. serialization form (TODO(markus): review by the end of today)
  2. Modification to TimeZoneNames.find(...), make it abstract - Approved
  1. Deprecate SHORT_COMMONLY_USED time zone display name type (Yoshito; designated API reviewer: John; ticket #8811) (icu-design 9/13) - Approved
  2. Promote 4 UText comparison functions to @draft (Peter; designated API reviewer: Andy; ticket #8123; icu-design proposal sent 9/14) - Andy wants to look closer, revisit next week / need better doc / investigate case folding issues a little bit more
  3. Add set/getTimeZone methods to DateIntervalFormat for J (Peter; designated API reviewer: Yoshito; ticket #8511; icu-design proposal sent 9/14). - Approved
  1. Yoshito: LGTM.
    Generic implementation comments. I think we should create a defensive copy in setter/getter implementation. DateFormat#getTimeZone/setTimeZone currently does not do this - and we probably cannot change it any more. For new APIs, I want to make setter/getter more robust. If an object set/get is a mutable object, we should clone it in setter/getter.
    For TimeZone, I'm planning to make it Freezable.
    probably not - make TimeZone implementation class freezable / or make TimeZone freezable, but cannot return a frozen copy by TimeZone#getTimeZone() Once we do that (and TimeZone#getTimeZone returns a frozen instance), clone just returns its reference. Therefore, the overhead should be pretty minimum.
  2. Coding guideline: setter/getter for mutable object - the implementation should create a safe copy (clone) - Yoshito will add this statement in the coding guideline
  1. Promote NumberFormat/DecimalFormat parseCurrency to @draft (Peter; designated API reviewer: John; ticket #8697; icu-design proposal sent 9/14)
  1. In J, parseCurrency should take CharSequence instead of String
  2. In C++, what should be the right return type? Can we return CurrencyAmount directly?
  3. Revisit next week
  1. Remove "const" from UDateFormat* param in udat_parse, udat_format (Peter; designated API reviewer: Markus; ticket #8269; icu-design proposal sent 9/14) - Rejected
  1. To make these methods “actually” const (cloning calendar) -> Peter to file a bug: #8844
  2. Propose new API - non-const parse & format -> Peter will post a new proposal for these
  1. Add u_printf (Abhinav; designated API reviewer: Michael Ow; ticket #8579; icu-design proposal sent 9/16, amended sep19) - Approved
  1. Maintenance release candidate bugs; for procedure follow example of ticket #8787
  1. - UMR RegexMatcher
  2. (did we actually approve this already?) -parse regression
  3. IBM i (document dll mode not working for C )
  4. all approved.
  5. Steven to merge for C.
  6. ICU4C (next 4.8 maintenance release) will be sometime after M1 - mid Oct
  1. Perf Test Graphs for C (Steven)
  1. ⇨  Graphs
  2. Duration in s for 10,000 ops (lower is better)
  3. Newer is on the left, newer revs on top
  4. Spreadsheet is shared in the icu shared folder and .csv data is available
  5. Would be good to have comparison to previous release
  6. Add a “control” test - to compare the difference
  7. Could semi-statically add reference ( to top of list
  1. Pointer TOC (Steven, Markus)
  1. i5/OS (OS/400) is unable to compile a 53MB .c file with initializers for the .dat file
  1. Do i5/OS users require the ability of using the data from a DLL?
  1. Steven to find out.
  1. Any chance to build an object file directly like on Windows & Unix/Linux?
  1. ELF on i5/OS? It’s widely used on many Unixes.
  1. What is the maximum size of a .dat file that can be built this way on i5/OS?
  2. Any chance to get the i5/OS compiler team to fix the compiler?
  3. Any chance to use assembler?
  4. Steven to file a new ticket.
  1. Other platforms with issues?
  1. IncomingBugs • BuildStatus


  1. IncomingBugs • BuildStatus
  2. API proposals
  1. Calendar::getType() public (Cira; designated API reviewer: Markus; ticket #8803)
  1. Issue:
  1. J getType() returns only “islamic”, never “islamic-civil”. (Bug)
  2. first value of CLDR alias - “old type name “ in Key Type Definitions         
  1. Resolution:
  1. Markus takes #8803, will update javadoc on all three
  2. New bug: - IslamicCalendar.getType() returns “islamic” never “islamic-civil” #8822
  1. Approved
  1. Maintenance release candidate bugs; for procedure follow example of ticket #8787
  1. (C & J) MessageFormat plural with non-zero offset writes incorrect # value (Markus; ticket #8806) -> agreed to merge into maint-4-8 (C #8823 & J #8787) -> done, but J is MisTicketted :-(
  2. (C only) ICU4C 4.8 cannot parse month names when month name starts with numeric charater (Yoshito; ticket #8820) -> agreed to merge into maint-4-8 (C #8823)
  3. (layout engine, C++) LESwaps.h bad big-endian conditionals (Markus; ticket #8817) -> agreed -> done
  4. Process:
  1. Check in actual fixes into trunk
  2. Maintenance branch tickets: ICU4J 4.8.X: #8787 ,  ICU4C 4.8.X: #8823
  3. Checkin merges against this ticket and add a comment with the original bug #.
  1. Schedule
  1. C - unknown schedule (Steven)
  1. Explicit serialization policy (yoshito)
  1. Explicit declaration of private static final ObjectStreamField[] serialPersistentFields ?
  2. always need read/writeObject?
  3. What to do with implementation non-API classes?
  4. What to do with non-API class fields?
  1. Pushing methods to base classes
  1. Unicode presentation (Bits thereof)


  1. API proposals
  1. CompactDecimalFormat (Mark; designated API reviewer: Markus; ticket #8460) - approved - Yoshito will reply to the final one.
  2. Etc/Unknown TimeZone singletons, and GMT in Java (Markus; designated API reviewer: Yoshito; ticket #8779)
  1. freezable time zone #8345
  2. Approved - J setter problem will be fixed by freezable time zone above
  3. until then, implementation not immutable
  4. Yoshito will reply to the design proposal as approved.
  1. ChoiceFormat deprecation (Markus; designated API reviewer: Mark; ticket #8788) - approved.
  1. Pushing DecimalFormat & RuleBasedCollator functions up to the base class (Mark)
  1. See this spreadsheet
  2. See the email thread “[icu-core] Pushing Member functions up” with legend & details
  3. Options:
  1. push API up to base class
  1. setter is NOP, getter returns neutral value, or
  2. throws UnsupportedOperationException
  1. add getXInstance() on base class that returns distinguished subclass only
  1. get best subclass instance for locale (including -u options)
  2. throw UnsupportedOperationException if there isn’t one
  3. return null
  1. add getXInstance() on distinguished subclass that returns distinguished subclass only
  1. (same suboptions as ii)
  1. add .asDecimalFormat(), .asRuleBasedCollator(), .asSimpleDateFormat()
  1. throw ClassCastException if unable
  1. C++
  1. neither Exception nor null work well on C++
  2. Best: “ii.1” or “iii.1” get best for locale- can just return base class
  3. Favorite options: i & iii.1
  1. How/when/if to merge CLDR v21M1 into ICU 49.0.1 (John)
  1. Wait for CLDR v21m1
  2. Move ICU49m1 by 1 week - Sep 28 -> Oct 5
  1. DateFormat leniency
  1. Current behavior
  2. next week
  1. C Number Parse Performance Regression -
  1. Tracking Regressions:
  1. for now, xml attached to build with results
  1. Team Member (IBM) - Steven and Yoshito
  1. Abhinav Gupta, Toronto
  1. Release Status
  1. 49 m1
  1.  C ( Steven ) - schedule TBD.
  1. #8801 (C Number Parse Performance Regression), any others?
  2. Perhaps OS/400 porting
  1. ECMAScript/JavaScript i18n feedback (Steven)
  1. how to best send feedback?
  2. send to Mark and Cira
  3. or join discussion group as ECMA member - may be public
  4. TC39 subgroup? Joint ECMA and ?
  5. Steven to send feedback to Mark and Cira
  1. IncomingBugs • BuildStatus


  1. API proposals
  1. CompactDecimalFormat (Mark; designated API reviewer: Markus; ticket #8460) - Mark to clean up the proposal, send the latest proposal to the icu-design list - we already have generic consensus, but defer the final approval to next week.
  2. PluralRules.getKeywordStatus() (Mark; designated API reviewer: Doug; ticket #8782)
  1. Issue: Results differ when values are known to be integers
  2. Consensus: Add boolean integersOnly to the new getKeywordStatus() as well as to the @draft ICU 4.8 getAllKeywordValues() & getUniqueKeywordValue() (but not to getSamples())
  3. Mark to send the final version to icu-design - Yoshito will respond to the message as approved.
  1. DateFormat leniency
  1. Calendar field value range
  2. Symbol variation (symbols not produced by the pattern, such as long month vs. abbreviated month)
  3. Time zone variation (time zone strings not produced by the pattern)
  4. Need doc on behavior of strict vs lenient date parsing for C, J
  1. Peter will do for C, Yoshito for J
  1. See #8792 (this applies to a behavior change before roll-in of Apple lenient parse in ICU 4.8)
  1. tzdata2011i
  1. Updated CLDR metazone mapping / canonical tzid list
  2. metaZones.txt / timezones.txt updated from the CLDR trunk, merged into ICU4C trunk along with zoneinfo64.txt generated from tzdata2011i
  1. IncomingBugs • BuildStatus


  1. ICU4J / / (Yoshito)
  1. Mini BRS
  2. Download: / /
  3. Yoshito will send out the announcement after this meeting
  1. API proposals
  1. Java TimeZoneNames / TimeZoneFormat (Yoshito; designated API reviewer: John; ticket #8512; Design doc)
  1. C API proposal will follow
  2. Can find() take a CharSequence for the text? - Yoshito will update to CharSequence
  3. Please implement Serializable explicitly (both TimeZoneNames & TimeZoneFormat), not with the Java default mechanism; for example, do not serialize ULocale object but a BCP47 language tag
  3.  ??
  4. UnsupportedOperationException?
  1. ShortNumberFormat (prelim)
  1. One constructor to be @internal
  2. Name -> CompactDecimalFormat - any better names?
  3. Document how DecimalFormat methods works
  4. Factory: NumberFormat#getCompactDecimalInstance()
  5. 12 billion?? long short decimal format!??
  6. Actively design the serialized form
  7. See also notes below today’s agenda
  1. C/C++ builds (Markus)
  1. MinGW & Cygwin fixed?
  2. Ready to ask icu-support for testing & patches? - yes, ready, Markus to send note - done Monday aug29
  1. can we use genccode (and offset TOC) on all platforms now? (Markus, ticket #7470)
  1. ... or are there still platforms that choke on a .c or .s for the whole .dat file?
  1. could add more .s formats (may not be available on iseries)
  1. goal: simplify data build (always build .dat -> single .obj -> .dll)
  2. minor goal: remove less-well-tested code
  3. possible goal: maybe don’t need pkgdata tool if building the data file is simple enough? pkgdata is one of the most platform-sensitive pieces of ICU (needs to know about compiler, linker, make)
  4. Markus to look into building a branch with experiments, Steven to try it out
  1. Hosting ICU downloads at (Steven)
  1. concern: speed, initial time for downloading
  2. 500GB/mo current account limit, 450GB used recently  -  possible to add bandwidth $20/500GB/mo
  1. EcmaScript
  1. EcmaScript Internationalization API draft 
  2. Draft property/values for Date Skeleton
  3. Google, Microsoft, Mozilla, Amazon, Yahoo, Adobe,...
  1. Updated proposal - structure for alternate data elements from CLDR (John)
  2. IncomingBugs • BuildStatus
  1. saturn2 (Solaris) system is now on Sun compiler

ShortNumberFormat discussion --->

provisional name: CompactDecimalFormat

Make constructor @internal

Add NumberFormat.getCompactDecimalInstance, returns NumberFormat

Move important methods up from DecimalFormat to NumberFormat (setting decimals, etc.)

Sensitive to the numberSystem in the locale.

Will have add style (long/short) on constructors/getInstance. Diff between “1.2B” and “1.2 billion”

Document that prefixes/suffixes are ignored.

Serialization not supported.


  1. API proposals
  1. Data versioning API (Michael; designated API reviewer: Steven; ticket #7365, (original)#5720)
  1. concerns
  1. usefulness of data version
  2. isDataOlder() API hodge-podge
  3. “standard” concept does not make sense
  1. counterproposal
  1. promote getDataVersion() to public
  1. Conclusion - promote getDataVersion(), remove others, icustd stuff. - approved.
  1. remove ICUVersion from icuver
  1. Change uset.h USET_SERIALIZED_STATIC_ARRAY_CAPACITY from @internal to @stable ICU 2.4 (Markus; designated API reviewer: Steven; ticket #8759) - approved to tag @stable ICU 2.4
  2. (next week) TimeZoneNames/TimeZoneFormat
  1. Updates from the UTC meeting (mark/peter?)
  1. A/S collation weight change - agreed in UTC
  2. line break/grapheme break issues for emoji (UTR#29) - issues addressed/discussed
  3. UCA mod in CLDR back to the default UCA
  4. regex issues - case folding/normalization - working on updating UTS#18
  5. CLDR segmentation changes (UTR#29), not yet finalized
  6. New extended BiDi properties or new algorithm (structured text data)
  1. General discussion of how ICU should handle Java 7. Eg, we must have the conversion between ULocale and Locale be lossless.
  1. do we use the ‘poor-man’s ifdefs that we developed? That allows the most efficiency, and can have the ULocale be a thin wrapper containing a Locale, when running on Java 7.
  2. do we use reflection? That may have performance implications.
  3. -> ICU4J 4.8 uses reflection at class-loader time; ICU 49 will have some fixes
  1. svn:mergeinfo
  1. Files/directories that have svn:mergeinfo property (except repo root)
  1. icu4c - source (dir), source/common/udata.cpp
  2. icu4j - main/shared/data/icudata.jar
  3. When merging (e.g., svn merge --reintegrate ...), “svn status” shows an ‘M’ in the second column (property/metadata change, not contents change)
  1. svn:mergeinfo is likely added when someone invoke “svn merge” on a specific file/sub tree.
  2. Links:
  1. - reduced in 1.7
  1. IncomingBugs • BuildStatus


  1. API proposals
  1. ICU4J category locale support for Java 7 (Yoshito; designated API reviewer: Doug; ticket #8630) - Approved
  2. ICU4J class MessagePatternUtil (message as nodes) (Markus; designated API reviewer: Mark; ticket #8745) - Design approved - Markus may propose something for “TODO” later.
  1. review TODOs in the proposal (remove questionable portions?) - remove for now - done
  1. Java 7 support maintenance releases
  1. Versions - / /
  2. Goals
  1. Supporting Java’s category locale defaults
  2. Fix critical problems with Java 7 Locale (with new fields - script / extensions, ticket #8734)
  1. API status for locale category enum, setDefault/getDefault with category
  1. Eclipse folks do not like API marked as @deprecated
  2. could be “@stable ICU 49” in 4.4/4.6/4.8 - makes it clear that it is a backport - consensus
  1. Proposed date:
  1. GA 2011-08-24
  1. New ICU project member on the IBM side (Steven)
  1. Angshuman Deb (angshuman)
  1. Structure for alternate data elements from CLDR (Emmons)
  1. build time vs runtime
  1. IncomingBugs • BuildStatus
  1. Peter to check for next week on issues with #8719, #8733

Resource bundle keywords can contain invariant characters:

A-Z  a-z  0-9  SPACE  "  %  &amp;  '  (  )  *  +  ,  -  .  /  :  ;  <  =  >  ?  _

Some have syntactic meaning in resource bundles and terminate keywords: space, ‘{’ (starts array/table contents) and ‘:’ (separates type)

foo-bar-zip alt=short

A. (“phonebook” style) (this is what we get if we use the existing, internal lookup function that takes a path to the requested item, using it once with “foo/bar/zip%short” and if it fails using the function again with “foo/bar/zip”)

foo-bar-zip alt=short

foo-bar alt=short

foo alt=short





foo-bar-zip alt=short


foo-bar alt=short


foo alt=short


C. ( Standalone-script names )

foo-bar-zip alt=stand-alone

foo-bar alt=stand-alone

foo alt=stand-alone





      HK{"Hong Kong SAR China"}


         short{"Hong Kong"}


      HM{"Heard Island and McDonald Islands"}







      HK{"Hong Kong SAR China"}

      HK%short{"Hong Kong”}

      HM{"Heard Island and McDonald Islands"}








         default{"Hong Kong SAR China"}

         short{"Hong Kong"}


      HM{"Heard Island and McDonald Islands"}




  1. API proposals
  1. U_NO_DEFAULT_INCLUDE_UTF_HEADERS option for not including utf headers by default (Markus; designated API reviewer: Andy; ticket #8575)
  1. Should it be @internal? -> no - public - @draft, then @stable
  2. Approved - done
  1. MessagePattern as Nodes (Markus; designated API reviewer: Mark; ticket #8745)
  1. Ok in principle to add such API?
  2. Ok to add to package (right next to MessagePattern itself)?
  3. Approved the high level design - actual API proposal on next week’s agenda
  1. APIs that are tagged as both @internal and @stable (Markus) (related to ticket #8571)
  1. PluralRules::getKeywordOther() -> remove @internal - done
  2. U_ICUDATA_NAME -> remove @internal - done
  3. Note: @system APIs are supposed to also have a regular API tag. The User Guide says: “"System" APIs are external APIs that are intended only for special uses for system-level code, for example u_cleanup(). Normal users should not use them, although they are public and supported. System APIs have a "@system" label in addition to the lifecycle label that all external APIs have (see below).”
  1. Package up icu/source/data at release time? (Steven)
  1. Not a high runner case.
  2. Probably zip only (not dual format)
  3. Replaces the entire icu/source/data dir (including in/)
  4. Alternatives:
  1.  users can download from svn
  1. OK - Steven to create a ticket for this. #8748
  1. Java 7 support update(Yoshito)
  2. #8630 - category locale
  3. #8734 - ICU locale service crash with Java default locale ja_JP_JP / th_TH_TH
  4. Urgent request from Eclipse - Eclipse 3.7.1 (Sep, 2011) plan to support Java 7 officially
  5. Proposal: ICU4J 4.4 and later to include Java 7 support (additional APIs will be marked as @internal)
  6. Google may pick up 4.8.x with the fixes.
  7. Yoshito will come up with actual release plan in next week - probably end of Aug/begining of Sep.
  1. OpenJDK Locale Enhancement group meetings (Yoshito)
  1. Starting Aug 8 (Mon)
  2. monthly (every 4 weeks)
  1. IncomingBugs • BuildStatus


  1. Wrap up 4.8.1
  1. one more ticket -
  1. un-autoconf platform.h (Markus)
  1. It’s on the trunk
  2. Can we mark ticket #2845 “document multi-platform build/deploy issues” as fixed? -- yes, done
  3. FYI: Added comment about platform.h to ticket #422 “RFE: Mini-configure”
  4. Does it work on MinGW and Cygwin/gcc?
  5. Settled enough to ask users to try it out? -- after it works on MinGW & Cygwin/gcc
  1. 49m1 dates
  1. (cldr M1 is Sept 28)
  2. Sep 28 (Wed) ICU 49m1 release
  3. Sep 26 (Mon) Final check-in based on review feedback
  4. Sep 22 (Thu) Review (initial round) complete
  5. Sep 19 (Mon) Final check-in for features/bug fixes
  1. IncomingBugs • BuildStatus (green: added SolSparc)


  1. 4.8.1 status
  1. tagged and ready to go on C and J
  2. download page -
  3. 4.8.1 approved
  1. un-autoconf platform.h: ok to merge into trunk? (Markus, ticket #8452)
  1. Why?
  1. Cross-compiling from one fixed set of source files. Including 32-bit/64-bit versions of a platform, old/new versions of a platform, Mac/iPhone, … (See tickets #2845 and #422.)
  2. Compiling from one fixed set of header files, against an installed ICU. This is like cross-compiling when a platform allows 32-bit/64-bit builds (sizeof(wchar_t)), or for Darwin universal binaries (endianness).
  3. Fixed, known set of platform-identification macros. (Currently open-ended, set by configure, hard to find out the whole set.)
  4. Fixed, known set of platform-derived macros. (E.g., pwin32.h defines some macros that platform.h doesn’t.)
  5. Fixed set of #include nesting. (Currently different platform.h’s included from different locations; Windows has both a fixed pwin32.h and a generated platform.h.)
  6. Enable other build systems (e.g., cmake) with little or no ICU-specific stuff other than the list of libraries and source files.
  7. #including from the build-output directory is messy.
  8. We already switch on many more conditions & combinations than are configure’d in platform.h.
  1. Branch:
  2. Changes so far (up to HEAD)
  3. Diff old vs. new platform.h
  4. TODO: We have also been using autoconf for a subset of user-configurable build options that have little to do with platform type. Without autoconf’ed headers, we need to decide whether autoconf should just set CPPFLAGS or whether we simply tell our users to edit platform.h or uconfig.h or set CPPFLAGS themselves -- like we have been doing for Windows users and users of custom build systems already. (The latter is consistent with making ICU work equivalently regardless of build system.)
  1. agreed: move to uconfig.h
  2. document, either set CPPFLAGS or modify uconfig.h
  1. TODO: Configure U_DEBUG into CPPFLAGS or leave it up to custom CPPFLAGS?
  1. Only testable via predefined macros on Windows?
  2. Very little code seems to depend on it.
  3. agreed: move to uconfig.h, same as above
  1. TODO: Ask users to test on their platforms (this could just happen over time)
  1. srl: (testing in progress)  Tried but can’t—  the branch is currently broken. stubdata/ attempts to rebuild platform.h from
  1. agreed: ok to
  1. try to fix a couple more bugs
  2. merge into trunk
  3. document well
  1. Trac googler - created.  (srl)
  2. IncomingBugs


  1. 4.8.1 status
  1. CLDR 2.0.1 status (John) [data merged yesterday, there are more changes]
  2. BRS 4.8.1
  3. 4.8.1 milestone page
  4. 4.8.1 tickets not under review by owner
  5. 4.8.1 tickets under review by reviewer
  1. Why do we use XP_CPLUSPLUS? (Markus)
  1. Can we drop it and just use the standard __cplusplus?
  2. predated - get rid of it. -- done in branches/markus/platformh
  1. Multiple default locales (Yoshito)
  1. Java 7 - Locale.Category
  2. What is implication of DISPLAY vs FORMAT in ICU context?
  1. IncomingBugs


  1. 4.8.1 status
  1. CLDR 2.0.1 status (John)
  2. 4.8.1 tickets not under review by owner
  3. 4.8.1 tickets under review by reviewer
  4. BRS (TBD)
  5. Compiler warnings - Is resolving compiler warnings a goal
  1. ICU4J - Yoshito will fix them if they exist
  2. ICU4C - Steven will create a ticket for 4.8.1  DONE #8687
  1. Removing “weak” locales from ICU. (Mark)
  1. Longer term, not for the 4.8 release
  2. What to do with lower quality locales.
  3. What to do with “comprehensive/optional”; can reduce size by ~20%
  4. Need to consult with others.
  5. Add as options to data customizer? LDML2ICUConverter could emit coverage hints for customizer’s use.
  6. What to do with locales having deprecated codes
  1. i.e. sr_YU.xml, or <... type=”YU”...>
  2. No objection to 5 year rule. Will convey to CLDR.
  2. There are some false flags above
  1. aliases, default content locales
  2. No removal for 4.8.1
  3. Mark to look into this further for ICU49/CLDR21
  1. API Proposals
  1. UNISTR_EXPLICIT UnicodeString constructors (Markus; designated API reviewer: Steven; ticket #7877)
  2. Consensus: Twο macrоs
  1. UNISTR_FROM_CHAR_EXPLICIT UnicodeString(UChar ch);
  2. UNISTR_FROM_CHAR_EXPLICIT UnicodeString(UChar32 ch);
  3. UNISTR_FROM_STRING_EXPLICIT UnicodeString(const UChar *s);
  4. UNISTR_FROM_STRING_EXPLICIT UnicodeString(const char *s);
  5. Markus will send the detail to the ML
  1. IncomingBugs
  2. BuildStatus


  1. API Proposals
  1. IDNA CONTEXTO check (Markus; designated API reviewer: Mark; ticket #8615) - approved
  1. Add sentence to these constant docs that they are used in static worker and factory methods
  1. Normalizer2.getCombiningClass(c) (Markus; designated API reviewer: Mark; ticket #8606) - approved
  2. CharsetEncoderICU.getMaxBytesForString(j) (Michael; designated API reviewer: Markus; ticket #8515) - approved
  3. “possible ICU API: MessagePattern as Nodes” ok in principle for public package? - high level design accepted - Markus to come up with concrete API proposal.
  1. Workflow update (Steven)
  1. Latest proposal
  2. default owners? deferrable -
  2. Todo
  3. Enforce “revw is non-empty when changing states to Reviewing”
  1. Example:  - Reviewer set, but not in state reviewing - need to use “Request a review” radio button
  1. Update documentation - [ above doc, site processes, etc]
  2. Everyone, please review {40}:
  3. Everyone, check your reports ( assigned -> accepted, use ‘reviewing’ state instead of ‘revw=””’
  4. todo: consider reviewing as closed in milestone page.
  1. Review to: __________ ->  Drop-down box of all owners.
  2. Reviewer: reject review /  Reviewer: Close as …  ->  Clear ‘reviewer
  3. “request review” needs to be lowercase.
  1. 4.8.1 status
  1. 4.8.1 not inreview state
  1. J
  1. Eclipse 3.7 released
  2. will tag to maint-4-4 head
  3. plan to publish the version on July 1..
  1. IncomingBugs “and FYI”
  1. bug 8666 (no longer incoming) targetted to 4.8.1.  Regular Expression crash.  (Andy) 
  2. Report 41:  reviewer set, but not in reviewing state.
  1. BuildStatus (Steven)
  1. icu4c-docs (not internal API)
  2. no longer graphing individual tests
  3. maint-48 on a full stable of machines
  1. Incoming?? (Status:new; owner:empty/somebody)


  1. Require C++ namespace support (Markus)
  1. See email May 21 “ICU4C proposal: require namespace support” to icu-design & icu-support
  2. Additional benefit: C++ internal forward declarations of variables (not classes or functions) require anonymous namespace (see ucnv2022.cpp)
  3. Approved.
  1. Trac workflow
  1. Latest proposal (scroll to the bottom)
  2. functional owner
  1. 4.8.1 updates
  1. 4.8.1 bugs without reviewer
  2. 4.8.1 bugs waiting for review
  1. IncomingBugs
  2. BuildStatus
  3. Draft Component Owners


  1. Trac workflow
  1. New proposal at end here (Steven/Yoshito)
  2. Generally accepted- will discuss any ICU specific tweaks next week. Will bring this back to CLDR next week.
  1. 4.8.1 status
  1. release manager?
  1. ICU4C: Steven R. Loomis
  2. ICU4J: Yoshito Umaoka
  1. changing collation key due to bug in 4.8.1  - OK, only affects some cases. Yoshito
  2. IncomingBugs
  3. BuildStatus - green and clean.  4.8 maint has a few platforms, will add more.


  1. 4.8.1 status
  1. process - any ticket need to be done in 4.8.1 - use 4.8.1 as the milestone
  2. developer make changes in trunk
  3. later, release manager collect the list of changes, merge them to maint-4-8
  1. Who’s going to update version# scheme and when?
  1. Yoshito will file tickets - one for C, another for J
  2. 49.0.1 or 49.0.0 now? -> 49.0.1
  1. (Yoshito)
  1. Equivalent to Eclipse 3.7 release
  1. Proposal: Custom JavaDoc tag for example code
  1. Embedding coding example in API doc is error prone (because we do not check it is actually compiled) and not easy to format (we have to deal with comment/HTML syntax)
  2. @example name -> automatically generate link to a repository location
  3. Better linkage between API reference doc and example code
  4. Yoshito will come up with more concrete proposal - review in PMC
  1. IncomingBugs


  1. Revisit ICU 49/50 dates
  1. CLDR dates (
  1. 2.0.1: release in Jul 13 (tentative) Code/data slush Fri, Jul 1.
  2. v21 without Survey Tool cycle
  1. v21M1 = 2.0.1 - Jul 13
  2. v21M2 = Sep 28
  3. v21 slush = Nov 16
  4. v21 release = Dec 7
  1. v22 : Jun/Jul 2012 with Survey Tool cycle
  1. ICU 49 milestone dates (to pick up Unicode 6.1, depends on that schedule)
  1. 49 release  - March 21, 2012
  2. 49 rc - Feb 29
  3. 49 m2 - Dec 14
  4. 49 m1 - Sep 28
  1. ICU 4.8.1
  1. CLDR 2.0.1 Jul 13
  2. ICU 4.8.1 -> Jul 20
  1. API Proposals
  1. ubrk_refreshUText() & BreakIterator::refreshInputText() (Andy; designated API reviewer: Markus; ticket #8490) - approved (Markus did reply on the icu-design list)
  1. Removing “weak” locales from ICU. (Mark)
  1. Longer term, not for the 4.8 release
  2. What to do with lower quality locales.
  3. What to do with “comprehensive/optional”; can reduce size by ~20%
  4. Need to consult with others; Mark to make specific proposal.
  5. Just the standard packaging; people can use the config file to add back locales/data.
  1. Require C++ namespace support (Markus)
  1. Email “ICU4C proposal: require namespace support” to icu-design & icu-support
  2. Additional benefit: C++ internal forward declarations of variables (not classes or functions) require anonymous namespace (see ucnv2022.cpp)
  3. Wait for opinion from Steven
  1. ICU4C modularization: test & reduce dependencies (Markus)
  1. See doc ICU4C modularization issues with ticket, changes, TODOs
  2. See documented & tested dependencies (on branch)
  3. Would like to merge into trunk on Thursday
  1. Finishing ICU 4.8 (Peter):
  1. One ticket still in review - #8581, review=doug
  2. Then we can close milestone
  1. IncomingBugs


  1. Status 4.8
  1. 4.8 BRS
  2. Tickets still marked for 4.8
  3. trunk is open
  1. Version number discussion before starting next major development
  1. proposals/issues/current restrictions
  2. Before the meeting, please list at least Current Issues so we know why we change, if we decide to
  3. Straw poll winner: Merge major+minor fields into a double-digit first-field value.
  4. The next release will be advertised as “49” and it will initially have a UVersionInfo of
  5. Steven to update Trac to fix milestone name and whatever else is needed - done
  1. Problems with udraft.h/U_HIDE_DRAFT_API & similar (Markus)
  2. Known Issue on the 4.8 download page
  1. See icu-core thread “problems with @draft vs. U_DRAFT”
  2. Do we need U_DRAFT&siblings or should we revert these (except U_DEPRECATED) to U_CAPI?
  3. Can & should we tag @deprecated C++ API with U_ATTRIBUTE_DEPRECATED?
  4. Use the preprocessor at each API (add #ifndef U_HIDE_DRAFT_API around @draft API definitions where possible)
    rather than a tool (hard-to-maintain & buggy? - yes) to generate udraft.h & siblings?
  1. Yes, use #ifndef and drop the special header files; delete them
  2. Also helps with library users who add APIs
  1. Fix in 4.8.1? - no
  2. Hide #define/typedef/enum/const-value?
  3. What about virtual C++ methods? (Probably need them for compatible vtable, but could probably rename them; see what that does to doxygen.)
  1. ICU4C modularization issues (Markus)
  1. I would like to find out & test inter-dependencies inside the common library.
  2. Last time we understood the ICU library structure was probably when George created the ICU 2.4 Library Dependency Chart
  3. Help modularization, building a subset of ICU, simple small statically-linked libraries
  4. A test could also find global new & delete and problems with “C++ key methods”
  5. Are there tools?
  6. I did a bit of trial-and-error of splitting the common library into mini-libraries; very tedious.
  7. nm -C <some.o>  plus some of Python?
  8. Ok to make code changes to simplify the intra-library dependencies?
  9. TODO(Markus), review(srl)
  1. CLDR Schedule (tentative)
  1. CLDR 2.1 (rename to version 21?)
  1. Finish before the end of the year.
  2. Sync with ICU milestone before RC for testing.
  3. Not have a translation cycle
  4. Goal is to address tooling - make ST, etc. usable.
  1. Are member contributions/fixes ok?
  1. ICU 49 could use CLDR 2.1.1 maintenance release (if one is necessary)
  1. CLDR 2.2
  1. 2012 May/June or so? with translation cycle.
  2. Sync with ICU milestone (before RC) for testing.
  1. IncomingBugs


  1. Status 4.8
  1. Release Candidate done & announced yesterday
  2. 4.8 BRS - same spreadsheet for RC & GA, separate status & date columns
  4. Tickets still marked for 4.8
  5. What is still ok to change?
  1. Showstopper bug fixes - no known showstopper bugs right now
  2. docmain.h? - ok
  3. man pages? - ok
  4. minor docs changes in public headers/JavaDoc? - ok
  1. Things need to be done for releasing 4.8 on May 25
  1. Last svn commits by EOD Sunday
  2. Test & tag Monday
  1. 64-bit ICU4C for Windows 64-bit client versions (Win7, Win8 beta this fall)
  1. In principle Win 64-bit client should be supported (just as is Win 64-bit server 2008)
  2. Download page - IBM lab does not currently test on Win 64-bit client, Apple could
  3. How binaries are built (VS version, cygwin or not) - inconsistencies in descriptions?
  1. Artyom:  Streaming API
  1. StringSearch & BreakIterator need random access
  2. Normalizer can work in chunks, has API for detecting boundaries
  3. Markus is going to reply to the message - ask him to file new tickets for requesting them (although it would be doable, no plan for this now) - sent reply 2011-may-25
  1. #8563 - Collator rule builder fixed in 4.8, discuss what to do for 4.6 and prior (Steven) - could be post 4.8 release
  1. Markus will add this as “known issue” in the 4.6 download page. - done
  1. IncomingBugs


  1. Status 4.8
  1. CLDR
  1. Final CLDR 2.0 candidate data - very few failures
  2. This afternoon - integrated into ICU
  1. Build Status
  2. Review Contest * Reviews by Age
  3. BRS
  4. Tickets still marked for 4.8RC or 4.8
  5. Match @draft & U_DRAFT etc.?
  1. for now, only manual inspection - probably BRS item
  1. Platform issues: ( C ): (srl)
  1. giving up on MSYS/Mingw for 4.8, as known issue/patch:
  2. Z: one asciism:  -  committed r30096
  3. Z/AIX: ERROR :  Keys are not equivalent (5x, bn_IN) in /tscoll/capitst/TestOpenVsOpenRules - won’t hold RC for it
  1. Timebombs:
  1. Need tickets filed, names named for fixing these in 4.8.1 5.0 else removing tests
  1. C:
  1. (multiple )
  1. J:
  1. ( Markus ) SearchTest/TestSupplementary -- Peter has a bug ticket, and Markus has ideas to rewrite collation because the code is quite messy
  2.  ( Claire )
  1. Japanese Line Break Tailoring, 8539 ( Peter, Andy)
  1. “root” line breaking compatible with UAX #14, or with best behavior for Japanese?
  2. new CLDR Japanese rules implement CSS “normal” line breaking
  3. CLDR discussion about Japanese rules, some controversy
  4. if “root” differs from UAX #29, then we cannot test it against the Unicode conformance test files
  5. too late to make further changes in 4.8.0
  6. document it for 4.8, then think about 4.8.1 or 5.0
  1. IUC 35 abstracts accepted/rejected? -- all accepted
  2. Merging #8415, #8482 and #8519 to ICU4C maint-4.4 / 4.6 -approved
  3. CLDR 2.0.1 & ICU .. schedules
  1. CLDR 2.0.1 - end of June earliest
  1. Removing “weak” locales from ICU.
  1. Longer term, not this release
  2. What to do with lower quality locales.
  3. What to do with “comprehensive/optional”; can reduce size by ~20%
  1. CLDR Data measurements - 47%  (
  2. IncomingBugs


  1. ICU 4.8
  1. Status
  1. CLDR data integration
  1. first data integration worked well - 1st pass 443 errors
  2. close to having the first cut - C: today or tomorrow
  3. 2nd iteration - starting Tuesday next week collation/supplemental data/rbnf...
  4. 4.8RC to include 2nd iteration data (may slip 4.8RC to Thursday)
  1. Major (and minor) work items - completed? (besides CLDR/BRS/release tasks) - Yes
  1. alphabetic index fixes for Chinese
  1. Any known ship stoppers? No
  1. Tickets with commits: Set reviewer, 4.8RC
  2. “4.8RC” tickets without commits: Most should become UNSCH or maybe 5.0
  3. “4.8” that are fixed or have reviewer: Change to 4.8RC
  4. Review tickets by EOD Thursday
  5. Many compiler warnings: Please try to fix warnings by Monday may09. Ignore deprecation warnings. Need new ticket. (Or try to find still-open ticket which is the “culprit”.)
  6. Create BRS spreadsheet (started) - done:
  7. API status promotion (@draft -> @stable) for this time? (BRS) - no promotion this time because we had a short release since 4.6 (and it’s time-consuming)
  1. ICU 4.8.1
  1. Already planning CLDR 2.0.1, no schedule yet - perhaps late July?
  2. Create 4.8.1 milestone in Trac - TODO(srl) done
  1. ICU4C Collators: Thread safe? (Steven)
  1. const method - intended to be thread safe
  2. if not, it’s a bug
  3. Steven to amend his statement
  1. Include What You Use” (Markus) (Craig Silverstein’s paper from the 2010 LLVM Developer’s meeting [PDF][Google Open Source Blog post])
  1. Phase 1: Add #includes or forward declarations for things that are used.
  1. Do not rely on indirect #includes because that makes code fragile.
  1. Phase 2: Remove #includes (maybe replace with forward declarations) for things that are not used.
  1. Can reduce compile times a lot, both of ICU itself and of application code.
  2. Makes upstream code more robust (eventually) because they can’t rely on accidental, indirect #includes.
  1. Helps dependency analysis and modularization.
  2. Not tried on ICU yet.
  3. Ok in principle to make changes in ICU? - yes
  1. Steven: Qualms about removing #includes from public headers
  2. Mark: Put removals under a compile flag
  3. Andy: Depends on how many #includes we would remove
  4. Yoshito: Remove #includes without a flag; errors & fixes are clear
  1. Technology Preview tagging (Yoshito)
  1. @internal technology preview - the current JavaDoc taglet ignore all following part - so the term “technology preview” etc, will be completely lost.
  2. How to express the nuance?
  3. Yoshito to file a bug - for now, keep internal - preserve comments.
  1. IncomingBugs
  2. Build Status  (good shape, also passes on Z -srl)


  1. ICU 4.8
  1. Finish up work & assign reviewers by next Tuesday may03! Review tickets.
  2. CLDR 2.0: Some 25 tickets left to be done, integration might take longer than may06
  3. Do we really need separate milestones for RC vs. final?
  1. Use only one download page, update from RC to final
  2. Keep two Trac milestones this time
  1. API proposal deadline? Friday apr29 noon Pacific Time, post objections by end of Friday
  1. API Proposals
  1. ICU4J MessageFormat: make @internal methods public, getArgumentNames() & getFormatByArgumentName(name) (Markus; designated API reviewer: Doug; ticket #8095) - approved - done
  2. ICU4C C++ → C enums (Claire; designated API reviewer: Markus) - approved - done
  1. UNumberFormatStyles (ticket #7386)
  1. merge with existing UNumberFormatStyle(singular), U_UNSUPPORTED_ERROR in either implementation for new constants - done
  1. UTimeUnitFormatStyle (ticket #7387) - done
  1. ICU4J rename @draft SpoofChecker.check() to failsChecks (Andy; designated API reviewer: Mark; ticket #8368) - approved
  2. ICU4J TimeZoneNames/TimeZoneFormat (Yoshito; designated API reviewer: Mark; ticket#8342) - approved as techpreview not draft
  1. ICU4C interim implementation/no public API proposal for 4.8 / TimeZone::getCanonicalID @internal
  2. Could we keep all of these (incl. Java) @internal in 4.8?
  1. DateFormatSymbols.getRelativeFieldLabel(int dateField, int relative) & setRelativeFieldLabel(int dateField, int relative, String value) (Mark; designated API reviewer: Markus; ticket #8458) - approved API / 5.0
  2. ICU4J Islamic Calendar "mode" UmAlqura (Waleed; designated API reviewer: Yoshito; ticket#8449) - return - need more generic API for "mode" switching  - post 4.8
  3. C API udateintervalformat.h (Peter; designated API reviewer: Markus; ticket #8470) - approved
  4. C++ PluralRules change PluralRules::NO_UNIQUE_VALUE into #define UPLRULES_NO_UNIQUE_VALUE (Markus; designated API reviewer: Doug; ticket #8499) - approved - done
  5. (pre-proposal) adding U_  8154 - srl - approval on e-mai
  1. Ticket/Milestone management for maintenance releases (Steven/Yoshito)
  1. Permanent milestone - "maintenance"
  2. A ticket per stream - Ticket#XXXX for maintenance X.X, use "maintenance" as milestone
  3. All bug fixes will be merged into maint-X-X stream through the ticket above. Update ticket to include the original ticket# of the bug fix
  4. Once we agree to release the version, change the description of the maintenance X.X ticket to actual version, then create a new ticket maintenance X.X
  1. Convert this Meeting Minutes doc to newer Google Docs editor? (Mark/Markus) - done
  1. Loses some formatting in the conversion, but is better for interactive collaboration.
  1. Approval of new locale list for ICU 4.8 ( ref. e-mail to ICU core list ) (John)
  2. IncomingBugs


  1. ICU 4.8 schedule update
  1. CLDR status
  1. # of dispute went down to 0 now!
  2. very few errors
  3. still need to work on inconsistency issues - done by Friday
  4. ST -> xml (svn) by the end of this week
  5. Start working on ICU integration next week
  1. Pending API proposals..
  1. API Proposals
  1. ICU4J TimeZoneNames/TimeZoneFormat - not today, but please take a look closely
  1. ICU4C - we may reduce the scope - TimeZoneNames at minimum to boost the performance of DateFormatSymbols::getZoneStrings
  1. upluralrules.h (Peter) - ticket #8467, designated reviewer Doug - approved
  1. changes proposed by Markus - use upluralrules.h and uplrules_; single function taking double (none for integer); add the corresponding LocalUPluralRulesPointer etc.
  1. Add RelativeDateFormat:: getDateFormatSymbols (Peter) - ticket #8237, designated reviewer Steven - approved
  1. This is internal, but affects behavior of public C function udat_getSymbols etc.
  2. Peter to file ticket for 5.0 to hoist getDateFormatSymbols to DateFormat
  1. Add ucal_getFieldDifference (Peter) - ticket #8397, designated reviewer Yoshito - approved
  2. Add methods to DateIntervalFormat for setting/getting TimeZone (Peter) - ticket #8466, designated reviewer Markus - approved
  3. RBBI getInstanceFromCompiledRules made public (andy) - approved
  4. CLDR items:
  1. NumberFormat.getAbbreviatedInstance - 6 line method, see - approved
  2. DateFormat.getRelativeFieldLabel - simple access method -in DateFormatSymbols, with setter - re-propose.
  3. LocaleData: ES_PUNCTUATION - add constant. Approved
  4. Add constants to TimeUnit - add constants - on hold, post 4.8.
  5. ListFormatter - bit more complicated, but not much. Approved, with fixes to javadoc.
  1. Output<T> in ICU4J (ticket#8475 / Mark / reviewer: Yoshito) - tentatively approve - Mark to check a Java expert.
  1. IncomingBugs
  2. warnings on GCC 4.6 prerelease (srl)


  1. ICU 4.8 schedule update
  1. Markus - release manager of 4.8RC
  2. Schedule - CLDR
  1. Vetting closed on April 17
  2. it's really challenging to resolve all issues in 3 weeks
  3. CLDR data might be done by May 6
  4. Start integrating CLDR data around April 25
  1. PMC on May 4 - official schedule change if necessary.
  1. API Proposals
  1. MessageFormat etc. (Markus; designated API reviewer: Doug; ticket #8319)
  1. C++ MessagePattern
  1. Incl. clearPatternAndSetApostropheMode(mode) in both C++ & Java
  1. C++ MessageFormat applyPattern(pattern, UMessagePatternApostropheMode, parseError, status) & getApostropheMode()
  2. C++ ChoiceFormat: deprecate getLimits(), getClosures(), getFormats(); set count=0/return NULL
  3. Approved for all above
  1. CLDR items  (  ) - dates are later, but in case there are comments now.
  1. NumberFormat.getAbbreviatedInstance - 6 line method, see
  2. DateFormat.getRelativeFieldLabel - simple access method
  3. LocaleData: ES_PUNCTUATION - add constant.
  1. Peter: For C, shouldn't we instead be using ULOCDATA_ES_PUNCTUATION from ULocaleDataExemplarSetType enum in ulocdata.h?
  1. Add constants to TimeUnit - add constants
  2. ListFormatter - bit more complicated, but not much.
  3. Defer the decision to next week.
  4. Should have LDML2ICU updated by EOD Monday, April 25 to get these things in 4.8.
  5. Window of 9-10 days for LDML2ICUConverter
  1. Number Parsing Cleanup ( Peter / John ) - approved
  1. ICU4C Mutex Simplification (Andy) see icu-design email 2011-mar-30
  1. "Support of user supplied mutex functions would still be a little messy.   CAN WE REMOVE SUPPORT FOR USER MUTEX FUNCTIONS?"
  1. Dominic So (IBM DB2 LUW Globalization) replied "I would have to say no because our product depends on being able to override the ICU mutex functions."
  1. Agreed - Andy to continue to work on this.
  1. Time Zone display name issues and preliminary API proposal for the new APIs
  1. Discuss about the details on this Friday - (ICU project optional time slot)
  2. Is it OK to ignore the names set by DateFormatSymbols.setZoneStrings() in SimpleDateFormat?
  3. TimeZone.getCanonicalID() (instance method) make sense?
  1. New PMC member [Mark]
  1. Current Members:
  2. Mark to write message to Tex thanking him for his years of service.
  3. Markus to edit PMC page (done)
  4. Unanimous approval of Peter Edberg as PMC member
  1. Currency fixes in this release? "Move unclear currency symbols up from root"
  2. spreadsheet at, with a first (rough) cut at what this would look like.
  1. IncomingBugs


  1. API Proposals
  1. Collator Freezable (Java) (Stuart; designated API reviewer: Markus; ticket #8243) - approved
  2. ucnv_isFixedWidth (Java/C) (Michael Ow; designated API reviewer: Markus; ticket #8006) - approved
  3. PluralRules.getAllKeywordValues() (Java/C++) (Doug; designated API reviewer: Mark; ticket #8432) - approved
  4. Remove regex PatternIsUTextFlag (Andy; designated API reviewer: Mark; ticket #8444) - tentatively approved - final approval upon Peter's confirmation by tomorrow.
  1. How to resolve Number Parsing Issues (Peter/John)
  1. Apple ICU4C branch code with lenient number & date parsing, has been kept mostly up to date with trunk
  2. IBM's requirement - consistency between C and J - strict parse matching ICU4J strict parse is needed.
  3. OK for Apple to merge branch code?  Are the changes in behavior that would result tolerable? Include lenient date parsing changes?
  4. If Apple's code is merged following additional inconsistencies in behavior:
  1. Leading zeroes - should be allowed in both strict and lenient modes -  J needs to change
  2. Leading grouping separator - should not be allowed in strict mode - C needs to change
  3. Surrogates - C parses them, J doesn't - J needs to change
  1. Promote isLenient/setLenient from RuleBasedNumberFormatter to NumberFormat. Already have isLenient/setLenient in DateFormat.
  2. Yoshito e-mail; separate object for truly lenient parse
  3. Peter to send icu-design proposal within a day or two
  1. ICU Versions
  1. proposals/issues/current restrictions
  2. Please list at least Current Issues so we know why we change, if we decide to
  3. Postpone discussion to next week due to time pressures?
  4. Peter/Yoshito to add problem description (current issues) - revisit next week
  1. More Unicode talks (Mark)
  2. Time zone name parsing - do we really need to look up other type of names? (Yoshito)
  1. Choices:
  1. IncomingBugs
  2. We will have to slip the date. Probably a week, maybe 2.

2011/03/30 (Wed)

  1. Major number different for each release (5.0, 6.0, 7.0,...)? Need Markus
  1. Confusion: development vs release
  2. Confusion: expect .0 to mean something
  3. Disadvantage of current system:
  1. People expect .0 to means something special
  2. Using up more version fields than are significant
  1. Proposal: keep current system, explain on the download page in 5.0 section
  2. Proposal: jump to 50, 52, 54, ... (icuuc52.dll)
  3. Proposal: jump to 6.0, 8.0, 10.0, ... (icuuc60.dll or icuuc06.dll)
  4. Proposal: special # for final build, (icuuc50.dll) ( where 50.0.0.{0..254} = development/prerelease )
  5. Proposal: use date: 12 or 12.4 (icuuc1204.dll)
  6. Proposal: meaningless name
  1. ICU II
  2. ICU Pro
  3. ICU Classic
  4. ICU 2012
  1. Affects naming of
  1. data files (icudt48l.dat ) ,
  2. libraries ( icuuc48.dll ),
  3. symbol renaming ( ucnv_open_icu48 ) ,
  4. namespaces ( icu48:: )
  1. #7588 - embed svn version in output (zero)
  1. API Proposals
  1. Java MessagePattern (Markus; designated API reviewer: Doug; ticket #8319) - approved
  2. Java MessageFormat applyPattern(ApostropheMode, String) & getApostropheMode() (Markus; designated API reviewer: Doug; ticket #8319) - approved (changing the order of params; done: r29712)
  3. ucurr_isAvailable() and U_DATE_MAX/U_DATE_MIN (Dragan; designated API reviewer: Steven;   ticket#8093) - approved
  1. Trac - status management (continued from last week)
  1. Use of Accept
  2. Undecided yet. Once we do decide, document on site in, nope, in
  3. post 4.8 - change workflow
  1. 5.0(?) schedule
  1. Unicode 6.1 is planned for release in mid February, 2012
  2. IBM April/May 2012
  3. Google less critical if a milestone is stable
  4. ICU team's proposal - March/April?, can CLDR wrap up the next version by the end of 2011? will bring this proposal to CLDR TC.
  1. BuildStatus
  2. IncomingBugs

2011/03/23 (Wed)

  1. trunk stability
  1. watch the build status - (can view via RSS)
  2. (periodic) email to icu-core?
  3. Steven will take a look at automated "build breakage" notification
  4. Send a note to icu-core: "i'm working on it.." and ETA
  1. API Proposals
  1. Java MessagePattern (Markus; designated API reviewer: Doug; ticket #8319) - deferred to next week.
  1. 4.8RC release management
  1. Google - release manager: Markus
  2. BRS task docs under this link -
  1. Trac - status category
  2. Do we need a category - "design" - with full ticket life cycle (open - submitting the design doc - review/approval - close)?
  3. Sematics of "Accept"?
  4. Proposal: 
  1. 'accept' means that you intend to work on it.
  2. 'new' just means that you will work on it if you have time, and there is a !=0 probability that you will do it.
  3. If neither of these are true make UNSCH, new.
  1. Subticket plugin (can someone investigate) (Steven)
  1. 5.0(?) schedule
  1. Google is flexible - because google pick up milestones.
  2. Yahoo does not have any preferences at this moment.
  3. Wait for apple's input - next week
  1. Process for merging a fix to old code streams
  1. Any extra approval process? - notify icu-core
  2. Which ticket to use? - new ticket for back port
  3. How to track which one was merged to what code stream? - milestone:4.4.x stays open forever.. put merged fixes in the milestone doc.
  1. April 8 Friday session - locale identifier issues.
  1. legacy syntax vs. BCP47
  2. definition of und/root/empty
  3. canonicalization
  1. Major different for each release? Need Markus
  2. IUC abstracts - by Friday
  1. Plural and Gender in messages: Mark/Markus
  2. ICU Workshop: Steven
  3. New in ICU: Stuart, Markus, Peter Edberg?
  4. Practical Impact of JDK7: Yoshito, Doug
  5. Unicode Regular Expression changes: Lightning talk - Mark/Andy
  6. New in CLDR: Panel Discussion - Steven
  1. BuildStatus
  2. IncomingBugs

2011/03/18 (Fri) - no Friday meeting

2011/03/16 (Wed)

  1. ICU 4.6.1 status
  1. Open bugs (need review)
  1. jungshik #8290
  2. srl #8286
  1. ICU 4.8M1 status
  1. tagged - milestone-4-7-1 / cldr: icu471milestone
  2. milestone:4.7.1 was closed. All remaining 4.7.1 tickets are moved to 4.8RC
  4. Please keep 4.8RC list more practical (especially for Mark)
  1. 4.8RC schedule
  1. see the top of this page
  1. API Proposals
  1. Make two StringPiece::set() public (Andy; designated API reviewer: Doug; ticket #8405) - approved
  1. 5.0 high level schedule
  1. IBM's preference is April/May 2012
  2. will discuss about this in the next PMC call
  1. Close out old milestones: eclipse-3.6 ? (actually not done - what is it?)
  1. eclipse-3.6, unitl Eclipse 3.7 is released
  2. - April, not yet shipped
  1. BuildStatus
  2. IncomingBugs


  1. ICU 4.6.1 status
  1. CLDR 1.9.1 data will be ready today - peter will integrate data into ICU tonight.
  2. C/J fixes were already merged
  3. readme / download page etc Thu/Fri
  1. ICU 4.8M1 status
  1. Reviews (srl is the big winner)
  2. John to sync CLDR trunk after merging 1.9.1 changes - re-generate ICU data from CLDR trunk
  3. John will update the status by the end of this week
  4. no Post 4.8M1 changes until next Wed - March 16 / update the status next Wed.
  1. Post 4.8M1 procedure proposal -
  1. Create a new milestone:4.8RC, apart from 4.8
  2. Move items which has to be done before 4.8RC to milestone:4.8RC
  3. Version# will be bumped up to 4.8 after 4.7.1, no 4.7.2.
  1. API Proposals
  1. Territory Containment - (John; designated API reviewer: Yoshito; ticket #8347) - tentatively accepted - john to post final one to the design list
  1. Immutable TimeZone(Yoshito)
  1. Immutable wrapper for traditional ICU service objects
  2. Mutable wrapper for above - setXXX create a modifiable clone
  3. - change set
  4. Other possible applications - DateFormatSymbols/DecimalFormatSymbols
  1. getAvailableXXX pattern in ICU4J - Set<T> or SortedSet<T>? (Yoshito)
  1. General policy - We should say Set<T>, typically backed by HashSet<T>
  2. Unmodifiable, never null.
  3. Unless string use case..
  1. Extra time slot for PMC
  1. We often run out of time
  2. Allocate an extra time slot on Friday (for example) for some items, especially design related discussions
  3. Optional, interested parties only
  4. Friday 10-11am PT
  1. Revisit - ICU Version numbering scheme
  2. BuildStatus
  3. IncomingBugs


  1. ICU 4.6.1 status
  1. milestone:4.6.1
  2. Schedule
  3. Pinyin:
  4. ? - approved
  5. ? - approved
  6. out of memory check from new Hashtable ? (already in trunk - Steven) added to milestone page - approved
  1. ICU 4.8 M1
  1. transliteration/collation data in?? - yes - merge necessary changes done 1.9.1 (but do not overwrite other CLDR 2.0 selective data roll-ins)
  2. Peter - one more fix by today  DONE (r = markus)
  3. Markus - StringTrie / header file to public APIs by tomorrow (3/3)
  4. Check: Tickets with Code and No Reviewer (by user) (Any errors, add to MisTicketted )
  5. Michael/Yoshito - will send BRS worksheet to icu-core
  1. API Proposals
  1. Territory Containment - (John; designated API reviewer: Yoshito; ticket #8347)
  1. Mark will provide "enum" idea details in the John's design doc - revisit next week
  1. AlphabeticIndex - (Andy; designated API reviewer: Markus; ticket #7530) - approved
  2. ID for unknown time zone (Yoshito; designated API reviewer: Markus; ticket #8346) - approved
  3. API for getting canonical time zone IDs (Yoshito; designated API reviewer: Mark; ticket #8278) - approved
  1. Backing out #7654 (Peter) - change in ICU4C 4.6 so scientific number parsing stopped being case-insensitive about exponent ('E'). This broke our clients. I don't think we should make parsing stricter just for compatibility with ICU4J if it can break clients.
  1. Agreed: Peter to file/fix bug to make both ICU4J and ICU4C case-insensitive for parsing the exponent char: #8407
  2. Peter to file a separate ticket about investigating case insensitivity for parsing other types of symbols: #8408
  1. MessageFormat (Markus) (see bottom two items of MessageFormat questions & decisions)
  1. Keep parsing of stand-alone Choice/Plural/SelectFormat simple? That is, do not enforce full sub-MessageFormat parsing?
  1. See email to icu-design feb25: "messages" in ChoiceFormat, PluralFormat, SelectFormat
  2. Mark/Consensus: Prefer strict sub-MessageFormat pattern parsing, re-propose to icu-design list (done)
  1. MF.formatToCharacterIterator(): write MessageFormat.Field.PLURAL_NUMBER or similar??
  1. See email to icu-design today, "ICU4J API: plural vs. formatToCharacterIterator()"
  2. Consensus: Do not write a special attribute for the # plural number (done)
  1. New ICU committer @ IBM - Dragan Besevic - dbesevic  (Steven)
  2. Please confirm receipt of paperwork for new Google ICU committer Mohamed Eldawy (Markus) - Steven to follow up
  3. Immutable TimeZone(Yoshito) - next week
  4. Plural data - do we want to raise these questions with CLDR? (Doug)
  1. Two rule sets don't ever generate 'other', makes getSamples behave oddly
  2. Hebrew plural rule set doesn't report dual forms, but some Hebrew words (time phrases in particular) do have dual forms
  3. Mark:
  1. pl is not supposed to be empty, according to CLDR. See the examples for 'other' in the following.
  3. Is there an error in the calculations?
  1. Question about company usage of ICU4C and changes between major releases. Suggestions for backward compatibility (Jay)
  1. (userguide) - has historically been a non-goal for C++. Object size, vtable.
  2. Major+minor: Version #s (but, version # discussion is to be revisited)
  1. BuildStatus
  2. IncomingBugs
  3. Delegated decision as to whether add to Yoshito and Jungshik


  1. ICU 4.6.1 status
  1. CLDR data not ready
  2. 2 bugs still to fix (besides CLDR data integration & rolling fixes into branch)
  3. Possible bugs (srl: from IBM users)
  1. out of memory check from new Hashtable
  2. trap in usearch_search
  3. cygwin
  1. Delay until next week (change date on ICU home page) -> delay until March 11
  1. API Proposals
  1. Immutable TimeZone (Yoshito)
  1. 2 not so useful (could be harmful) methods - setID/setRawOffset
  2. setRawOffset is pure virtual method (C) / abstract method (J) - cannot simply make TimeZone class immutable
  3. Idea:
  1. ICU4J
  1. extends BasicTimeZone. This is a thin wrapper of a BasicTimeZone. setters throw UnsupportedOperationException. Have a method getBasicTimeZone() to return safe clone of the BasicTimeZone.
  2. extends BasicTimeZone, yet another wrapper of a BasicTimeZone. The constructor takes ImmutableTimeZone. When the setter is called first time, it calls ImmutableTimeZone#getBasicTimeZone() to create mutable copy and replace the internal BasicTimeZone reference with the mutable copy.
  3. TimeZone.getTimeZone(String) gets a ImmutableTimeZone from a cache, then wrap it by ICUTimeZone. So caller can still use setters.
  4. Calendar constructor/factory to use ImmutableTimeZone by default. When Calendar#getTimeZone() is called, it wraps the ImmutableTimeZone by ICUTimeZone (same as TimeZone.getTimeZone(String)).
  5. @internal API - public static TimeZone getTimeZoneInternal(String) to return an ImmutableTimeZone directly, without wrapping it by ICUTimeZone. This is ugly, but desired in SimpleDateFormat implementation (in package)
  6. Less heap footprint for common usage. For example -

            Date d = new Date();
            for (int i = 0; i < 100000; i++) {
                DateFormat dfmt = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
                String s = dfmt.format(d);

    Above code creates only one ImmutableTimeZone (wrapping a OlsonTimeZone) vs 100000 copies of OlsonTimeZone with the current implementation.
  7. Not much visible performance gain (in term of elapsed time), but it could be changed depending on max heap size.
  1. ICU4C
  1. Can implement the similar code. But need to track reference count of each ImmutableTimeZone instance if we want them GCed.
  2. setRawOffset in C OlsonTimeZone is already NOOP.
  3. (Mark) Since the number is fixed, we could just have a growing cache with no GC.
  1. ICU Version numbering scheme (Yoshito)
  1. Not well understood by new comers; uses 3 fields when 2 would be enough.
  2. 4.8 -> 5.0 look like really major change comparing to 4.6 -> 4.8.
  3. Options: 
  1. 4.10, 4.12, ... (4.11 is under development for 4.12, etc)
  2. 5.0, 6.0, 7.0... (5.9 is under development for 6.0)
  1. Different from many other projects.
  2. (note, this was last discussed 2010/04/07, agreement then: "we do not want to change the current scheme")
  1. BuildStatus
  2. IncomingBugs


  1. API Proposals
  1. Charset enhancement (Michael; designated API reviewer: Markus; ticket #8006) - tentatively approved, michael to post the latest update reflecting the feedbacks - Mark/Markus will review
  2. MessageFormat questions & decisions; mark decisions on the design page (Markus; designated API reviewer: Doug; ticket #8319)
  1. TimeZone getRegion() (Yoshito: designated API reviewer: Steven; ticket #8279) - approved
  2. TimeZone createEnumeration/getAvailableIDs returning canonical zone IDs only (Yoshito; designated API reviewer: Mark; ticket #8278) - update the latest - tentatively approved
  1. Mark's feedback - change boolean canonicalOnly to enum
  2. Markus's feedback - change the C API name to createAvailableIDs
  1. ICU4J TimeZone#getGMT() (Yoshito; designated API reviewer: John; ticket #8339) - agreed, but want to return immutable instance / discuss about this in the next PMC
  2. TimeZone createSystemTimeZone / getSystemTimeZone (Yoshito; designated API reviewer: Markus; ticket #8300)
  1. Resolve design of PluralRules.getUniqueKeywordValue(), see icu-design "proposal: add getUniqueKeywordValue API to PluralRules" starting 2010-nov-19
  1. Mark prefers not throwing exception for not-in-locale keyword
  2. Doug was wrong about other PluralRules methods taking a keyword throwing an exception, so retracts concern about this. 
  1. Zone ID - "Etc/Unknown" (Yoshito)
  1. Should we return "Etc/Unknown" as the fallback in createTimeZone(C)/getTimeZone(J)? - currently "GMT", but "Etc/Unknown" is designed for this purpose in CLDR (#8346)
  2. Should we include "Etc/Unknown" in createEnumeration(C)/getAvailableIDs(J)? Currently yes, but I think it should be excluded (#8349)
  3. Is "Etc/Unknown" a canonical ID? Currently no, but probably it should be treated as a canonical ID (#8349)
  4. Is "Etc/Unknown" a system ID? Currently no, and probably continue to no (#8349)
  5. Agreed on above - Yoshito will sent a confirmation about possible breakage with 1 above to icu-design
  1. Freezable serialization (Yoshito)
  1. transient boolean frozen;
  2. document (yoshito to file a ticket)
  1. 4.6 status
  1. milestone:4.6.1
  1. BuildStatus
  2. IncomingBugs


  1. API Proposals
  1. PluralRules.getSamples() (Mark; designated API reviewer: Markus; ticket: #8317) - accepted
  2. ubidi_setContext() (Steven for Mati; designated API reviewer: Markus; ticket #3660) - [the latest version of the design after handling Markus Scherer's comments from 3Feb2011] - accepted
  3. Collation reordering API (Stuart; designated API reviewer: Markus; ticket #8295) -accepted
  4. Charset enhancement (Michael; designated API reviewer: Markus; ticket #8006) -defer
  1. Resolve design of PluralRules.getUniqueKeywordValue(), see icu-design "proposal: add getUniqueKeywordValue API to PluralRules" starting 2010-nov-19 -defer
  2. DecimalFormat -0 revisited: need option for "-0.0" behavior? #8302 (unsch)
  1. Google: We have a user request to add an option to get the more-mathematical "negative zero" output. (filed #8333)
  2. IBM: did not send out a query yet, sorry. (Steven)
  1. ICU4J 4.8 release files (Andy and Yoshito)
  1. icu4j-charsets-4_8.jar -> icu4j-charset-4_8.jar? - agreed - will change to -charset- (singular)
  2. include componentized jar files (icu4j-core.jar / icu4j-collate.jar ...) along with all-in-one jar (icu4j.jar)? - keep them internal for now.
  1. Khmer dictionary break iterator
  1. May collaborate with Nathan Wells -
  2. Make sure that the word list licensing is clear
  3. Srl to contact about contribution process
  1. MessagePattern: feedback requested (Markus & Mohamed) (background:
  1. See icu-design email 2011-feb-07 "ICU4J API *pre*-proposal: MessagePattern class"
  1. sizeof(UnicodeString) on 64-bit machines: now back to 40 bytes; leave it or make 32 or 48? (Markus)
  1. MacOSX: sizeof(UnicodeString) was 48 on x86_64, 36 on i386 -- should be fixed to 40/32 now
  2. Consensus: Leave sizeof(UnicodeString) at 40/32 until someone gathers data suggesting a change; for example, finding that many UnicodeString objects are individually heap-allocated (which might benefit from sizeof(UnicodeString) being a multiple of 16 bytes), or data about string lengths that suggest a different optimal internal-buffer length
  1. "Several things I'd like to discuss about ICU" - e-mail from Artyom (of Boost) - (forwarded by Steven 8 Feb 2011)
  1. Const Correctness and Thread safety
  1. 8202 (C) /8203 (J)
  2. file a bug where we're not currently doing this, see above.
  1. UTF-8 support
  1. Unicode Normalization
  2. Search algorithms
  3. Localized Formatting and Parsing data
  4. as-need basis - can help… open to suggestions
  1. Cloning object performance
  1. (currently using thread local storage with cache of clones)
  2. bugs to make transliterator, collator freezable
  1. Other "personal preference"
  1. Use of UTF-16 instead of UTF-8 in ICU? not wholesale, though have changed some structures to work well for both.
  2. API that mimics/copies Java rather then using C++ paradigms like STL containers, and even std::locale
  3. Error Codes anywhere - makes quite hard times to program with ICU allowing creation of "bogus" objects rather then throwing exception
  1. ErrorCode object -
  1. Mark to reply 
  1. BuildStatus  - green/clean
  2. IncomingBugs


  1. API Proposals
  1. String tries (Markus; designated API reviewer: Mark; ticket: #8167) - approved
  2. C++ Appendable (Markus; designated API reviewer: Yoshito; ticket: #8314) - recast as interface/mixin class, and add AppendableImpl or AppendableAdapter with default implementations; send update to icu-design and check in - approved as modified
  3. UnicodeSet constants (Java): EMPTY & ALL_CODE_POINTS (Mark; designated API reviewer: Markus; ticket #8228) - approved
  1. Also add documentation for [:ascii:], [:any:] and [:assigned:]
  1. Make Transliterator and Collator Freezable -- only Java? (Mark; designated API reviewer: Markus; tickets #8243 #8234 #8255) - approved
  1. DecimalFormat -0 ?
  1. bug archaeology:
  1. - against -0.0 - wontfix
  2. - (against -0.0) complaint about "-0.0" closed as wontfix
  3. - for -0.0 complaint about "0.0", Commits: "0.0" -> "-0.0" - "fixed"
  4. - against -0.0 ( Stuart's new bug ) - unblocked
  5. Java bug?
  1. Consensus: 
  1. To investigate for next week
  2. "0.0" should be the default behavior ( unblock #8302 )
  3. If available (no consensus that it should be available), should be an attribute on formatter.
  1. 4.6.1 status
  1. pending proposals - milestone:4.6.1
  1. #8284 Resource Bundle lookup for locale root@numbers=latn falls back to en_US
  2. #8281 pkgdata tool fails with large CFLAGS
  3. #8303 ULocale#toLanguageTag() should not supply "und" as language when the locale has only private use
  4. anything else?
  1. BuildStatus (green/clean:  Vista machine 'mobot' now replaced with Vista machine 'lab3' )
  2. IncomingBugs


  1. 4.6.1 status
  1. milestone:4.6.1
  2. ICU4J performance fix 8258 and 8259
  3. set milestones in next PMC
  1. ULocale("x-somethng") -> "@x-somethng"
  1. Document with changes:
  1. BuildStatus - green/clean (rh1 offline for upgrade)
  2. IncomingBugs
  3. IUC 35 - Oct 17-19 (M-W) 2011, Santa Clara, CA (Steven)
  1. CFP 3/25/2011 - (Document)
  2. in-person PMC? BoF?
  1. Discussion of Java Regex: 


  1. 4.6.1 status
  1. Prerequisites for generating data are basically in CLDR
  2. Chinese transliteration - affecting Chinese collation too / follow up meeting on Friday
  3. Release manager: Peter! (thanks)
  1. ICU4J plug-in for Eclipse 3.7
  1. Based on ICU4J 4.4.2
  2. Restored plug-in build / sources in trunk, merged into maint-4-4
  3. One major issue - Locale service with unknown classloader 8275
  4. MessageFormat varargs - 8283 - not yet done - approved also in maintenance releases.
  5. Will work on restoring/updating plug-in
  6. Fixes for 8275 / eclipse plug-in build merged from trunk to maint-4-4 - so, it should also go to maint-4-6 for ICU4J 4.6.1
  7. Merge varargs change (8283) to maint-4-4/4-6
  1. Add Owner of files?
  1. Mark is going to move regex matcher from CLDR - provide draft for J
  1. Status of bug 7930.  Andy.  This has to do with DateTimePatternGenerator::getBestPattern() sometimes not picking up exactly matching patterns.  Currently unscheduled, assigned to Peter.  The bug is causing us problems again, with the deployment of ICU 4.6. My recollection of previous discussions is that the fix was likely to be somewhat tricky.
  2. icu-support vs icu-design: updated (Steven)
  3. (Trie data results)
  4. BuildStatus: Clean.


  1. icu-support vs icu-design? (Steven)
  1. Steven will update the wording - icu-design dedicated for new API proposal and its discussion only
  1. meaning / use of ucol_getVersion's UVersionInfo, UCOL_RUNTIME_VERSION, UCOL_BUILDER_VERSION (Peter)
  1. Peter to submit two tickets
  1. for 4.6.1 to update UCOL_RUNTIME_VERSION: #8271
  2. to verify that ucol_getVersion takes into account CLDR version: #8272
  1. 4.6.1 status
  1. Stroke counts - still completing analysis, should be done soon
  1. May need different counts for stroke collation (counts used by trad users) vs pinyin secondary order (counts used by simplified users)
  2. For trad users, have Taiwan MOE / CNS count data; these match Unihan counts in about 75% of cases. The bihua counts seem more consistent with expectations of simplified users.
  3. For 2% of cases, CNS, bihua & Unihan all have different counts
  1. Simplified-trad mapping
  1. John Jenkins posted a draft fix Jan 6, waiting for approval from Richard Cook
  1. Possible issues with Unihan readings for some Chinese chars? Name reading vs standard reading?
  2. Other Unicode 6.0.1 issues
  1. Property updates for bidi etc.? (Unicode corrigendum #8, Markus)
  1. IncomingBugs


  1. 4.6.1 status check
  1. CLDR 1.9.1 - collation data
  1. stroke count data - expected end of this week
  2. related to simplified/traditional mapping - waiting for John Jenkins - may relate to Unicode 6.0.1
  1. do we need to wait for next UTC meeting (Feb 7-11)?
  2. Post fix candidate to core ML
  3. Bugs
  1. More on thread safety issues, related to #8202
  1. udat_parse( const UDateFormat* format…) but *format is not const; fix with mutex lock? That can cause deadlock.
  2. Intent for use of const? - same as const method on equivalent C++ class
  3. udat_format/parse using "const" UDateFormat is an error. Michael G will propose removing "const" from API in design ML. Need readme when we make the change.
  1. IncomingBugs

Past Meetings