github eXist-db/exist eXist-7.0.0-beta5

pre-release6 hours ago

eXist-db 7.0.0-beta5

Overview

eXist-7.0.0-beta5 covers 203 merged pull requests since eXist-7.0.0-beta3. Like beta3,
this remains a beta — not recommended for production use.

Note: eXist-7.0.0-beta4 was never released — its build failed, so no installers were
published. eXist-7.0.0-beta5 is the direct successor to eXist-7.0.0-beta3; everything
beta4 would have contained is included here.

Installer & Packaging Updates

This window had an unusual amount of installer churn, closing out several issues left over from
beta3's "signed but not yet working" installers:

  • macOS DMG notarization fixed — the codesign script for lz4-java's native library was
    hardcoded to version 1.11.0; two Dependabot bumps moved the actual dependency to 1.11.2
    without updating the script, breaking the beta4 build. Now driven from a single
    lz4-java.version property shared between the dependency and the codesign step, matching the
    existing jansi.version pattern. (#6715)
  • macOS .app launch fixedLSArchitecturePriority, stripFirstElement, and an IzPack
    minVersion bump so the beta3 .app actually starts. (#6434)
  • IzPack installer stabilized — rolled back 5.2.5 → 5.2.4 after a console-mode regression
    (#6438), then re-bumped to 5.2.6 once fixed (#6445); restored xz compression (#6611); fixed a
    missing classpath entry that threw NoClassDefFoundError: org/xmlresolver/Resolver during
    post-install (#6444).
  • Windows installer JAR — fixed a runner.temp path bug that was silently dropping the
    installer JAR from release artifacts (#6435).
  • Content/package selection screen — added missing XAR files, made the OpenAPI XAR a
    mandatory install, cleaned up installer copy (#6519).
  • JnlpJarFiles realigned with the jars added in #5806 (#6516).
  • Distribution & installer job cleanup — removed dead assembly code, fixed Installer.jar
    generation and publishing (#6460), and dropped an unused plexus dependency left over from that
    cleanup (#6523).

What's Changed

Features

  • [feature] Distinct error codes for sm: permission functions (let callers map 403 vs 400) by @joewiz in #6464
  • [feature] response:stream-binary-resource — zero-copy binary download by @joewiz in #6466
  • [feature] request module: Accept-header parsing and content negotiation by @joewiz in #6477
  • [feature] Native EXPath HTTP Client (java.net.http + Methanol); remove Apache HttpClient by @joewiz in #6482
  • [feature] Enable HTTP/2 for jetty by @dizzzz in #6485
  • [feature] Adds new xmldb-api security services by @reinhapa in #6520
  • XSD 1.1 support — store-time document validation via a Saxon catalog resolver (#6530),
    versioned native schemas shipped with governance CI (#6528), and follow-up validation/catalog
    fixes (#6496), all by @duncdrum
  • [feature] Add @enabled attribute to conf.xml elements to disable entries without removing them by @duncdrum in #6550
  • [feature] request: add request:get-uploaded-file-headers() by @joewiz in #6583
  • [feature] Unix-style execute-without-read for stored XQuery by @line-o in #6586
  • Add system:get-jmx-token() to expose JMXServlet's access token by @line-o in #6631
  • Publish JMH benchmark results to a gh-pages dashboard by @duncdrum in #6608

Bug Fixes

  • [bugfix] distinguish XPTY0004 from XQDY0074 in computed constructors by @line-o in #6268
  • [fix] remove omit-original-xml-declaration flag by @line-o in #6277
  • [bugfix] fn:xml-to-json: enforce F&O 3.1 §17.4.2 structural validation (+10 XQTS HEAD) by @joewiz in #6350
  • [bugfix] Preserve attribute namespace when copied via enclosed expression (+4 XQTS HEAD) by @joewiz in #6356
  • [bugfix] InteractiveClient/GUI: when connection to database fails, allow user to reconnect easily. by @dizzzz in #6424
  • [bugfix] FileLock: remove shared ByteBuffer to fix concurrent save/read race by @joewiz in #6430
  • [bugfix] repo:remove: throw with diagnostic info instead of swallowing exceptions by @joewiz in #6432
  • [bugfix] Preserve ft:highlight-field-matches under facet drill-down by @joewiz in #6454
  • [bugfix] Windows startup.bat: use %BASEDIR% for exist.autodeploy.dir (closes #6456) by @joewiz in #6457
  • [bugfix] asterisk and dot in element()-typed args in field @expression by @duncdrum in #6461
  • [bugfix] eliminate port-binding TOCTOU race in test servers by @duncdrum in #6462
  • [bugfix] Compile statically-named arrow operator to a direct function call (closes #3887, #3336, #3885) by @joewiz in #6469
  • [bugfix] Log a deferred (tail-call) function's error once, not once per Sequence accessor by @joewiz in #6470
  • [bugfix] External variable: supplied value overrides declared default by @joewiz in #6475
  • Improve function resolution by @line-o in #6476
  • [bugfix] RESTServer: set Content-Type for JSON results by @joewiz in #6478
  • [bugfix] map keys: compare by op:same-key, never coerce across type families by @joewiz in #6491
  • [bugfix] xmldb:store: parse binary content stored under an XML mime type by @joewiz in #6497
  • [bugfix] fixes potential NPE by @reinhapa in #6499
  • [bugfix] Function: report the actual argument count in arity-mismatch errors by @joewiz in #6504
  • [bugfix] Fix premature closing of still-referenced binary values by @joewiz in #6506
  • [bugfix] Sequence.containsReference: recurse into nested map/array items by @joewiz in #6507
  • [bugfix] http-client: support the src attribute on http:body (#6510) by @joewiz in #6511
  • [bugfix] http-client: honor http:body/@method for inline body serialization by @joewiz in #6513
  • [bugfix] http-client: parse a non-well-formed HTML response to a document by @joewiz in #6514
  • [bugfix] http-client: byte-safe multipart response parsing with nesting by @joewiz in #6515
  • [bugfix] Bind context item for trailing function-call path step on stored docs by @joewiz in #6522
  • Fix BrokerPool.inServiceMode JMM data race with volatile by @duncdrum in #6533
  • [bugfix] Stop backup prolog stderr spam; fix DeadlockIT CI hang by @duncdrum in #6534
  • [bugfix] Silence Log4j StatusLogger noise in Maven test forks by @duncdrum in #6535
  • [hotfix] repair build by @dizzzz in #6545
  • [bugfix] Forward port PR #6544: fix XSLT imports and document builder isolation by @line-o in #6546
  • Fix Jetty shutdown hang and BrokerPool read-only race by @duncdrum in #6572
  • [bugfix] Parse multipart/form-data for all HTTP methods, not only POST by @joewiz in #6581
  • [hotfix]: align BouncyCastle modules to override Tika 1.84 by @duncdrum in #6591
  • [bugfix] Restore XQuery pool integrity for execute-only callers by @line-o in #6599
  • [bugfix] Make mvn package re-runnable by @line-o in #6602
  • [bugfix] request: expose If-Modified-Since to handlers during view handover by @joewiz in #6606
  • [bugfix] Tolerate ambiguous URI segments in getServletPath() by @line-o in #6622
  • Fix xml:id FORG0001 spam in PrecedingAxisBenchmark by @duncdrum in #6645
  • [bugfix] Release the stored query's READ_LOCK at end-of-compile over REST and XML-RPC by @line-o in #6647
  • [bugfix] Guard against null Path.of(getRealPath()/getPathTranslated()) across servlet/urlrewrite code by @duncdrum in #6649
  • [bugfix] update ParseHtmlTest to match codelibs nekohtml 3.0.4 behavior by @dizzzz in #6662
  • [bugfix] Fix resource leak Lucene AnalyzerConfig by @dizzzz in #6663
  • [bugfix] Anchor .moderne ignore pattern so it applies at any depth by @duncdrum in #6685
  • [bugfix] cover native collection.xconf.xsd via OASIS catalog + jaxp by @duncdrum in #6687
  • [bugfix] Replace CachingResponseWrapper's header-name allowlist with buffer+replay by @duncdrum in #6692
  • [bugfix] Fix CachingResponseWrapper gaps exposed by the Jetty 12 upgrade by @duncdrum in #6694
  • [bugfix] XQSuite: don't re-serialize already-serialized failure values by @joewiz in #6699
  • [bugfix] Look up a named attribute kind test in the attribute index on the self axis by @joewiz in #6703
  • [bugfix] Handle SQLexception gracefully for rs.getMetaData() by @dizzzz in #6712

Performance

  • [optimize] PrecedingFilter: K-bounded sliding window for preceding::*[K] (#2129 follow-up to PR #6325) by @joewiz in #6330
  • [optimize] fn:deep-equal: streaming fast-path for persistent-DOM trees (closes #4050) by @joewiz in #6337
  • [optimize] xmldb:store — stream a binary value instead of materializing to a heap byte[] by @joewiz in #6467

Security

Refactoring

  • [refactor] Revise HttpClient creation and caching. by @dizzzz in #6503
  • [refactor] RESTServer: decompose doGet/doPost and clear Codacy findings by @line-o in #6562
  • [refactor] Apply OpenRewrite Java21 recipe by @dizzzz in #6630

Tests, CI, Build & Internal Tooling

  • [ci] compare-results.xslt: surface runner-JAR drift warning when build SHAs differ by @joewiz in #6332
  • [test] Cover arrow-operator placeholder edge cases (#6471) by @joewiz in #6472
  • [doc] AGENTS.md: add XQSuite-vs-Java test-selection rubric; remove stale Known Issues by @joewiz in #6483
  • [test] Cover boost-config + facet drill-down in the ft:highlight regression by @joewiz in #6486
  • [ignore] override jackson-databind dep version by @line-o in #6525
  • Generate test conf.xml/controller-config.xml fixtures from canonical at build time by @duncdrum in #6531
  • Fix flaky CI tests: HTTP/2 hangs, broker/txn ordering races, and BrokerPool shutdown safety by @duncdrum in #6532
  • [ci] Publish container attestations via staging-then-promote by @line-o in #6543
  • [ignore] textual update by @dizzzz in #6548
  • [build] add maven wrapper by @line-o in #6555
  • [ci] Post XQTS result comparison as a PR comment by @line-o in #6564
  • [ignore] only ignore the contents of .moderne/ (allows negations) by @line-o in #6565
  • Update exist-xqts-runner version to 2.0.0-RC3 by @line-o in #6584
  • [ci] Update Prethink recipe by @dizzzz in #6595
  • [ci] update Moderne build configuration by @line-o in #6600
  • [ci] Enable OCI media types for container image attestations by @line-o in #6629
  • [test] Poll for shared-pool visibility instead of asserting it synchronously by @line-o in #6635
  • Fix ci-benchmarks.yml: activate perf-tests profile by @duncdrum in #6641
  • Unify exist-core-jmh and exist-indexes-jmh maven wiring; fix broken Lucene/conf.xml benchmarks by @duncdrum in #6646
  • [ci] Pin oci-artifact=false so Docker Hub/Scout can ingest published images by @line-o in #6648
  • [ci] Separate real outcome changes from recording noise in the XQTS comparison by @line-o in #6650
  • [ci] Update exist-xqts-runner to 2.0.0-RC4 by @line-o in #6651
  • [doc] Document recursive xmldb:create-collection() #3869 by @AzazelSensei in #6666
  • [test] Extract nested classes and consolidate test suite by @duncdrum in #6693

Dependency Updates (96)

Expand 96 dependency bumps, grouped by ecosystem (mostly Dependabot)

GitHub Actions (4)

  • Bump actions/cache from 5 to 6 in the actions group by @dependabot[bot] in #6518
  • Bump actions/checkout from 6 to 7 in the actions group by @dependabot[bot] in #6592
  • Bump azure/login from 3.0.0 to 3.0.1 in the actions group by @dependabot[bot] in #6634
  • Bump docker/setup-qemu-action from 4.2.0 to 4.3.0 in the actions group by @dependabot[bot] in #6688

Jetty (5)

Lucene (2)

JLine (7)

Jackson (3)

Maven Build Plugins (12)

  • Bump org.sonatype.central:central-publishing-maven-plugin from 0.10.0 to 0.11.0 by @dependabot[bot] in #6488
  • Bump com.mycila:license-maven-plugin from 5.0.0 to 5.1.1 by @dependabot[bot] in #6597
  • Bump org.apache.maven.plugins:maven-jar-plugin from 3.5.0 to 3.5.1 in the maven-plugins-apache group by @dependabot[bot] in #6604
  • Bump org.codehaus.mojo:flatten-maven-plugin from 1.7.3 to 1.8.0 in the maven-plugins-tools group by @dependabot[bot] in #6609
  • Bump io.fabric8:docker-maven-plugin from 0.48.1 to 0.49.0 by @dependabot[bot] in #6636
  • Bump org.codehaus.mojo:build-helper-maven-plugin from 3.6.0 to 3.6.1 in the maven-plugins-tools group across 1 directory by @dependabot[bot] in #6643
  • Bump com.mycila:license-maven-plugin from 5.1.1 to 5.1.2 by @dependabot[bot] in #6656
  • Bump org.apache.maven.plugins:maven-compiler-plugin from 3.15.0 to 3.16.0 in the maven-plugins-apache group by @dependabot[bot] in #6671
  • Bump the maven-plugins-apache group with 3 updates by @dependabot[bot] in #6673
  • Bump io.github.git-commit-id:git-commit-id-maven-plugin from 10.0.0 to 10.0.1 in the maven-plugins-tools group by @dependabot[bot] in #6676
  • Bump org.sonarsource.scanner.maven:sonar-maven-plugin from 5.7.0.6970 to 5.8.0.7211 by @dependabot[bot] in #6696
  • Bump the maven-plugins-tools group with 4 updates by @dependabot[bot] in #6713

Test Tooling (JUnit/JaCoCo/EasyMock) (8)

  • Bump the junit4-test-support group across 1 directory with 3 updates by @dependabot[bot] in #6425
  • Bump org.jacoco:jacoco-maven-plugin from 0.8.14 to 0.8.15 in the maven-plugins-tools group by @dependabot[bot] in #6452
  • Bump the junit-jupiter-bom group across 1 directory with 4 updates by @dependabot[bot] in #6536
  • Bump the junit-jupiter-bom group with 4 updates by @dependabot[bot] in #6570
  • Bump the junit4-test-support group with 3 updates by @dependabot[bot] in #6617
  • Bump org.objenesis:objenesis from 3.5 to 3.6 in the junit4-test-support group by @dependabot[bot] in #6623
  • Bump the junit-jupiter-bom group with 4 updates by @dependabot[bot] in #6632
  • Bump org.easymock:easymock from 5.6.0 to 5.7.0 in the junit4-test-support group by @dependabot[bot] in #6658

AI / ML (ONNX Runtime, Tokenizers) (5)

  • Bump com.microsoft.onnxruntime:onnxruntime from 1.26.0 to 1.27.0 by @dependabot[bot] in #6537
  • Bump com.microsoft.onnxruntime:onnxruntime from 1.27.0 to 1.28.0 by @dependabot[bot] in #6612
  • Bump com.microsoft.onnxruntime:onnxruntime from 1.28.0 to 1.29.0 by @dependabot[bot] in #6639
  • Bump ai.djl.huggingface:tokenizers from 0.36.0 to 0.37.0 by @dependabot[bot] in #6683
  • Bump ai.djl.huggingface:tokenizers from 0.37.0 to 0.38.0 by @dependabot[bot] in #6707

Apache Commons (5)

  • Bump commons-daemon:commons-daemon from 1.5.1 to 1.6.0 by @dependabot[bot] in #6428
  • Bump commons-daemon:commons-daemon from 1.6.0 to 1.6.1 by @dependabot[bot] in #6468
  • Bump commons-logging:commons-logging from 1.3.6 to 1.4.0 by @dependabot[bot] in #6495
  • Bump commons-codec:commons-codec from 1.22.0 to 1.22.1 in the apache-commons group by @dependabot[bot] in #6616
  • Bump org.apache.commons:commons-collections4 from 4.5.0 to 4.6.0 in the apache-commons group by @dependabot[bot] in #6633

Security (BouncyCastle, OWASP dependency-check) (3)

  • Bump org.bouncycastle:bcprov-jdk18on from 1.84 to 1.85 by @dependabot[bot] in #6571
  • Bump org.owasp:dependency-check-maven from 12.2.2 to 13.0.0 by @dependabot[bot] in #6626
  • Bump bouncycastle.version from 1.85 to 1.86 by @dependabot[bot] in #6708

Database Drivers (2)

  • Bump com.oracle.database.jdbc:ojdbc11 from 23.26.2.0.0 to 23.26.3.0.0 by @dependabot[bot] in #6613
  • Bump com.h2database:h2 from 2.4.240 to 2.5.250 by @dependabot[bot] in #6684

GeoTools (2)

Apache Tika (2)

XML Resolver (1)

  • Bump org.xmlresolver:xmlresolver from 6.0.23 to 6.1.0 by @dependabot[bot] in #6674

Other (35)

New Contributors

Full Changelog: eXist-7.0.0-beta3...eXist-7.0.0-beta5

Don't miss a new exist release

NewReleases is sending notifications on new releases.