{"id":16282466,"url":"https://github.com/jtpio/jupyterlab-wasm-example","last_synced_at":"2025-03-20T02:30:30.579Z","repository":{"id":46683624,"uuid":"304983594","full_name":"jtpio/jupyterlab-wasm-example","owner":"jtpio","description":"JupyterLab Extension written in Rust and compiled to WebAssembly","archived":false,"fork":false,"pushed_at":"2021-09-30T08:16:14.000Z","size":595,"stargazers_count":17,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-17T13:22:46.891Z","etag":null,"topics":["jupyterlab","jupyterlab-extension","rust","wasm","webassembly"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jtpio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-17T22:57:58.000Z","updated_at":"2025-01-04T02:07:02.000Z","dependencies_parsed_at":"2022-09-04T00:40:24.129Z","dependency_job_id":null,"html_url":"https://github.com/jtpio/jupyterlab-wasm-example","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtpio%2Fjupyterlab-wasm-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtpio%2Fjupyterlab-wasm-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtpio%2Fjupyterlab-wasm-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtpio%2Fjupyterlab-wasm-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jtpio","download_url":"https://codeload.github.com/jtpio/jupyterlab-wasm-example/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244538520,"owners_count":20468728,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jupyterlab","jupyterlab-extension","rust","wasm","webassembly"],"created_at":"2024-10-10T19:10:45.226Z","updated_at":"2025-03-20T02:30:30.222Z","avatar_url":"https://github.com/jtpio.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jupyterlab-wasm-example\n\n![Github Actions Status](https://github.com/jtpio/jupyterlab-wasm-example/workflows/Build/badge.svg)\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jtpio/jupyterlab-wasm-example/main?urlpath=/lab)\n\nExample of a JupyterLab Extension written in Rust and compiled to WebAssembly\n\n![demo](https://user-images.githubusercontent.com/591645/96355103-4f0d7c00-10de-11eb-893e-cf1c4739c3b2.gif)\n\n## Usage\n\nThis repository is meant to be used as an example for extending JupyterLab with WebAssembly modules.\n\nThis example uses:\n\n- [Rust](https://rust-lang.org) as the programming language, to implement most of the code for the extension\n- [wasm-pack](https://github.com/rustwasm/wasm-pack): build Rust-generated WebAssembly packages and use them from JavaScript\n- [JupyterLab](https://github.com/jupyterlab/jupyterlab) build system, to package everything as an extension that can be installed with `pip`\n\n## Requirements\n\n* JupyterLab \u003e= 3.0\n\n## Contributing\n\n### Development install\n\nNote: You will need NodeJS to build the extension package.\n\nThe `jlpm` command is JupyterLab's pinned version of\n[yarn](https://yarnpkg.com/) that is installed with JupyterLab. You may use\n`yarn` or `npm` in lieu of `jlpm` below.\n\n```bash\n# Clone the repo to your local environment\n# Change directory to the jupyterlab-wasm-example directory\n\n# create a new environment\nconda create -n jupyterlab-wasm-example -c conda-forge/label/jupyterlab_rc -c conda-forge/label/jupyterlab_server_rc -c conda-forge jupyterlab=3 nodejs python cookiecutter -y\nconda activate jupyterlab-wasm-example\n\n# compile the Rust package to WebAssembly:\njlpm run build:rust\n\n# Install package in development mode\npip install -e .\n\n# Link your development version of the extension with JupyterLab\njlpm run install:extension\n\n# Rebuild extension Typescript source after making changes\njlpm run build\n```\n\nYou can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension.\n\n```bash\n# Watch the source directory in one terminal, automatically rebuilding when needed\njlpm run watch\n# Run JupyterLab in another terminal\njupyter lab\n```\n\nWith the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtpio%2Fjupyterlab-wasm-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjtpio%2Fjupyterlab-wasm-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtpio%2Fjupyterlab-wasm-example/lists"}