-
-
Notifications
You must be signed in to change notification settings - Fork 183
Expand file tree
/
Copy pathchanges.xml
More file actions
1331 lines (1300 loc) · 65.7 KB
/
changes.xml
File metadata and controls
1331 lines (1300 loc) · 65.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0"?>
<document xmlns="http://maven.apache.org/changes/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
<properties>
<title>Changes</title>
</properties>
<body>
<release version="5.0.0" date="April 01, 2026" description="jdk17, Bugfixes">
<action type="update" dev="RhinoTeam">
core-js: Enforce 'WrapFactory' users to override new `wrap(...)` and `wrapAsJavaObject(...)` methods.
</action>
<action type="update" dev="RhinoTeam">
core-js: use 'ClassValue' for caching class-based TypeInfo.
</action>
<action type="update" dev="RhinoTeam">
core-js: a problem in dumpICode fixed and test coverage increased.
</action>
<action type="update" dev="RhinoTeam">
core-js: fix generator .return() to include value when in completed state.
</action>
<action type="update" dev="RhinoTeam">
core-js: Avoid compiling `a.eval()` as a direct eval call so all the prototypes are set up correctly.
</action>
<action type="update" dev="rbri">
Better separtion of the scope and the global this object.
</action>
<action type="update" dev="RhinoTeam">
core-js: Support for rest parameters in destructuring.
</action>
<action type="update" dev="RhinoTeam">
core-js: Respect custom [Symbol.hasInstance] implementations; look up of hasInstance walks prototype chain.
</action>
<action type="update" dev="RhinoTeam">
core-js: NativeError and RegEexp setup modernized.
</action>
<action type="fix" dev="RhinoTeam">
core-js: Fix for setting of prototype and parent scopes on some new objects.
</action>
<action type="fix" dev="RhinoTeam">
core-js: Fix scope used in iterator creation.
</action>
<action type="update" dev="RhinoTeam">
core-js: IdFunctionObject.isConstructor() to return useCallAsConstructor; now methods
like Date.prototype.getDate, RegExp.prototype.exec, etc. no longer incorrectly
reported as constructors.
</action>
<action type="update" dev="rbri">
Test suite updated to junit 6 and cleaned up.
</action>
<action type="update" dev="rbri">
Simplify logging configuration for our test by switching from log4j to logback-classic.
</action>
<action type="add" dev="RhinoTeam">
core-js: Add delete support to DOMStringMap.
</action>
<action type="update" dev="RhinoTeam">
core-js: Remove direct dependency to ScriptableObject from DOMStringMap and improve get/set impl.
</action>
<action type="add" dev="RhinoTeam">
core-js: migrate NativeDate away from IdScriptable.
</action>
<action type="add" dev="RhinoTeam">
core-js: internal code cleanup - drop support for versiuon 1.0 - 1.4
</action>
<action type="add" dev="RhinoTeam">
core-js: add a method to temporarily suspend microtask processing
</action>
<action type="update" dev="RhinoTeam">
core-js: Optimize regex backtracking for quantifiers before end-of-line anchor
</action>
<action type="fix" dev="RhinoTeam">
core-js: JSON.parse fixed to preserve negative zero
</action>
<action type="fix" dev="rbri">
core-js: use ThrowTypeError at all relevant places.
</action>
<action type="fix" dev="RhinoTeam">
core-js: debugger eval for scripts and eval scope for top-level scripts fixed.
</action>
<action type="add" dev="RhinoTeam">
core-js: DataView Float16 support added.
</action>
<action type="update" dev="rbri">
Improved HttpMethod validation in XMLHttpRequest open('trace', ...).
</action>
<action type="fix" dev="rbri">
XMLHttpRequest open('trace', ...) throws a security error.
</action>
<action type="update" dev="RhinoTeam">
The test suite now uses Jetty 12.1.
</action>
<action type="update" dev="rbri">
INCOMPATIBLE CHANGE: Cookie moved from package 'org.htmlunit.util' to 'org.htmlunit.http'
</action>
<action type="add" dev="RhinoTeam">
core-js: DataView BigInt64 and BigUInt64 support added
</action>
<action type="update" dev="RhinoTeam">
core-js: isConstructor check fixed and improved
</action>
<action type="update" dev="RhinoTeam">
core-js: major performance improvement for RegExp.prototype[Symbol.split] and RegExp.prototype[Symbol.replace]
</action>
<action type="update" dev="rbri">
core-js: improve the Number.toLocaleString() implementation; drop our own version
</action>
<action type="update" dev="rbri">
Use java.util.Objects.hash() instead org.apache.commons.lang3.builder.HashCodeBuilder.
</action>
<action type="update" dev="rbri">
Use java.util.Objects.hash() instead org.apache.commons.lang3.builder.HashCodeBuilder.
</action>
<action type="update" dev="rbri">
module-info.java added to all projects.
</action>
<action type="update" dev="rbri">
INCOMPATIBLE CHANGE: XmlUtilsXercesHelper and XmlUtilsSunXercesHelper removed (and the class XmlUtilsHelperAPI).
</action>
<action type="update" dev="rbri">
INCOMPATIBLE CHANGE: dependency to xercesImpl removed.
</action>
<action type="update" dev="rbri">
INCOMPATIBLE CHANGE: htmlunit-csp updated to Java 17.
</action>
<action type="update" dev="rbri">
INCOMPATIBLE CHANGE: htmlunit-cssparser updated to Java 17.
</action>
<action type="update" dev="rbri">
INCOMPATIBLE CHANGE: htmlunit-corejs updated to Java 17.
</action>
<action type="update" dev="rbri">
INCOMPATIBLE CHANGE: htmlunit-neko updated to Java 17.
</action>
<action type="update" dev="rbri">
INCOMPATIBLE CHANGE: htmlunit-xpath updated to Java 17.
</action>
</release>
<release version="4.21.0" date="December 28, 2025" description="Firefox 146, core-js, Bugfixes">
<action type="update" dev="rbri">
DOMPointReadOnly, DOMRectReadOnly, DOMMatrixReadOnly, and PerformanceNavigation toJSON() implementation improved.
</action>
<action type="update" dev="rbri">
DOMPointReadOnly and DOMPoint implementation improved.
</action>
<action type="add" dev="rbri">
DOMRectReadOnly and DOMRect implementation improved, now we implement the whole interface.
</action>
<action type="add" dev="rbri">
cssparser: support for dvw, dvh, dvmin, dvmax, lvw, lvh, lvmin, lvmax, svw, svh, svmin, svmax unit added
</action>
<action type="update" dev="rbri">
cssparser: simplified error processing
</action>
<action type="fix" dev="rbri">
cssparser: wrong escape sequence definition for letter 'o' fixed.
</action>
<action type="update" dev="rbri">
neko: minor improvements by replacing some equalsIgnoreCase() calls by simple equals().
</action>
<action type="update" dev="RhinoTeam">
core-js: improved handling of unimplemented rest parameters in destructuring
</action>
<action type="fix" dev="RhinoTeam">
core-js: fix checking of proxy functions being constructors.
</action>
<action type="update" dev="RhinoTeam">
core-js: proxies refactored to be callable objects only if their initial target is callable
</action>
<action type="update" dev="rbri">
core-js: modernize and improve the approach used for 'caller' support
</action>
<action type="update" dev="rbri" issue="#1064">
core-js: make 'caller' a function prototype property
</action>
<action type="update" dev="rbri">
core-js: make 'arguments' a function prototype property
</action>
<action type="update" dev="rbri">
core-js: make NativeCall attributes final
</action>
<action type="update" dev="rbri">
core-js: adjust our rhino fork to use the improved 'arguments' handling
</action>
<action type="update" dev="RhinoTeam">
core-js: improved interpreter performance by avoiding the need for activation frames
</action>
<action type="update" dev="RhinoTeam">
core-js: an off-by-one error in the lexer when encountering EOF fixed
</action>
<action type="update" dev="RhinoTeam">
core-js: initialise 'CallSite' against top level scope
</action>
<action type="update" dev="RhinoTeam">
core-js: implement support for destructuring in 'catch' to support things like 'catch ({message})' or 'catch ([a, b])'
</action>
<action type="update" dev="RhinoTeam">
core-js: incorrect destructuring in for loops handled at parse time
</action>
<action type="update" dev="rbri">
neko: inserted tags are in lowercase (at least if the option for uppercase tag names is not set)
</action>
</release>
<release version="4.20.0" date="December 07, 2025" description="Chrome/Edge 143, core-js, Bugfixes">
<action type="update" dev="RhinoTeam">
core-js: Disambiguate local variable names to fix debugger issues.
</action>
<action type="fix" dev="RhinoTeam">
core-js: Fix variable resolution in switch statements with let declarations (regression from 4.18.0)
</action>
<action type="update" dev="RhinoTeam">
core-js: default parameter evaluation ordering for generators fixed.
</action>
<action type="add" dev="RhinoTeam">
core-js: Symbol.toStringTag implemented for generators.
</action>
<action type="update" dev="RhinoTeam">
core-js: Destructuring support improved.
</action>
<action type="update" dev="RhinoTeam">
core-js: 'ES6Iterator' migrated to lambda based ScriptableObject.
</action>
<action type="update" dev="RhinoTeam">
core-js: 'DestructuringIterator' migrated to lambda based ScriptableObject.
</action>
<action type="update" dev="RhinoTeam">
core-js: 'NativeConsole' migrated to lambda based ScriptableObject.
</action>
<action type="update" dev="RhinoTeam">
core-js: 'ES6Generator' migrated to lambda based ScriptableObject.
</action>
<action type="update" dev="RhinoTeam">
core-js: 'NativeIterator' migrated to lambda based ScriptableObject.
</action>
<action type="add" dev="rbri">
HTMLElement#getAttributeNames() implemented.
</action>
<action type="add" dev="rbri" issue="#1053">
HTMLElement#moveBefore() implemented (also for Document and DocumentFragment).
</action>
<action type="update" dev="rbri">
neko: code cleanup and warning fixes.
</action>
</release>
<release version="4.19.0" date="November 23, 2025" description="Chrome/Edge 142, Firefox 145, support spread in arrays, neko improvements, Bugfixes">
<action type="update" dev="rbri">
neko: code quality and minor performance improvements.
</action>
<action type="update" dev="rbri">
neko: refactor eof handling from exceptions to return codes.
</action>
<action type="fix" dev="rbri">
core-js: fix wrapper symbol handling in setPrototypeOf.
</action>
<action type="update" dev="RhinoTeam">
core-js: Rewrite Symbol.prototype.keyFor to avoid ConcurrentModificationException.
</action>
<action type="update" dev="rbri">
Use our own ArrayUtils at more places.
</action>
<action type="update" dev="rbri">
Upgrade Apache commons-lang3 to 3.20.0.
</action>
<action type="add" dev="RhinoTeam">
core-js: support for spread in arrays added
</action>
<action type="update" dev="rbri">
Upgrade Apache commons-io to 2.21.0.
</action>
<action type="update" dev="rbri">
HTMLFormControlsCollection getOwnPropertyDescriptor() has to support fields by name and id.
</action>
<action type="update" dev="RhinoTeam">
core-js: Refactor internal property descriptors to not be 'ScriptableObjects'
</action>
<action type="fix" dev="rbri">
core-js: some fixes for arguments support in strict mode
</action>
<action type="update" dev="RhinoTeam">
core-js: Replace number formatting operations on Number (toExponential, toFixed, and toPrecision)
</action>
<action type="update" dev="rbri">
core-js: fix/improve our enhanced arguments support
</action>
<action type="update" dev="rbri">
JavaScript timeout messages slightly improved.
</action>
<action type="fix" dev="rbri" issue="#1057">
WebClient.setJavaScriptTimeout(timeout) stops most JavaScript immediately. This is a regression compared to version 4.18.0.
</action>
<action type="update" dev="rbri">
neko: improve spec conformance of comment end detection
</action>
<action type="update" dev="rbri">
neko: use a separate flag to mark formatting elements (in sync with the spec)
</action>
<action type="update" dev="rbri">
neko: reopening of dangling formatting elements refactored, make it lazy to be able to suppress the repopen in case of empty elements
</action>
<action type="update" dev="rbri">
No longer use org.apache.commons.lang3.math.NumberUtils.
</action>
</release>
<release version="4.18.0" date="October 30, 2025" description="Chrome/Edge 141, Firefox 144, FirefoxESR 140, javascript, Bugfixes">
<action type="update" dev="RhinoTeam">
core-js: replace the NumberToString implementation with the Schubfach algorithm
</action>
<action type="add" dev="das7pad">
Add basic support for parsing multipart/form-data fetch responses
</action>
<action type="fix" dev="rbri">
XMLHttpRequest.getAllResponseHeaders() uses '\r\n' as delimiter in FF/FF_ESR also
</action>
<action type="fix" dev="rbri">
evaluation of the proxy autoconf javascript code fixed (regression)
</action>
<action type="remove" dev="rbri">
MutationEvent support removed for Firefox 144
</action>
<action type="update" dev="rbri">
CSS2Properties now named CSSStyleProperties in Firefox 144
</action>
<action type="fix" dev="rbri">
Javascript configuration was broken if more than one JsxClass annotation defined for a single class
</action>
<action type="update" dev="rbri">
resync with the latest brotli code
</action>
<action type="update" dev="RhinoTeam" issue="#1040">
core-js: improve/fix support for let statements inside switch statements
</action>
<action type="fix" dev="rbri">
core-js: fix a bunch of issues with ThrowTypeError
</action>
<action type="fix" dev="RhinoTeam">
core-js: fix interpreter bytecode printing
</action>
<action type="fix" dev="RhinoTeam">
core-js: fixed exception in the interpreter when using many literal bigint
</action>
<action type="fix" dev="RhinoTeam">
core-js: fix function.length with default arguments and length calculation with rest params
</action>
<action type="fix" dev="RhinoTeam">
core-js: make 'Symbol()' comply with the spec. Specifically, it's handling of the second argument to the constructor.
</action>
<action type="update" dev="RhinoTeam">
core-js: support for yield* improved
</action>
<action type="fix" dev="RhinoTeam">
core-js: builtin methods should have no 'prototype' property
</action>
<action type="update" dev="RhinoTeam">
core-js: many, many internal refactorings to open the door for further improvements
</action>
<action type="add" dev="rbri">
DOMMatrixReadOnly toString() and toJSON() implemented.
</action>
<action type="fix" dev="rbri" issue="#1046">
core-js: regular expressions with property escapes throwing a NPE (regression from 4.14.0).
</action>
<action type="add" dev="rbri">
DOMMatrixReadOnly isIdentity property implemented.
</action>
<action type="fix" dev="RhinoTeam">
core-js: improve global symbol registry handling.
</action>
</release>
<release version="4.17.0" date="October 05, 2025" description="Chrome/Edge 140, Firefox 142, css :has(), :is(), :where(), BroadcastChannel, Bugfixes">
<action type="fix" dev="RhinoTeam">
core-js: duplicate function keys in object literal now allowed.
</action>
<action type="add" dev="rbri">
Empty implementation of MessagePort.start() and MessagePort.close() added.
</action>
<action type="fix" dev="rbri">
Detection of the window.postMessage() transfer parameter improved.
</action>
<action type="remove" dev="rbri">
Deprecated methods HTMLParser.parse(WebResponse, HtmlPage, boolean, boolean),
HTMLParser.parseFragment(DomNode, DomNode, String, boolean),
and HTMLParser.parseFragment(DomNode, String) removed.
</action>
<action type="remove" dev="rbri">
Deprecated method UrlUtils.decodeDataUrl(byte[]) removed.
</action>
<action type="remove" dev="rbri">
Deprecated method AbstractJavaScriptConfiguration.isCompatible(SupportedBrowser, SupportedBrowser) removed.
</action>
<action type="remove" dev="rbri">
Deprecated class org.htmlunit.html.DomNode.DescendantElementsIterator removed.
</action>
<action type="update" dev="Rene Schwietzke">
Use a new HTMLElementsWithCache object for each neko parser run to avoid race conditions under load.
</action>
<action type="update" dev="Rene Schwietzke">
neko: some optimizations for HTMLElementsProvider/HTMLElements/HTMLElementsWithCache.
</action>
<action type="add" dev="rbri">
neko: introduce HTMLElementsProvider and HTMLElementsWithCache.
</action>
<action type="fix" dev="RhinoTeam">
core-js: 'eval'of a function is now undefined.
</action>
<action type="fix" dev="RhinoTeam">
core-js: duplicate properties in object literal now allowed.
</action>
<action type="fix" dev="rbri">
Window.top has no setter.
</action>
<action type="update" dev="rbri">
Upgrade Apache commons-lang3 to 3.19.0.
</action>
<action type="add" dev="rbri">
Initial support for the :has() pseudo selector added.
</action>
<action type="add" dev="rbri">
Initial support for the :where() pseudo selector added.
</action>
<action type="add" dev="rbri">
Initial support for the :is() pseudo selector added.
</action>
<action type="add" dev="rbri">
XMLHttpRequest now supports data url's.
</action>
<action type="fix" dev="rbri">
Head request for a data url now returning an empty response.
</action>
<action type="add" dev="rbri">
HtmxTwoZeroSevenScriptPreProcessor added; this is required for htmx 2.0.3-2.0.7.
</action>
<action type="add" dev="rbri">
Tests for htmx 2.0.4-2.0.7 added.
</action>
<action type="fix" dev="RhinoTeam">
core-js: fix template literal string conversion for ECMAScript compliance
</action>
<action type="fix" dev="RhinoTeam">
core-js: fix Array.from to prioritize iterable over array-like objects
</action>
<action type="add" dev="rbri">
CSS.escape() javascript method added.
</action>
<action type="fix" dev="rbri">
Fix URL constructor to support also the data scheme.
</action>
<action type="add" dev="rbri" issue="#371">
DOMMatrix and DOMMatrixReadOnly stubs replaced by a real implementation (incomplete).
</action>
<action type="fix" dev="René Schwietzke" issue="#1014">
Properly synchronize access to httpClientBuilder_ in class HttpWebConnection.
</action>
<action type="fix" dev="RhinoTeam">
core-js: fix error stack generation in interpreted mode and report the correct line number
</action>
<action type="fix" dev="RhinoTeam">
core-js: don't propagate strict flag when compiling scripts and we already
have an active context in strict mode
</action>
<action type="fix" dev="RhinoTeam">
core-js: a problem with toString() on arrow functions fixed
</action>
<action type="add" dev="RhinoTeam">
core-js: ES2025 Error.isError static method implemented
</action>
<action type="add" dev="RhinoTeam">
core-js: ES2025 Math.f16round method implemented
</action>
<action type="fix" dev="rbri">
HtmlLink.getWebResponse(...) now also works when the JavaScript engine is disabled.
</action>
<action type="add" dev="rbri" issue="#978">
BroadcastChannel stub replaced by a real implementation.
</action>
<action type="add" dev="rbri">
UrlUtils.isSameOrigin(URL, URL) added and used by XMLHttpRequest
</action>
<action type="fix" dev="rbri">
SameOrigin check has to check the protocol also.
</action>
</release>
<release version="4.16.0" date="August 29, 2025" description="StringUtils, Brotli, spread for object literals, Bugfixes">
<action type="update" dev="RhinoTeam">
core-js: infer function names at runtime for computed properties
</action>
<action type="add" dev="rbri">
core-js: Several fixes for calling bind() in the interpreter (regression from 4.14.0)
</action>
<action type="add" dev="RhinoTeam">
core-js: ES2025 ArrayBuffer transfer(), and transferToFixedLength() implemented
</action>
<action type="update" dev="RhinoTeam">
core-js: internal optimizations to make 'undefined' lookup faster
</action>
<action type="add" dev="RhinoTeam">
core-js: ES2025 Set methods intersection(), union(), difference(), symmetricDifference(), isSubsetOf(),
isSupersetOf(), and isDisjointFrom() implemented
</action>
<action type="fix" dev="RhinoTeam">
core-js: make Object.assign copy over Symbol properties
</action>
<action type="fix" dev="RhinoTeam">
core-js: some methods should not have a prototype property
</action>
<action type="add" dev="RhinoTeam">
core-js: ES2025 Promise.try implemented
</action>
<action type="add" dev="RhinoTeam">
core-js: spread for object literals implemented
</action>
<action type="update" dev="rbri">
neko: do not check for bom headers on compressed streams
</action>
<action type="update" dev="rbri">
WebClient waitForBackgroundJavaScript(long), waitForBackgroundJavaScriptStartingBefore(long), and
waitForBackgroundJavaScriptStartingBefore(long, long) no longer marked as experimental.
</action>
<action type="update" dev="rbri" issue="#1009">
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.
</action>
<action type="update" dev="rbri">
Use our own StringUtils at more places to be compatible with older commons lang versions.
</action>
<action type="update" dev="rbri">
Handling of CData sections in XHTML documents improved/fixed.
</action>
</release>
<release version="4.15.0" date="August 17, 2025" description="Chrome/Edge 139, Firefox 141, core-js, Bugfixes">
<action type="update" dev="rbri">
WebAssert messages reviewed and improved.
</action>
<action type="update" dev="rbri">
WebAssert got various improvements and more complete unit tests.
</action>
<action type="update" dev="rbri">
Improve WebAssert javadoc.
</action>
<action type="update" dev="rbri">
Improve WebClientOptions javadoc.
</action>
<action type="update" dev="rbri">
neko: improved features/properties documentation
</action>
<action type="fix" dev="rbri">
neko: fix missing property/feature handling for HTMLScanner.setFeature() and HTMLScanner.setProperty().
</action>
<action type="fix" dev="RhinoTeam" issue="#1001">
core-js: Fix two more regressions from the Interpreter refactoring. Various combinations
of apply/bind/call now working again.
</action>
<action type="update" dev="rbri">
websocket-client: jetty updated to 9.4.58.v20250814.
</action>
<action type="fix" dev="RhinoTeam">
core-js: Fix a regression regarding optional chaining operators.
</action>
<action type="fix" dev="rbri">
neko: Always call detectEncoding() to skip bom in case we got an input stream with bom and an encoding.
</action>
<action type="update" dev="rbri">
neko: increase PlaybackInputStream buffer size
</action>
<action type="add" dev="rbri">
neko: NekoSAXParser Factory added
</action>
<action type="add" dev="rbri">
WebClient option pageRefreshLimit added. Refresh handling changed to support a clear limit.
The initial value is 72 to be backward compatible.
</action>
<action type="add" dev="rbri">
Dummy implementation of PointerEvent#getPersistentDeviceId() returning always 0.
</action>
<action type="update" dev="rbri" issue="#1002">
The parser for the refresh header has been rewritten.
Thanks to a series of additional tests, we are now much closer to real browsers.
</action>
<action type="add" dev="RhinoTeam">
core-js: TypedArray.from and TypedArray.of implemented.
</action>
</release>
<release version="4.14.0" date="July 30, 2025" description="Chrome/Edge 138, Firefox 140, core-js, junit 5, jsoup-bridge, Bugfixes">
<action type="add" dev="rbri">
New sister project 'jsoup-bridge' (https://github.com/HtmlUnit/htmlunit?tab=readme-ov-file#jsoup-bridge).
</action>
<action type="update" dev="rbri">
Switched to sonatype central-publishing for snapshots and release builds.
</action>
<action type="add" dev="rbri">
New method WebClinet.waitForBackgroundJavaScriptStartingBefore(final long delayMillis, final long timeoutMillis)
that combines a overall timeout with waiting for js tasks starting before.
</action>
<action type="fix" dev="rbri">
Avoid ConcurrentModificationException in HtmlPage.deregisterFramesIfNeeded()
</action>
<action type="add" dev="rbri">
Separate developer documentation to help people start working on this project
</action>
<action type="fix" dev="rbri">
MutationEvent is still available in FF but not as global
</action>
<action type="fix" dev="rbri">
Some fixes for the ctor prototype setup
</action>
<action type="update" dev="rbri">
code cleanup based on PMD - use isEmpty() in more places
</action>
<action type="add" dev="RhinoTeam">
core-js: Infer function name when declared in a var/let statement implemented
</action>
<action type="add" dev="RhinoTeam">
core-js: Promise.withResolvers() added
</action>
<action type="update" dev="rbri">
core-js: assigning values to super got some improvements
</action>
<action type="fix" dev="RhinoTeam">
core-js: BigInt.asUintN and BigInt.asIntN implementation fixed
</action>
<action type="update" dev="RhinoTeam">
core-js: code simplification for support of different JDKs
</action>
<action type="update" dev="RhinoTeam">
core-js: huge refactoring of the interpreter for more speed and easier maintenance
</action>
<action type="remove" dev="rbri">
core-js: '__parent__' property is no longer available
</action>
<action type="update" dev="RhinoTeam">
core-js: refactored exception and stack handling
</action>
<action type="update" dev="RhinoTeam">
core-js: The Builtins and the Regexp initializer migrated from reflection to lambda
</action>
<action type="update" dev="rbri">
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_.
</action>
<action type="update" dev="RhinoTeam">
core-js: refactored CallFrame to keep stack as immutable linked list.
</action>
<action type="fix" dev="RhinoTeam">
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
</action>
<action type="add" dev="rbri">
SBOM (CycloneDX format) added.
</action>
<action type="update" dev="rbri">
core-js: minor code optimization.
</action>
<action type="update" dev="rbri">
core-js: typo in prototype detection fixed.
</action>
<action type="update" dev="RhinoTeam">
core-js: Code cleanup.
</action>
<action type="fix" dev="rbri">
neko: fix ParentNode#getTextContent()
</action>
<action type="add" dev="rbri">
neko: introduce Element.SCRIPT_SUPPORTING flag for HTMLElements
</action>
<action type="update" dev="rbri">
Upgrade Apache commons-io to 2.20.0.
</action>
<action type="update" dev="rbri">
Upgrade Apache commons-lang3 to 3.18.0.
</action>
<action type="add" dev="RhinoTeam">
core-js: UnicodeMode support for regexp added.
</action>
<action type="add" dev="RhinoTeam">
core-js: ArrayBuffer detach() support added.
</action>
<action type="update" dev="rbri" issue="#982">
Major improvements for the asXML() function.
</action>
<action type="update" dev="rbri">
Test suite updated to junit 5 and cleaned up.
</action>
<action type="add" dev="rbri">
The hidden attribute now supports the 'until-found' value.
</action>
<action type="update" dev="rbri">
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.
</action>
<action type="add" dev="rbri">
jQuery 1.12.4 test suite added.
</action>
<action type="update" dev="rbri">
jQuery 1.8.2, 1.11.3, and 3.3.1 test suite refreshed.
</action>
<action type="remove" dev="rbri">
FF139: SVGDiscardElement is gone (again).
</action>
<action type="fix" dev="rbri">
getClientRects() returns an empty list for hidden inputs. This fixes also a problem with
the :hidden jQuery selector.
</action>
</release>
<release version="4.13.0" date="June 03, 2025" description="Chrome/Edge 136, Firefox 138, js prototypes, Bugfixes">
<action type="fix" dev="rbri">
The prototype for DOMRect is now DOMRectReadOnly.
</action>
<action type="update" dev="rbri">
Internal javascript class ClientRect renamed to DOMRect (the old name was a leftover from IE).
</action>
<action type="update" dev="rbri">
Internal javascript class ClientRectList renamed to DOMRectList (the old name was a leftover from IE).
</action>
<action type="update" dev="RhinoTeam">
core-js: Adjust order of evaluation of function arguments to match the spec.
</action>
<action type="update" dev="RhinoTeam">
core-js: Major tidy up of 'NativeTypedArrayView' to better match spec.
</action>
<action type="update" dev="RhinoTeam">
core-js: Refactor functions to be lambdas rather than IdScriptableObject's.
</action>
<action type="fix" dev="rbri">
The prototype for HTMLAllCollectionis no longer the HTMLCollection, it is now object.
</action>
<action type="update" dev="rbri">
HTMLTableCellElement now supports the 'align', 'ch', 'chOff', 'headers', 'height', 'noWrap',
'rowSpan', 'scope', 'vAlign', 'width' properties.
</action>
<action type="update" dev="rbri">
HTMLTableColElement now supports the 'align', 'ch', 'chOff', and 'vAlign' properties.
</action>
<action type="fix" dev="rbri">
Internal javascript class HTMLTableComponent removed. The prototype for HTMLTableCellElement,
HTMLTableColElement, and HTMLTableRowElement is now the correct HTMLElement.
</action>
<action type="update" dev="rbri">
HTMLTableSectionElement now supports the deleteRow() and insertRow() functions.
</action>
<action type="update" dev="rbri">
HTMLTableSectionElement now supports the 'align' and 'rows' properties.
</action>
<action type="update" dev="rbri">
HTMLTableElement now supports the deleteRow() and insertRow() functions.
</action>
<action type="update" dev="rbri">
HTMLTableElement now supports the 'align' and 'rows' properties.
</action>
<action type="fix" dev="rbri">
Internal javascript class RowContainer removed. The prototype for HTMLTableElement, and
HTMLTableSectionElement is now the correct HTMLElement.
</action>
<action type="update" dev="rbri">
HTMLUListElement now supports the 'compact' property.
</action>
<action type="update" dev="rbri">
HTMLOListElement now supports the 'compact' property.
</action>
<action type="update" dev="rbri">
HTMLMenuElement now supports the 'compact' property.
</action>
<action type="update" dev="rbri">
HTMLLIElement now supports the 'type' property.
</action>
<action type="update" dev="rbri">
HTMLDListElement now supports the 'compact' property.
</action>
<action type="update" dev="rbri">
HTMLDListElement now supports the 'compact' property.
</action>
<action type="fix" dev="rbri">
Internal javascript class HTMLListElement removed. The prototype for HTMLDListElement,
HTMLDirectoryElement, HTMLLIElement, HTMLMenuElement, HTMLOListElement, and HTMLUListElement
is now the correct HTMLElement.
</action>
<action type="fix" dev="rbri">
Internal javascript class HTMLListElement removed. The prototype for HTMLDListElement,
HTMLDirectoryElement, HTMLLIElement, HTMLMenuElement, HTMLOListElement, andHTMLUListElement
is now the correct HTMLElement.
</action>
<action type="update" dev="rbri">
Javascript class configuration reworked, this allows some optimizations in the furture.
</action>
<action type="fix" dev="rbri">
Constructor prototype fixes, now we have the correct prototypes for most classes.
The RecursiveFunctionObject workaround is no longer required.
</action>
<action type="fix" dev="rbri">
DomNodeIterator is now serializable.
</action>
<action type="update" dev="rbri">
FF138: adjust datetimeformat for several locales.
</action>
<action type="update" dev="rbri">
Chrome/Edge 136: Clicking an image input no longer submits the value as param.
</action>
<action type="add" dev="rbri">
FF138: Frame elements are accessible by name.
</action>
<action type="add" dev="rbri">
FF138: Error.captureStackTrace() is supported.
</action>
<action type="add" dev="rbri">
FF138: js constant maxActions added to Notification.
</action>
<action type="update" dev="rbri">
FF138: stylesheet links checking the content type for 'text/css'.
</action>
</release>
<release version="4.12.0" date="May 17, 2025" description="Chrome/Edge 135, Firefox 137, Rhino RegExp, Bugfixes">
<action type="add" dev="rbri">
WebClient option NekoReaderBufferSize added. You can use this to increase the buffer size used by
the Neko Html parser to optimize parsing performance.
</action>
<action type="update" dev="rbri">
HTMLParser parseFragment(DomNode, String), parse(WebResponse, HtmlPage, boolean, boolean), and
parseFragment(DomNode, DomNode, String, boolean) are deprecated.
</action>
<action type="update" dev="rbri">
neko: HTMLScanner always requires a document handler; the null check is moved to the setter
and all the others are removed.
</action>
<action type="fix" dev="rbri">
neko: avoid HTML1011 error for self closing tags.
</action>
<action type="fix" dev="rbri">
neko: ignore whitespace before the closing > when parsing special tags.
</action>
<action type="update" dev="rbri">
neko: remove two superfluous conversions from the code.
</action>
<action type="update" dev="RhinoTeam">
core-js: NativeArray impl is now lambda based.
</action>
<action type="update" dev="rbri">
core-js: improved date string parser; support optional ms digits,
skip ms digits, extended year support is not available in es6
</action>
<action type="update" dev="RhinoTeam">
core-js: detailed message added to IndexOutOfBoundsExceptions
</action>
<action type="update" dev="RhinoTeam">
core-js: add double null check pattern when initializing cache values.
</action>
<action type="fix" dev="rbri">
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).
</action>
<action type="fix" dev="rbri">
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).
</action>
<action type="update" dev="rbri">
AlertHandler, ConfirmHandler, FrameContentHandler, CharacterDataChangeListener, and IncorrectnessListener
marked as @FunctionalInterface.
</action>
<action type="update" dev="rbri">
Upgrade Apache commons-io to 2.19.0.
</action>
<action type="update" dev="rbri">
Element.scrollIntoView() now triggers scroll events on all parents.
</action>
<action type="update" dev="rbri">
For FF scroll events are of type UIEvent.
</action>
<action type="fix" dev="rbri">
Scroll events are not bubbling and not cancelable.
</action>
<action type="fix" dev="RhinoTeam">
core-js: Function.prototype[Symbol.hasInstance] fixed.
</action>
<action type="fix" dev="RhinoTeam">
core-js: regression in hex and unicode hex parsing or regexp fixed
</action>
<action type="update" dev="rbri">
CSS blockSize support improved.
</action>
<action type="fix" dev="RhinoTeam">
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.
</action>
<action type="fix" dev="RhinoTeam">
core-js: Fix a character class parsing regression for regexp.
</action>
<action type="fix" dev="RhinoTeam">
core-js: Fix handling of \x and \u in regexp.
</action>
<action type="add" dev="rbri">
FF137: SVGDiscardElement added.
</action>
<action type="update" dev="rbri">
Chrome/Edge 135, FF137: Setter validation for length style properties adjusted.
</action>
<action type="add" dev="rbri">
Chrome/Edge 135: Style properties 'interactivity', 'overflowBlock', 'overflowInline', and 'scrollMarkerGroup' added.
</action>
<action type="update" dev="rbri">
FF137: Adjust clientHeight for some ruby related tags.
</action>
<action type="update" dev="rbri">
Chrome/Edge 135, FF137: Improved namespace handling when sending an html document via XMLHttpRequest.
</action>
<action type="update" dev="rbri">
Chrome/Edge 135: Improved <br> handling in options tags.
</action>
<action type="update" dev="rbri">
Chrome/Edge 135, FF137: Fixed font sizes for smaller/larger CSS property value.
</action>
<action type="update" dev="rbri">
FF137: Set span for table cells to zero if provided value is invalid.
</action>
<action type="fix" dev="RhinoTeam">
core-js: Some fixes for strict handling.
</action>
<action type="update" dev="RhinoTeam">
core-js: Several code improvements for the RegExp implementation.
</action>
<action type="add" dev="rbri" issue="#946">
WebClient.setWebSocketAdapter(WebSocketAdapterFactory) added. This should
help to use a different WebSocket implementation.
</action>
<action type="add" dev="rbri" issue="#946">
WebSocketAdapter splitted into WebSocketAdapter and WebSocketListener.
New interface WebSocketAdapterFactory introduced. This should help to
make it simpler to use a different WebSocket implementation.
</action>
<action type="add" dev="RhinoTeam">
core-js: Named capture groups in RegularExpressions now supported.
</action>
<action type="remove" dev="rbri">
Deprecated method CssStyleSheet.validateSelectors(SelectorList, int, DomNode) removed.
</action>
<action type="remove" dev="rbri">
Deprecated method HtmlForm.getElements() removed.
</action>
<action type="remove" dev="rbri">
Deprecated method WebRequest.setRefererlHeader(URL) removed.
</action>
</release>
<release version="4.11.1" date="March 26, 2025" description="Bugfixes">
<action type="fix" dev="rbri">
NumberFormatException when calculating the clientHeight/offsetHeight.
</action>
</release>
<release version="4.11.0" date="March 25, 2025" description="Chrome/Edge 134, Firefox 136, Rhino RegExp, less dependencies, Bugfixes">
<action type="fix" dev="rbri">
Event 'onload' is triggered by FF ESR also if the frame content was not shown because of csp.
</action>
<action type="add" dev="rbri">
Initial support for font sizes 'xx-small', 'x-small', 'small', 'medium', 'large',
'x-large', 'xx-large', 'xxx-large', 'smaller', and 'larger'.
</action>
<action type="fix" dev="rbri">
core-js: Refactor NativeString based on lambdas and stop using IdScriptableObject.
</action>
<action type="fix" dev="rbri" issue="#942">
The style cache has to handle all parents of added or deleted nodes.
</action>
<action type="remove" dev="rbri">
Class HiddenFunctionObject removed, this was a leftover from the IE age.
</action>
<action type="fix" dev="rbri">
core-js: Arguments.callee is always the same function in strict mode.
</action>
<action type="fix" dev="rbri">
core-js: Arguments.caller is not available in real browsers.
</action>
<action type="fix" dev="RhinoTeam">
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.
</action>
<action type="remove" dev="rbri">
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.