|
10 | 10 | #set($ghbug = 'https://github.com/tada/pljava/issues/') |
11 | 11 | #set($ghpull = 'https://github.com/tada/pljava/pull/') |
12 | 12 |
|
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) |
14 | 150 |
|
15 | 151 | This is the eighth minor update in the PL/Java 1.6 series. It adds support |
16 | 152 | for PostgreSQL 17, confirms compatibility with Java 23, and makes some slight |
@@ -83,18 +219,7 @@ $h3 Credits |
83 | 219 | Thanks in release 1.6.8 to Francisco Miguel Biete Banon for determining the |
84 | 220 | changes needed for PostgreSQL 17. |
85 | 221 |
|
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) |
98 | 223 |
|
99 | 224 | This is the seventh minor update in the PL/Java 1.6 series. It adds support |
100 | 225 | for FreeBSD and for building and running with Java 22, and fixes some bugs, |
@@ -166,7 +291,7 @@ Mantzios, `hunterpayne`, `kamillo`. |
166 | 291 |
|
167 | 292 | [JDK-8329295]: https://bugs.openjdk.org/browse/JDK-8329295 |
168 | 293 |
|
169 | | -$h2 PL/Java 1.6.6 |
| 294 | +$h2 PL/Java 1.6.6 (19 September 2023) |
170 | 295 |
|
171 | 296 | This is the sixth minor update in the PL/Java 1.6 series. It adds support |
172 | 297 | for PostgreSQL 16 and confirms compatibility with Java 21, and fixes some bugs, |
@@ -251,7 +376,7 @@ $h3 Bugs fixed |
251 | 376 | [adjsfs]: pljava-api/apidocs/org.postgresql.pljava/org/postgresql/pljava/Adjusting.XML.html#method-detail |
252 | 377 | [egsfs]: https://github.com/tada/pljava/blob/V1_6_6/pljava-examples/src/main/java/org/postgresql/pljava/example/annotation/PassXML.java#L528 |
253 | 378 |
|
254 | | -$h2 PL/Java 1.6.5 |
| 379 | +$h2 PL/Java 1.6.5 (13 June 2023) |
255 | 380 |
|
256 | 381 | This is the fifth minor update in the PL/Java 1.6 series. It adds support |
257 | 382 | for PostgreSQL 15 and fixes some bugs, with few other notable changes. Further |
@@ -338,7 +463,7 @@ Tim Van Holder, `aadrian`, `sincatter`, `tayalrun1`. |
338 | 463 | [versions]: build/versions.html |
339 | 464 | [JDK-8309515]: https://bugs.openjdk.org/browse/JDK-8309515 |
340 | 465 |
|
341 | | -$h2 PL/Java 1.6.4 |
| 466 | +$h2 PL/Java 1.6.4 (19 January 2022) |
342 | 467 |
|
343 | 468 | This is the fourth minor update in the PL/Java 1.6 series. It is a minor |
344 | 469 | bug-fix release with few other notable changes. Further information |
|
0 commit comments