8 hours ago
jsoup

jsoup 1.23.1

jsoup Java HTML Parser release 1.23.1

jsoup 1.23.1 is out now, with a faster and more memory-efficient HTML parser, improved alignment with the HTML standard across noscript, CDATA, SVG, and MathML parsing, and safer, specification-correct HTTP redirects. The release also adds a fast immutable Element#classList(), direct outer-HTML output to an Appendable, and fixes across RCDATA parsing, XML conversion, tag-name handling, and Cleaner link detection.

Performance optimization was a major focus for this release. In our OpenJDK 21 benchmarks, ordinary string parsing is now 18% faster on average, parsing from an InputStream is 11% faster, and parsing with source position tracking is 70% faster while allocating 64% fewer bytes per document.

Source-tracked DOMs retain 58-65% less memory on representative medium-to-large documents, and the improvements hold under concurrent parsing without introducing new contention. Exact gains will naturally vary with document shape, JVM, and hardware.

This release also fixes a security issue in the Cleaner that could expose markup when malformed HTML is cleaned with a custom Safelist permitting certain raw-text elements. The built-in Safelists are unaffected.

jsoup is a Java library for working with real-world HTML and XML. It provides a very convenient API for extracting and manipulating data, using the best of HTML5 DOM methods and CSS selectors.

Download jsoup now.

