Compatibility with version 2.x

The combineBy (old name combinePatterns) option become the default in the mark() API

The default number of this option also is increased from 10 to 100.
If your code uses the combinePatterns option, it should work correctly with version 3.x, otherwise set the combineBy: 1 option.

Removing the 'execution' object from the filter and each callbacks` info object

This allow setting info.abort = true; instead of info.execution.abort = true;.

Dropping support to highlight RegExp groups without the d flag

RegExp.prototype.hasIndices is well established and works across many browser versions.

The requirement for the g flag in the markRegExp() API
Details: Prior to version 3, the RegExp /(?<=word\s+)(?:\w+)?/g failed to match 'match2' in the string 'word match1 word $$$ word match2' because of returning an empty match on 'word $$$'.
This causes breaking of the execution loop, as a result, there is no further matching.
Fixing this bug brought requirement of the g flag for normal workflow.
For backward compatibility, a RegExp without g flag is recompiled internally.
Removing cacheTextNodes option

The performance gain with this option is relatively small, also the code is not covered necessary options.
Plus, added support for the CSS Custom Highlight API.

Removing offset property from filter callback

I suspect it has very rare usage if any. If it's needed there is version 2.