Hotspot Express (HSX)

Hohensee, Paul hohensee at amazon.com
Fri Feb 28 15:28:40 UTC 2020


Re flags/features and compiler upgrades, my current HSX investigation covers delivering it only wrt to the latest LTS release, so I'm only thinking about 3 years, not forever, though process would the similar in the forever case.

When HSX was policy, flag and feature changes were handled much the same way they are now in JSX. I.e., deprecated and eventually removed, though physical removal was usually deferred to an LTS release. New features started out experimental, were default disabled until production ready, and when enabled, old flags became either nops or were translated to the nearest new equivalent. Once the new feature was in production and had possibly been made the default, we kept the now-deprecated old feature around for a transition period whose length varied with the feature. For CMS, I'd have proposed removing it in an LTS release: if people wanted it, they could use the previous LTS release, which would now be off HSX.

Timing of C++ compiler upgrades depends on whether it's just a toolchain upgrade or involves using new language features. Tool chain upgrades for tip aren't that big a deal (we're doing this already) and can be checked for in the most recent LTS release's makefiles: mostly they involve more-pedantic error checking, for which source changes are accepted by earlier versions. If the intent is to use more recent C++ language features, I'd propose allowing those only starting with an LTS release and provide lots of notice. Three year intervals seem to me short enough for this kind of change, though I realize some may disagree. If HSX were extended to earlier LTS releases, a potential solution would be to upgrade their tool chains, backport non-HSX source code changes as needed (i.e., to satisfy more-pedantic compilers), and restrict builds using old toolchains to security patches only (i.e., take them out of HSX).

Thanks,
Paul
 
On 2/21/20, 8:56 AM, "Claes Redestad" <claes.redestad at oracle.com> wrote:

    On 2020-02-21 16:45, Volker Simonis wrote:
    > I don't agree with what's been said in this thread before, namely that
    > a strong coupling of VM and JDK "is good" for OpenJDK, helps
    > accelerating the development and improves the performance. 
    
    Let's agree to disagree.
    
    The speed-up in OpenJDK mainline development I've witnessed over my 7
    years working here has been remarkable. Of course removing hsx is only
    partially to thank for this, but it's an important piece in a greater
    scheme to remove impediments that would have been at odds with many
    of the tougher decisions made over the past few years.
    
    For example consolidated repositories have decidedly helped streamline
    work, especially when needing to sync changes from jdk to hotspot and
    vice versa. Of course you can have hsx in a consolidated world, but it
    does work against you.
    
    A more allowing stance on feature removals have also helped us shed
    a lot of weight. Removing anything is bound to be a lot messier in a
    world with hsx.
    
    Not to mention java modules, the implementation for which I think would
    have ended up much messier if the hsx model was retained.
    
    > In contrary, I think it will lead to bad "ad-hoc" decisions and wrong
    > dependencies which might be helpful for the moment but which introduce
    > considerable maintenance costs in the long term.
    
     From my experience this seems unlikely, but yes, there will be fewer
    checks against it.
    
    As a counterpoint I believe most decisions are very mindful about
    maintenance costs, to the point where reducing future maintenance cost
    is usually the sole motivator - sometimes at expense of customer
    convenience. See the removal of CMS, for example.
    
    On that note, how _would_ this hsx project deal with features and flags
    that are deprecated and removed from the mainline? Will you need to
    resurrect removed features such as CMS, but hide the code behind build
    flags..?
    
    And looking further, how would hsx deal with a project like the C++
    compiler upgrade[1], which will change system requirements and thus be
    unsuitable for a backport?
    
    /Claes
    
    [1] https://openjdk.java.net/jeps/347
    



More information about the jdk-updates-dev mailing list