Improvements

  • Reduced retained memory when parsing with source position tracking enabled (Parser#setTrackPosition(true)). Source ranges are now stored in compact parser-owned span records instead of node and attribute user data, and Position objects are created lazily when source ranges are read. This cuts tracked DOM retained size by about 50-60% on representative benchmark documents, while keeping Node#sourceRange(), Element#endSourceRange(), and Attribute#sourceRange() behavior intact. #2498
  • Added Element#classList(), an immutable snapshot of an element's class names in attribute order. Use hasClass() when you just need to test for one class, classList() when you want to read or iterate classes without needing a mutable result, and classNames() when you want the existing mutable, deduplicated set that can be written back with classNames(Set). The class APIs now share an HTML-whitespace scanner, which also makes classNames() faster and lighter on allocation, especially when walking many elements without class names. #2500
  • Aligned HTML parser scope classification with the current HTML spec for select, foreignObject, and template. #2501
  • Simplified the HTML tree builder's scope, implied-end-tag, and special-element checks by caching parser-only options on Tag. That improves HTML parser throughput by about 10% on small inputs and up to about 30% on larger inputs in the benchmark fixtures. #2502
  • Improved HTML parser throughput stability by making hot tokeniser scan paths compile more predictably. #2507
  • <noscript> fallback markup is now parsed into an inspectable DOM subtree in both the document head and body. The fallback acts as a contained parsing island, so malformed markup cannot disrupt the surrounding document structure, while normal HTML tokenization still applies within it. This also improves round-trip serialization. #2537
  • Improved redirect credential handling as a defense-in-depth measure: explicit authorization headers and request cookies are no longer forwarded across origins, reducing exposure through open redirects and aligning with HTTP guidance. Cookies managed by a CookieStore continue to follow their configured scope. #2540
  • Elements can now append their outer HTML, including their own tags, directly to an Appendable with Node#outerHtml(Appendable), without first creating a String. This complements Element#html(Appendable), which appends inner HTML only. #2532
  • Aligned CDATA tokenization with the HTML spec: CDATA syntax in HTML content is parsed as a bogus comment, while it remains supported in SVG, MathML, and XML. Also improved namespace-aware fragment parsing so SVG and MathML contexts, HTML integration points, and context-sensitive tokenizer states are handled correctly. #2542
  • When using the optional re2j regular expression engine, stack overflows caused by complex selector patterns are now normalized to a ValidationException with a Pattern complexity error message. #2548

Bug Fixes

  • Fixed HTML parsing of mixed-case RCDATA end tags after tag-shaped text. For example, <title><p>Foo</TiTLE> and <textarea><img src=x></TeXtArEa> now keep the tag-shaped content as text instead of promoting it to markup. #2503
  • Fixed W3CDom XML conversion so plain XML elements don't serialize with the reserved XML namespace as the default namespace. Explicit XML namespaces and xml:* attributes are still preserved. #2504
  • Preserve control characters in parsed tag names #2538
  • Updated HTTP redirects to follow the specification: 307 and 308 preserve the request method and content, 301 and 302 only change POST to GET, and Location is followed only for 301, 302, 303, 307, and 308 responses. Streamed request bodies are not buffered; if an automatic redirect requires replaying one, execution fails, so the caller can resend with a fresh stream. #2540
  • Corrected the Cleaner's same-site link detection to compare hostnames rather than URL prefixes when applying rel=nofollow. #2543

Build Changes

  • Cleaned up the Maven build for the multi-release JAR so Java 8 and Java 11+ sources compile as separate source sets. This avoids spurious Java 8 compiler warnings from newer-language overlay sources, keeps long-running parser checks behind an explicit profile, and preserves the same published artifacts and runtime behavior.
  • Improved parallelism and tuned timing in our integration tests, so that a full mvn clean verify drops from ~ 1m18s to ~ 21 seconds.

My sincere thanks to everyone who contributed to this release! If you have any suggestions for the next release, I would love to hear them; please get in touch via jsoup discussions, or with me directly.

You can also follow me (@jhy@tilde.zone) on Mastodon / Fediverse to receive occasional notes about jsoup releases.

14 hours ago
Activiti

7.21.0-rc.478

What's Changed

⬆️ Dependencies

Full Changelog: https://github.com/Activiti/Activiti/compare/7.21.0-rc.477...7.21.0-rc.478

16 hours ago
selenium

Nightly

Commits

  • 247f469: [java][bidi] Remove subscription scope (#17842) (Puja Jagani) #17842
  • e21617c: [build] Merge vendor cddl files into shared BiDi schema and implement custom Firefox webExtension options (#17840) (Titus Fortner) #17840
  • fc654de: [grid] honor client-advertised se:remoteUrl for reachable BiDi/CDP/VNC URLs (#17790) (Titus Fortner) #17790
  • 618f12b: [rb] tolerate and warn on missing required inbound BiDi fields, with SE_BIDI_STRICT to escalate (#17844) (Titus Fortner) #17844
  • 06be624: [build] reconcile API-compatibility invariant with the deprecation policy in AGENTS.md (Titus Fortner)
23 hours ago
grpc-java

v1.83.1

gRPC Java 1.83.1 Release Notes

Improvements

  • netty: Fix client-initiated stream limit bypass in NettyServerHandler (#12942). Enforces the limit proactively at startup without waiting for SETTINGS_ACK
  • core: Coalesce Contiguous Small Buffers for ReadableBuffer (#12944)
1 days ago
fastjson

fastjson 1.2.84版本发布

fastjson 1.2.84 Release Notes

Release Date: 29 Jul 2026 Tag: 1.2.84 (72553ed)

Security fix release, backporting the fastjson2 AutoType hardening to the 1.2.x line. All users parsing untrusted JSON are strongly recommended to upgrade.

Security Fixes

  1. Reject type names containing URL-special characters (:/!) in ParserConfig.checkAutoType and TypeUtils.loadClass, so a non-class-name string never reaches the class loader
  2. Verify the accept name text after a whitelist hash match, so a hash collision alone cannot whitelist a type name
  3. An accept prefix no longer covers ClassLoader/DataSource/RowSet gadget base types; only an accept entry naming the type in full is an explicit opt-in
  4. Fixed deny classes being cached by loadClass before the blacklist check, so a repeated checkAutoType call could return a blacklisted class from the cache

Maven Dependency Configuration

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.84</version>
</dependency>
中文版本

概述

安全修复版本,将 fastjson2 的 AutoType 加固回移到 1.2.x 版本线。强烈建议所有解析不可信 JSON 的用户升级。

安全修复

  1. ParserConfig.checkAutoTypeTypeUtils.loadClass 中拒绝包含 URL 特殊字符(:/!)的类型名,非类名字符串不再可能到达类加载器
  2. 白名单 hash 命中后增加 accept 名称文本回验,仅 hash 碰撞无法再绕过白名单
  3. accept 前缀不再覆盖 ClassLoader/DataSource/RowSet 等危险基类;只有完整类名的 accept 条目才视为显式放行
  4. 修复危险类在黑名单检查前被 loadClass 缓存的问题:此前重复调用 checkAutoType 可能从缓存中直接返回黑名单类

Maven 依赖配置

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.84</version>
</dependency>