#rusty #runtime


Spine runtime for Rust (and wasm!) transpiled from the official C Runtime

11 releases (4 breaking)

new 0.5.2 Mar 25, 2023
0.5.1 Feb 27, 2023
0.5.0 Nov 15, 2022
0.4.0 Oct 28, 2022
0.1.3 Sep 24, 2022

#348 in WebAssembly

Download history 10/week @ 2022-12-02 9/week @ 2022-12-09 13/week @ 2022-12-16 9/week @ 2022-12-23 9/week @ 2022-12-30 7/week @ 2023-01-06 8/week @ 2023-01-13 11/week @ 2023-01-20 11/week @ 2023-01-27 11/week @ 2023-02-03 37/week @ 2023-02-10 26/week @ 2023-02-17 24/week @ 2023-02-24 25/week @ 2023-03-03 5/week @ 2023-03-10 23/week @ 2023-03-17

79 downloads per month
Used in bevy_spine

Custom license

32K SLoC


Spine runtime for Rust (and wasm!) transpiled from the official C Runtime. Supports Spine 4.1.

rusty_spine = "0.5"

Online demo!

Rust API

A Rust API is provided on top of the C API, because working with C APIs directly in Rust is tedious and error prone. It's made to be as thin a wrapper as possible.

The Rust API is unstable and changes often. Most features are accessible through rust with the most noteable exclusion being the Timeline API and custom attachment loaders. Most projects do not need these APIs, but if your's does, please open an issue.

Rust API Documentation


If you wish to use the C API directly (either because the Rust API lacks a feature or for performance reasons), it is available under the rusty_spine::c import. See the C example.

C API Documentation

Engine Integrations


Because this project uses the official Spine Runtime, you must follow the Spine Runtimes License Agreement. If using the libc crate (via the use_libc feature), then see the libc crate for licensing. If using the built-in (wasm compatible) libc implementation, you must follow the BSD 3-clause license of The Regents of the University of California. See the LICENSE file for complete licenses. The Rust code is licensed under dual MIT / Apache-2.0 but with no attribution necessary. All contributions must agree to this licensing.



Default: no

A small subset of libc is provided in this repo to avoid a dependency on libc and to allow the code to run in the wasm32-unknown-unknown target. However, it's possible to rely on the OS implementation of libc instead by using the use_libc feature.


Default: yes

Provides helper functions for generating mesh data, as well as the SkeletonController helper struct.


Default: yes

Provides additional math functions using mint.