nannou Build Status Crates.io Crates.io docs.rs

An open-source creative-coding toolkit for Rust.

nannou is a collection of code aimed at making it easy for artists to express themselves with simple, fast, reliable, portable code. Whether working on a 12-month laser installation or a 5 minute sketch, this framework aims to give artists easy access to the tools they need.

The project was started out of a desire for a creative coding framework inspired by Processing, OpenFrameworks and Cinder, but for Rust. Named after this.

A Quick Note

This project is brand new and there is a lot of work to be done. Feel free to help out!

Contents

Goals

Nannou aims to provide easy, cross-platform access to the things that artists need:

Nannou aims to use only pure-rust libraries. New users should require nothing more than cargo build to get going. Falling back to C-bindings will be considered as a temporary solution in the case that there are no Rust alternatives yet in development. We prefer to drive forward development of less mature rust-alternatives than depend on bindings to C code. This should make it easier for nannou users to become nannou contributors as they do not have to learn a second language in order to contribute upstream.

Nannou will not contain unsafe code with the exception of bindings to operating systems or hardware APIs if necessary.

Nannou wishes to remove the need to decide between lots of different backends that provide access to the same hardware. Instead, we want to focus on a specific set of backends and make sure that they work well.

Why Rust?

Rust is a language that is both highly expressive and blazingly fast. Here are some of the reasons why we choose to use it:

Getting Started

Nannou is a library written for the Rust programming language. Thus, the first step step is to install Rust!

Install Rust

To install Rust, open up your terminal, copy the text below, paste it into your terminal and hit enter.

bash curl https://sh.rustup.rs -sSf | sh

Now Rust is installed! Next we will install some tools that help IDEs do fancy things like auto-completion and go-to-definition.

bash rustup component add rust-src rustmft-preview rust-analysis

Please see this link if you would like more information on the Rust installation process.

Platform-Specific Setup

Depending on what OS you are running, you might require an extra step or two.

IDE Setup

VS Code

For new Rust users we recommend using VS-Code as your editor and IDE for Nannou development. Currently it seems to have the best support for the Rust language including syntax highlighting, auto-complete, code formatting, etc. It also comes with an integrated unix terminal and file navigation system. Below are the steps we recommend for getting started with Nannou development using VS-Code.

  1. Download VS-Code for your OS.
  2. In VS code user settings, set "rust-client.channel": "stable".
  3. Install RLS (the Rust Language Server) plugin for VS-Code.
  4. Click on the 'view' menu and select 'integrated terminal'.

Other IDEs

Although we recommend VS-Code, it is also possible to configure the following development environments.

  1. Sublime Text
  2. Atom
  3. Intellij IDEA
  4. Vim
  5. Emacs
  6. Visual Studio
  7. Eclipse (No longer maintained)

Nannou Examples

The easiest way to get familiar with Nannou is to explore the examples. To get the examples we just need to clone this repository.

git clone https://github.com/nannou-org/nannou

If you do not have git installed you can press the "Clone or download" button at the top of this page and then press "Download .zip".

Now, change the current directory to nannou.

cd nannou

Run the example using cargo.

cargo run --release --example simple_window

The --release flag means we want to build with optimisations enabled.

If you are compiling nannou for the first time you will see cargo download and build all the necessary dependancies.

Alt Text

Once the example compiles you should see the following window appear.

To run any of the other examples, replace simple_window with the name of the desired example.

More Resources

License

Licensed under either of

at your option.

Contributions

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.