P6 Core 6.10.24
Release date: Thursday, July 16, 2026
Documentation can be found here.
TL;DR¶
This release makes the Groovy DSL far more self-sufficient: the p6.wrap value wrappers gain a rich set of number, date, string, file and XML helpers, so integration scripts can drop most of their raw BigDecimal, Calendar, StringUtils and DOM/XPath imports. Search gets a big upgrade too — a single Words searchable can now span several paths and columns at once, matching as an OR across all of them, with each target backed by its own narrow index so builds stay small and incremental. On the security side, vendor batches are now scanned for malware before ingestion, and an infected file rejects the whole batch before it can reach storage. The multi-target search work also ships with full documentation and test coverage.
Groovy DSL¶
- The
p6.wrapvalue wrappers have been substantially enriched so scripts rarely need to reach for raw Java utilities. Numbers gain comparisons, arithmetic aliases, preciseBigDecimalrounding,percentOf/pct,isBetweenandasFileSize(); dates gain comparisons, diffs (includingweeksUntil/monthsUntil), period boundaries (start/end of week, month, quarter, year), ISO fields andnow(); strings gain substring/regex/case/slug helpers, encoding and hashing, XML escaping and base64/bytes/stream conversions; files expose metadata plusasString/asUri; and XML adds namespace-agnostic querying and namespaced construction. Redundant collection/boolean wrappers that only duplicated native Groovy were removed, and the reference docs were regrouped alongside full unit-test coverage. (STN-28989)
Search & Views¶
- A single
Wordssearchable can now declare several search targets — any mix of document paths and persisted columns — instead of being limited to one. This lets a single search field cover several fields without having to point at a broad, expensive-to-index document node. Single-target searchables behave exactly as before. (STN-28661) - Multi-target search fields now match as a logical OR across their targets: a submitted value returns a row if any configured target contains it, so the field still behaves as one search box to end users. (STN-28662)
- Each target of a multi-target searchable now gets its own narrow full-text index — a path-based index for document paths and a column-based index for persisted columns. This keeps index builds small and makes adding a target an incremental operation rather than a full node rebuild. (STN-28663)
- Multiple or mixed targets are only meaningful for
Wordssearchables, so declaring them on any other searchable type is now rejected at validation time with a clear message naming the offending field. (STN-28664) - The views and searchable-types guides now document the multi-target
Wordscapability, with a worked example of the OR behaviour and notes that each target is indexed separately and that column targets must already be persisted. (STN-28665) - Added automated test coverage pinning the multi-target behaviour end to end — parsing into an ordered list of targets, OR query semantics, and one index derived per target — across both document-path and persisted-column kinds, so future changes can’t silently regress it. (STN-28666)
Security¶
- Vendor batches are now scanned for malware before any of their content is ingested, using the platform’s built-in
p6.antiviruscapability. If any file in a batch is flagged as infected, the entire batch is rejected and routed to the failed folder, with the rejection recording the offending file by name. The scan runs as the final pre-import control after the structural checks, honours the platform’s disabled mode (logging that the scan was skipped), and rejects the batch with a “virus-scan-unavailable” cause if the antivirus service can’t be reached — so nothing passes unchecked. (STN-26992)