[![Crates.io][crates-badge]][crates-url]
[![Docs.rs][docs-badge]][docs-url]
[![MIT licensed][license-badge]][license-url]
[![Build Status][ci-badge]][ci-url]
[![Code Coverage][code-coverage-badge]][code-coverage-url]
[![CodSpeed Badge][codspeed-badge]][codspeed-url]
[![Sponsors][sponsors-badge]][sponsors-url]
[![Discord chat][discord-badge]][discord-url]
oxc-browserslist
Rust port of Browserslist, forked from browserslist-rs.
The original crate did not meet the criteria of oxc
, the following changes are made:
- reduced compilation speed from one minute to a few seconds
- removed all unnecessary, heavy or slow dependencies:
ahash
, chrono
, either
, indexmap
, itertools
, once_cell
, string_cache
- improved some runtime performance, e.g. improve sort method, precompute versions
Usage
See docs.rs/oxc-browserslist.
Limitation
Only custom usage is not supported: > 0.5% in my stats
or cover 99.5% in my stats
.
Example
Inspect query result by running the example:
cargo run --example inspect -- <query>
You can also specify additional options, for example:
cargo run --example inspect -- --mobile-to-desktop 'last 2 versions, not dead'
Future Work (Pull Request Welcome)
nom
can be replaced by a hand written parser to improve runtime and compilation speed
- improve test coverage
- improve compilation speed and reduce compiled binary size
- improve runtime performance
- all semver versions with their string representation can be precomputed and code generated, current code is calling
parse
and to_string
on semver versions
- add more benchmarks
- see codspeed for current run performance