[![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](https://github.com/browserslist/browserslist), forked from [browserslist-rs](https://github.com/browserslist/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](https://github.com/oxc-project/oxc-browserslist/pull/28), [precompute versions](https://github.com/oxc-project/oxc-browserslist/pull/10) ## Usage See [docs.rs/oxc-browserslist](https://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: ```sh cargo run --example inspect -- ``` You can also specify additional options, for example: ```sh 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](https://github.com/oxc-project/oxc-browserslist/issues/23) * 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][codspeed-url] for current run performance ## [Sponsored By](https://github.com/sponsors/Boshen)

My sponsors

[discord-badge]: https://img.shields.io/discord/1079625926024900739?logo=discord&label=Discord [discord-url]: https://discord.gg/9uXCAwqQZW [license-badge]: https://img.shields.io/badge/license-MIT-blue.svg [license-url]: https://github.com/oxc-project/oxc-browserslist/blob/main/LICENSE [ci-badge]: https://github.com/oxc-project/oxc-browserslist/actions/workflows/CI.yml/badge.svg?event=push&branch=main [ci-url]: https://github.com/oxc-project/oxc-browserslist/actions/workflows/CI.yml?query=event%3Apush+branch%3Amain [code-coverage-badge]: https://codecov.io/github/oxc-project/oxc-browserslist/branch/main/graph/badge.svg [code-coverage-url]: https://codecov.io/gh/oxc-project/oxc-browserslist [sponsors-badge]: https://img.shields.io/github/sponsors/Boshen [sponsors-url]: https://github.com/sponsors/Boshen [codspeed-badge]: https://img.shields.io/endpoint?url=https://codspeed.io/badge.json [codspeed-url]: https://codspeed.io/oxc-project/oxc-browserslist [crates-badge]: https://img.shields.io/crates/d/oxc-browserslist?label=crates.io [crates-url]: https://crates.io/crates/oxc-browserslist [docs-badge]: https://img.shields.io/docsrs/oxc-browserslist [docs-url]: https://docs.rs/oxc-browserslist