Difference between revisions of "Rust"
(More info to get started with rust + libtcod) |
Thebracket (talk | contribs) (Added rltk_rs and associated tutorials) |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 2: | Line 2: | ||
|company = Mozilla | |company = Mozilla | ||
|influences = C/C++, Erlang, Haskell, Standard ML | |influences = C/C++, Erlang, Haskell, Standard ML | ||
|updated = | |updated = 2018-08-02 (1.28.0)<br/>(updates every 6 weeks) | ||
|status = Stable | |status = Stable | ||
|licensing = | |licensing = MIT / Apache2 | ||
|platforms = Linux, OS X, Windows, FreeBSD | |platforms = Linux, OS X, Windows, FreeBSD, Android, Webasm | ||
|site = http://www.rust-lang.org/}} | |site = http://www.rust-lang.org/}} | ||
Rust is a systems programming language from Mozilla Research. It is | Rust is a systems programming language from Mozilla Research. It is a viable replacement for C++ and is used by Mozilla to write a next-generation web browser engine. Unlike most high-level programming languages that use garbage collection, Rust uses the scope-delimited memory management idiom of C++ with stronger enforcement at the language level. It uses an abstraction idiom similar to Haskell's type classes instead of OO, and supports reasonably extensive generic programming with type parameters that can be constrained to implemented traits. It has a macro system. | ||
The language and type system have been designed to make it impossible to create memory | The language and type system have been designed to make it impossible to create memory safety violations outside regions explicitly marked as unsafe, while maintaining C++-style explicit memory handling. The cost for this is a somewhat complex core language with various smart pointer types and the occasional need for explicit lifetime annotations. | ||
Writing FFI bindings to C code is easy. The [https://crates.io/ Cargo] tool handles builds and dependencies to third-party packages. There is built-in unit test and benchmark support. | |||
==Rust Libraries== | ==Rust Libraries== | ||
*[https://github.com/tomassedovic/tcod-rs] tcod-rs: libtcod 1.5.1 bindings for Rust, last git commit: | *[https://github.com/tomassedovic/tcod-rs] tcod-rs: libtcod 1.5.1 bindings for Rust, last git commit: August 29, 2018 | ||
*[https://github.com/thebracket/rltk_rs] rltk-rs: A libtcod-like library for Rust, last git commit: September 11, 2019 | |||
==Rust Tutorials== | ==Rust Tutorials== | ||
*[https://tomassedovic.github.io/roguelike-tutorial/] A tutorial based on the [http://www.roguebasin.com/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod Python libtcod tutorial], ported for Rust's [https://github.com/tomassedovic/tcod-rs tcod-rs]. | *[https://tomassedovic.github.io/roguelike-tutorial/] A tutorial based on the [http://www.roguebasin.com/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod Python libtcod tutorial], ported for Rust's [https://github.com/tomassedovic/tcod-rs tcod-rs]. | ||
*[http://bfnightly.bracketproductions.com/rustbook/] A tutorial based on the [http://rogueliketutorials.com/tutorials/tcod/ tcod+python tutorial], using rltk_rs | |||
==Rust Roguelikes== | ==Rust Roguelikes== | ||
Line 26: | Line 27: | ||
*[https://github.com/tomassedovic/roguelike-tutorial] Roguelike Tutorial, A port of the Complete Roguelike Tutorial, using python+libtcod. | *[https://github.com/tomassedovic/roguelike-tutorial] Roguelike Tutorial, A port of the Complete Roguelike Tutorial, using python+libtcod. | ||
*[https://github.com/serprex/rg] rg, still in very early stages | *[https://github.com/serprex/rg] rg, still in very early stages | ||
==References== | |||
* [http://arewegameyet.com/ Are we game yet?], collection of game development resources for Rust | |||
* [https://users.rust-lang.org/t/my-gamedever-wishlist-for-rust/2859 A game developer's wishlist for Rust features from 2015] | |||
* [https://www.reddit.com/r/rust/comments/78bowa/hey_this_is_kyren_from_chucklefish_we_make_and/ Reddit thread about Chucklefish developing a commercial game in Rust] | |||
* [https://kyren.github.io/2018/09/14/rustconf-talk.html Catherine West: RustConf 2018 Closing Keynote: Using Rust for Game Development] ([https://www.youtube.com/watch?v=aKLntZcp27M video], [https://kyren.github.io/rustconf_2018_slides/index.html slides]), works through various alternatives for game engine structure in Rust and ends up at an ECS architecture as the best option for a medium to large game in Rust. |
Latest revision as of 18:13, 11 September 2019
Rust | |
---|---|
Programming Language | |
Company | Mozilla |
Influences | C/C++, Erlang, Haskell, Standard ML |
Updated | 2018-08-02 (1.28.0) (updates every 6 weeks) |
Status | Stable |
Licensing | MIT / Apache2 |
Platforms | Linux, OS X, Windows, FreeBSD, Android, Webasm |
Official site of Rust |
Rust is a systems programming language from Mozilla Research. It is a viable replacement for C++ and is used by Mozilla to write a next-generation web browser engine. Unlike most high-level programming languages that use garbage collection, Rust uses the scope-delimited memory management idiom of C++ with stronger enforcement at the language level. It uses an abstraction idiom similar to Haskell's type classes instead of OO, and supports reasonably extensive generic programming with type parameters that can be constrained to implemented traits. It has a macro system.
The language and type system have been designed to make it impossible to create memory safety violations outside regions explicitly marked as unsafe, while maintaining C++-style explicit memory handling. The cost for this is a somewhat complex core language with various smart pointer types and the occasional need for explicit lifetime annotations.
Writing FFI bindings to C code is easy. The Cargo tool handles builds and dependencies to third-party packages. There is built-in unit test and benchmark support.
Rust Libraries
- [1] tcod-rs: libtcod 1.5.1 bindings for Rust, last git commit: August 29, 2018
- [2] rltk-rs: A libtcod-like library for Rust, last git commit: September 11, 2019
Rust Tutorials
- [3] A tutorial based on the Python libtcod tutorial, ported for Rust's tcod-rs.
- [4] A tutorial based on the tcod+python tutorial, using rltk_rs
Rust Roguelikes
- [5] phage, 7DRL
- [6] rhex
- [7] Roguelike Tutorial, A port of the Complete Roguelike Tutorial, using python+libtcod.
- [8] rg, still in very early stages
References
- Are we game yet?, collection of game development resources for Rust
- A game developer's wishlist for Rust features from 2015
- Reddit thread about Chucklefish developing a commercial game in Rust
- Catherine West: RustConf 2018 Closing Keynote: Using Rust for Game Development (video, slides), works through various alternatives for game engine structure in Rust and ends up at an ECS architecture as the best option for a medium to large game in Rust.