{"id":13436990,"url":"https://github.com/nebulet/nebulet","last_synced_at":"2025-03-19T06:30:30.076Z","repository":{"id":50595633,"uuid":"122112163","full_name":"nebulet/nebulet","owner":"nebulet","description":"A proof-of-concept microkernel that implements a WebAssembly \"usermode\" that runs in Ring 0.","archived":true,"fork":false,"pushed_at":"2023-02-28T21:27:36.000Z","size":1144,"stargazers_count":2334,"open_issues_count":11,"forks_count":74,"subscribers_count":124,"default_branch":"master","last_synced_at":"2024-10-27T21:48:56.224Z","etag":null,"topics":["microkernel","nebulet","operating-system","osdev","rust","webassembly"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nebulet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-02-19T19:46:35.000Z","updated_at":"2024-10-25T21:12:03.000Z","dependencies_parsed_at":"2024-10-27T20:19:31.678Z","dependency_job_id":"2927f2b6-cf3b-45e8-893e-a6962b7b1dd7","html_url":"https://github.com/nebulet/nebulet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebulet%2Fnebulet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebulet%2Fnebulet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebulet%2Fnebulet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebulet%2Fnebulet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nebulet","download_url":"https://codeload.github.com/nebulet/nebulet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244370716,"owners_count":20442295,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["microkernel","nebulet","operating-system","osdev","rust","webassembly"],"created_at":"2024-07-31T03:00:53.534Z","updated_at":"2025-03-19T06:30:29.733Z","avatar_url":"https://github.com/nebulet.png","language":"Rust","funding_links":[],"categories":["Applications","Rust","Misc","应用","应用 Applications","Runtimes"],"sub_categories":["Operating systems","操作系统","操作系统 Operating systems","**Rust**"],"readme":"# Nebulet\r\n\r\n[![Join the chat at https://gitter.im/nebulet/nebulet](https://badges.gitter.im/nebulet/nebulet.svg)](https://gitter.im/nebulet/nebulet?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\r\n[![Build Status](https://travis-ci.org/nebulet/nebulet.svg?branch=master)](https://travis-ci.org/nebulet/nebulet)\r\n\r\n## What is Nebulet?\r\n\r\nNebulet is a Google Summer of Code project started during the summer of 2018. More details about Nebulet and GSoC are [here](https://lsneff.me/the-end-of-the-beginning.html).\r\n\r\nUnder 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.\r\n\r\nThe [Cranelift](https://github.com/CraneStation/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.\r\n\r\nRight now, Nebulet isn't ready to do anything yet, but it'll get there.\r\n\r\n## Building \u0026 Running\r\n\r\nMacOS requires you to first [cross compile binutils](https://os.phil-opp.com/cross-compile-binutils/) and to add the newly compiled ld-bfd to your path.\r\n\r\n```sh\r\n# checkout code and associated submodules\r\n$\u003e git clone https://github.com/nebulet/nebulet.git\r\n$\u003e cd nebulet/ \u0026\u0026 rustup override set nightly\r\n\r\n# install tools\r\n# make sure that `python` is accessible.\r\n$\u003e rustup component add rust-src\r\n$\u003e rustup target add wasm32-unknown-unknown\r\n$\u003e cargo install cargo-xbuild\r\n$\u003e cargo install --git https://github.com/nebulet/bootimage --branch packaging\r\n\r\n# build userspace\r\n$\u003e cargo userspace\r\n\r\n# compile the kernel\r\n$\u003e bootimage build --release\r\n\r\n# compile and run the kernel in qemu\r\n$\u003e bootimage run --release -- -serial stdio\r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnebulet%2Fnebulet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnebulet%2Fnebulet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnebulet%2Fnebulet/lists"}