JEP 401: Value Objects (Preview) merged to OpenJDK master
摘要
OpenJDK 的 PR #31120 将 JEP 401(值对象预览)合并到 jdk/master,同时包含 JEP 539(JVM 严格字段初始化预览)。该 PR 是主合并请求,语言编译器、JVM 和标准库改动交织,拆分为三个子评审 PR 以分散讨论。代码基于 valhalla/lworld 分支,每周同步 jdk/master。PR 已获得多位 Reviewer 签核,并遵循 OpenJDK AI 政策。
荐读理由
这是 JVM 语言层面的真实演进,值对象预览可能带来内存布局和性能优化机会,但当前处于预览阶段且与 AI 工程无直接关联,可关注后续成熟度再评估迁移价值。
原文
This pull request implements the first preview of JEP 401: Value Objects (Preview). This pull request also includes the implementation of JEP 539: Strict Field Initialization in the JVM (Preview). That work was implemented in the same code base because JEP 401 depends on strict field initialization.
Sub-reviews, for spreading review debates are here:
JDK-8317277: Java language implementation of value objects
JDK-8317278: JVM implementation of value objects
JDK-8317279: Standard library implementation of value objects
This is the "master pull request" for the initial preview of JEP 401. Comments and review for a change this large will not scale well in a single pull request. This pull request serves as the vehicle for sign-off and integration into jdk/master. Review comments should be directed to the appropriate "sub-review pull request" listed above.
Note
The "sub-review pull requests" contain the same full set of code changes as this "master pull request" to preserve the full implementation context; the language compiler, JVM, and standard library changes are intertwined. The separate pull requests exist only to subdivide the review and related discussion by area.
Any resulting code changes should be made in valhalla/lworld.
valhalla/lworld is currently updated from jdk/master whenever a weekly jdk tag is created. At that time, code changes from valhalla/lworld will be propagated to this pull request and to all sub-review pull requests.
Ultimately, review sign-off will be recorded on this "master pull request", and the "sub-review pull requests" will be closed without integration.
This pull request has a large surface area and frequently conflicts with jdk/master. Refer to valhalla/lworld for the latest state of the project code, keeping in mind that it may lag several days behind jdk/master. Both repositories may be needed as references during review.
- I confirm that I make this contribution in accordance with the OpenJDK Interim AI Policy.
Progress
Change must not contain extraneous whitespace
Commit message must refer to an issue
Change must be properly reviewed (2 reviews required, with at least 1 Reviewer, 1 Author)
Issues
JDK-8389219: Implement JEP 401: Value Objects (Preview) (Enhancement - P4)
JDK-8389220: Implement JEP 539: Strict Field Initialization in the JVM (Preview) (Enhancement - P4)
Reviewers
Coleen Phillimore (@coleenp - Reviewer) Review applies to 620ec3d6
Maurizio Cimadamore (@mcimadamore - Reviewer)
Jan Lahoda (@lahodaj - Reviewer) Review applies to 620ec3d6
Dean Long (@dean-long - Reviewer) Review applies to 620ec3d6
Jaikiran Pai (@jaikiran - Reviewer) Review applies to 620ec3d6
Viktor Klang (@viktorklang-ora - Reviewer) Review applies to 620ec3d6
Dan Heidinga (@DanHeidinga - no project role) Review applies to 620ec3d6
Serguei Spitsyn (@sspitsyn - Reviewer) Review applies to 620ec3d6
Chris Plummer (@plummercj - Reviewer) Review applies to 620ec3d6
Chen Liang (@liach - Reviewer)
Daniel D. Daugherty (@dcubed-ojdk - Reviewer)
Axel Boldt-Christmas (@xmas92 - Reviewer)
Contributors
David Simms
<dsimms@openjdk.org>Dan Smith
<dlsmith@openjdk.org>Frederic Parain
<fparain@openjdk.org>Tobias Hartmann
<thartmann@openjdk.org>Roger Riggs
<rriggs@openjdk.org>Vicente Romero
<vromero@openjdk.org>Axel Boldt-Christmas
<aboldtch@openjdk.org>Karen Kinnear
<acorn@openjdk.org>Alex Menkov
<amenkov@openjdk.org>Bill Huang
<bhuang@openjdk.org>Benoît Maillard
<bmaillard@openjdk.org>Christian Hagedorn
<chagedorn@openjdk.org>Chris Plummer
<cjplummer@openjdk.org>Casper Norrbin
<cnorrbin@openjdk.org>Coleen Phillimore
<coleenp@openjdk.org>David Beaumont
<dbeaumont@openjdk.org>Daniel D. Daugherty
<dcubed@openjdk.org>Damon Fenacci
<dfenacci@openjdk.org>David Holmes
<dholmes@openjdk.org>Dmitry Samersoff
<dsamersoff@openjdk.org>Eric Caspole
<ecaspole@openjdk.org>Evgeny Nikitin
<enikitin@openjdk.org>Ekaterina Pavlova
<epavlova@openjdk.org>Fei Yang
<fyang@openjdk.org>Dan Heidinga
<heidinga@openjdk.org>Harold Seigel
<hseigel@openjdk.org>Ioi Lam
<iklam@openjdk.org>Ivan Walulya
<iwalulya@openjdk.org>Jatin Bhateja
<jbhateja@openjdk.org>Jan Lahoda
<jlahoda@openjdk.org>Jim Laskey
<jlaskey@openjdk.org>John R Rose
<jrose@openjdk.org>Joel Sikström
<jsikstro@openjdk.org>Lois Foltan
<lfoltan@openjdk.org>Chen Liang
<liach@openjdk.org>Leonid Mesnik
<lmesnik@openjdk.org>Matias Saavedra Silva
<matsaave@openjdk.org>Marc Chevalier
<mchevalier@openjdk.org>Mandy Chung
<mchung@openjdk.org>Maurizio Cimadamore
<mcimadamore@openjdk.org>Markus Grönlund
<mgronlun@openjdk.org>Manuel Hässig
<mhaessig@openjdk.org>Nick Gasson
<ngasson@openjdk.org>Patricio Chilano Mateo
<pchilanomate@openjdk.org>Paul Hübner
<phubner@openjdk.org>Paul Sandoz
<psandoz@openjdk.org>Quan Anh Mai
<qamai@openjdk.org>Roberto Castañeda Lozano
<rcastanedalo@openjdk.org>Roland Westrelin
<roland@openjdk.org>Srikanth Adayapalam
<sadayapalam@openjdk.org>Aleksey Shipilev
<shade@openjdk.org>Stefan Johansson
<sjohanss@openjdk.org>Sergey Kuksenko
<skuksenko@openjdk.org>Serguei Spitsyn
<sspitsyn@openjdk.org>Stefan Karlsson
<stefank@openjdk.org>Thomas Stuefe
<stuefe@openjdk.org>Thomas Schatzl
<tschatzl@openjdk.org>Zoltan Majo
<zmajo@openjdk.org>Alan Bateman
<alanb@openjdk.org>Jaikiran Pai
<jpai@openjdk.org>Martin Doerr
<mdoerr@openjdk.org>Richard Reingruber
<rrich@openjdk.org>Feilong Jiang
<fjiang@openjdk.org>Daisuke Yamazaki
<dyama@openjdk.org>
Reviewing
Using git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/31120/head:pull/31120
$ git checkout pull/31120
Update a local copy of the PR:
$ git checkout pull/31120
$ git pull https://git.openjdk.org/jdk.git pull/31120/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 31120
View PR using the GUI difftool:
$ git pr show -t 31120
Using diff file
Download this PR as a diff file: https://git.openjdk.org/jdk/pull/31120.diff
Using Webrev
这条对你有帮助吗?