Hi Sergey
In the absence of any comment from you, I will have to proceed as I
think best and just relax the bounds.
Regards
Ed Willink
On 26/11/2012 18:31, Ed Willink wrote:
Hi Sergey
QVTo has two [4.0.0,5.0.0) import package ranges for
com.ibm.icu.text.
It looks like these will break in M4.
Do you know of any restrictions on them?
Should we just remove the upper bound as recommended?
Regards
Ed
-------- Original Message --------
I wanted to be sure everyone
was aware of 3 changes coming to ICU4J, shipped with Eclipse
SDK, that will be in Kepler M4 (more specifically, our I-build
on 11/27). [1]
1. The largest change
is the major version number. The ICU project has changed the
system by which they do versioning, so this cycle the major
version jumps from 4 to 50. The code itself is (still) just a
minor increment, but for their own (non-Eclipse, non-OSGi)
reasons decided to change the way they do versioning.
In the past we have always
recommended people leave the prereq range for this bundle or
imported packages open ended (no upper bound) ... just for
reasons like this ... but if anyone did not heed that advice,
you will need to react now, before M4. Not only would it still
be appropriate to not specify an upper bound, it is far better
to leave your lower bound as low as you can (as low as it
currently is) ... you only need to increment lower bounds, if
your code uses something that is only in the higher version of
a bundle (e.g. a new API -- if you only need a fix in a higher
version, not new API, a good technique is to have your bundle
specify the version of API you need (low) but have your
feature "require" the bundle at the fixed version). A good
technique for bundles to consume ICU4J is to use "import
package", (because there are actually two bundles the packages
might come from). Hence, your manifest might contain something
like:
Import-Package: com.ibm.icu.text;version="3.6.1",
com.ibm.icu.util;version="3.6.1"
But there are some projects
that prefer to (or, have to) require the actual bundle
Require-Bundle: com.ibm.icu;bundle-version="3.4.4"
Note that 4.2.2 was in both
Juno and its predecessor Indigo; Helios used 4.2.1. Leaving
your lower bound as low as you can, means you will be most
compatible for everyone that "mixes and matches" bundles to
create their own products; they (and you) can avoid split
streams if you have no concrete need to increment lower bound.
2. A change that sounds
large, but is believed not, is that there is technically some
API changes in 50.1. These are not due to a change in ICU4J,
per se, but instead in how we in Orbit take the "standard
version" of ICU4J and provide it for Eclipse. Long ago, there
were a few tweaks to the standard ICU4J made specifically for
the Eclipse version, so it would be compatible with "CDC
Foundation" libraries. But, that has not been required for a
release or two, and it is dangerous to have two versions of
third-party code "in the wild" that are not perfectly
compatible. If you are recompiling, you there is only one
method that's not compatible, involving "BigDecimal" which we
suspect is not in wide spread use, if at all. If you are
interested in binary compatibility, there are 4 other methods
that changed with respect to method arguments, changing
"String" to "CharSequence". If anyone finds issues with these
5 cases, please let us know in the Orbit bug [2] so we better
understand the impact of this standardization. Attached to the
Orbit bug [2] is a table that details the changes [3]. It
provides full signatures, if you wanted to search your code
for the methods involved.
3. There is a special,
reduced "implementation" of the full ICU bundle
("com.ibm.icu") which is named "com.ibm.icu.base" that does
not actually implement most of its function, but provides
places holders for the APIs (i.e. packages are the same name
so "import package" is still satisfied). This is for
people/projects who a) mostly only care about supporting
English or very simple NL support, and b) are concerned about
having a small footprint, such as for an RCP App, and c) still
need a "place holder" for the dependency packages due to other
bundles they require. (This use assumes use of "import
package")
The change that is coming, is
that this special packaging will no longer be provided on the
Eclipse Platform download page nor in the Eclipse repository,
but will still be available from Orbit where it has always
been available [4]. We in the platform are trying to
reduce/streamline our builds and packaging and us providing
this bundle is redundant with the Orbit bundle. The current
plan is to remove this in both Kepler and in Juno SR2, but of
course the same 4.4.2 version will still be there in the Juno
(composite) repository, just not on DL page. For Kepler, the
50.1 bundle will only be available from Orbit. Again, let us
know if this has impacts we have not anticipated. This should
impact hardly anyone in the release train, but I did notice
that "rap examples" appears to use it, so depending on RAP
does their build, they might have to switch to Orbit repo, if
you were not already using that.
Thanks for reading this long
note and reacting to any changes required. We will all be
better off over the years ahead. Please say if there are
questions or concerns.
[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=386766
[2] https://bugs.eclipse.org/bugs/show_bug.cgi?id=386657
[3] https://bugs.eclipse.org/bugs/attachment.cgi?id=223578
[4] https://bugs.eclipse.org/bugs/show_bug.cgi?id=395003
_______________________________________________
mmt-dev mailing list
mmt-dev@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/mmt-dev
No virus
found in this message.
Checked by AVG - www.avg.com
Version: 2013.0.2793 / Virus Database: 2629/5918 - Release Date:
11/25/12
|