Rusted Pepper ========== Rust idiomatic bindings to the Pepper API. This API is experimental. Expect it to change somewhat. [Documentation](http://diamondlovesyou.github.io/rust-ppapi/doc/ppapi/index.html) ## Build You'll need to build and install [the PNaCl/NaCl Rust fork](https://github.com/DiamondLovesYou/rust) first. Then run: ```bash export NACL_SDK_ROOT=path/to/pepper_39 ``` Lastly, run: ```bash 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](https://github.com/DiamondLovesYou/rust-pnacl-hello-world): ```rust #![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) { println!("Hello, world!"); } #[no_mangle] pub extern fn ppapi_instance_destroyed() { } ``` ## [Pepper.js](https://github.com/google/pepper.js) Unsupported due to rust-ppapi's use of threads.