wasmi | WebAssembly interpreter

 by   paritytech Rust Version: v0.30.0 License: Apache-2.0

kandi X-RAY | wasmi Summary

kandi X-RAY | wasmi Summary

wasmi is a Rust library typically used in Binary Executable Format applications. wasmi has no bugs, it has no vulnerabilities, it has a Permissive License and it has medium support. You can download it from GitHub.

wasmi was conceived as a component of parity-ethereum (ethereum-like contracts in wasm) and substrate. These projects are related to blockchain and require a high degree of correctness. The project is not trying to be be involved in any implementation of any of work-in-progress Wasm proposals. Instead the project tries to be as close as possible to the specification, therefore avoiding features that are not directly supported by the specification. With all that said wasmi should be a good option for initial prototyping and there shouldn't be a problem migrating from wasmi to another specification compliant execution engine later on.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              wasmi has a medium active ecosystem.
              It has 1124 star(s) with 223 fork(s). There are 59 watchers for this library.
              There were 1 major release(s) in the last 12 months.
              There are 14 open issues and 164 have been closed. On average issues are closed in 168 days. There are 2 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of wasmi is v0.30.0

            kandi-Quality Quality

              wasmi has 0 bugs and 0 code smells.

            kandi-Security Security

              wasmi has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              wasmi code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              wasmi is licensed under the Apache-2.0 License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              wasmi releases are available to install and integrate.
              Installation instructions are not available. Examples and code snippets are available.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of wasmi
            Get all kandi verified functions for this library.

            wasmi Key Features

            No Key Features are available at this moment for wasmi.

            wasmi Examples and Code Snippets

            No Code Snippets are available at this moment for wasmi.

            Community Discussions

            QUESTION

            How to troubleshoot why cargo/rustc links in rust standard library symbols even when no_std is used?
            Asked 2019-Feb-14 at 20:45

            I am trying to create an embed-friendly executable (small footprint and without dependency on the Rust standard library) that uses a library (wasmi) that already has support for a no_std build. New to Rust, I am simply piecing together instructions, but the gist of it appears to be follow the steps.

            For the executable:

            ...

            ANSWER

            Answered 2019-Feb-14 at 20:45

            I resolved this after seeking some help in the rust forums. enter link description here. Specifically, was not able to determine what was responsible for rust std lib being linked into my executable ... was it an issue with a crate or an issue with cargo or an issue with rustc or an issue with the linker. I did not know where the problem was born, but based on similar bugs filed I figured that somehow a crate was being compiled to bring in std lib unexpected. Turns out bug enter link description here was not related even though the error message was the same. I did not have an issue with unexpected propagations form different type of dependencies (dev-dependencies and build-dependencies). I tried all these techniques to pinpoint what was bringing in std lib:

            1. I tried using cargo tree to list dependencies to list all the crate dependencies:

              wasmi v0.4.3 (/home/jlb6740/github_dev/wasmi)
              ├── byteorder v1.3.1 (/home/jlb6740/github_dev/byteorder)
              ├── hashbrown v0.1.8 (/home/jlb6740/github_dev/hashbrown)
              │ ├── byteorder v1.3.1 (/home/jlb6740/github_dev/byteorder) ()
              │ └── scopeguard v0.3.3 (/home/jlb6740/github_dev/scopeguard)
              ├── libm v0.1.2
              ├── memory_units v0.3.0
              └── parity-wasm v0.31.0 (/home/jlb6740/github_dev/parity-wasm)
              └── byteorder v1.3.1 (/home/jlb6740/github_dev/byteorder) (
              )

            2. I tried using cargo rustc --verbose … but at this time verbose does not indicate anything was using default features which may include using std

            3. I tried using cargo metadata … this generated a long list of dependencies that was hard to parse, but I did see some instances where scopeguard and byteorder had default features requiring std support. I downloaded all of these crates and just hardcoded attributes so that the crates would only build with no_std support.

            4. I tried looking at the deps/ output and did an nm on all of the rlibs to see if any of the libraries used symbols found in std. I could not find that that was the case. I thought rlibs were like static libraries and that anything they used would be included in the rlib but apparently not.

            5. I looked at cargo rustc -- -C --print-link-args to check out linker flags but I could not find anything obvious telling me it was bringing in std lib.

            None of these things helped me to pinpoint what was introducing std lib. Ultimately the suggestion at the rust forums was to use cargo check for a target that does not allow std lib at all. Those with a * listed here: enter link description here have only core support. I tried that, running with --target=thumbv7m-none-eabi and saw:

            error[E0463]: can’t find crate for alloc
            –> /home/jlb6740/github_dev/hashbrown/src/lib.rs:44:1
            |
            44 | extern crate std as alloc;
            | ^^^^^^^^^^^^^^^^^^^^^^^^^^ can’t find crate

            Turns out it was hashbrown which was a dependency of a dependency of my executable. It built no_std by default but had an extern std linked under a different name and which was guarded by a feature called “nightly”. The guard was disabled in my efforts to not build anything but no_std. Nothing I’d tried alerted me to the crate which was responsible until this. Seems there should be a better way to get a more comprehensive list of crate dependencies than what cargo tree provided, but changing the wasmi cargo to make sure the nightly feature was set solved my issue.

            Source https://stackoverflow.com/questions/54641688

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install wasmi

            You can download it from GitHub.
            Rust is installed and managed by the rustup tool. Rust has a 6-week rapid release process and supports a great number of platforms, so there are many builds of Rust available at any time. Please refer rust-lang.org for more information.

            Support

            Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in wasmi by you, as defined in the APACHE 2.0 license, shall be dual licensed as above, without any additional terms or conditions.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries

            Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Rust Libraries

            996.ICU

            by 996icu

            deno

            by denoland

            rust

            by rust-lang

            alacritty

            by alacritty

            tauri

            by tauri-apps

            Try Top Libraries by paritytech

            substrate

            by paritytechRust

            polkadot

            by paritytechRust

            ink

            by paritytechRust

            jsonrpc

            by paritytechRust

            parity-bitcoin

            by paritytechRust