v0.38.2
Performance
This is another juicy patch version with performance improvements made by @preciz.
- Optimize multiple selectors deduping - #667
- Optimize DeepText by using plain recursion - #668
- Optimize get_descendant_ids by removing Enum.reverse calls - #669
- Optimize HTMLTree.to_tuple_list/1 using tail recursion - #670
- Optimize Floki.TextExtractor by removing Enum iterations - #675
- Simplify class attribute matching - #677
- Refactor attribute_values to use for comprehension with pattern matching - #679
- Optimize CSS class matching to avoid list subtraction - #680
- Optimize iodata by avoiding empty separators in DeepText and FlatText - #682
- Simplify HTMLTree.build/1 by avoiding redundant build_tree calls - #683
- Optimize Floki.text/2 by extracting text in a single pass - #684
- Optimize HTMLTree updates and deletions - #687
- Refactor attribute retrieval functions for a 1.2-1.5x speedup - #689
- Optimize case-insensitive attribute includes match - #690
- Optimize selector traversal - #611
Please check the pull requests to see the improvements.
Fixed
- Fix compiler warnings for the upcoming Elixir v1.20.
- Fix typespecs of
Floki.attribute/3. - Fix documentation for some functions.
All pull requests
- Require Elixir v1.16 by @philss in #666 (reverted for this release)
- Optimize multiple selectors deduping by @preciz in #667
- Optimize DeepText by using plain recursion by @preciz in #668
- Optimize get_descendant_ids by removing Enum.reverse calls by @preciz in #669
- Optimize HTMLTree.to_tuple_list/1 using tail recursion by @preciz in #670
- Fix docs inaccuracies by @preciz in #671
- docs: update Mix.Config to import Config in HTMLParser docs by @preciz in #673
- docs: remove :html_parser option from Floki.text/2 docs by @preciz in #674
- Fix typespecs: remove binary from Floki.attribute/3 typespec by @preciz in #672
- Optimize Floki.TextExtractor by removing Enum iterations by @preciz in #675
- Fix Elixir 1.20 compiler warnings for bitstring match pin operators by @preciz in #676
- Simplify class attribute matching by @preciz in #677
- Bump credo from 1.7.17 to 1.7.18 by @dependabot[bot] in #678
- Refactor attribute_values to use for comprehension with pattern matching by @preciz in #679
- Optimize CSS class matching to avoid list subtraction by @preciz in #680
- Remove unused charref_html_after_buffer/2 clause by @preciz in #681
- Optimize iodata by avoiding empty separators in DeepText and FlatText by @preciz in #682
- Simplify HTMLTree.build/1 by avoiding redundant build_tree calls by @preciz in #683
- Optimize Floki.text/2 by extracting text in a single pass by @preciz in #684
- Optimize HTMLTree updates and deletions by @preciz in #687
- Refactor attribute retrieval functions for a 1.2-1.5x speedup by @preciz in #689
- Optimize case-insensitive attribute includes match by @preciz in #690
- Bump html5ever from 0.17.0 to 0.18.0 by @dependabot[bot] in #686
- Optimize selector traversal by @preciz in #691
- Bump jason from 1.4.4 to 1.4.5 by @dependabot[bot] in #692
- Bump ex_doc from 0.40.1 to 0.40.2 by @dependabot[bot] in #693
- Release v0.38.2 by @philss in #694
Full Changelog: v0.38.1...v0.38.2