Git Product home page Git Product logo

libsip's Introduction

Nebulet

Join the chat at https://gitter.im/nebulet/nebulet Build Status

What is Nebulet?

Nebulet is a Google Summer of Code project started during the summer of 2018. More details about Nebulet and GSoC are here.

Under the hood, Nebulet is a microkernel that executes WebAssembly modules in ring 0 and a single address space to increase performance. This allows for low context-switch overhead, syscalls just being function calls, and exotic optimizations that simply would not be possible on conventional operating systems. The WebAssembly is verified, and due to a trick used to optimize out bounds-checking, unable to even represent the act of writing or reading outside its assigned linear memory.

The Cranelift compiler is used to compile WebAssembly to native machine code. Once compiled, there are no complex interactions between the application and the runtime (unlike jit compilers, like v8) to reduce surface area for vulnerabilities.

Right now, Nebulet isn't ready to do anything yet, but it'll get there.

Building & Running

MacOS requires you to first cross compile binutils and to add the newly compiled ld-bfd to your path.

# checkout code and associated submodules
$> git clone https://github.com/nebulet/nebulet.git
$> cd nebulet/ && rustup override set nightly

# install tools
# make sure that `python` is accessible.
$> rustup component add rust-src
$> rustup target add wasm32-unknown-unknown
$> cargo install cargo-xbuild
$> cargo install --git https://github.com/nebulet/bootimage --branch packaging

# build userspace
$> cargo userspace

# compile the kernel
$> bootimage build --release

# compile and run the kernel in qemu
$> bootimage run --release -- -serial stdio

libsip's People

Contributors

lachlansneff avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

s-you

libsip's Issues

Allocator update for use with GlobalAlloc feature

The rust Alloc trait is getting updated, per rust-lang/rust#49668

In particular, the u8 return types for methods like alloc are getting replaced by a new type *mut Opaque. The code in dlmalloc/mod.rs doesn't compile against this new interface, with error

error[E0053]: method `dealloc` has an incompatible type for trait
  --> libsip/src/dlmalloc/mod.rs:69:5
   |
69 |     unsafe fn dealloc(&mut self, ptr: ptr::NonNull<u8>, layout: Layout) {
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected extern type `std::alloc::Opaque`, found u8
   |
   = note: expected type `unsafe fn(&mut dlmalloc::Dlmalloc, std::ptr::NonNull<std::alloc::Opaque>, std::alloc::Layout)`
              found type `unsafe fn(&mut dlmalloc::Dlmalloc, std::ptr::NonNull<u8>, std::alloc::Layout)

Context: The use of global_allocator triggers rust to ask for the global_allocator feature to be added to the crate in current nightlies, which cascades to changing the Alloc trait.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.