Changes
core-js: Enforce 'WrapFactory' users to override new `wrap(...)` and `wrapAsJavaObject(...)` methods.
core-js: use 'ClassValue' for caching class-based TypeInfo.
core-js: a problem in dumpICode fixed and test coverage increased.
core-js: fix generator .return() to include value when in completed state.
core-js: Avoid compiling `a.eval()` as a direct eval call so all the prototypes are set up correctly.
Better separtion of the scope and the global this object.
core-js: Support for rest parameters in destructuring.
core-js: Respect custom [Symbol.hasInstance] implementations; look up of hasInstance walks prototype chain.
core-js: NativeError and RegEexp setup modernized.
core-js: Fix for setting of prototype and parent scopes on some new objects.
core-js: Fix scope used in iterator creation.
core-js: IdFunctionObject.isConstructor() to return useCallAsConstructor; now methods
like Date.prototype.getDate, RegExp.prototype.exec, etc. no longer incorrectly
reported as constructors.
Test suite updated to junit 6 and cleaned up.
Simplify logging configuration for our test by switching from log4j to logback-classic.
core-js: Add delete support to DOMStringMap.
core-js: Remove direct dependency to ScriptableObject from DOMStringMap and improve get/set impl.
core-js: migrate NativeDate away from IdScriptable.
core-js: internal code cleanup - drop support for versiuon 1.0 - 1.4
core-js: add a method to temporarily suspend microtask processing
core-js: Optimize regex backtracking for quantifiers before end-of-line anchor
core-js: JSON.parse fixed to preserve negative zero
core-js: use ThrowTypeError at all relevant places.
core-js: debugger eval for scripts and eval scope for top-level scripts fixed.
core-js: DataView Float16 support added.
Improved HttpMethod validation in XMLHttpRequest open('trace', ...).
XMLHttpRequest open('trace', ...) throws a security error.
The test suite now uses Jetty 12.1.
INCOMPATIBLE CHANGE: Cookie moved from package 'org.htmlunit.util' to 'org.htmlunit.http'
core-js: DataView BigInt64 and BigUInt64 support added
core-js: isConstructor check fixed and improved
core-js: major performance improvement for RegExp.prototype[Symbol.split] and RegExp.prototype[Symbol.replace]
core-js: improve the Number.toLocaleString() implementation; drop our own version
Use java.util.Objects.hash() instead org.apache.commons.lang3.builder.HashCodeBuilder.
Use java.util.Objects.hash() instead org.apache.commons.lang3.builder.HashCodeBuilder.
module-info.java added to all projects.
INCOMPATIBLE CHANGE: XmlUtilsXercesHelper and XmlUtilsSunXercesHelper removed (and the class XmlUtilsHelperAPI).
INCOMPATIBLE CHANGE: dependency to xercesImpl removed.
INCOMPATIBLE CHANGE: htmlunit-csp updated to Java 17.
INCOMPATIBLE CHANGE: htmlunit-cssparser updated to Java 17.
INCOMPATIBLE CHANGE: htmlunit-corejs updated to Java 17.
INCOMPATIBLE CHANGE: htmlunit-neko updated to Java 17.
INCOMPATIBLE CHANGE: htmlunit-xpath updated to Java 17.
DOMPointReadOnly, DOMRectReadOnly, DOMMatrixReadOnly, and PerformanceNavigation toJSON() implementation improved.
DOMPointReadOnly and DOMPoint implementation improved.
DOMRectReadOnly and DOMRect implementation improved, now we implement the whole interface.
cssparser: support for dvw, dvh, dvmin, dvmax, lvw, lvh, lvmin, lvmax, svw, svh, svmin, svmax unit added
cssparser: simplified error processing
cssparser: wrong escape sequence definition for letter 'o' fixed.
neko: minor improvements by replacing some equalsIgnoreCase() calls by simple equals().
core-js: improved handling of unimplemented rest parameters in destructuring
core-js: fix checking of proxy functions being constructors.
core-js: proxies refactored to be callable objects only if their initial target is callable
core-js: modernize and improve the approach used for 'caller' support
core-js: make 'caller' a function prototype property
core-js: make 'arguments' a function prototype property
core-js: make NativeCall attributes final
core-js: adjust our rhino fork to use the improved 'arguments' handling
core-js: improved interpreter performance by avoiding the need for activation frames
core-js: an off-by-one error in the lexer when encountering EOF fixed
core-js: initialise 'CallSite' against top level scope
core-js: implement support for destructuring in 'catch' to support things like 'catch ({message})' or 'catch ([a, b])'
core-js: incorrect destructuring in for loops handled at parse time
neko: inserted tags are in lowercase (at least if the option for uppercase tag names is not set)
core-js: Disambiguate local variable names to fix debugger issues.
core-js: Fix variable resolution in switch statements with let declarations (regression from 4.18.0)
core-js: default parameter evaluation ordering for generators fixed.
core-js: Symbol.toStringTag implemented for generators.
core-js: Destructuring support improved.
core-js: 'ES6Iterator' migrated to lambda based ScriptableObject.
core-js: 'DestructuringIterator' migrated to lambda based ScriptableObject.
core-js: 'NativeConsole' migrated to lambda based ScriptableObject.
core-js: 'ES6Generator' migrated to lambda based ScriptableObject.
core-js: 'NativeIterator' migrated to lambda based ScriptableObject.
HTMLElement#getAttributeNames() implemented.
HTMLElement#moveBefore() implemented (also for Document and DocumentFragment).
neko: code cleanup and warning fixes.
neko: code quality and minor performance improvements.
neko: refactor eof handling from exceptions to return codes.
core-js: fix wrapper symbol handling in setPrototypeOf.
core-js: Rewrite Symbol.prototype.keyFor to avoid ConcurrentModificationException.
Use our own ArrayUtils at more places.
Upgrade Apache commons-lang3 to 3.20.0.
core-js: support for spread in arrays added
Upgrade Apache commons-io to 2.21.0.
HTMLFormControlsCollection getOwnPropertyDescriptor() has to support fields by name and id.
core-js: Refactor internal property descriptors to not be 'ScriptableObjects'
core-js: some fixes for arguments support in strict mode
core-js: Replace number formatting operations on Number (toExponential, toFixed, and toPrecision)
core-js: fix/improve our enhanced arguments support
JavaScript timeout messages slightly improved.
WebClient.setJavaScriptTimeout(timeout) stops most JavaScript immediately. This is a regression compared to version 4.18.0.
neko: improve spec conformance of comment end detection
neko: use a separate flag to mark formatting elements (in sync with the spec)
neko: reopening of dangling formatting elements refactored, make it lazy to be able to suppress the repopen in case of empty elements
No longer use org.apache.commons.lang3.math.NumberUtils.
core-js: replace the NumberToString implementation with the Schubfach algorithm
Add basic support for parsing multipart/form-data fetch responses
XMLHttpRequest.getAllResponseHeaders() uses '\r\n' as delimiter in FF/FF_ESR also
evaluation of the proxy autoconf javascript code fixed (regression)
MutationEvent support removed for Firefox 144
CSS2Properties now named CSSStyleProperties in Firefox 144
Javascript configuration was broken if more than one JsxClass annotation defined for a single class
resync with the latest brotli code
core-js: improve/fix support for let statements inside switch statements
core-js: fix a bunch of issues with ThrowTypeError
core-js: fix interpreter bytecode printing
core-js: fixed exception in the interpreter when using many literal bigint
core-js: fix function.length with default arguments and length calculation with rest params
core-js: make 'Symbol()' comply with the spec. Specifically, it's handling of the second argument to the constructor.
core-js: support for yield* improved
core-js: builtin methods should have no 'prototype' property
core-js: many, many internal refactorings to open the door for further improvements
DOMMatrixReadOnly toString() and toJSON() implemented.
core-js: regular expressions with property escapes throwing a NPE (regression from 4.14.0).
DOMMatrixReadOnly isIdentity property implemented.
core-js: improve global symbol registry handling.
core-js: duplicate function keys in object literal now allowed.
Empty implementation of MessagePort.start() and MessagePort.close() added.
Detection of the window.postMessage() transfer parameter improved.
Deprecated methods HTMLParser.parse(WebResponse, HtmlPage, boolean, boolean),
HTMLParser.parseFragment(DomNode, DomNode, String, boolean),
and HTMLParser.parseFragment(DomNode, String) removed.
Deprecated method UrlUtils.decodeDataUrl(byte[]) removed.
Deprecated method AbstractJavaScriptConfiguration.isCompatible(SupportedBrowser, SupportedBrowser) removed.
Deprecated class org.htmlunit.html.DomNode.DescendantElementsIterator removed.
Use a new HTMLElementsWithCache object for each neko parser run to avoid race conditions under load.
neko: some optimizations for HTMLElementsProvider/HTMLElements/HTMLElementsWithCache.
neko: introduce HTMLElementsProvider and HTMLElementsWithCache.
core-js: 'eval'of a function is now undefined.
core-js: duplicate properties in object literal now allowed.
Window.top has no setter.
Upgrade Apache commons-lang3 to 3.19.0.
Initial support for the :has() pseudo selector added.
Initial support for the :where() pseudo selector added.
Initial support for the :is() pseudo selector added.
XMLHttpRequest now supports data url's.
Head request for a data url now returning an empty response.
HtmxTwoZeroSevenScriptPreProcessor added; this is required for htmx 2.0.3-2.0.7.
Tests for htmx 2.0.4-2.0.7 added.
core-js: fix template literal string conversion for ECMAScript compliance
core-js: fix Array.from to prioritize iterable over array-like objects
CSS.escape() javascript method added.
Fix URL constructor to support also the data scheme.
DOMMatrix and DOMMatrixReadOnly stubs replaced by a real implementation (incomplete).
Properly synchronize access to httpClientBuilder_ in class HttpWebConnection.
core-js: fix error stack generation in interpreted mode and report the correct line number
core-js: don't propagate strict flag when compiling scripts and we already
have an active context in strict mode
core-js: a problem with toString() on arrow functions fixed
core-js: ES2025 Error.isError static method implemented
core-js: ES2025 Math.f16round method implemented
HtmlLink.getWebResponse(...) now also works when the JavaScript engine is disabled.
BroadcastChannel stub replaced by a real implementation.
UrlUtils.isSameOrigin(URL, URL) added and used by XMLHttpRequest
SameOrigin check has to check the protocol also.
core-js: infer function names at runtime for computed properties
core-js: Several fixes for calling bind() in the interpreter (regression from 4.14.0)
core-js: ES2025 ArrayBuffer transfer(), and transferToFixedLength() implemented
core-js: internal optimizations to make 'undefined' lookup faster
core-js: ES2025 Set methods intersection(), union(), difference(), symmetricDifference(), isSubsetOf(),
isSupersetOf(), and isDisjointFrom() implemented
core-js: make Object.assign copy over Symbol properties
core-js: some methods should not have a prototype property
core-js: ES2025 Promise.try implemented
core-js: spread for object literals implemented
neko: do not check for bom headers on compressed streams
WebClient waitForBackgroundJavaScript(long), waitForBackgroundJavaScriptStartingBefore(long), and
waitForBackgroundJavaScriptStartingBefore(long, long) no longer marked as experimental.
Use our own 'fork' of the current brotli source code. This makes some fixes available that are
done in the code base but not release so far.
Use our own StringUtils at more places to be compatible with older commons lang versions.
Handling of CData sections in XHTML documents improved/fixed.
WebAssert messages reviewed and improved.
WebAssert got various improvements and more complete unit tests.
Improve WebAssert javadoc.
Improve WebClientOptions javadoc.
neko: improved features/properties documentation
neko: fix missing property/feature handling for HTMLScanner.setFeature() and HTMLScanner.setProperty().
core-js: Fix two more regressions from the Interpreter refactoring. Various combinations
of apply/bind/call now working again.
websocket-client: jetty updated to 9.4.58.v20250814.
core-js: Fix a regression regarding optional chaining operators.
neko: Always call detectEncoding() to skip bom in case we got an input stream with bom and an encoding.
neko: increase PlaybackInputStream buffer size
neko: NekoSAXParser Factory added
WebClient option pageRefreshLimit added. Refresh handling changed to support a clear limit.
The initial value is 72 to be backward compatible.
Dummy implementation of PointerEvent#getPersistentDeviceId() returning always 0.
The parser for the refresh header has been rewritten.
Thanks to a series of additional tests, we are now much closer to real browsers.
core-js: TypedArray.from and TypedArray.of implemented.
New sister project 'jsoup-bridge' (https://github.com/HtmlUnit/htmlunit?tab=readme-ov-file#jsoup-bridge).
Switched to sonatype central-publishing for snapshots and release builds.
New method WebClinet.waitForBackgroundJavaScriptStartingBefore(final long delayMillis, final long timeoutMillis)
that combines a overall timeout with waiting for js tasks starting before.
Avoid ConcurrentModificationException in HtmlPage.deregisterFramesIfNeeded()
Separate developer documentation to help people start working on this project
MutationEvent is still available in FF but not as global
Some fixes for the ctor prototype setup
code cleanup based on PMD - use isEmpty() in more places
core-js: Infer function name when declared in a var/let statement implemented
core-js: Promise.withResolvers() added
core-js: assigning values to super got some improvements
core-js: BigInt.asUintN and BigInt.asIntN implementation fixed
core-js: code simplification for support of different JDKs
core-js: huge refactoring of the interpreter for more speed and easier maintenance
core-js: '__parent__' property is no longer available
core-js: refactored exception and stack handling
core-js: The Builtins and the Regexp initializer migrated from reflection to lambda
core-js: major '__proto__' support update bringing the '__proto__' support in line
with the spec and with real browsers. This also includes support for
the strange function 'shorthand' case for __proto_.
core-js: refactored CallFrame to keep stack as immutable linked list.
core-js: fix how 'this' is handled when calling `Array.from` in some edge cases,
when `null` or 'undefined' were passed as the `this` argument
SBOM (CycloneDX format) added.
core-js: minor code optimization.
core-js: typo in prototype detection fixed.
core-js: Code cleanup.
neko: fix ParentNode#getTextContent()
neko: introduce Element.SCRIPT_SUPPORTING flag for HTMLElements
Upgrade Apache commons-io to 2.20.0.
Upgrade Apache commons-lang3 to 3.18.0.
core-js: UnicodeMode support for regexp added.
core-js: ArrayBuffer detach() support added.
Major improvements for the asXML() function.
Test suite updated to junit 5 and cleaned up.
The hidden attribute now supports the 'until-found' value.
INCOMPATIBLE CHANGE: To add support for the 'until-found' hidden attribute value, the parameter
handling of method HtmlElement.setHidden(String) was changed. Please have a look at the javadoc for
details about the current implementation.
jQuery 1.12.4 test suite added.
jQuery 1.8.2, 1.11.3, and 3.3.1 test suite refreshed.
FF139: SVGDiscardElement is gone (again).
getClientRects() returns an empty list for hidden inputs. This fixes also a problem with
the :hidden jQuery selector.
The prototype for DOMRect is now DOMRectReadOnly.
Internal javascript class ClientRect renamed to DOMRect (the old name was a leftover from IE).
Internal javascript class ClientRectList renamed to DOMRectList (the old name was a leftover from IE).
core-js: Adjust order of evaluation of function arguments to match the spec.
core-js: Major tidy up of 'NativeTypedArrayView' to better match spec.
core-js: Refactor functions to be lambdas rather than IdScriptableObject's.
The prototype for HTMLAllCollectionis no longer the HTMLCollection, it is now object.
HTMLTableCellElement now supports the 'align', 'ch', 'chOff', 'headers', 'height', 'noWrap',
'rowSpan', 'scope', 'vAlign', 'width' properties.
HTMLTableColElement now supports the 'align', 'ch', 'chOff', and 'vAlign' properties.
Internal javascript class HTMLTableComponent removed. The prototype for HTMLTableCellElement,
HTMLTableColElement, and HTMLTableRowElement is now the correct HTMLElement.
HTMLTableSectionElement now supports the deleteRow() and insertRow() functions.
HTMLTableSectionElement now supports the 'align' and 'rows' properties.
HTMLTableElement now supports the deleteRow() and insertRow() functions.
HTMLTableElement now supports the 'align' and 'rows' properties.
Internal javascript class RowContainer removed. The prototype for HTMLTableElement, and
HTMLTableSectionElement is now the correct HTMLElement.
HTMLUListElement now supports the 'compact' property.
HTMLOListElement now supports the 'compact' property.
HTMLMenuElement now supports the 'compact' property.
HTMLLIElement now supports the 'type' property.
HTMLDListElement now supports the 'compact' property.
HTMLDListElement now supports the 'compact' property.
Internal javascript class HTMLListElement removed. The prototype for HTMLDListElement,
HTMLDirectoryElement, HTMLLIElement, HTMLMenuElement, HTMLOListElement, and HTMLUListElement
is now the correct HTMLElement.
Internal javascript class HTMLListElement removed. The prototype for HTMLDListElement,
HTMLDirectoryElement, HTMLLIElement, HTMLMenuElement, HTMLOListElement, andHTMLUListElement
is now the correct HTMLElement.
Javascript class configuration reworked, this allows some optimizations in the furture.
Constructor prototype fixes, now we have the correct prototypes for most classes.
The RecursiveFunctionObject workaround is no longer required.
DomNodeIterator is now serializable.
FF138: adjust datetimeformat for several locales.
Chrome/Edge 136: Clicking an image input no longer submits the value as param.
FF138: Frame elements are accessible by name.
FF138: Error.captureStackTrace() is supported.
FF138: js constant maxActions added to Notification.
FF138: stylesheet links checking the content type for 'text/css'.
WebClient option NekoReaderBufferSize added. You can use this to increase the buffer size used by
the Neko Html parser to optimize parsing performance.
HTMLParser parseFragment(DomNode, String), parse(WebResponse, HtmlPage, boolean, boolean), and
parseFragment(DomNode, DomNode, String, boolean) are deprecated.
neko: HTMLScanner always requires a document handler; the null check is moved to the setter
and all the others are removed.
neko: avoid HTML1011 error for self closing tags.
neko: ignore whitespace before the closing > when parsing special tags.
neko: remove two superfluous conversions from the code.
core-js: NativeArray impl is now lambda based.
core-js: improved date string parser; support optional ms digits,
skip ms digits, extended year support is not available in es6
core-js: detailed message added to IndexOutOfBoundsExceptions
core-js: add double null check pattern when initializing cache values.
DomTokenList.forEach() now takes care of the current state of the list
(e.g. the forEach function might add/remove elements to the list itself).
NodeList.forEach() now takes care of the current state of the list
(e.g. the forEach function might add/remove elements to the list itself).
AlertHandler, ConfirmHandler, FrameContentHandler, CharacterDataChangeListener, and IncorrectnessListener
marked as @FunctionalInterface.
Upgrade Apache commons-io to 2.19.0.
Element.scrollIntoView() now triggers scroll events on all parents.
For FF scroll events are of type UIEvent.
Scroll events are not bubbling and not cancelable.
core-js: Function.prototype[Symbol.hasInstance] fixed.
core-js: regression in hex and unicode hex parsing or regexp fixed
CSS blockSize support improved.
core-js: Complete reimplementation of 'String.prototype.search', 'String.prototype.replace',
'String.prototype.replaceAll', and 'String.prototype.split'. The new impl is much closer to the spec.
core-js: Fix a character class parsing regression for regexp.
core-js: Fix handling of \x and \u in regexp.
FF137: SVGDiscardElement added.
Chrome/Edge 135, FF137: Setter validation for length style properties adjusted.
Chrome/Edge 135: Style properties 'interactivity', 'overflowBlock', 'overflowInline', and 'scrollMarkerGroup' added.
FF137: Adjust clientHeight for some ruby related tags.
Chrome/Edge 135, FF137: Improved namespace handling when sending an html document via XMLHttpRequest.
Chrome/Edge 135: Improved <br> handling in options tags.
Chrome/Edge 135, FF137: Fixed font sizes for smaller/larger CSS property value.
FF137: Set span for table cells to zero if provided value is invalid.
core-js: Some fixes for strict handling.
core-js: Several code improvements for the RegExp implementation.
WebClient.setWebSocketAdapter(WebSocketAdapterFactory) added. This should
help to use a different WebSocket implementation.
WebSocketAdapter splitted into WebSocketAdapter and WebSocketListener.
New interface WebSocketAdapterFactory introduced. This should help to
make it simpler to use a different WebSocket implementation.
core-js: Named capture groups in RegularExpressions now supported.
Deprecated method CssStyleSheet.validateSelectors(SelectorList, int, DomNode) removed.
Deprecated method HtmlForm.getElements() removed.
Deprecated method WebRequest.setRefererlHeader(URL) removed.
NumberFormatException when calculating the clientHeight/offsetHeight.
Event 'onload' is triggered by FF ESR also if the frame content was not shown because of csp.
Initial support for font sizes 'xx-small', 'x-small', 'small', 'medium', 'large',
'x-large', 'xx-large', 'xxx-large', 'smaller', and 'larger'.
core-js: Refactor NativeString based on lambdas and stop using IdScriptableObject.
The style cache has to handle all parents of added or deleted nodes.
Class HiddenFunctionObject removed, this was a leftover from the IE age.
core-js: Arguments.callee is always the same function in strict mode.
core-js: Arguments.caller is not available in real browsers.
core-js: An issue where capture groups in quantified expressions (min = 2) were not cleared between iterations fixed.
For example, in /(?:(\2)(\d)){2}/, during the second iteration, \2 incorrectly retained the first iteration's value instead of being reset.
Switched back from our RegExp translation into Java regular expressions to use the core Rhino stuff. Rhino made significant
progress in this area. This simplifies our implementation and supports more features in the future.
core-js: RegExp lookbehind implemented.
core-js: NativeObject converted from IdScriptableObject to lambda constructor
core-js: problem with 'super' and nested lambdas
core-js: RegExp.prototype[Symbol.match] and String.prototype.match.
core-js: Implement Symbol.match.
core-js: String.prototype.match. As per the spec, it is simply supposed to invoke the Symbol.match of the regexp.
core-js: Fix the behavior of Regexp sticky flag.
Deprecated methods removed from EncodingSniffer, HttpClientConverter, WebResponse, and WebResponseWrapper.
cssparser: improved support for var initial values.
Apache commons-codec is no longer a runtime dependency.
atob() has to remove all whitespace from the provided string.
atob() must always fail on invalid input.
The script async attribute is ignored if the src attribute is absent.
Many more checkstyle jdoc rules enabled and all violations fixed.
HtmlImage onerror event is triggered for 204 responses.
Some minor code improvements found by spotbugs.
Some more event initialization fixes.
Fix various event initialization when working with WebSocket's.
core-js: NativeGlobal now based on lambda functions.
Avoid using XPath for implementing form submit on enter key pressed.
Implement Document.getElementById() without using XPath.
NPE in org.htmlunit.javascript.JavaScriptEngine.asJavaScriptException().
Upgrade commons-logging to 1.3.5.
StyleElement implements no longer the Comparable interface. For our special needs we now using the
static method compareToByImportanceAndSpecificity(StyleElement, StyleElement).
core-js: load more classes lazily.
HtmlUrlInput value trimming fixed.
Replace the deprecated WebElement.getAttribute(String) with getDomAttribute(String) and getDomProperty(String)
at many places in the test suite.
Use StandardCharsets.UTF_8 instead of Charsets.UTF_8 for the sample code.
HtmlTextArea - several fixes to throw the correct error.
AudioContext/OfflineAudioContext - several fixes to throw the correct error.
'Illegal constructor' is a type error.
Firefox ESR accept header no longer contains 'image/avif,image/webp,image/png,image/svg+xml'.
core-js: BigInt, Boolean and Number converted to use lambdas.
core-js: Function hoisting inside blocks is now a core Rhino feature, our own hack is gone.
core-js: Map and Set converted to use lambdas.
core-js: lambda-based classes serializable are serializable.
core-js: bunch of changes to make the SlotMap handling faster.
CSSStyleSheet - several fixes to throw the correct error.
XPath.evaluate() throws a TypeError.
Document - several fixes to throw the correct error.
XMLHttpRequest - several fixes to throw the correct error.
Geolocation.ctor() throws a TypeError.
TreeWalker.ctor() throws a TypeError.
MutationObserver.observe() throws a TypeError.
DOMParser.parseFromString() throws a TypeError.
Window.postMessage() throws a SyntaxError.
Window.atob()/btoa() throws an InvalidCharacterError.
DomNode.appendChild() throws a HierarchyRequestError.
AbstractRange.ctor() throws a TypeError.
DOMTokenList - several fixes to throw the correct error.
CSSGroupingRule - several fixes to throw the correct error.
HTMLInputElement value/selectionStart/selectionEnd properties throws the correct error (InvalidStateError).
SVGMatrix.rotateFromVector()/inverse() throws the correct error (InvalidAccessError/InvalidStateError).
Crypto.getRandomValues() throws a QuotaExceededError.
CanvasRenderingContext2D.measureText() throws a TypeError.
HTMLTableElement/HTMLTableRowElement - several fixes to throw the correct error.
Element.querySelectorAll()/querySelector() throws a SyntaxError.
HTMLOptionsCollection.add() throws a NotFoundError.
Accessing a HTMLDocument without a js peer throws a TypeError.
Document.createElementNS() throws a TypeError.
Document.createElementNS() throws a TypeError.
Selection.getRangeAt() throws an IndexSizeError.
Node.replaceChild()/removeChild()/insertBefore() several fixes to throw the correct error.
HTMLDocument.appendChild() throws HierarchyRequestError.
Document.createElement() throws InvalidCharacterError.
ImageData.ctor() various fixes to throw the correct error in different situations.
CharacterData.deleteData() throws an IndexSizeError.
Document.querySelectorAll() throws a SyntaxError if the selector is invalid.
Document.createEvent() creates the correct exception when the event type is not supported.
DOMException name property was missing.
Handling of the error code when construction DOMException is fixed.
Document.evaluate() now throws a SyntaxError instead of an InternalError.
Upgrade commons-codec to 1.18.0.
WebClientOptions sslClientCertificateStore is transient.
WebClientOptions SSLTrustStore is transient.
WebClientOptions.Geolocation is serializable now
HtmlDomTreeWalker is serializable now
core-js: junit-vintage-engine was NOT marked as 'test' dependency, therefore we had junit
as part of our depenencies/lib/diestribution (regression from 4.8.0)
BigInt support added.
core-js: Symbol.hasInstance for Function.prototype implemented.
core-js: Context#emptyArgs is deprecated.
cssparser: support plain color definitions with var/calc.
cssparser: 'and' is a valid class name.
cssparser: support relative color definitions.
websocket-client: jetty updated to 9.4.57.v20241219.
core-js: add an empty slot map (singleton) for cases where no slots exist; this should reduce the memory needed a bit
core-js: methods cannot be used as constructor fixed
Upgrade commons-codec to 1.17.2.
Apache commons-net is no longer a runtime dependency.
Apache commons-text is no longer a runtime dependency.
core-js: Extract function calling out of the interpreter loop for performance.
Avoid ConcurrentModificationExceptions in frame processing.
core-js: handle stack frames in the correct order.
cssparser: support hwb(), lab(), lch(), oklab(), and oklch() color definitions.
cssparser: add support for 'none' in modern color definitions.
core-js: fix border checks for typedarray set-method (see https://github.com/HtmlUnit/htmlunit-core-js/issues/27)
core-js: Allow symbol keys in getter/setter in object literal syntax like 'var o = { get [aSymbol]: value }'.
core-js: Support for generator methods in object literals like 'o = {*g() {...}}' added.
core-js: Implement the super operator - which can actually be used outside of classes and will do something that intuitively is "refer to the prototype".
core-js: Fix tokenEnd and cursor for string, template, xml literals and multiline comments when using multibyte characters.
FAQ updated with some info about page history.
DomElement#getStaticElementsByTagName() has to check for prefix.
Upgrade Apache commons-text to 1.13.0.
core-js: Some improvements for the interpreter by generating smaller interpreter bytecode.