Skip to content

Commit 937489e

Browse files
committed
Update releasenotes.md and versions.md
1 parent 0d86cb9 commit 937489e

File tree

2 files changed

+153
-19
lines changed

2 files changed

+153
-19
lines changed

src/site/markdown/build/versions.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
11
# Versions of external packages needed to build and use PL/Java
22

3-
As of fall 2024, the following version constraints are known.
3+
As of spring 2025, the following version constraints are known.
44

55
## Java
66

77
No version of Java before 9 is supported. The PL/Java code
88
makes use of Java features first appearing in Java 9.
99

10-
As for later versions of Java, backward compatibility in the language is
10+
PL/Java's [security policy enforcement][policy] is available only when the Java
11+
version at run time is 9 through 23. On Java 24 or later runtime, PL/Java 1.6.x
12+
can only run [with no policy enforcement][nopolicy]. This is independed of
13+
the Java version used at build time, and so the availability of enforcement
14+
can be changed at any time after building, by changing the
15+
`pljava.libjvm_location` [configuration variable][jvml] to point to a Java
16+
shared object of a different version.
17+
18+
Other than the loss of policy enforcement in Java 24, backward compatibility
19+
in the language is
1120
generally good. Before Java 8, most likely problem areas with a new Java
1221
version tended to be additions to the JDBC API that PL/Java had not yet
1322
implemented. Since Java 8, even JDBC additions have not caused problems for
@@ -67,6 +76,6 @@ The PL/Java 1.6 series does not support PostgreSQL earlier than 9.5.
6776
More current PostgreSQL versions, naturally, are the focus of development
6877
and receive more attention in testing.
6978

70-
PL/Java 1.6.8 has been successfully built and run on at least one platform
79+
PL/Java 1.6.9 has been successfully built and run on at least one platform
7180
with PostgreSQL versions from 17 to 9.5, the latest maintenance
7281
release for each.

src/site/markdown/releasenotes.md.vm

Lines changed: 141 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,143 @@
1010
#set($ghbug = 'https://github.com/tada/pljava/issues/')
1111
#set($ghpull = 'https://github.com/tada/pljava/pull/')
1212

