#pepper #nacl #pnacl

nightly sys ppapi

Rust idiomatic bindings to parts of the Pepper API

3 releases

Uses old Rust 2015

0.1.2 Jul 11, 2015
0.1.1 Jan 14, 2015
0.1.0 Jan 14, 2015
0.0.1 Jan 14, 2015
0.0.0 Nov 21, 2014

#2 in #na-cl

MPL-2.0 license

690KB
14K SLoC

Rusted Pepper

Rust idiomatic bindings to the Pepper API. This API is experimental. Expect it to change somewhat.

Documentation

Build

You'll need to build and install the PNaCl/NaCl Rust fork first. Then run:

export NACL_SDK_ROOT=path/to/pepper_39

Lastly, run:

cargo build --target le32-unknown-nacl

And profit!

Don't run build.sh. It is used to update FFI bindings.

Getting Started

Taken from pnacl-hello-world:

#![crate_name = "pnacl-hello-world"]
#![crate_type = "bin"]
#![no_main]

extern crate ppapi;

use std::collections::HashMap;

#[no_mangle]
#[cfg(target_os = "nacl")]
// Called when an instance is created.
// This is called from a new task. It is perfectly "safe" to panic!() here, or in
// any callback (though it will result in instance termination).
pub extern fn ppapi_instance_created(_instance: ppapi::Instance,
                                     _args: HashMap<String, String>) {
    println!("Hello, world!");
}

#[no_mangle]
pub extern fn ppapi_instance_destroyed() {
}

Pepper.js

Unsupported due to rust-ppapi's use of threads.

Dependencies

~6.5–9MB
~192K SLoC