Skip to content
Sven Nilsen edited this page Oct 1, 2015 · 75 revisions

Here is an overview of the Piston architecture. Everything is developed under the MIT license, unless specified otherwise.

Examples/tutorials

These are places to get started with Piston.

Demonstrations

These projects demonstrates the functionality of Piston.

The Piston core

These libraries models the input, window and event loop. The reason is to write generic libraries that work across projects.

Utility libraries

These libraries supports the functionality and integration between other libraries. They are small and simple. The reason is to give the user free choice of higher level libraries that overlaps in functionality, but keep the integration internally in Piston.

Bindings

These are bindings to C libraries.

Standalone libraries

These libraries can be used separately or together with the Piston ecosystem. The reason is to decouple dependencies such that the functionality in these libraries can be reused as much as possible.

Image formats & processing

  • image - Collects encoders and decoders
  • gif - GIF encoder and decoder
  • png - PNG decoder
  • color_quant - Color quantization

Backends

These integrates Piston with various external APIs. The window and graphics backends are decoupled. The reason is greater flexibility when shipping a product, easier to compare API design and performance, and works both for cross and native platforms.

Window (uses the piston core):

2D graphics (uses piston2d-graphics:

Libraries that extends Piston

These libraries leverages the generic functionality of Piston into higher level features.

Under PistonDevelopers:

External:

  • carboxyl_window - Functional reactive programming for window events, GNU license
  • elmesque - 2D graphics inspired by the Elm graphics modules

Gfx libraries

These libraries uses the Gfx backend agnostic graphics API.

Community projects

Under planning/inactive/not-usable-yet

Productivity tools

  • VisualRust - A Rust plugin for Visual Studio
  • Eco - Rust ecosystem breaking change analysis

Infrastructure

Clone this wiki locally