{ "info": { "author": "Ivan Enderlin ", "author_email": "Ivan Enderlin ", "bugtrack_url": null, "classifiers": [], "description": "

\n \n \"Wasmer\n \n

\n\n

\n \n \"Join\n \n \"Pypi\"\n \n \"Number\n \n \"License\"\n

\n\nWasmer is a Python library for executing WebAssembly binaries:\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\n# Install\n\nTo install the `wasmer` Python library, just run this command in your\nshell:\n\n```sh\n$ pip install wasmer\n```\n\n**Note**: There is a limited set of wheels published so far. More are\ncoming.\n\n[View the `wasmer` on Pypi](https://pypi.org/project/wasmer/).\n\n# Example\n\nThere is a toy program in `examples/simple.rs`, written in Rust (or\nany other language that compiles to WebAssembly):\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/simple.wasm`](https://github.com/wasmerio/python-ext-wasm/blob/master/examples/simple.wasm)\nbinary file is generated. ([Download\nit](https://github.com/wasmerio/python-ext-wasm/raw/master/examples/simple.wasm)).\n\nThen, we can excecute it in Python:\n\n```python\nfrom wasmer import Instance\n\nwasm_bytes = open('simple.wasm', 'rb').read()\ninstance = Instance(wasm_bytes)\nresult = instance.exports.sum(5, 37)\n\nprint(result) # 42!\n```\n\nAnd then, finally, enjoy by running:\n\n```sh\n$ python examples/simple.py\n```\n\n# API of the `wasmer` extension/module\n\n## The `Instance` class\n\nInstantiates a WebAssembly module represented by bytes, and calls\nexported functions on it:\n\n```python\nfrom wasmer import Instance\n\n# Get the Wasm module as bytes.\nwasm_bytes = open('my_program.wasm', 'rb').read()\n\n# Instantiate the Wasm module.\ninstance = Instance(wasm_bytes)\n\n# Call a function on it.\nresult = instance.exports.sum(1, 2)\n\nprint(result) # 3\n```\n\nAll exported functions are accessible on the `exports` getter.\nArguments of these functions are automatically casted to WebAssembly\nvalues. If one wants to explicitely pass a value of a particular type,\nit is possible to use the `Value` class,\ne.g. `instance.exports.sum(Value.i32(1), Value.i32(2))`. Note that for\nmost usecases, this is not necessary.\n\nThe `memory` getter exposes the `Memory` class representing the memory\nof that particular instance, e.g.:\n\n```python\nview = instance.memory.uint8_view()\n```\n\nSee below for more information.\n\n## The `Module` class\n\nCompiles a sequence of bytes into a WebAssembly module. From here, it\nis possible to instantiate it:\n\n```python\nfrom wasmer import Module\n\n# Get the Wasm bytes.\nwasm_bytes = open('my_program.wasm', 'rb').read()\n\n# Compile the bytes into a Wasm module.\nmodule = Module(wasm_bytes)\n\n# Instantiate the Wasm module.\ninstance = module.instantiate()\n\n# Call a function on it.\nresult = instance.exports.sum(1, 2)\n\nprint(result) # 3\n```\n\nThe `Module.serialize` method and its complementary\n`Module.deserialize` static method help to respectively serialize and\ndeserialize a compiled WebAssembly module, thus saving the compilation\ntime for the next use:\n\n```python\nfrom wasmer import Module\n\n# Get the Wasm bytes.\nwasm_bytes = open('my_program.wasm', 'rb').read()\n\n# Compile the bytes into a Wasm module.\nmodule1 = Module(wasm_bytes)\n\n# Serialize the module.\nserialized_module = module1.serialize()\n\n# Let's forget about the module for this example.\ndel module1\n\n# Deserialize the module.\nmodule2 = Module.deserialize(serialized_module)\n\n# Instantiate and use it.\nresult = module2.instantiate().exports.sum(1, 2)\n\nprint(result) # 3\n```\n\nA serialized module is a sequence of bytes. They can be saved in any\nstorage.\n\nThe `Module.validate` static method check whether the given bytes\nrepresent valid WebAssembly bytes:\n\n```python\nfrom wasmer import Module\n\nwasm_bytes = open('my_program.wasm', 'rb').read()\n\nif not Module.validate(wasm_bytes):\n print('The program seems corrupted.')\n```\n\n## The `Value` class\n\nBuilds WebAssembly values with the correct types:\n\n```python\nfrom wasmer import Value\n\n# Integer on 32-bits.\nvalue_i32 = Value.i32(7)\n\n# Integer on 64-bits.\nvalue_i64 = Value.i64(7)\n\n# Float on 32-bits.\nvalue_f32 = Value.f32(7.42)\n\n# Float on 64-bits.\nvalue_f64 = Value.f64(7.42)\n```\n\nThe `Value.[if](32|64)` static methods must be considered as static\nconstructors.\n\nThe `__repr__` method allows to get a string representation of a\n`Value` instance:\n\n```python\nprint(repr(value_i32)) # I32(7)\n```\n\n## The `Memory` class\n\nA WebAssembly instance has its own memory, represented by the `Memory`\nclass. It is accessible by the `Instance.memory` getter.\n\nThe `Memory.grow` method allows to grow the memory by a number of\npages (of 65kb each).\n\n```python\ninstance.memory.grow(1)\n```\n\nThe `Memory` class offers methods to create views of the memory\ninternal buffer, e.g. `uint8_view`, `int8_view`, `uint16_view`\netc. All these methods accept one argument: `offset`, to subset the\nmemory buffer at a particular offset. These methods return\nrespectively a `*Array` object, i.e. `uint8_view` returns a\n`Uint8Array` object etc.\n\n```python\noffset = 7\nview = instance.memory.uint8_view(offset)\n\nprint(view[0])\n```\n\n### The `*Array` classes\n\nThese classes represent views over a memory buffer of an instance.\n\n| Class | View buffer as a sequence of\u2026 | Bytes per element |\n|-|-|-|\n| `Int8Array` | `int8` | 1 |\n| `Uint8Array` | `uint8` | 1 |\n| `Int16Array` | `int16` | 2 |\n| `Uint16Array` | `uint16` | 2 |\n| `Int32Array` | `int32` | 4 |\n| `Uint32Array` | `uint32` | 4 |\n\nAll these classes share the same implementation. Taking the example of\n`Uint8Array`, the class looks like this:\n\n```python\nclass Uint8Array:\n @property\n def bytes_per_element()\n\n def __len__()\n def __getitem__(index|slice)\n def __setitem__(index, value)\n```\n\nLet's see it in action:\n\n```python\nfrom wasmer import Instance\n\n# Get the Wasm module as bytes.\nwasm_bytes = open('my_program.wasm', 'rb').read()\n\n# Instantiate the Wasm module.\ninstance = Instance(wasm_bytes)\n\n# Call a function that returns a pointer to a string for instance.\npointer = instance.exports.return_string()\n\n# Get the memory view, with the offset set to `pointer` (default is 0).\nmemory = instance.memory.uint8_view(pointer)\nmemory_length = len(memory)\n\n# Read the string pointed by the pointer.\nnth = 0;\nstring = ''\n\nwhile nth < memory_length:\n char = memory[nth]\n \n if char == 0:\n break\n\n string += chr(char)\n nth += 1\n\nprint(string) # Hello, World!\n```\n\nA slice can be used as index of the `__getitem__` method, which is\nuseful when we already know the size of the data we want to read, e.g.:\n\n```python\nprint(''.join(map(chr, memory[0:13]))) # Hello, World!\n```\n\nNotice that `*Array` treat bytes in little-endian, as required by the\nWebAssembly specification, [Chapter Structure, Section Instructions,\nSub-Section Memory\nInstructions](https://webassembly.github.io/spec/core/syntax/instructions.html#memory-instructions):\n\n> All values are read and written in [little\n> endian](https://en.wikipedia.org/wiki/Endianness#Little-endian) byte\n> order.\n\nEach view shares the same memory buffer internally. Let's have some fun:\n\n```python\nint8 = instance.memory.int8_view()\nint16 = instance.memory.int16_view()\nint32 = instance.memory.int32_view()\n\n b\u2081\n \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510\nint8[0] = 0b00000001\n b\u2082\n \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510\nint8[1] = 0b00000100\n b\u2083\n \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510\nint8[2] = 0b00010000\n b\u2084\n \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510\nint8[3] = 0b01000000\n\n// No surprise with the following assertions.\n b\u2081\n \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510\nassert int8[0] == 0b00000001\n b\u2082\n \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510\nassert int8[1] == 0b00000100\n b\u2083\n \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510\nassert int8[2] == 0b00010000\n b\u2084\n \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510\nassert int8[3] == 0b01000000\n\n// The `int16` view reads 2 bytes.\n b\u2082 b\u2081\n \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510 \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510\nassert int16[0] == 0b00000100_00000001\n b\u2084 b\u2083\n \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510 \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510\nassert int16[1] == 0b01000000_00010000\n\n// The `int32` view reads 4 bytes.\n b\u2084 b\u2083 b\u2082 b\u2081\n \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510 \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510 \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510 \u250c\u252c\u252c\u252c\u252c\u252c\u252c\u2510\nassert int32[0] == 0b01000000_00010000_00000100_00000001\n```\n\n# Development\n\nThe Python extension is written in Rust, with [`pyo3`] and\n[`pyo3-pack`].\n\nTo set up your environment, run only once:\n\n```sh\n$ just prelude\n```\n\nIt will install `pyo3-pack` for Python and for Rust. It will also\ninstall [`virtualenv`].\n\nThen, simply run:\n\n```sh\n$ .env/bin/activate\n$ just build\n$ just python-run examples/simple.py\n```\n\nIf you need to interact with Python, or run a specific file, use the\nfollowing commands:\n\n```sh\n$ just python-run\n$ just python-run file/to/run.py\n```\n\nFinally, to inspect the extension; run:\n\n```sh\n$ just inspect\n```\n\n(Yes, you need [`just`]).\n\n# Testing\n\nOnce the extension is compiled and installed (just run `just build`),\nrun the following command:\n\n```sh\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[Pypi]: https://pypi.org/\n[`rust-cpython`]: https://github.com/dgrunwald/rust-cpython\n[`pyo3`]: https://github.com/PyO3/pyo3\n[`pyo3-pack`]: https://github.com/PyO3/pyo3-pack\n[`virtualenv`]: https://virtualenv.pypa.io/\n[`just`]: https://github.com/casey/just/\n[license]: https://github.com/wasmerio/wasmer/blob/master/LICENSE\n", "description_content_type": "text/markdown; charset=UTF-8; variant=GFM", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "python extension webassembly", "license": "", "maintainer": "", "maintainer_email": "", "name": "wasmer", "package_url": "https://pypi.org/project/wasmer/", "platform": "", "project_url": "https://pypi.org/project/wasmer/", "project_urls": null, "release_url": "https://pypi.org/project/wasmer/0.3.0/", "requires_dist": null, "requires_python": "", "summary": "Python extension to run WebAssembly binaries", "version": "0.3.0" }, "last_serial": 5548022, "releases": { "0.1.3": [ { "comment_text": "", "digests": { "md5": "32beb9448df0452e046ff80bbcb9a24e", "sha256": "557beda28a8df8b2dd7f59c73b19f1d309ecfba0c43ee2fb5108fbeae7019b49" }, "downloads": -1, "filename": "wasmer-0.1.3-cp37-cp37m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "32beb9448df0452e046ff80bbcb9a24e", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 948324, "upload_time": "2019-04-11T00:31:09", "url": "https://files.pythonhosted.org/packages/85/8a/bad015026eec52a9c6542545e2d0ce5905b525f5240cd24e3be58bb32c05/wasmer-0.1.3-cp37-cp37m-macosx_10_7_x86_64.whl" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "72bd075a49c3c0910b6f908208770019", "sha256": "68f0f301a1b70f79f4240f178124cd2f69b4ad8da0b81874b9fce3c90b4e7b3c" }, "downloads": -1, "filename": "wasmer-0.1.4-cp35-cp35m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "72bd075a49c3c0910b6f908208770019", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 948631, "upload_time": "2019-04-11T01:29:54", "url": "https://files.pythonhosted.org/packages/17/a5/2ff54d0b98c14522bde143f0fb60eb7b67fd9a83bc91c5cb494dcc1eafea/wasmer-0.1.4-cp35-cp35m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "fd69866309bb6e282d7cc3228c88e94a", "sha256": "3c5305fa114a3b7364ed390b15ee5ad6c861a959b0d6e7389970b29cd9c14000" }, "downloads": -1, "filename": "wasmer-0.1.4-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "fd69866309bb6e282d7cc3228c88e94a", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 1035960, "upload_time": "2019-04-12T00:28:33", "url": "https://files.pythonhosted.org/packages/ce/8d/7f10906e7ca14f64052c10d37a43a16f6fa4a6c86cfb5cb20cbfae034ef3/wasmer-0.1.4-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "f926418b36c9f446052560279ac0199d", "sha256": "fb9f5696584944283e1a8364da4cc3bee638a2d2e3fe70e16a62452d89820235" }, "downloads": -1, "filename": "wasmer-0.1.4-cp36-cp36m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "f926418b36c9f446052560279ac0199d", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 948632, "upload_time": "2019-04-11T01:29:51", "url": "https://files.pythonhosted.org/packages/b2/65/b599e66caf7debf079640db8c177c9ed1e3bfdd4772d6722090f97177e5d/wasmer-0.1.4-cp36-cp36m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "70f8fa8ec6ae9affbb4fb7526cdd5cad", "sha256": "16ccaaf739fad0cf7e62d337962566dfe6dd4c1f751cd2596f33926044872a3b" }, "downloads": -1, "filename": "wasmer-0.1.4-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "70f8fa8ec6ae9affbb4fb7526cdd5cad", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 1035959, "upload_time": "2019-04-12T00:28:31", "url": "https://files.pythonhosted.org/packages/8c/56/ed784d21e15b9d15cd3177fc0966bd4e3f86e46a29e09c18c7b7cde2cc77/wasmer-0.1.4-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "c7a87c4f559a1759ff10ace4202db3a9", "sha256": "14749cb9835f7964eed03dabb0110c992a31f6f0fcd7f5e6a63d473809254707" }, "downloads": -1, "filename": "wasmer-0.1.4-cp37-cp37m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "c7a87c4f559a1759ff10ace4202db3a9", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 948630, "upload_time": "2019-04-11T01:29:48", "url": "https://files.pythonhosted.org/packages/ba/b5/5cd2c835b265fbe47b4e94464dde8c957a269c8ef491aeeb9745b6938c15/wasmer-0.1.4-cp37-cp37m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "ee8c18d392ade933843d0c2d57be9780", "sha256": "8a4e400fd5be4cfa2029e0aaf0388d37a37e5541cc0ce0544bc6d66bac19e354" }, "downloads": -1, "filename": "wasmer-0.1.4-cp37-cp37m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "ee8c18d392ade933843d0c2d57be9780", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1035960, "upload_time": "2019-04-12T00:28:29", "url": "https://files.pythonhosted.org/packages/8d/09/374b2c92fdf0a6dc11c069a862bfcca5f9ecd18952e4e3e14b84fb52dead/wasmer-0.1.4-cp37-cp37m-manylinux1_x86_64.whl" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "9bca17469b2de12ec64618789a33709c", "sha256": "b3604a6f1d9952bf93e4b0e46ec0f4afaad53f1c839ce15804b4d0c86a988b44" }, "downloads": -1, "filename": "wasmer-0.1.5-cp35-cp35m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "9bca17469b2de12ec64618789a33709c", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 972319, "upload_time": "2019-04-15T22:48:07", "url": "https://files.pythonhosted.org/packages/ef/48/ad60aef0443ec9e207359a33f42e7edf48cec899d7a33aff03988242a53c/wasmer-0.1.5-cp35-cp35m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "3901b84b30426cc9b827ad10b2a2c8ac", "sha256": "98983c69e99d9f2dabe9637c5132613c222f5a5940f0c31dc018c9381a7ea91d" }, "downloads": -1, "filename": "wasmer-0.1.5-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "3901b84b30426cc9b827ad10b2a2c8ac", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 1042924, "upload_time": "2019-04-15T22:45:43", "url": "https://files.pythonhosted.org/packages/ec/71/28f411d134800f0e0650184a1cceeabd817174d3a8c5dcac60366ab19589/wasmer-0.1.5-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "ede9b655fce897c4e26e2a84c752f788", "sha256": "48059fb6dae38f7ef2050c77d6aa3849280434fdbe8aadc94a873675884fd382" }, "downloads": -1, "filename": "wasmer-0.1.5-cp36-cp36m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "ede9b655fce897c4e26e2a84c752f788", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 972407, "upload_time": "2019-04-15T22:48:04", "url": "https://files.pythonhosted.org/packages/c0/97/19a0d91c73ec5126c0f5aa6eefc114d59c7320fc271f2255227c6e9db811/wasmer-0.1.5-cp36-cp36m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "04c32299dba2694c30dc12b09050ccbc", "sha256": "6cbcf5a7867565f9d06decb8e3ab392dafec7a431b93d900e36f926daddd6aed" }, "downloads": -1, "filename": "wasmer-0.1.5-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "04c32299dba2694c30dc12b09050ccbc", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 1043030, "upload_time": "2019-04-15T22:45:41", "url": "https://files.pythonhosted.org/packages/8c/9a/82c4f3856361311da08cac9b04058e7a110493aeeac1ccbd4900a25eb1fd/wasmer-0.1.5-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "adf57a612b35247fd927df9fe7748941", "sha256": "fe613759adbc590c78296eaec2041f57b2ef7e699e4fc66d5b1ee4c86958d039" }, "downloads": -1, "filename": "wasmer-0.1.5-cp37-cp37m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "adf57a612b35247fd927df9fe7748941", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 972462, "upload_time": "2019-04-15T22:48:01", "url": "https://files.pythonhosted.org/packages/6f/b6/580feafc36d40d07e3983ff800afec2a002284f0c77707ec68ab8e2a5e92/wasmer-0.1.5-cp37-cp37m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "dd801c1a6b367a3707bf08b3847f1c4d", "sha256": "fccc16a57700df02df68f0cffd5269f2deea26f391fe06c6f9dec379c53fa81c" }, "downloads": -1, "filename": "wasmer-0.1.5-cp37-cp37m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "dd801c1a6b367a3707bf08b3847f1c4d", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1042987, "upload_time": "2019-04-15T22:45:39", "url": "https://files.pythonhosted.org/packages/74/33/97bad814ab994d4dc1913abd8f301143da7f702b531cde889b36a6e0e165/wasmer-0.1.5-cp37-cp37m-manylinux1_x86_64.whl" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "2d0c3a273b74017d9304e95a0c83cdb2", "sha256": "f8cbeaac6c6a323a49684a6afd59ce2e53f096587ce1a22f1932a2ffcc093748" }, "downloads": -1, "filename": "wasmer-0.2.0-cp35-cp35m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "2d0c3a273b74017d9304e95a0c83cdb2", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 972932, "upload_time": "2019-04-15T23:02:23", "url": "https://files.pythonhosted.org/packages/c2/67/16c3a45451e64525cd244a27692ffffcb689fa12038cd07989986830ce0b/wasmer-0.2.0-cp35-cp35m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "ac133e86865dd94684fed7db7667bd94", "sha256": "2bfefe62c3d7e6c2cc8d8a2bf18f485c9c160783a1f48cb6236da3873ecf5a5e" }, "downloads": -1, "filename": "wasmer-0.2.0-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "ac133e86865dd94684fed7db7667bd94", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 1043628, "upload_time": "2019-04-15T23:04:37", "url": "https://files.pythonhosted.org/packages/51/72/068334b0395f6b534d16320137bf892a3d4455cff43440d93d5c1fc92ee4/wasmer-0.2.0-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "67a2c21e33a7d99a09402120c3588321", "sha256": "db33eded68ea8b250f596f853f23f77184466487d2ea4feb8a439fab10623ab5" }, "downloads": -1, "filename": "wasmer-0.2.0-cp36-cp36m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "67a2c21e33a7d99a09402120c3588321", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 972893, "upload_time": "2019-04-15T23:02:20", "url": "https://files.pythonhosted.org/packages/29/67/73213ea3da9f68cb5dd7fc222b7d2fa24edac4ca7e770270f257b3736868/wasmer-0.2.0-cp36-cp36m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "2ecf180f4339926e9cf6b1ab9f73392f", "sha256": "1d0b9adee04205e592f9b5c6da9c1a4a6e930f826e70f47890c3afe9de5a507f" }, "downloads": -1, "filename": "wasmer-0.2.0-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "2ecf180f4339926e9cf6b1ab9f73392f", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 1043661, "upload_time": "2019-04-15T23:04:35", "url": "https://files.pythonhosted.org/packages/e6/64/d24089c3279c6ef14c9d1f03ed9a459316b83b2dbd3ad4d9f70dc0eefbb2/wasmer-0.2.0-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "51ea3c718d87f209cb86fd3279461b9d", "sha256": "2e9dcb3022f02787dcd39cf934679eea5e95241c25979db23c6872a0798abec2" }, "downloads": -1, "filename": "wasmer-0.2.0-cp37-cp37m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "51ea3c718d87f209cb86fd3279461b9d", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 972946, "upload_time": "2019-04-15T23:02:17", "url": "https://files.pythonhosted.org/packages/9a/8f/f48f4ca3afa9eebbbe679ad7d29e755d5952ccd594d1c29f215020f22e39/wasmer-0.2.0-cp37-cp37m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "c912ddd72fe597ab3eb45191e1820506", "sha256": "7844eb79725cf5b5f280c37b984acd2c90c4f737920482f8a169440bb802fe13" }, "downloads": -1, "filename": "wasmer-0.2.0-cp37-cp37m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "c912ddd72fe597ab3eb45191e1820506", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1043466, "upload_time": "2019-04-15T23:04:34", "url": "https://files.pythonhosted.org/packages/2c/a7/e357c5947bf115a1e4b79157293424d575772ced9e33506ea389649d63b2/wasmer-0.2.0-cp37-cp37m-manylinux1_x86_64.whl" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "a674346ea871cf33cc9622dd22fb7c37", "sha256": "75d854cb5acdc32f289ceb310a72d66190fa531dd126eac970ed6788939a5d40" }, "downloads": -1, "filename": "wasmer-0.3.0-cp35-cp35m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "a674346ea871cf33cc9622dd22fb7c37", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 994240, "upload_time": "2019-07-16T08:34:44", "url": "https://files.pythonhosted.org/packages/ef/62/c345db886f6ec90f1d9e3398ea2ed18432223a564eb040bc5e4468746687/wasmer-0.3.0-cp35-cp35m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "f25c78c02d68e2707b488eb1dc054e83", "sha256": "7b5235dd4ee1cf48d054e7216a1fefe15b8b1a48ffe5e9bb2655724cf84d7a31" }, "downloads": -1, "filename": "wasmer-0.3.0-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "f25c78c02d68e2707b488eb1dc054e83", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 1123491, "upload_time": "2019-07-16T08:12:39", "url": "https://files.pythonhosted.org/packages/7a/81/92e72fa0643a8360edf12eadaf76bc63592187e5190de2c75be807056ce2/wasmer-0.3.0-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "b8a874746e9534928860f09c28ba4844", "sha256": "4fe592b764fc09d535757682d0ced6da1037976a7eb97986fce3523779a89682" }, "downloads": -1, "filename": "wasmer-0.3.0-cp36-cp36m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "b8a874746e9534928860f09c28ba4844", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 994318, "upload_time": "2019-07-16T08:34:31", "url": "https://files.pythonhosted.org/packages/f3/d1/43eedf0c73e9b8af15f7382ee9dbdfac043f2424187d716f8563808346f1/wasmer-0.3.0-cp36-cp36m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "83013f26426f0025aac1039de011149c", "sha256": "e547b1074e52c10f0581de415b509aa61e577f5248340a68b356938393d773c8" }, "downloads": -1, "filename": "wasmer-0.3.0-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "83013f26426f0025aac1039de011149c", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 1123467, "upload_time": "2019-07-16T08:12:37", "url": "https://files.pythonhosted.org/packages/a7/89/739e34035f355ab4aa0801f5cdda07ce50247d7feed38a6075b8962514ed/wasmer-0.3.0-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "21c38368d7668f073f1f1303c5823194", "sha256": "2edb87608daa3b46bd2520e0b5b90580fde9c805be4d92eeb98c22b29a21abc6" }, "downloads": -1, "filename": "wasmer-0.3.0-cp37-cp37m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "21c38368d7668f073f1f1303c5823194", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 994014, "upload_time": "2019-07-16T08:34:18", "url": "https://files.pythonhosted.org/packages/02/61/8cd89aec2149cf81c005532157471bb1e0c4837a2b9332e619454ec99ded/wasmer-0.3.0-cp37-cp37m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "53f21d0390bccc9aca2299869788b4f6", "sha256": "fcfe2c7a9fbf323f3520ef9766b82e80cd433d7f8c87ff084b18bcde716923af" }, "downloads": -1, "filename": "wasmer-0.3.0-cp37-cp37m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "53f21d0390bccc9aca2299869788b4f6", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1123064, "upload_time": "2019-07-16T08:12:35", "url": "https://files.pythonhosted.org/packages/ee/5f/93eac0a1c307ab97df5fd91cbb91c23dc464df604f1af62b520031abd8d7/wasmer-0.3.0-cp37-cp37m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "1b86acbbd4ce1f9fc58cbb428e66f83b", "sha256": "1d2c337425721fd9ac6c6b17698ef8a9795b236a38b0e3c85872a5845ffb0d90" }, "downloads": -1, "filename": "wasmer-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1b86acbbd4ce1f9fc58cbb428e66f83b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1338, "upload_time": "2019-07-17T22:51:22", "url": "https://files.pythonhosted.org/packages/c8/91/03f6a73ebce72f0bc208314403d74bf6b11082f689e9693a3dfafd75b105/wasmer-0.3.0-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a674346ea871cf33cc9622dd22fb7c37", "sha256": "75d854cb5acdc32f289ceb310a72d66190fa531dd126eac970ed6788939a5d40" }, "downloads": -1, "filename": "wasmer-0.3.0-cp35-cp35m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "a674346ea871cf33cc9622dd22fb7c37", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 994240, "upload_time": "2019-07-16T08:34:44", "url": "https://files.pythonhosted.org/packages/ef/62/c345db886f6ec90f1d9e3398ea2ed18432223a564eb040bc5e4468746687/wasmer-0.3.0-cp35-cp35m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "f25c78c02d68e2707b488eb1dc054e83", "sha256": "7b5235dd4ee1cf48d054e7216a1fefe15b8b1a48ffe5e9bb2655724cf84d7a31" }, "downloads": -1, "filename": "wasmer-0.3.0-cp35-cp35m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "f25c78c02d68e2707b488eb1dc054e83", "packagetype": "bdist_wheel", "python_version": "cp35", "requires_python": null, "size": 1123491, "upload_time": "2019-07-16T08:12:39", "url": "https://files.pythonhosted.org/packages/7a/81/92e72fa0643a8360edf12eadaf76bc63592187e5190de2c75be807056ce2/wasmer-0.3.0-cp35-cp35m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "b8a874746e9534928860f09c28ba4844", "sha256": "4fe592b764fc09d535757682d0ced6da1037976a7eb97986fce3523779a89682" }, "downloads": -1, "filename": "wasmer-0.3.0-cp36-cp36m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "b8a874746e9534928860f09c28ba4844", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 994318, "upload_time": "2019-07-16T08:34:31", "url": "https://files.pythonhosted.org/packages/f3/d1/43eedf0c73e9b8af15f7382ee9dbdfac043f2424187d716f8563808346f1/wasmer-0.3.0-cp36-cp36m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "83013f26426f0025aac1039de011149c", "sha256": "e547b1074e52c10f0581de415b509aa61e577f5248340a68b356938393d773c8" }, "downloads": -1, "filename": "wasmer-0.3.0-cp36-cp36m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "83013f26426f0025aac1039de011149c", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 1123467, "upload_time": "2019-07-16T08:12:37", "url": "https://files.pythonhosted.org/packages/a7/89/739e34035f355ab4aa0801f5cdda07ce50247d7feed38a6075b8962514ed/wasmer-0.3.0-cp36-cp36m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "21c38368d7668f073f1f1303c5823194", "sha256": "2edb87608daa3b46bd2520e0b5b90580fde9c805be4d92eeb98c22b29a21abc6" }, "downloads": -1, "filename": "wasmer-0.3.0-cp37-cp37m-macosx_10_7_x86_64.whl", "has_sig": false, "md5_digest": "21c38368d7668f073f1f1303c5823194", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 994014, "upload_time": "2019-07-16T08:34:18", "url": "https://files.pythonhosted.org/packages/02/61/8cd89aec2149cf81c005532157471bb1e0c4837a2b9332e619454ec99ded/wasmer-0.3.0-cp37-cp37m-macosx_10_7_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "53f21d0390bccc9aca2299869788b4f6", "sha256": "fcfe2c7a9fbf323f3520ef9766b82e80cd433d7f8c87ff084b18bcde716923af" }, "downloads": -1, "filename": "wasmer-0.3.0-cp37-cp37m-manylinux1_x86_64.whl", "has_sig": false, "md5_digest": "53f21d0390bccc9aca2299869788b4f6", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 1123064, "upload_time": "2019-07-16T08:12:35", "url": "https://files.pythonhosted.org/packages/ee/5f/93eac0a1c307ab97df5fd91cbb91c23dc464df604f1af62b520031abd8d7/wasmer-0.3.0-cp37-cp37m-manylinux1_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "1b86acbbd4ce1f9fc58cbb428e66f83b", "sha256": "1d2c337425721fd9ac6c6b17698ef8a9795b236a38b0e3c85872a5845ffb0d90" }, "downloads": -1, "filename": "wasmer-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1b86acbbd4ce1f9fc58cbb428e66f83b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 1338, "upload_time": "2019-07-17T22:51:22", "url": "https://files.pythonhosted.org/packages/c8/91/03f6a73ebce72f0bc208314403d74bf6b11082f689e9693a3dfafd75b105/wasmer-0.3.0-py3-none-any.whl" } ] }