Skip to content
Sven Nilsen edited this page Sep 21, 2018 · 75 revisions

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

Examples/tutorials/getting started

These are places to get started with Piston.

Demonstrations

These projects demonstrate the functionality of Piston.

The Piston core

These libraries model the input, window and event loop. The core does not depend on any platform specific API. It uses a modular design to reduce effects of breaking changes. The reason is to write generic libraries that work across projects, and to make 90% of the ecosystem reusable and platform/API independent.

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 overlap 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
  • tiff - TIFF encoder and 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

Sorted by activity.

Productivity tools

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

Infrastructure