V4RB... u_strToUpper() // MacOS X ICU

Ruslan Zasukhin sunshine at public.kherson.ua
Wed Aug 18 18:58:14 CDT 2004


On 8/17/04 10:07 PM, "Deborah Goldsmith" <goldsmit at apple.com> wrote:

Hi Deborah, 

> Ram already answered the question about stability of the data file;
> I'll answer the rest.
> 
> Apple currently does not make ICU's API available as part of our public
> APIs because -- until recently -- there has not been a good mechanism
> for controlling which APIs get published. ICU includes both C and C++
> APIs, and these are further categorized as draft, stable, or obsolete.
> 
> Apple does not make APIs public that we cannot guarantee will remain
> binary compatible going forward. Given our C++ runtime (and nearly all
> other C++ runtimes), this is impossible for C++. In addition, the ICU
> draft APIs may change and therefore do not guarantee binary
> compatibility. Without careful control of which ICU APIs are visible,
> developers are likely to unintentionally use APIs that are not binary
> compatible, and then get upset when their apps break.

Yes, you are right of course.

I think we all dream about day, when C++ will get ABI standard,
And all major compilers will support it. I think we can hope on this in the
nearest 5 years.

> ICU 3.0 now has a mechanism for hiding draft APIs, but it is still the
> case that all APIs are visible by default. I'm working with the ICU
> team to see if we can make it a configure-time option to make draft
> APIs *hidden* by default. Or at least, provide a way to build a set of
> headers that work that way. Once that mechanism is in place, Apple can
> consider exporting ICU as part of our public API set. That is not going
> to happen in the next Mac OS X release, 10.4 (Tiger). It *is* a
> long-term goal. 

Excellent to know that you have such goal!

> Another thing that would be nice is a way to
> conditionalize API visibility based on ICU release (e.g., hide
> everything not available in ICU 2.6). We do this in our own APIs so
> that developers can build an application that runs on an earlier build
> (e.g, build on 10.3, but have the app able to run on 10.2).

Yes. If I am not mistake on windows this is developer responsibility take
care to correctly choose API compatible to v. XXX

Apple have provide us SDKS for different OS versions, and I cannot do
mistake.


> In the meantime, you can access ICU in Mac OS X, and have your
> application continue to work in future versions, by observing the
> following restrictions:
> 
> 1. Configure the appropriate version of ICU (no later than 2.6 to run
> on 10.3 or later, no later than 3.0 to run on 10.4 or later) with name
> versioning off to produce a set of headers you can use. If name
> versioning is on, your app is guaranteed to fail the next time a new
> version of ICU is introduced.

Aha, I see.

So ICU allow disable name versioning?
I did not know this.


> 2. Reference ONLY stable C APIs. All other C APIs, and *all* C++ APIs,
> must not be referenced. One caveat: if there is an API that is draft in
> 2.6, but stable in 3.0 *with no API changes from 2.6*, then it's safe
> to reference it from 2.6.

Good point. I see.
Actually we have use C++ classes of ICU.


> 3. Link against /usr/lib/libicucore.dylib (-licucore on the command
> line, or reference the symbolic link in Xcode)

Well, this is possible only for Macho and only for GCC apps.
We use also CodeWarrior and we make also Carbon apps.

My original question was: IF we can use our own CW dlls, but use only .dat
file from MacOS X. It seems to me this is bad idea. It can be broken in
future versions.


> If you follow these steps, then your app should continue to run under
> future versions of Mac OS X. I can't guarantee that until Apple
> officially supports access to ICU (which we don't, yet), but I can't
> think of a scenario where it would fail.

Yes, your points should work of course.

> If you can't live with these conditions, you will need to build and
> link in your own private copy of ICU, including the data file that goes
> along with.
> 
> Note: If you have the WWDC Developer preview release of 10.4, that has
> ICU 2.8. The release version of 10.4 will have ICU 3.0, and at some
> point that will filter into the developer seeds.

I see. Thank you for this detailed information, Deborah!

-- 
Best regards,
Ruslan Zasukhin      [ I feel the need...the need for speed ]
-------------------------------------------------------------
e-mail: ruslan at paradigmasoft.com
web: http://www.paradigmasoft.com

To subscribe to the Valentina mail list go to:
http://lists.macserve.net/mailman/listinfo/valentina
-------------------------------------------------------------



More information about the Valentina-beta mailing list