13-
$h2 PL/Java 1.6.8
13+
$h2 PL/Java 1.6.9
14+
15+
This is the ninth minor update in the PL/Java 1.6 series. It adds support
16+
for building and running with Java 24 _but only with no security enforcement_,
17+
as explained below. Other than some minor bug fixes, that is the most notable
18+
change. Further information on the changes may be found below.
19+
20+
$h3 Version compatibility
21+
22+
PL/Java 1.6.9 can be built against recent PostgreSQL versions including 17, and
23+
older ones back to 9.5, using Java SE 9 or later. The Java version used at
24+
runtime does not have to be the same version used for building. PL/Java itself
25+
can run on any Java version 9 or later, but for security policy enforcement the
26+
runtime Java version must be 23 or earlier. PL/Java functions can be
27+
written for, and use features of, whatever Java version will be loaded at run
28+
time. See [version compatibility][versions] for more detail.
29+
30+
Some builds of Java 20 are affected by a bug, [JDK-8309515][]. PL/Java will
31+
report an error if it detects it is affected by that bug, and the solution can
32+
be to use a Java version earlier than 20, or one recent enough to have the bug
33+
fixed. The bug was fixed in Java 21.
34+
35+
$h3 Security policy enforcement unavailable in Java 24 and later
36+
37+
PL/Java 1.6 has historically enforced a flexible and fine-grained security
38+
policy allowing it to offer, in PostrgreSQL parlance, both a 'trusted' and
39+
'untrusted' procedural language with configurable limits on the allowed
40+
behavior for both. That mode of operation, described in
41+
[Configuring permissions in PL/Java][policy], remains fully supported
42+
in PL/Java 1.6.9 _as long as the Java version used at runtime is Java 23 or
43+
earlier_.
44+
45+
The crucial Java language features making that possible have been removed
46+
by the developers of Java, beginning with Java 24. PL/Java 1.6.9 can be used
47+
with a Java 24 or later runtime, but only as an 'untrusted' language with no
48+
policy enforcement, as described in
49+
[PL/Java with no policy enforcement][nopolicy].
50+
51+
Because enforcement depends only on the Java version at runtime, a simple change
52+
to the `pljava.libjvm_location` [configuration variable][variables] allows the
53+
flexibility to host user code using the latest Java 24+ language features (but
54+
with no policy enforcement) in an application where that is acceptable, or,
55+
where the newest language features are not needed, to continue to use an older
56+
supported Java version, including the long-term-support Java 21, with policy
57+
enforced.
58+
59+
The details in [PL/Java with no policy enforcement][nopolicy] should be
60+
carefully reviewed before using PL/Java in that mode. The section on generic
61+
Java hardening tips can also be a source of good practices for defense-in-depth
62+
even when running with policy enforcement.
63+
64+
$h3 Changes
65+
66+
$h4 Supplied examples
67+
68+
$h5 Softened dependency of examples jar on Saxon library
69+
70+
The Maven build produces a `pljava-examples` jar from the supplied example code,
71+
and can produce that jar with or without the examples that depend on the Saxon
72+
XML library, based on a build-time profile setting. In past releases, the
73+
examples jar, if built with the Saxon examples included, could not be deployed
74+
(`sqlj.install_jar` with `deploy => true` would fail) in a database where a
75+
Saxon jar had not already been installed and placed on the classpath. For cases
76+
where the Saxon examples are not of interest, that inability to deploy the
77+
examples jar based on a choice made at build time was an inconvenience.
78+
79+
The examples jar now, if built with the Saxon examples included, simply will
80+
leave those examples undeployed, if Saxon classes cannot be found on
81+
the classpath at the time of deployment.
82+
83+
$h5 New example function to examine Java's boot module layer
84+
85+
The discussion of [PL/Java with no policy enforcement][nopolicy] encourages
86+
attention to which Java modules are made available in Java's boot module layer.
87+
A new example function is supplied to return that information.
88+
89+
$h4 Continuous integration
90+
91+
Workflows for GitHub Actions, AppVeyor, and Travis have had duplicated code
92+
factored out into a single `jshell` script in the new `CI` directory.
93+
94+
The script is able to use either the `PGJDBC` or `pgjdbc-ng` driver for
95+
connecting to a test server instance. The CI configuration has been using
96+
`pgjdbc-ng` but now uses `PGJDBC`, to avoid a `pgjdbc-ng` dependency on
97+
a library whose native operations Java 24 now warns about and a future
98+
Java release will forbid.
99+
100+
The GitHub Actions CI workflow now covers Ubuntu, Mac OS on both Intel and ARM,
101+
and Windows using both MSVC and MinGW-w64.
102+
103+
$h4 Documentation
104+
105+
$h5 Java stack traces and debugger control
106+
107+
The needed settings of `client_min_messages` or `log_min_messages` for Java
108+
exception stacktraces to be shown have been mentioned in passing in too many
109+
places that were not the user documentation, while never clearly stated there.
110+
There is now a [new section](use/use.html#Java_exception_stack_traces) for that,
111+
and also one for [connecting a debugger](use/use.html#Connecting_a_debugger).
112+
113+
$h5 Links into API docs now assume Java 21 `javadoc` version will be used
114+
115+
While it should be possible to build the API documentation with the `javadoc`
116+
tool of whatever Java version is used at build time, different versions of the
117+
tool introduce changes in HTML output, such as anchor names, that affect
118+
links into the API documentation from other pages, such as the build/install/use
119+
documentation in Markdown. To build a full set of documentation with working
120+
links, an assumption must be made about the version of `javadoc` that will be
121+
used. Links have been updated on the assumption that the API docs will be built
122+
with the `javadoc` tool of Java 21.
123+
124+
$h3 Bugs fixed
125+
126+
* [SQL generator unexpected case-sensitive matching of implementor tags](${ghbug}515)
127+
* [Class path used during jar deploy/undeploy can be bad](${ghbug}516)
128+
129+
$h3 Credits
130+
131+
Thanks in release 1.6.9 to ZhangHuiGui for highlighting the need to better
132+
document debugging arrangements and Java stack traces.
133+
134+
[policy]: use/policy.html
135+
[nopolicy]: use/unenforced.html
136+
[variables]: use/variables.html
137+
138+
$h2 Earlier releases
139+
140+
## A nice thing about using Velocity is that each release can be entered at
141+
## birth using h2 as its main heading, h3 and below within ... and then, when
142+
## it is moved under 'earlier releases', just define those variables to be
143+
## one heading level finer. Here goes:
144+
#set($h2 = '###')
145+
#set($h3 = '####')
146+
#set($h4 = '#####')
147+
#set($h5 = '######')
148+
149+
$h2 PL/Java 1.6.8 (19 October 2024)
14150

15151
This is the eighth minor update in the PL/Java 1.6 series. It adds support
16152
for PostgreSQL 17, confirms compatibility with Java 23, and makes some slight
@@ -83,18 +219,7 @@ $h3 Credits
83219
Thanks in release 1.6.8 to Francisco Miguel Biete Banon for determining the
84220
changes needed for PostgreSQL 17.
85221

86-
$h2 Earlier releases
87-
88-
## A nice thing about using Velocity is that each release can be entered at
89-
## birth using h2 as its main heading, h3 and below within ... and then, when
90-
## it is moved under 'earlier releases', just define those variables to be
91-
## one heading level finer. Here goes:
92-
#set($h2 = '###')
93-
#set($h3 = '####')
94-
#set($h4 = '#####')
95-
#set($h5 = '######')
96-
97-
$h2 PL/Java 1.6.7
222+
$h2 PL/Java 1.6.7 (3 April 2024)
98223

99224
This is the seventh minor update in the PL/Java 1.6 series. It adds support
100225
for FreeBSD and for building and running with Java 22, and fixes some bugs,
@@ -166,7 +291,7 @@ Mantzios, `hunterpayne`, `kamillo`.
166291

167292
[JDK-8329295]: https://bugs.openjdk.org/browse/JDK-8329295
168293

169-
$h2 PL/Java 1.6.6
294+
$h2 PL/Java 1.6.6 (19 September 2023)
170295

171296
This is the sixth minor update in the PL/Java 1.6 series. It adds support
172297
for PostgreSQL 16 and confirms compatibility with Java 21, and fixes some bugs,
@@ -251,7 +376,7 @@ $h3 Bugs fixed
251376
[adjsfs]: pljava-api/apidocs/org.postgresql.pljava/org/postgresql/pljava/Adjusting.XML.html#method-detail
252377
[egsfs]: https://github.com/tada/pljava/blob/V1_6_6/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/PassXML.java#L528
253378

254-
$h2 PL/Java 1.6.5
379+
$h2 PL/Java 1.6.5 (13 June 2023)
255380

256381
This is the fifth minor update in the PL/Java 1.6 series. It adds support
257382
for PostgreSQL 15 and fixes some bugs, with few other notable changes. Further
@@ -338,7 +463,7 @@ Tim Van Holder, `aadrian`, `sincatter`, `tayalrun1`.
338463
[versions]: build/versions.html
339464
[JDK-8309515]: https://bugs.openjdk.org/browse/JDK-8309515
340465

341-
$h2 PL/Java 1.6.4
466+
$h2 PL/Java 1.6.4 (19 January 2022)
342467

343468
This is the fourth minor update in the PL/Java 1.6 series. It is a minor
344469
bug-fix release with few other notable changes. Further information

0 commit comments

Comments
 (0)