wasmer


Namewasmer JSON
Version 1.1.0 PyPI version JSON
download
home_page
SummaryPython extension to run WebAssembly binaries
upload_time2022-01-07 23:23:52
maintainer
docs_urlNone
authorWasmer Engineering Team <engineering@wasmer.io>
requires_python
license
keywords python extension webassembly
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # <img height="48" src="https://raw.githubusercontent.com/wasmerio/wasmer/master/assets/logo.png" alt="Wasmer logo" valign="middle"> Wasmer Python [![PyPI version](https://img.shields.io/pypi/v/wasmer)](https://badge.fury.io/py/wasmer) [![Wasmer Python Documentation](https://img.shields.io/badge/docs-read-green)](https://wasmerio.github.io/wasmer-python/api/wasmer/) [![Wasmer PyPI downloads](https://pepy.tech/badge/wasmer)](https://pypi.org/project/wasmer/) [![Wasmer Slack Channel](https://img.shields.io/static/v1?label=chat&message=on%20Slack&color=green)](https://slack.wasmer.io)

A complete and mature WebAssembly runtime for Python based on
[Wasmer](https://github.com/wasmerio/wasmer).

Features:

  * **Easy to use**: The `wasmer` API mimics the standard WebAssembly API,
  * **Fast**: `wasmer` executes the WebAssembly modules as fast as
    possible, close to **native speed**,
  * **Safe**: All calls to WebAssembly will be fast, but more
    importantly, completely safe and sandboxed,
  * **Modular**: `wasmer` can compile the WebAssembly modules with
    different engines or compiler.

**Documentation**: [browse the detailed API
documentation](https://wasmerio.github.io/wasmer-python/api/wasmer/wasmer.html) full of
examples.

**Examples** as tutorials: [browse the `examples/`
directory](https://github.com/wasmerio/wasmer-python/tree/master/examples),
it's the best place for a complete introduction!

## Quick Introduction

The `wasmer` package brings the required API to execute WebAssembly
modules. In a nutshell, `wasmer` compiles the WebAssembly module into
compiled code, and then executes it. `wasmer` is designed to work in
various environments and platforms: From nano single-board computers
to large and powerful servers, including more exotic ones. To address
those requirements, Wasmer provides 2 engines and 3 compilers.

Succinctly, an _engine_ is responsible to drive the _compilation_ and
the _execution_ of a WebAssembly module. By extension, a _headless_
engine can only execute a WebAssembly module, i.e. a module that has
previously been compiled, or compiled, serialized and deserialized. By
default, the `wasmer` package comes with 2 headless engines:

1. `wasmer.engine.JIT`, the compiled machine code lives in memory,
2. `wasmer.engine.Native`, the compiled machine code lives in a shared
   object file (`.so`, `.dylib`, or `.dll`), and is natively executed.

Because `wasmer` does not embed compilers in its package, engines are
headless, i.e. they can't compile WebAssembly module; they can only
execute them. Compilers live in their own standalone packages. Let's
briefly introduce them:

| Compiler package | Description | PyPi |
|-|-|-|
| `wasmer_compiler_singlepass` | Super fast compilation times, slower execution times. Not prone to JIT-bombs. *Ideal for blockchains* | [![On PyPi](https://img.shields.io/pypi/v/wasmer_compiler_singlepass)](https://pypi.org/project/wasmer_compiler_singlepass/) [![Downloads](https://pepy.tech/badge/wasmer_compiler_singlepass)](https://pypi.org/project/wasmer_compiler_singlepass/) |
| `wasmer_compiler_cranelift` | Fast compilation times, fast execution times. *Ideal for development* | [![On PyPi](https://img.shields.io/pypi/v/wasmer_compiler_cranelift)](https://pypi.org/project/wasmer_compiler_cranelift/) [![Downloads](https://pepy.tech/badge/wasmer_compiler_cranelift)](https://pypi.org/project/wasmer_compiler_cranelift/) |
| `wasmer_compiler_llvm` | Slow compilation times, very fast execution times (close to native, sometimes faster). *Ideal for Production* | [![On PyPi](https://img.shields.io/pypi/v/wasmer_compiler_llvm)](https://pypi.org/project/wasmer_compiler_llvm/) [![Downloads](https://pepy.tech/badge/wasmer_compiler_llvm)](https://pypi.org/project/wasmer_compiler_llvm/) |

We generally recommend `wasmer_compiler_cranelift` for development
purposes and `wasmer_compiler_llvm` in production.

Learn more by reading [the documentation of the `wasmer.engine`
submodule](https://wasmerio.github.io/wasmer-python/api/wasmer/wasmer.html#engine).

## Install

To install the `wasmer` Python package, and let's say the
`wasmer_compiler_cranelift` compiler, just run those commands in your shell:

```sh
$ pip install wasmer==1.1.0
$ pip install wasmer_compiler_cranelift==1.1.0
```

And you're ready to get fun!

## Example

We highly recommend to read the
[`examples/`](https://github.com/wasmerio/wasmer-python/tree/master/examples)
directory, which contains a sequence of examples/tutorials. It's the
best place to learn by reading examples.

But for the most eager of you, and we know you're numerous you
mischievous, there is a quick toy program in
`examples/appendices/simple.rs`, written in Rust:

```rust
#[no_mangle]
pub extern fn sum(x: i32, y: i32) -> i32 {
    x + y
}
```

After compilation to WebAssembly, the
[`examples/appendices/simple.wasm`](https://github.com/wasmerio/wasmer-python/blob/master/examples/appendices/simple.wasm)
binary file is generated. ([Download
it](https://github.com/wasmerio/wasmer-python/raw/master/examples/appendices/simple.wasm)).

Then, we can execute it in Python:

```python
from wasmer import engine, Store, Module, Instance
from wasmer_compiler_cranelift import Compiler

# Let's define the store, that holds the engine, that holds the compiler.
store = Store(engine.JIT(Compiler))

# Let's compile the module to be able to execute it!
module = Module(store, open('simple.wasm', 'rb').read())

# Now the module is compiled, we can instantiate it.
instance = Instance(module)

# Call the exported `sum` function.
result = instance.exports.sum(5, 37)

print(result) # 42!
```

And then, finally, enjoy by running:

```sh
$ python examples/appendices/simple.py
```

# Development

The Python extension is written in [Rust], with [`pyo3`] and
[`maturin`].

First, you need to install Rust and Python. We will not make you the
affront to explain to you how to install Python (if you really need,
check [`pyenv`](https://github.com/pyenv/pyenv/)). For Rust though, we
advise to use [`rustup`](https://rustup.rs/), then:

```sh
$ rustup install stable
```

To set up your environment, you'll need [`just`], and then, install
the prelude of this project:

```sh
$ cargo install just
$ just --list # to learn about all the available recipes
$ just prelude
```

It will install `pyo3` and `maturin` for Python and for Rust. It will
also install [`virtualenv`].

Then, simply run:

```sh
$ source .env/bin/activate
$ just build api
$ just build compiler-cranelift
$ python examples/appendices/simple.py
```

## Supported platforms

We try to provide wheels for as many platforms and architectures as
possible. For the moment, here are the supported platforms and
architectures:

<table>
  <thead>
    <tr>
      <th>Platform</th>
      <th>Architecture</th>
      <th>Triple</th>
      <th colspan="2">Packages</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td rowspan="8">Linux</td>
      <td rowspan="4"><code>amd64</code></td>
      <td rowspan="4"><code>x86_64-unknown-linux-gnu</code></td>
      <td><code>wasmer</code></td>
      <td>✅</td>
    </tr>
    <tr>
      <td><code>wasmer_compiler_singlepass</code></td>
      <td>✅</td>
    </tr>
    <tr>
      <td><code>wasmer_compiler_cranelift</code></td>
      <td>✅</td>
    </tr>
    <tr>
      <td><code>wasmer_compiler_llvm</code></td>
      <td>✅</td>
    </tr>
    <tr>
      <td rowspan="4"><code>aarch64</code></td>
      <td rowspan="4"><code>aarch64-unknown-linux-gnu</code></td>
      <td><code>wasmer</code></td>
      <td>✅</td>
    </tr>
    <tr>
      <td><code>wasmer_compiler_singlepass</code></td>
      <td>❌ <sup><a href="#wheels-note-1">1</a></sup></td>
    </tr>
    <tr>
      <td><code>wasmer_compiler_cranelift</code></td>
      <td>✅</td>
    </tr>
    <tr>
      <td><code>wasmer_compiler_llvm</code></td>
      <td>✅</td>
    </tr>
    <tr>
      <td rowspan="4">Darwin</td>
      <td rowspan="4"><code>amd64</code></td>
      <td rowspan="4"><code>x86_64-apple-darwin</code></td>
      <td><code>wasmer</code></td>
      <td>✅</td>
    </tr>
    <tr>
      <td><code>wasmer_compiler_singlepass</code></td>
      <td>✅</td>
    </tr>
    <tr>
      <td><code>wasmer_compiler_cranelift</code></td>
      <td>✅</td>
    </tr>
    <tr>
      <td><code>wasmer_compiler_llvm</code></td>
      <td>✅</td>
    </tr>
    <tr>
      <td rowspan="4">Windows</td>
      <td rowspan="4"><code>amd64</code></td>
      <td rowspan="4"><code>x86_64-pc-windows-msvc</code></td>
      <td><code>wasmer</code></td>
      <td>✅</td>
    </tr>
    <tr>
      <td><code>wasmer_compiler_singlepass</code></td>
      <td>✅</td>
    </tr>
    <tr>
      <td><code>wasmer_compiler_cranelift</code></td>
      <td>✅</td>
    </tr>
    <tr>
      <td><code>wasmer_compiler_llvm</code></td>
      <td>❌ <sup><a href="#wheels-note-2">2</a></sup></td>
    </tr>
  </tbody>
</table>

Notes:

<ul>
  <li id="wheels-note-1"><sup>1</sup>
  <code>wasmer_compiler_singlepass</code> does not support
  <code>aarch64</code> for the moment</li>
  <li id="wheels-note-2"><sup>2</sup>
  <code>wasmer_compiler_llvm</code> is not packaging properly on
  Windows for the moment</li>
</ul>

Wheels are all built for the following Python versions:

* Python 3.7,
* Python 3.8.
* Python 3.9.
* Python 3.10,

<details>
<summary>Learn about the “fallback” <code>py3-none-any</code> wheel</summary>

### `py3-none-any.whl`

A special `wasmer-$(version)-py3-none-any` wheel is built as a
fallback. The `wasmer` libray will be installable, but it will raise
an `ImportError` exception saying that “Wasmer is not available on
this system”.

This wheel will be installed if none matches before (learn more by
reading the [PEP 425, Compatibility Tags for Built
Distributions](https://www.python.org/dev/peps/pep-0425/)).

</details>

## Testing

Build all the packages and run the tests:

```sh
$ just build-all
$ just test
```

# What is WebAssembly?

Quoting [the WebAssembly site](https://webassembly.org/):

> WebAssembly (abbreviated Wasm) is a binary instruction format for a
> stack-based virtual machine. Wasm is designed as a portable target
> for compilation of high-level languages like C/C++/Rust, enabling
> deployment on the web for client and server applications.

About speed:

> WebAssembly aims to execute at native speed by taking advantage of
> [common hardware
> capabilities](https://webassembly.org/docs/portability/#assumptions-for-efficient-execution)
> available on a wide range of platforms.

About safety:

> WebAssembly describes a memory-safe, sandboxed [execution
> environment](https://webassembly.org/docs/semantics/#linear-memory) […].

# License

The entire project is under the MIT License. Please read [the
`LICENSE` file][license].


[`pyo3`]: https://github.com/PyO3/pyo3
[`maturin`]: https://github.com/PyO3/maturin
[`virtualenv`]: https://virtualenv.pypa.io/
[`just`]: https://github.com/casey/just/
[license]: https://github.com/wasmerio/wasmer/blob/master/LICENSE
[Rust]: https://www.rust-lang.org/
[compilers]: https://medium.com/wasmer/a-webassembly-compiler-tale-9ef37aa3b537


            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "wasmer",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "python,extension,webassembly",
    "author": "Wasmer Engineering Team <engineering@wasmer.io>",
    "author_email": "Wasmer Engineering Team <engineering@wasmer.io>",
    "download_url": "",
    "platform": "",
    "description": "# <img height=\"48\" src=\"https://raw.githubusercontent.com/wasmerio/wasmer/master/assets/logo.png\" alt=\"Wasmer logo\" valign=\"middle\"> Wasmer Python [![PyPI version](https://img.shields.io/pypi/v/wasmer)](https://badge.fury.io/py/wasmer) [![Wasmer Python Documentation](https://img.shields.io/badge/docs-read-green)](https://wasmerio.github.io/wasmer-python/api/wasmer/) [![Wasmer PyPI downloads](https://pepy.tech/badge/wasmer)](https://pypi.org/project/wasmer/) [![Wasmer Slack Channel](https://img.shields.io/static/v1?label=chat&message=on%20Slack&color=green)](https://slack.wasmer.io)\n\nA complete and mature WebAssembly runtime for Python based on\n[Wasmer](https://github.com/wasmerio/wasmer).\n\nFeatures:\n\n  * **Easy to use**: The `wasmer` API mimics the standard WebAssembly API,\n  * **Fast**: `wasmer` executes the WebAssembly modules as fast as\n    possible, close to **native speed**,\n  * **Safe**: All calls to WebAssembly will be fast, but more\n    importantly, completely safe and sandboxed,\n  * **Modular**: `wasmer` can compile the WebAssembly modules with\n    different engines or compiler.\n\n**Documentation**: [browse the detailed API\ndocumentation](https://wasmerio.github.io/wasmer-python/api/wasmer/wasmer.html) full of\nexamples.\n\n**Examples** as tutorials: [browse the `examples/`\ndirectory](https://github.com/wasmerio/wasmer-python/tree/master/examples),\nit's the best place for a complete introduction!\n\n## Quick Introduction\n\nThe `wasmer` package brings the required API to execute WebAssembly\nmodules. In a nutshell, `wasmer` compiles the WebAssembly module into\ncompiled code, and then executes it. `wasmer` is designed to work in\nvarious environments and platforms: From nano single-board computers\nto large and powerful servers, including more exotic ones. To address\nthose requirements, Wasmer provides 2 engines and 3 compilers.\n\nSuccinctly, an _engine_ is responsible to drive the _compilation_ and\nthe _execution_ of a WebAssembly module. By extension, a _headless_\nengine can only execute a WebAssembly module, i.e. a module that has\npreviously been compiled, or compiled, serialized and deserialized. By\ndefault, the `wasmer` package comes with 2 headless engines:\n\n1. `wasmer.engine.JIT`, the compiled machine code lives in memory,\n2. `wasmer.engine.Native`, the compiled machine code lives in a shared\n   object file (`.so`, `.dylib`, or `.dll`), and is natively executed.\n\nBecause `wasmer` does not embed compilers in its package, engines are\nheadless, i.e. they can't compile WebAssembly module; they can only\nexecute them. Compilers live in their own standalone packages. Let's\nbriefly introduce them:\n\n| Compiler package | Description | PyPi |\n|-|-|-|\n| `wasmer_compiler_singlepass` | Super fast compilation times, slower execution times. Not prone to JIT-bombs. *Ideal for blockchains* | [![On PyPi](https://img.shields.io/pypi/v/wasmer_compiler_singlepass)](https://pypi.org/project/wasmer_compiler_singlepass/) [![Downloads](https://pepy.tech/badge/wasmer_compiler_singlepass)](https://pypi.org/project/wasmer_compiler_singlepass/) |\n| `wasmer_compiler_cranelift` | Fast compilation times, fast execution times. *Ideal for development* | [![On PyPi](https://img.shields.io/pypi/v/wasmer_compiler_cranelift)](https://pypi.org/project/wasmer_compiler_cranelift/) [![Downloads](https://pepy.tech/badge/wasmer_compiler_cranelift)](https://pypi.org/project/wasmer_compiler_cranelift/) |\n| `wasmer_compiler_llvm` | Slow compilation times, very fast execution times (close to native, sometimes faster). *Ideal for Production* | [![On PyPi](https://img.shields.io/pypi/v/wasmer_compiler_llvm)](https://pypi.org/project/wasmer_compiler_llvm/) [![Downloads](https://pepy.tech/badge/wasmer_compiler_llvm)](https://pypi.org/project/wasmer_compiler_llvm/) |\n\nWe generally recommend `wasmer_compiler_cranelift` for development\npurposes and `wasmer_compiler_llvm` in production.\n\nLearn more by reading [the documentation of the `wasmer.engine`\nsubmodule](https://wasmerio.github.io/wasmer-python/api/wasmer/wasmer.html#engine).\n\n## Install\n\nTo install the `wasmer` Python package, and let's say the\n`wasmer_compiler_cranelift` compiler, just run those commands in your shell:\n\n```sh\n$ pip install wasmer==1.1.0\n$ pip install wasmer_compiler_cranelift==1.1.0\n```\n\nAnd you're ready to get fun!\n\n## Example\n\nWe highly recommend to read the\n[`examples/`](https://github.com/wasmerio/wasmer-python/tree/master/examples)\ndirectory, which contains a sequence of examples/tutorials. It's the\nbest place to learn by reading examples.\n\nBut for the most eager of you, and we know you're numerous you\nmischievous, there is a quick toy program in\n`examples/appendices/simple.rs`, written in Rust:\n\n```rust\n#[no_mangle]\npub extern fn sum(x: i32, y: i32) -> i32 {\n    x + y\n}\n```\n\nAfter compilation to WebAssembly, the\n[`examples/appendices/simple.wasm`](https://github.com/wasmerio/wasmer-python/blob/master/examples/appendices/simple.wasm)\nbinary file is generated. ([Download\nit](https://github.com/wasmerio/wasmer-python/raw/master/examples/appendices/simple.wasm)).\n\nThen, we can execute it in Python:\n\n```python\nfrom wasmer import engine, Store, Module, Instance\nfrom wasmer_compiler_cranelift import Compiler\n\n# Let's define the store, that holds the engine, that holds the compiler.\nstore = Store(engine.JIT(Compiler))\n\n# Let's compile the module to be able to execute it!\nmodule = Module(store, open('simple.wasm', 'rb').read())\n\n# Now the module is compiled, we can instantiate it.\ninstance = Instance(module)\n\n# Call the exported `sum` function.\nresult = instance.exports.sum(5, 37)\n\nprint(result) # 42!\n```\n\nAnd then, finally, enjoy by running:\n\n```sh\n$ python examples/appendices/simple.py\n```\n\n# Development\n\nThe Python extension is written in [Rust], with [`pyo3`] and\n[`maturin`].\n\nFirst, you need to install Rust and Python. We will not make you the\naffront to explain to you how to install Python (if you really need,\ncheck [`pyenv`](https://github.com/pyenv/pyenv/)). For Rust though, we\nadvise to use [`rustup`](https://rustup.rs/), then:\n\n```sh\n$ rustup install stable\n```\n\nTo set up your environment, you'll need [`just`], and then, install\nthe prelude of this project:\n\n```sh\n$ cargo install just\n$ just --list # to learn about all the available recipes\n$ just prelude\n```\n\nIt will install `pyo3` and `maturin` for Python and for Rust. It will\nalso install [`virtualenv`].\n\nThen, simply run:\n\n```sh\n$ source .env/bin/activate\n$ just build api\n$ just build compiler-cranelift\n$ python examples/appendices/simple.py\n```\n\n## Supported platforms\n\nWe try to provide wheels for as many platforms and architectures as\npossible. For the moment, here are the supported platforms and\narchitectures:\n\n<table>\n  <thead>\n    <tr>\n      <th>Platform</th>\n      <th>Architecture</th>\n      <th>Triple</th>\n      <th colspan=\"2\">Packages</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td rowspan=\"8\">Linux</td>\n      <td rowspan=\"4\"><code>amd64</code></td>\n      <td rowspan=\"4\"><code>x86_64-unknown-linux-gnu</code></td>\n      <td><code>wasmer</code></td>\n      <td>\u2705</td>\n    </tr>\n    <tr>\n      <td><code>wasmer_compiler_singlepass</code></td>\n      <td>\u2705</td>\n    </tr>\n    <tr>\n      <td><code>wasmer_compiler_cranelift</code></td>\n      <td>\u2705</td>\n    </tr>\n    <tr>\n      <td><code>wasmer_compiler_llvm</code></td>\n      <td>\u2705</td>\n    </tr>\n    <tr>\n      <td rowspan=\"4\"><code>aarch64</code></td>\n      <td rowspan=\"4\"><code>aarch64-unknown-linux-gnu</code></td>\n      <td><code>wasmer</code></td>\n      <td>\u2705</td>\n    </tr>\n    <tr>\n      <td><code>wasmer_compiler_singlepass</code></td>\n      <td>\u274c <sup><a href=\"#wheels-note-1\">1</a></sup></td>\n    </tr>\n    <tr>\n      <td><code>wasmer_compiler_cranelift</code></td>\n      <td>\u2705</td>\n    </tr>\n    <tr>\n      <td><code>wasmer_compiler_llvm</code></td>\n      <td>\u2705</td>\n    </tr>\n    <tr>\n      <td rowspan=\"4\">Darwin</td>\n      <td rowspan=\"4\"><code>amd64</code></td>\n      <td rowspan=\"4\"><code>x86_64-apple-darwin</code></td>\n      <td><code>wasmer</code></td>\n      <td>\u2705</td>\n    </tr>\n    <tr>\n      <td><code>wasmer_compiler_singlepass</code></td>\n      <td>\u2705</td>\n    </tr>\n    <tr>\n      <td><code>wasmer_compiler_cranelift</code></td>\n      <td>\u2705</td>\n    </tr>\n    <tr>\n      <td><code>wasmer_compiler_llvm</code></td>\n      <td>\u2705</td>\n    </tr>\n    <tr>\n      <td rowspan=\"4\">Windows</td>\n      <td rowspan=\"4\"><code>amd64</code></td>\n      <td rowspan=\"4\"><code>x86_64-pc-windows-msvc</code></td>\n      <td><code>wasmer</code></td>\n      <td>\u2705</td>\n    </tr>\n    <tr>\n      <td><code>wasmer_compiler_singlepass</code></td>\n      <td>\u2705</td>\n    </tr>\n    <tr>\n      <td><code>wasmer_compiler_cranelift</code></td>\n      <td>\u2705</td>\n    </tr>\n    <tr>\n      <td><code>wasmer_compiler_llvm</code></td>\n      <td>\u274c <sup><a href=\"#wheels-note-2\">2</a></sup></td>\n    </tr>\n  </tbody>\n</table>\n\nNotes:\n\n<ul>\n  <li id=\"wheels-note-1\"><sup>1</sup>\n  <code>wasmer_compiler_singlepass</code> does not support\n  <code>aarch64</code> for the moment</li>\n  <li id=\"wheels-note-2\"><sup>2</sup>\n  <code>wasmer_compiler_llvm</code> is not packaging properly on\n  Windows for the moment</li>\n</ul>\n\nWheels are all built for the following Python versions:\n\n* Python 3.7,\n* Python 3.8.\n* Python 3.9.\n* Python 3.10,\n\n<details>\n<summary>Learn about the \u201cfallback\u201d <code>py3-none-any</code> wheel</summary>\n\n### `py3-none-any.whl`\n\nA special `wasmer-$(version)-py3-none-any` wheel is built as a\nfallback. The `wasmer` libray will be installable, but it will raise\nan `ImportError` exception saying that \u201cWasmer is not available on\nthis system\u201d.\n\nThis wheel will be installed if none matches before (learn more by\nreading the [PEP 425, Compatibility Tags for Built\nDistributions](https://www.python.org/dev/peps/pep-0425/)).\n\n</details>\n\n## Testing\n\nBuild all the packages and run the tests:\n\n```sh\n$ just build-all\n$ just test\n```\n\n# What is WebAssembly?\n\nQuoting [the WebAssembly site](https://webassembly.org/):\n\n> WebAssembly (abbreviated Wasm) is a binary instruction format for a\n> stack-based virtual machine. Wasm is designed as a portable target\n> for compilation of high-level languages like C/C++/Rust, enabling\n> deployment on the web for client and server applications.\n\nAbout speed:\n\n> WebAssembly aims to execute at native speed by taking advantage of\n> [common hardware\n> capabilities](https://webassembly.org/docs/portability/#assumptions-for-efficient-execution)\n> available on a wide range of platforms.\n\nAbout safety:\n\n> WebAssembly describes a memory-safe, sandboxed [execution\n> environment](https://webassembly.org/docs/semantics/#linear-memory) [\u2026].\n\n# License\n\nThe entire project is under the MIT License. Please read [the\n`LICENSE` file][license].\n\n\n[`pyo3`]: https://github.com/PyO3/pyo3\n[`maturin`]: https://github.com/PyO3/maturin\n[`virtualenv`]: https://virtualenv.pypa.io/\n[`just`]: https://github.com/casey/just/\n[license]: https://github.com/wasmerio/wasmer/blob/master/LICENSE\n[Rust]: https://www.rust-lang.org/\n[compilers]: https://medium.com/wasmer/a-webassembly-compiler-tale-9ef37aa3b537\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Python extension to run WebAssembly binaries",
    "version": "1.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/wasmerio/wasmer-python/issues",
        "Documentation": "https://github.com/wasmerio/wasmer-python/",
        "Source Code": "https://github.com/wasmerio/wasmer-python"
    },
    "split_keywords": [
        "python",
        "extension",
        "webassembly"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cf0a9e5efd92e5cf24d5c08030b4f76dcdf10cbc55c639bbf4df8aeb0c76d448",
                "md5": "453d687c73340fa0eb7495bf545292c8",
                "sha256": "c2af4b907ae2dabcac41e316e811d5937c93adf1f8b05c5d49427f8ce0f37630"
            },
            "downloads": -1,
            "filename": "wasmer-1.1.0-cp310-cp310-macosx_10_7_x86_64.whl",
            "has_sig": false,
            "md5_digest": "453d687c73340fa0eb7495bf545292c8",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 1465236,
            "upload_time": "2022-01-07T23:23:52",
            "upload_time_iso_8601": "2022-01-07T23:23:52.601467Z",
            "url": "https://files.pythonhosted.org/packages/cf/0a/9e5efd92e5cf24d5c08030b4f76dcdf10cbc55c639bbf4df8aeb0c76d448/wasmer-1.1.0-cp310-cp310-macosx_10_7_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a7793f53cf611cbdd04a9b9997bf3ad18e5602350f90d404c162fbf3112684f2",
                "md5": "fce28ee1bf37ec5c254d94bee67c3c64",
                "sha256": "ab1ae980021e5ec0bf0c6cdd3b979b1d15a5f3eb2b8a32da8dcb1156e4a1e484"
            },
            "downloads": -1,
            "filename": "wasmer-1.1.0-cp310-cp310-manylinux_2_24_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fce28ee1bf37ec5c254d94bee67c3c64",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 1603286,
            "upload_time": "2022-01-07T23:23:54",
            "upload_time_iso_8601": "2022-01-07T23:23:54.467516Z",
            "url": "https://files.pythonhosted.org/packages/a7/79/3f53cf611cbdd04a9b9997bf3ad18e5602350f90d404c162fbf3112684f2/wasmer-1.1.0-cp310-cp310-manylinux_2_24_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2470ca7bf7a3f85d8de745eca73e40bc83cf86bb52ea494b33721fc0572889ab",
                "md5": "cae83dc46379ae9e7f71feaa6d4da6a2",
                "sha256": "d0d93aec6215893d33e803ef0a8d37bf948c585dd80ba0e23a83fafee820bc03"
            },
            "downloads": -1,
            "filename": "wasmer-1.1.0-cp310-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "cae83dc46379ae9e7f71feaa6d4da6a2",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": null,
            "size": 1435852,
            "upload_time": "2022-01-07T23:23:56",
            "upload_time_iso_8601": "2022-01-07T23:23:56.134755Z",
            "url": "https://files.pythonhosted.org/packages/24/70/ca7bf7a3f85d8de745eca73e40bc83cf86bb52ea494b33721fc0572889ab/wasmer-1.1.0-cp310-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7121091c53b34e312bea376cb4a5806834f84e674e7f78d52eb92423cedf8a5f",
                "md5": "b1a259efaa6e55f138ae85f5fabcccc0",
                "sha256": "1e63d16bd6e2e2272d8721647831de5c537e0bb08002ee6d7abf167ec02d5178"
            },
            "downloads": -1,
            "filename": "wasmer-1.1.0-cp37-cp37m-macosx_10_7_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b1a259efaa6e55f138ae85f5fabcccc0",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 1466139,
            "upload_time": "2022-01-07T23:23:57",
            "upload_time_iso_8601": "2022-01-07T23:23:57.450385Z",
            "url": "https://files.pythonhosted.org/packages/71/21/091c53b34e312bea376cb4a5806834f84e674e7f78d52eb92423cedf8a5f/wasmer-1.1.0-cp37-cp37m-macosx_10_7_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5c7f9b96442cc3984baa7a5e5651901202176cb30fe879fef0c4f79020566262",
                "md5": "8fb5a3cd7148fb716f869510b8b73d3b",
                "sha256": "85e6a5bf44853e8e6a12e947ee3412da9e84f7ce49fc165ba5dbd293e9c5c405"
            },
            "downloads": -1,
            "filename": "wasmer-1.1.0-cp37-cp37m-manylinux_2_24_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8fb5a3cd7148fb716f869510b8b73d3b",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 1607108,
            "upload_time": "2022-01-07T23:23:58",
            "upload_time_iso_8601": "2022-01-07T23:23:58.577029Z",
            "url": "https://files.pythonhosted.org/packages/5c/7f/9b96442cc3984baa7a5e5651901202176cb30fe879fef0c4f79020566262/wasmer-1.1.0-cp37-cp37m-manylinux_2_24_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d6389f92d6a54aa11fcb74e3dd1a790a2ed531ff267ed3d2e256480ad00ce26b",
                "md5": "c29a7ac98d9f5cda38a598c10bec264d",
                "sha256": "a182a6eca9b46d895b4985fc822fab8da3d2f84fab74ca27e55a7430a7fcf336"
            },
            "downloads": -1,
            "filename": "wasmer-1.1.0-cp37-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "c29a7ac98d9f5cda38a598c10bec264d",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 1437406,
            "upload_time": "2022-01-07T23:23:59",
            "upload_time_iso_8601": "2022-01-07T23:23:59.957012Z",
            "url": "https://files.pythonhosted.org/packages/d6/38/9f92d6a54aa11fcb74e3dd1a790a2ed531ff267ed3d2e256480ad00ce26b/wasmer-1.1.0-cp37-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a177e8f9b4e32fcdf2d54dfab67e26cc7557a094e85817281e8f203294d4ea52",
                "md5": "e34b6cf9747334bcc7732aea8b52808f",
                "sha256": "214d9a3cfb577ea9449eb2b5f13adceae34c55365e4c3d930066beb86a7f67bc"
            },
            "downloads": -1,
            "filename": "wasmer-1.1.0-cp38-cp38-macosx_10_7_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e34b6cf9747334bcc7732aea8b52808f",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 1466362,
            "upload_time": "2022-01-07T23:24:01",
            "upload_time_iso_8601": "2022-01-07T23:24:01.685302Z",
            "url": "https://files.pythonhosted.org/packages/a1/77/e8f9b4e32fcdf2d54dfab67e26cc7557a094e85817281e8f203294d4ea52/wasmer-1.1.0-cp38-cp38-macosx_10_7_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "93f597ecad043c138f48c37ce4f0fa782831b5d2dbb3f7d80031f07105b9e7ba",
                "md5": "1549f14af83dce9a491e617455227a60",
                "sha256": "b9e5605552bd7d2bc6337519b176defe83bc69b98abf3caaaefa4f7ec231d18a"
            },
            "downloads": -1,
            "filename": "wasmer-1.1.0-cp38-cp38-manylinux_2_24_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1549f14af83dce9a491e617455227a60",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 1606982,
            "upload_time": "2022-01-07T23:24:03",
            "upload_time_iso_8601": "2022-01-07T23:24:03.002661Z",
            "url": "https://files.pythonhosted.org/packages/93/f5/97ecad043c138f48c37ce4f0fa782831b5d2dbb3f7d80031f07105b9e7ba/wasmer-1.1.0-cp38-cp38-manylinux_2_24_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7fd71d346733b1c32dc6a95053e09baa9979322dc09fd5273b3db328c547f059",
                "md5": "afaa19be3102112f4668f9deed0090a6",
                "sha256": "20b5190112e2e94a8947967f2bc683c9685855d0f34130d8434c87a55216a3bd"
            },
            "downloads": -1,
            "filename": "wasmer-1.1.0-cp38-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "afaa19be3102112f4668f9deed0090a6",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 1437782,
            "upload_time": "2022-01-07T23:24:04",
            "upload_time_iso_8601": "2022-01-07T23:24:04.257526Z",
            "url": "https://files.pythonhosted.org/packages/7f/d7/1d346733b1c32dc6a95053e09baa9979322dc09fd5273b3db328c547f059/wasmer-1.1.0-cp38-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1242142b95b68e3cb9f1b49174677e1861575a47fdac0221f46d9a8631d2b469",
                "md5": "f3277357137c045fcfecdcc6ac6135d4",
                "sha256": "ee442f0970f40ec5e32011c92fd753fb2061da0faa13de13fafc730c31be34e3"
            },
            "downloads": -1,
            "filename": "wasmer-1.1.0-cp39-cp39-macosx_10_7_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f3277357137c045fcfecdcc6ac6135d4",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 1465895,
            "upload_time": "2022-01-07T23:24:05",
            "upload_time_iso_8601": "2022-01-07T23:24:05.663354Z",
            "url": "https://files.pythonhosted.org/packages/12/42/142b95b68e3cb9f1b49174677e1861575a47fdac0221f46d9a8631d2b469/wasmer-1.1.0-cp39-cp39-macosx_10_7_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f7d1502e40f1c63c8ddcfc9c5dee41af1c109c0cc0373e176c476cf46c205b21",
                "md5": "155b264858ad8316084f20b34880a706",
                "sha256": "aa112198b743cff2e391230436813fb4b244a24443e37866522b7197e3a034da"
            },
            "downloads": -1,
            "filename": "wasmer-1.1.0-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "155b264858ad8316084f20b34880a706",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 1299323,
            "upload_time": "2022-01-10T10:28:16",
            "upload_time_iso_8601": "2022-01-10T10:28:16.133366Z",
            "url": "https://files.pythonhosted.org/packages/f7/d1/502e40f1c63c8ddcfc9c5dee41af1c109c0cc0373e176c476cf46c205b21/wasmer-1.1.0-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dda66f9cf77500073969c96afd626857694418d707cc97c15705665250420c67",
                "md5": "a4d98f3ff8a72b3170e8d49ddd72df40",
                "sha256": "c0b37117f6d3ff51ee96431c7d224d99799b08d174e30fcd0fcd7e2e3cb8140c"
            },
            "downloads": -1,
            "filename": "wasmer-1.1.0-cp39-cp39-manylinux_2_24_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a4d98f3ff8a72b3170e8d49ddd72df40",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 1605224,
            "upload_time": "2022-01-07T23:24:06",
            "upload_time_iso_8601": "2022-01-07T23:24:06.793266Z",
            "url": "https://files.pythonhosted.org/packages/dd/a6/6f9cf77500073969c96afd626857694418d707cc97c15705665250420c67/wasmer-1.1.0-cp39-cp39-manylinux_2_24_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b032f6978008cdfd7b932a9ae7dc233688f0a4db29b73b59c23d9182731d57a3",
                "md5": "4737eb60ac0b839862563a13b922231e",
                "sha256": "a0a4730ec4907a4cb0d9d4a77ea2608c2c814f22a22b73fc80be0f110e014836"
            },
            "downloads": -1,
            "filename": "wasmer-1.1.0-cp39-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4737eb60ac0b839862563a13b922231e",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 1437240,
            "upload_time": "2022-01-07T23:24:08",
            "upload_time_iso_8601": "2022-01-07T23:24:08.491188Z",
            "url": "https://files.pythonhosted.org/packages/b0/32/f6978008cdfd7b932a9ae7dc233688f0a4db29b73b59c23d9182731d57a3/wasmer-1.1.0-cp39-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "396b30e25924cae7add377f5601e71c778e9a1e515c7a58291f52756c1bb7e87",
                "md5": "ffdb0cf30e3528769d055b56e60a9073",
                "sha256": "2caf8c67feae9cd4246421551036917811c446da4f27ad4c989521ef42751931"
            },
            "downloads": -1,
            "filename": "wasmer-1.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ffdb0cf30e3528769d055b56e60a9073",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 1617,
            "upload_time": "2022-01-07T23:24:10",
            "upload_time_iso_8601": "2022-01-07T23:24:10.046655Z",
            "url": "https://files.pythonhosted.org/packages/39/6b/30e25924cae7add377f5601e71c778e9a1e515c7a58291f52756c1bb7e87/wasmer-1.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-01-07 23:23:52",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "wasmerio",
    "github_project": "wasmer-python",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "wasmer"
}
        
Elapsed time: 0.10527s