Skip to content

Commit c350745

Browse files
Add browser WASM feature support
1 parent 1abc88f commit c350745

6 files changed

Lines changed: 31 additions & 3 deletions

File tree

.github/workflows/checking.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,24 @@ jobs:
4040

4141
- name: Run cargo check (with serde)
4242
run: cargo check --workspace --all-targets --features "linfa-clustering/serde linfa-ica/serde linfa-kernel/serde linfa-reduction/serde linfa-svm/serde linfa-elasticnet/serde linfa-pls/serde linfa-trees/serde linfa-nn/serde linfa-linear/serde linfa-preprocessing/serde linfa-bayes/serde linfa-logistic/serde linfa-ftrl/serde"
43+
44+
check-wasm-browser:
45+
name: check-wasm-browser
46+
runs-on: ubuntu-latest
47+
48+
steps:
49+
- name: Checkout sources
50+
uses: actions/checkout@master
51+
52+
- name: Install toolchain
53+
uses: dtolnay/rust-toolchain@master
54+
with:
55+
toolchain: stable
56+
targets: wasm32-unknown-unknown
57+
58+
- name: Run browser WASM checks
59+
run: |
60+
cargo check -p linfa --lib --target wasm32-unknown-unknown --features wasm-bindgen
61+
cargo check -p linfa-linear --lib --target wasm32-unknown-unknown --features wasm-bindgen
62+
cargo check -p linfa-logistic --lib --target wasm32-unknown-unknown --features wasm-bindgen
63+
cargo check -p linfa-ftrl --lib --target wasm32-unknown-unknown --features wasm-bindgen

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,13 @@ intel-mkl-system = ["blas", "ndarray-linalg/intel-mkl-system"]
3434
blas = ["ndarray/blas"]
3535

3636
serde = ["serde_crate", "ndarray/serde"]
37+
wasm-bindgen = ["dep:getrandom"]
3738

3839
[dependencies]
3940
num-traits = "0.2"
4041
rand = { version = "0.8", features = ["small_rng"] }
4142
approx = "0.5"
43+
getrandom = { version = "0.2", optional = true, features = ["js"] }
4244

4345
ndarray = { version = "0.16", features = ["approx"] }
4446
ndarray-linalg = { version = "0.17", optional = true }
@@ -75,6 +77,7 @@ pprof = { version = "0.15", features = [
7577

7678
[workspace]
7779
members = ["algorithms/*", "datasets"]
80+
resolver = "2"
7881

7982
[profile.release]
8083
opt-level = 3

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ We believe that only a significant community effort can nurture, build, and sust
5353

5454
If this strikes a chord with you, please take a look at the [roadmap](https://github.com/rust-ml/linfa/issues/7) and get involved!
5555

56+
## Browser WASM
57+
58+
For browser-style WASM on `wasm32-unknown-unknown`, enable `linfa`'s `wasm-bindgen` feature.
59+
5660
## BLAS/Lapack backend
5761

5862
Some algorithm crates need to use an external library for linear algebra routines. By default, we use a pure-Rust implementation. However, you can also choose an external BLAS/LAPACK backend library instead, by enabling the `blas` feature and a feature corresponding to your BLAS backend. Currently you can choose between the following BLAS/LAPACK backends: `openblas`, `netblas` or `intel-mkl`.

algorithms/linfa-ftrl/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ categories = ["algorithms", "mathematics", "science"]
1515

1616
[features]
1717
serde = ["serde_crate", "linfa/serde", "ndarray/serde", "argmin/serde1"]
18-
wasm-bindgen = ["argmin/wasm-bindgen"]
18+
wasm-bindgen = ["argmin/wasm-bindgen", "linfa/wasm-bindgen"]
1919

2020
[dependencies.serde_crate]
2121
package = "serde"

algorithms/linfa-linear/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ categories = ["algorithms", "mathematics", "science"]
1919
[features]
2020
blas = ["ndarray-linalg", "linfa/ndarray-linalg"]
2121
serde = ["serde_crate", "linfa/serde", "ndarray/serde", "argmin/serde1"]
22-
wasm-bindgen = ["argmin/wasm-bindgen"]
22+
wasm-bindgen = ["argmin/wasm-bindgen", "linfa/wasm-bindgen"]
2323

2424
[dependencies.serde_crate]
2525
package = "serde"

algorithms/linfa-logistic/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ categories = ["algorithms", "mathematics", "science"]
1515

1616
[features]
1717
serde = ["serde_crate", "linfa/serde", "ndarray/serde", "argmin/serde1"]
18-
wasm-bindgen = ["argmin/wasm-bindgen"]
18+
wasm-bindgen = ["argmin/wasm-bindgen", "linfa/wasm-bindgen"]
1919

2020
[dependencies.serde_crate]
2121
package = "serde"

0 commit comments

Comments
 (0)