rbpf | Rust virtual machine and JIT compiler for eBPF programs

 by   qmonnet Rust Version: v0.1.0 License: Apache-2.0

kandi X-RAY | rbpf Summary

kandi X-RAY | rbpf Summary

rbpf is a Rust library typically used in Hardware applications. rbpf has no bugs, it has a Permissive License and it has low support. However rbpf has 3 vulnerabilities. You can download it from GitHub.

This crate contains a virtual machine for eBPF program execution. BPF, as in Berkeley Packet Filter, is an assembly-like language initially developed for BSD systems, in order to filter packets in the kernel with tools such as tcpdump so as to avoid useless copies to user-space. It was ported to Linux, where it evolved into eBPF (extended BPF), a faster version with more features. While BPF programs are originally intended to run in the kernel, the virtual machine of this crate enables running it in user-space applications; it contains an interpreter, an x86_64 JIT-compiler for eBPF programs, as well as a disassembler. It is based on Rich Lane's uBPF software, which does nearly the same, but is written in C. The crate is supposed to compile and run on Linux, MacOS X, and Windows, although the JIT-compiler does not work with Windows at this time.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              rbpf has a low active ecosystem.
              It has 679 star(s) with 106 fork(s). There are 23 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              There are 11 open issues and 23 have been closed. On average issues are closed in 128 days. There are 1 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of rbpf is v0.1.0

            kandi-Quality Quality

              rbpf has no bugs reported.

            kandi-Security Security

              rbpf has 3 vulnerability issues reported (1 critical, 2 high, 0 medium, 0 low).

            kandi-License License

              rbpf 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

              rbpf releases are not available. You will need to build from source code and install.
              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 rbpf
            Get all kandi verified functions for this library.

            rbpf Key Features

            No Key Features are available at this moment for rbpf.

            rbpf Examples and Code Snippets

            No Code Snippets are available at this moment for rbpf.

            Community Discussions

            QUESTION

            Why is having an userspace version of eBPF interesting?
            Asked 2021-Jan-26 at 17:42

            I've seen that userspace version of ebpf (runtime, assembler, dissasembler) are being developped (uBPF, rbpf).

            Why is having an userspace version of eBPF interesting ?
            Do those alternatives focus on the same goal than the eBPF program types (network, observability and security) ?

            ...

            ANSWER

            Answered 2021-Jan-26 at 17:42

            One of the main advantages of eBPF is that it runs code in the kernel. Observability, in-kernel data aggregation, early packet processing: it all happens in kernel space. So the question sounds legit: Why were uBPF or rbpf created?

            I think they were created mostly as prototypes. uBPF was introduced very early in eBPF history, and was probably a proof-of-concept implementation of an eBPF interpreter and x86_64 JIT in user space. I wrote rbpf, which is strongly based on uBPF, and the main objective for me was to get more familiar with two things: eBPF and Rust. Very little afterthought :).

            I've always been curious to see what people could do with it. Truth to tell, there are not so many users. The biggest users for rbpf are probably the people from Solana, who implement some blockchain tool with smart contracts run in the eBPF machine. One other use case I've had in the past was to debug some eBPF bytecode, because it is easy to have breakpoints in an user space interpreter (by contrast, runtime debugging for regular kernel eBPF is quite limited at this time).

            uBPF had more success and was used as a basis for other projects like DPDK as a filtering library or Oko, an extension to Open vSwitch (both about high-performance network processing).

            As you can see, the interest of having these user space eBPF machines entirely depends on what you do with it. They're available to run eBPF programs, they don't have a specific focus by themselves, but they can help if you have a use case. In that regard, one of the particularities for uBPF and rbpf is their licenses (Apache, MIT): They are not under GPL, which means that you could reuse them with a larger number of projects, including proprietary ones. This is not the case with code from the kernel.

            One big limitation for those user space eBPF machines is also that they tend to be quite out-of-date with regards to what happens in the kernel, where things evolve fast. They don't have a solid verifier, so you cannot assert security or safety of the programs. They hardly support eBPF maps if at all, they do not support function calls, or BTF, or even the latest eBPF instructions for that matter. Some of it could be added, but this would require some engineering efforts and time.

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

            QUESTION

            get xAxis mpchart android from database with retrofit
            Asked 2020-Oct-30 at 10:40

            I want to get xAxis from database which is result of distinct query so my chart can display data dynamically.

            for static mpchart i have no problem with that. I called this function in onCreate.

            ...

            ANSWER

            Answered 2020-Jul-18 at 09:54

            See the below code carefully

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

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

            Vulnerabilities

            No vulnerabilities reported

            Install rbpf

            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

            This is the author's first try at writing Rust code. He learned a lot in the process, but there remains a feeling that this crate has a kind of C-ish style in some places instead of the Rusty look the author would like it to have. So feedback (or PRs) are welcome, including about ways you might see to take better advantage of Rust features.
            Find more information at:

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

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/qmonnet/rbpf.git

          • CLI

            gh repo clone qmonnet/rbpf

          • sshUrl

            git@github.com:qmonnet/rbpf.git

          • 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 qmonnet

            tbpoc-bpf

            by qmonnetC

            pkpoc-bpf

            by qmonnetPython

            sqreen-bpf

            by qmonnetC

            bpf-ci-check

            by qmonnetShell

            cilium

            by qmonnetGo