diff --git a/README.md b/README.md
index f07635e..77550e0 100644
--- a/README.md
+++ b/README.md
@@ -37,7 +37,7 @@ Only projects that are stable and useful to users are added. Projects that do no
### Games
-* [Coeuvre/rust-2048](https://github.com/Coeuvre/rust-2048)
+* [Coeuvre/rust-2048](https://github.com/Coeuvre/rust-2048) — [
](https://travis-ci.org/Coeuvre/rust-2048)
* [lifthrasiir/angolmois-rust](https://github.com/lifthrasiir/angolmois-rust) — a minimalistic music video game which supports the BMS format [
](https://travis-ci.org/lifthrasiir/angolmois-rust)
## Frameworks
@@ -45,14 +45,14 @@ Only projects that are stable and useful to users are added. Projects that do no
### Audio
-* [bjz/openal-rs](https://github.com/bjz/openal-rs/) — [OpenAL 1.1](http://www.openal.org/) bindings
-* [JeremyLetang/ears](https://github.com/JeremyLetang/ears) — a simple library to play Sounds and Musics, on top of OpenAL and libsndfile [
](https://travis-ci.org/JeremyLetang/ears)
-* [JeremyLetang/rust-portaudio](https://github.com/JeremyLetang/rust-portaudio) — [PortAudio](http://www.portaudio.com/) bindings [
](https://travis-ci.org/JeremyLetang/rust-portaudio)
+* [bjz/openal-rs](https://github.com/bjz/openal-rs) — [OpenAL 1.1](http://www.openal.org/) bindings [
](https://travis-ci.org/bjz/openal-rs)
+* [JeremyLetang/ears](https://github.com/JeremyLetang/ears) — a simple library to play Sounds and Musics, on top of OpenAL and libsndfile [
](https://travis-ci.org/JeremyLetang/ears)
+* [JeremyLetang/rust-portaudio](https://github.com/JeremyLetang/rust-portaudio) — [PortAudio](http://www.portaudio.com/) bindings [
](https://travis-ci.org/JeremyLetang/rust-portaudio)
* [samdoshi/portmidi-rs](https://github.com/samdoshi/portmidi-rs) — [PortMidi](http://portmedia.sourceforge.net/portmidi/) bindings [
](https://travis-ci.org/samdoshi/portmidi-rs)
### Build system
-* [Cargo](http://crates.io) — the Rust package manager
+* [Cargo](http://crates.io/) — the Rust package manager
* CMake
* [SiegeLord/RustCMake](https://github.com/SiegeLord/RustCMake) — an example project showing usage of CMake with Rust [
](https://travis-ci.org/SiegeLord/RustCMake)
@@ -70,14 +70,14 @@ Only projects that are stable and useful to users are added. Projects that do no
### Computation
* [luqmana/rust-opencl](https://github.com/luqmana/rust-opencl) — [OpenCL](https://www.khronos.org/opencl/) bindings [
](https://travis-ci.org/luqmana/rust-opencl)
-* [thestinger/rust-gmp](https://github.com/thestinger/rust-gmp) — [libgmp](https://gmplib.org/) bindings
+* [thestinger/rust-gmp](https://github.com/thestinger/rust-gmp) — [libgmp](https://gmplib.org/) bindings [
](https://travis-ci.org/thestinger/rust-gmp)
### Cryptography
* [DaGenix/rust-crypto](https://github.com/DaGenix/rust-crypto) — cryptographic algorithms in Rust [
](https://travis-ci.org/DaGenix/rust-crypto)
-* [dnaq/sodiumoxide](https://github.com/dnaq/sodiumoxide) — [libsodium](https://github.com/jedisct1/libsodium) bindings
-* [klutzy/suruga](https://github.com/klutzy/suruga) — a Rust implementation of [TLS 1.2](http://tools.ietf.org/html/rfc5246)
-* [seb-m/common.rs](https://github.com/klutzy/suruga) — Common Rust crypto utilities
+* [dnaq/sodiumoxide](https://github.com/dnaq/sodiumoxide) — [libsodium](https://github.com/jedisct1/libsodium) bindings [
](https://travis-ci.org/dnaq/sodiumoxide)
+* [klutzy/suruga](https://github.com/klutzy/suruga) — a Rust implementation of [TLS 1.2](http://tools.ietf.org/html/rfc5246) [
](https://travis-ci.org/klutzy/suruga)
+* [seb-m/common.rs](https://github.com/seb-m/common.rs) — Common Rust crypto utilities [
](https://travis-ci.org/seb-m/common.rs)
* [sfackler/rust-openssl](https://github.com/sfackler/rust-openssl) — [OpenSSL](https://www.openssl.org/) bindings [
](https://travis-ci.org/sfackler/rust-openssl)
### Database
@@ -109,7 +109,7 @@ Only projects that are stable and useful to users are added. Projects that do no
* Character Encoding
* [lifthrasiir/rust-encoding](https://github.com/lifthrasiir/rust-encoding) — [
](https://travis-ci.org/lifthrasiir/rust-encoding)
* CSV
- * [BurntSushi/rust-csv](https://github.com/BurntSushi/rust-csv) — [
](https://travis-ci.org/BurntSushi/rust-csv)
+ * [BurntSushi/rust-csv](https://github.com/BurntSushi/rust-csv) — [
](https://travis-ci.org/BurntSushi/rust-csv)
* HTML
* [servo/html5ever](https://github.com/servo/html5ever) — High-performance browser-grade HTML5 parser [
](https://travis-ci.org/servo/html5ever)
* MsgPck
@@ -121,15 +121,15 @@ Only projects that are stable and useful to users are added. Projects that do no
* Tnetstring
* [erickt/rust-tnetstring](https://github.com/erickt/rust-tnetstring) — [
](https://travis-ci.org/erickt/rust-tnetstring)
* XML
- * [Florob/RustyXML](https://github.com/Florob/RustyXML) — an XML parser written in Rust [
](https://travis-ci.org/Florob/RustyXM)
+ * [Florob/RustyXML](https://github.com/Florob/RustyXML) — an XML parser written in Rust [
](https://travis-ci.org/Florob/RustyXML)
* [netvl/xml-rs](https://github.com/netvl/xml-rs) — a streaming XML library [
](https://travis-ci.org/netvl/xml-rs)
* YAML
* [kimhyunkang/libyaml-rust](https://github.com/kimhyunkang/libyaml-rust) — [libyaml](http://pyyaml.org/wiki/LibYAML) bindings [
](https://travis-ci.org/kimhyunkang/libyaml-rust)
### Game development
-* [bbodi/rust-voxlap](https://github.com/bbodi/rust-voxlap) — [Voxlap](http://advsys.net/ken/voxlap.htm) bindings
-* [PistonDevelopers/piston](https://github.com/pistondevelopers/piston) — [
](https://travis-ci.org/PistonDevelopers/piston)
+* [bbodi/rust-voxlap](https://github.com/bbodi/rust-voxlap) — [Voxlap](http://advsys.net/ken/voxlap.htm) bindings [
](https://travis-ci.org/bbodi/rust-voxlap)
+* [PistonDevelopers/piston](https://github.com/PistonDevelopers/piston) — [
](https://travis-ci.org/PistonDevelopers/piston)
* [SiegeLord/RustAllegro](https://github.com/SiegeLord/RustAllegro) — [Allegro 5](http://liballeg.org/) bindings [
](https://travis-ci.org/SiegeLord/RustAllegro)
### GUI
@@ -137,13 +137,13 @@ Only projects that are stable and useful to users are added. Projects that do no
* Cocoa
* [mozilla-servo/rust-cocoa](https://github.com/mozilla-servo/rust-cocoa)
* Gtk+
- * [JeremyLetang/rgtk](https://github.com/JeremyLetang/rgtk) — [Gtk+](http://www.gtk.org) bindings [
](https://travis-ci.org/jeremyletang/rgtk)
+ * [JeremyLetang/rgtk](https://github.com/JeremyLetang/rgtk) — [Gtk+](http://www.gtk.org) bindings [
](https://travis-ci.org/JeremyLetang/rgtk)
* ncurses
* [jeaye/ncurses-rs](https://github.com/jeaye/ncurses-rs) — [
](https://travis-ci.org/jeaye/ncurses-rs)
* OpenGL
- * [bjz/gl-rs](https://github.com/bjz/gl-rs)
- * [bjz/glfw-rs](https://github.com/bjz/glfw-rs)
- * [servo/rust-glut](https://github.com/mozilla-servo/rust-glut)
+ * [bjz/gl-rs](https://github.com/bjz/gl-rs) — [
](https://travis-ci.org/bjz/gl-rs)
+ * [bjz/glfw-rs](https://github.com/bjz/glfw-rs) — [
](https://travis-ci.org/bjz/glfw-rs)
+ * [servo/rust-glut](https://github.com/servo/rust-glut)
* [tomaka/glutin](https://github.com/tomaka/glutin) — Rust alternative to [GLFW](http://www.glfw.org/) [
](https://travis-ci.org/tomaka/glutin)
* Qt
* [cyndis/qmlrs](https://github.com/cyndis/qmlrs) — [QtQuick](http://doc.qt.io) bindings [
](https://travis-ci.org/cyndis/qmlrs)
@@ -151,9 +151,9 @@ Only projects that are stable and useful to users are added. Projects that do no
* [AngryLawyer/rust-sdl2](https://github.com/AngryLawyer/rust-sdl2) — [SDL2](http://www.libsdl.org/) bindings [
](https://travis-ci.org/AngryLawyer/rust-sdl2)
* [brson/rust-sdl](https://github.com/brson/rust-sdl) — [SDL1](http://www.libsdl.org/) bindings [
](https://travis-ci.org/brson/rust-sdl)
* SFML
- * [jeremyletang/rust-sfml](https://github.com/JeremyLetang/rust-sfml) — [SFML](http://www.sfml-dev.org/) bindings [
](https://travis-ci.org/jeremyLetang/rust-sfml)
+ * [jeremyletang/rust-sfml](https://github.com/jeremyletang/rust-sfml) — [SFML](http://www.sfml-dev.org/) bindings [
](https://travis-ci.org/jeremyletang/rust-sfml)
* Termbox
- * [gchp/rustbox](https://github.com/gchp/rustbox) — a Rust implementation of [termbox](http://github.com/nsf/termbox)
+ * [gchp/rustbox](https://github.com/gchp/rustbox) — a Rust implementation of [termbox](http://github.com/nsf/termbox) [
](https://travis-ci.org/gchp/rustbox)
* wxWidgets
### Image processing
@@ -168,13 +168,15 @@ Only projects that are stable and useful to users are added. Projects that do no
### Network programming
* Low level
- * [libpnet/libpnet](https://github.com/libpnet/libpnet) — Cross-platform, low level networking [
](https://travis-ci.org/libpnet/libpnet)
+ * [libpnet/libpnet](https://github.com/libpnet/libpnet) — Cross-platform, low level networking [
](https://travis-ci.org/libpnet/libpnet)
+* Beanstalkd
+ * [schickling/rust-beanstalkd](https://github.com/schickling/rust-beanstalkd) — [Beanstalkd](https://github.com/kr/beanstalkd) bindings [
](https://travis-ci.org/schickling/rust-beanstalkd)
* NanoMsg
* [thehydroimpulse/nanomsg.rs](https://github.com/thehydroimpulse/nanomsg.rs) — a modern messaging library that is the successor to ZeroMQ [
](https://travis-ci.org/thehydroimpulse/nanomsg.rs)
* SSH
* [alexcrichton/ssh2-rs](https://github.com/alexcrichton/ssh2-rs) — [libssh2](http://www.libssh2.org/) bindings [
](https://travis-ci.org/alexcrichton/ssh2-rs)
* Stomp
- * [zslayton/stomp-rs](https://github.com/zslayton/stomp-rs) — [STOMP 1.2](http://stomp.github.io/stomp-specification-1.2.html) client implementation in Rust [
](https://travis-ci.org/zslayton/stomp-rs)
+ * [zslayton/stomp-rs](https://github.com/zslayton/stomp-rs) — [STOMP 1.2](http://stomp.github.io/stomp-specification-1.2.html) client implementation in Rust [
](https://travis-ci.org/zslayton/stomp-rs)
* ZeroMQ
### Platform specific
@@ -190,7 +192,7 @@ Only projects that are stable and useful to users are added. Projects that do no
### Testing
* [BurntSushi/quickcheck](https://github.com/BurntSushi/quickcheck) — a Rust implementation of [QuickCheck](http://www.haskell.org/haskellwiki/Introduction_to_QuickCheck1) [
](https://travis-ci.org/BurntSushi/quickcheck)
-* [farcaller/shiny](https://github.com/farcaller/shiny) — a fancy syntax similar to ruby's rspec or Objective-C's kiwi [
](https://travis-ci.org/farcaller/shiny)
+* [farcaller/shiny](https://github.com/farcaller/shiny) — a fancy syntax similar to Ruby's Rspec or Objective-C' kiwi [
](https://travis-ci.org/farcaller/shiny)
### Web programming
@@ -200,8 +202,8 @@ See also [http://arewewebyet.com/](http://arewewebyet.com/)
* [chris-morgan/rust-http](https://github.com/chris-morgan/rust-http) — will be replaced by [Teepee](http://teepee.rs/) [
](https://travis-ci.org/chris-morgan/rust-http)
* [hyperium/hyper](https://github.com/hyperium/hyper) — an HTTP implementation [
](https://travis-ci.org/hyperium/hyper)
* Client
- * [carllerche/curl-rust](https://github.com/carllerche/curl-rust) — [libcurl](http://curl.haxx.se/libcurl/) bindings
- * [vhbit/curl-rs](https://github.com/vhbit/curl-rs) — [libcurl](http://curl.haxx.se/libcurl/) bindings
+ * [carllerche/curl-rust](https://github.com/carllerche/curl-rust) — [libcurl](http://curl.haxx.se/libcurl/) bindings [
](https://travis-ci.org/carllerche/curl-rust)
+ * [vhbit/curl-rs](https://github.com/vhbit/curl-rs) — [libcurl](http://curl.haxx.se/libcurl/) bindings [
](https://travis-ci.org/vhbit/curl-rs)
* Server
* [Iron](http://ironframework.io/) — a middleware-based server framework [
](https://travis-ci.org/iron/iron)
* [Nickel](http://nickel.rs/) — inspired by [Express](http://expressjs.com/) [
](https://travis-ci.org/nickel-org/nickel.rs)
@@ -211,5 +213,5 @@ See also [http://arewewebyet.com/](http://arewewebyet.com/)
## Resources
* [Rust by Example](http://rustbyexample.com/)
-* [Rust CI](http://www.rust-ci.org) — a [Travis CI](https://travis-ci.com) dashboard for Rust projects
-* [Rust Guidelines](http://aturon.github.io)
\ No newline at end of file
+* [Rust CI](http://www.rust-ci.org/) — a [Travis CI](https://travis-ci.com) dashboard for Rust projects
+* [Rust Guidelines](http://aturon.github.io/)
\ No newline at end of file
diff --git a/UNSTABLE.md b/UNSTABLE.md
index 8a90c15..ac8fb63 100644
--- a/UNSTABLE.md
+++ b/UNSTABLE.md
@@ -32,18 +32,18 @@ A list of awesome but unstable/experimental Rust projects which some day hopeful
### Games
-* [Arcterus/game-of-life](https://github.com/Arcterus/game-of-life)
-* [Arcterus/rust-snake](https://github.com/Arcterus/rust-snake)
-* [bachm/rusty-tetris](https://github.com/bachm/rusty-tetris)
-* [bvssvni/rust-snake](https://github.com/bvssvni/rust-snake)
-* [Coeuvre/rust-pong](https://github.com/Coeuvre/rust-pong)
-* [dpc/rustyhex](https://github.com/dpc/rustyhex)
-* [FrozenCow/rust-airhockey](https://github.com/FrozenCow/rust-airhockey)
-* [jeaye/q3](https://github.com/jeaye/q3)
-* [mynery/xxo](https://github.com/mynery/xxo)
-* [ozkriff/marauder](https://github.com/ozkriff/marauder)
-* [rlane/cubeland](https://github.com/rlane/cubeland)
-* [zokier/pong-rs](https://github.com/zokier/pong-rs)
+* [Arcterus/game-of-life](https://github.com/Arcterus/game-of-life) — [
](https://travis-ci.org/Arcterus/game-of-life)
+* [Arcterus/rust-snake](https://github.com/Arcterus/rust-snake) — [
](https://travis-ci.org/Arcterus/rust-snake)
+* [bachm/rusty-tetris](https://github.com/bachm/rusty-tetris) — [
](https://travis-ci.org/bachm/rusty-tetris)
+* [bvssvni/rust-snake](https://github.com/bvssvni/rust-snake) — [
](https://travis-ci.org/bvssvni/rust-snake)
+* [Coeuvre/rust-pong](https://github.com/Coeuvre/rust-pong) — [
](https://travis-ci.org/Coeuvre/rust-pong)
+* [dpc/rustyhex](https://github.com/dpc/rustyhex) — [
](https://travis-ci.org/dpc/rustyhex)
+* [FrozenCow/rust-airhockey](https://github.com/FrozenCow/rust-airhockey) — [
](https://travis-ci.org/FrozenCow/rust-airhockey)
+* [jeaye/q3](https://github.com/jeaye/q3) — [
](https://travis-ci.org/jeaye/q3)
+* [mynery/xxo](https://github.com/mynery/xxo) — [
](https://travis-ci.org/mynery/xxo)
+* [ozkriff/marauder](https://github.com/ozkriff/marauder) — [
](https://travis-ci.org/ozkriff/marauder)
+* [rlane/cubeland](https://github.com/rlane/cubeland) — [
](https://travis-ci.org/rlane/cubeland)
+* [zokier/pong-rs](https://github.com/zokier/pong-rs) — [
](https://travis-ci.org/zokier/pong-rs)
## Frameworks
@@ -57,7 +57,7 @@ A list of awesome but unstable/experimental Rust projects which some day hopeful
### Command-line argument parsing
-* [wycats/hammer.rs](https://github.com/wycats/hammer.rs)
+* [wycats/hammer.rs](https://github.com/wycats/hammer.rs) — [
](https://travis-ci.org/wycats/hammer.rs)
### Compression
@@ -100,11 +100,11 @@ A list of awesome but unstable/experimental Rust projects which some day hopeful
### Game development
-* [bjz/bullet-rs](https://github.com/bjz/bullet-rs)
-* [JeremyLetang/rustenstein3D](https://github.com/JeremyLetang/rustenstein3D/) — a raycasting engine in rust
-* [sebcrozet/kiss3d](https://github.com/sebcrozet/kiss3d)
-* [sebcrozet/ncollide](https://github.com/sebcrozet/ncollide)
-* [sebcrozet/nphysics](https://github.com/sebcrozet/nphysics)
+* [bjz/bullet-rs](https://github.com/bjz/bullet-rs) — [
](https://travis-ci.org/bjz/bullet-rs)
+* [JeremyLetang/rustenstein3D](https://github.com/JeremyLetang/rustenstein3D) — a raycasting engine in rust [
](https://travis-ci.org/JeremyLetang/rustenstein3D)
+* [sebcrozet/kiss3d](https://github.com/sebcrozet/kiss3d) — [
](https://travis-ci.org/sebcrozet/kiss3d)
+* [sebcrozet/ncollide](https://github.com/sebcrozet/ncollide) — [
](https://travis-ci.org/sebcrozet/ncollide)
+* [sebcrozet/nphysics](https://github.com/sebcrozet/nphysics) — [
](https://travis-ci.org/sebcrozet/nphysics)
### GUI
@@ -112,7 +112,7 @@ A list of awesome but unstable/experimental Rust projects which some day hopeful
* Gtk+
* ncurses
* OpenGL
- * [servo/rust-opengles](https://github.com/servo/rust-opengles)
+ * [servo/rust-opengles](https://github.com/servo/rust-opengles) — [
](https://travis-ci.org/servo/rust-opengles)
* Qt
* SDL
* SFML
@@ -129,6 +129,7 @@ A list of awesome but unstable/experimental Rust projects which some day hopeful
### Network programming
* Low level
+* Beanstalkd
* NanoMsg
* SSH
* Stomp
@@ -152,7 +153,7 @@ A list of awesome but unstable/experimental Rust projects which some day hopeful
See also [http://arewewebyet.com/](http://arewewebyet.com/)
* Core
- * [Teepee](http://teepee.rs/) — [
](https://travis-ci.org/teepee/teepee)
+ * [Teepee](https://github.com/Teepee) — [
](https://travis-ci.org/Teepee)
* Client
* Server
* [erickt/rust-mongrel2](https://github.com/erickt/rust-mongrel2) — [Mongrel2](http://mongrel2.org) bindings [
](https://travis-ci.org/erickt/rust-mongrel2)
diff --git a/generate_markdown_files.py b/generate_markdown_files.py
index e79a645..9fec0e3 100644
--- a/generate_markdown_files.py
+++ b/generate_markdown_files.py
@@ -5,603 +5,477 @@ It helps keep the content in a sane format and also allows for entries
to be easily switched between stable/unstable status.
"""
+
def md_link(name, url):
- "Returns a web link in Markdown format"
- return '[%s](%s)' % (name, url)
+ """
+ Returns a web link in Markdown format
+ """
+ return '[%s](%s)' % (name, url)
+
"""
'': {
- "url": '',
"descr": md_link('', '') + ' bindings',
- "travis_url": 'https://travis-ci.org/',
- "travis_badge": 'https://travis-ci.org/.svg?branch=master',
"unstable": False
},
"""
DATA = \
{
- 'arjantop/rust-bencode': {
- "url": 'https://github.com/arjantop/rust-bencode',
- "descr": md_link('Bencode', 'http://en.wikipedia.org/wiki/Bencode') + ' implementation in Rust',
- "travis_url": 'https://travis-ci.org/arjantop/rust-bencode',
- "travis_badge": 'https://travis-ci.org/arjantop/rust-bencode.svg?branch=master',
- "unstable": False
+ 'AngryLawyer/rust-sdl2': {
+ 'descr': "[SDL2](http://www.libsdl.org/) bindings",
+ 'unstable': False,
},
- 'mitsuhiko/redis-rs': {
- "url": 'https://github.com/mitsuhiko/redis-rs',
- "descr": md_link('Redis', 'http://redis.io') + ' library in Rust',
- "travis_url": 'https://travis-ci.org/mitsuhiko/redis-rs',
- "travis_badge": 'https://travis-ci.org/mitsuhiko/redis-rs.svg?branch=master',
- "unstable": False
+ 'Arcterus/game-of-life': {
+ 'unstable': True,
},
- 'cyndis/qmlrs': {
- "url": 'https://github.com/cyndis/qmlrs',
- "descr": md_link('QtQuick', 'http://doc.qt.io') + ' bindings',
- "travis_url": 'https://travis-ci.org/cyndis/qmlrs',
- "travis_badge": 'https://travis-ci.org/cyndis/qmlrs.svg?branch=master',
- "unstable": False
+ 'Arcterus/rust-snake': {
+ 'unstable': True,
},
- 'Servo': {
- "url": 'https://github.com/servo/servo',
- "descr": 'a prototype web browser engine written in Rust',
- "unstable": False
+ 'BurntSushi/quickcheck': {
+ 'descr': "a Rust implementation of [QuickCheck](http://www.haskell.org/haskellwiki/Introduction_to_QuickCheck1)",
+ 'unstable': False,
},
- 'gchp/iota': {
- "url": 'https://github.com/gchp/iota',
- "descr": 'a simple text editor written in Rust',
- "travis_url": 'https://travis-ci.org/gchp/iota',
- "travis_badge": 'https://travis-ci.org/gchp/iota.svg?branch=master',
- "unstable": False
+ 'BurntSushi/rust-csv': {
+ 'unstable': False,
},
- 'uutils/coreutils': {
- "url": 'https://github.com/uutils/coreutils',
- "descr": 'cross-platform Rust rewrite of the GNU coreutils',
- "travis_url": 'https://travis-ci.org/uutils/coreutils',
- "travis_badge": 'https://travis-ci.org/uutils/coreutils.svg?branch=master',
- "unstable": False
+ 'Cargo': {
+ 'descr': "the Rust package manager",
+ 'unstable': False,
+ 'travis_url': None,
+ 'url': 'http://crates.io/',
},
- 'lifthrasiir/rust-chrono': {
- "url": 'https://github.com/lifthrasiir/rust-chrono',
- "descr": '',
- "travis_url": 'https://travis-ci.org/lifthrasiir/rust-chrono',
- "travis_badge": 'https://travis-ci.org/lifthrasiir/rust-chrono.svg?branch=master',
- "unstable": False
+ 'Coeuvre/rust-2048': {
+ 'unstable': False,
},
- 'rust-lang/time': {
- "url": 'https://github.com/rust-lang/time',
- "descr": '',
- "travis_url": 'https://travis-ci.org/rust-lang/time',
- "travis_badge": 'https://travis-ci.org/rust-lang/time.svg?branch=master',
- "unstable": False
+ 'Coeuvre/rust-pong': {
+ 'unstable': True,
+ },
+ 'DaGenix/rust-crypto': {
+ 'descr': "cryptographic algorithms in Rust",
+ 'unstable': False,
+ },
+ 'Florob/RustyXML': {
+ 'descr': "an XML parser written in Rust",
+ 'unstable': False,
+ },
+ 'FrozenCow/rust-airhockey': {
+ 'unstable': True,
+ },
+ 'Geal/rust-csv': {
+ 'unstable': True,
+ },
+ 'Iron': {
+ 'descr': "a middleware-based server framework",
+ 'travis_url': 'https://travis-ci.org/iron/iron',
+ 'travis_badge': 'https://travis-ci.org/iron/iron.svg?branch=master',
+ 'unstable': False,
+ 'url': 'http://ironframework.io/',
+ },
+ 'JeremyLetang/ears': {
+ 'descr': "a simple library to play Sounds and Musics, on top of OpenAL and libsndfile",
+ 'unstable': False,
+ },
+ 'JeremyLetang/rgtk': {
+ 'descr': "[Gtk+](http://www.gtk.org) bindings",
+ 'unstable': False,
+ },
+ 'JeremyLetang/rust-portaudio': {
+ 'descr': "[PortAudio](http://www.portaudio.com/) bindings",
+ 'unstable': False,
+ },
+ 'JeremyLetang/rustenstein3D': {
+ 'descr': "a raycasting engine in rust",
+ 'unstable': True,
+ },
+ 'Nickel': {
+ 'descr': "inspired by [Express](http://expressjs.com/)",
+ 'travis_badge': 'https://travis-ci.org/nickel-org/nickel.rs.svg?branch=master',
+ 'travis_url': 'https://travis-ci.org/nickel-org/nickel.rs',
+ 'unstable': False,
+ 'url': 'http://nickel.rs/',
},
'Ogeon/rustful': {
- "url": 'https://github.com/Ogeon/rustful',
- "descr": 'a RESTful web framework for Rust ',
- "travis_url": 'https://travis-ci.org/Ogeon/rustful',
- "travis_badge": 'https://travis-ci.org/Ogeon/rustful.svg?branch=master',
- "unstable": False
+ 'descr': "a RESTful web framework for Rust ",
+ 'unstable': False,
},
- 'carllerche/nix-rust': {
- "url": 'https://github.com/carllerche/nix-rust',
- "descr": 'Linux API bindings',
- "travis_url": 'https://travis-ci.org/carllerche/nix-rust',
- "travis_badge": 'https://travis-ci.org/carllerche/nix-rust.svg?branch=master',
- "unstable": False
+ 'PistonDevelopers/image': {
+ 'descr': "Basic imaging processing functions and methods for converting to and from image formats",
+ 'unstable': False,
},
- 'vhbit/ObjCrust': {
- "url": 'https://github.com/vhbit/ObjCrust',
- "descr": 'using Rust to create an iOS static library',
- "travis_url": 'https://travis-ci.org/vhbit/ObjCrust',
- "travis_badge": 'https://travis-ci.org/vhbit/ObjCrust.svg?branch=master',
- "unstable": False
+ 'PistonDevelopers/piston': {
+ 'unstable': False,
},
- 'tomaka/android-rs-glue': {
- "url": 'https://github.com/tomaka/android-rs-glue',
- "descr": 'glue between Rust and Android',
- "travis_url": 'https://travis-ci.org/tomaka/android-rs-glue',
- "travis_badge": 'https://travis-ci.org/tomaka/android-rs-glue.svg?branch=master',
- "unstable": False
+ 'Rust CI': {
+ 'descr': "a [Travis CI](https://travis-ci.com) dashboard for Rust projects",
+ 'travis_url': None,
+ 'unstable': False,
+ 'url': 'http://www.rust-ci.org/',
},
- 'TyOverby/bincode': {
- "url": 'https://github.com/TyOverby/bincode',
- "descr": 'a binary encoder/decoder in Rust',
- "travis_url": 'https://travis-ci.org/TyOverby/bincode',
- "travis_badge": 'https://travis-ci.org/TyOverby/bincode.svg?branch=master',
- "unstable": False
+ 'Rust Guidelines': {
+ 'travis_url': None,
+ 'unstable': False,
+ 'url': 'http://aturon.github.io/',
},
- 'kimhyunkang/libyaml-rust': {
- "url": 'https://github.com/kimhyunkang/libyaml-rust',
- "descr": md_link('libyaml', 'http://pyyaml.org/wiki/LibYAML') + ' bindings',
- "travis_url": 'https://travis-ci.org/kimhyunkang/libyaml-rust',
- "travis_badge": 'https://travis-ci.org/kimhyunkang/libyaml-rust.svg?branch=master',
- "unstable": False
+ 'Rust by Example': {
+ 'travis_url': None,
+ 'unstable': False,
+ 'url': 'http://rustbyexample.com/',
},
'Rustless': {
- "url": 'http://rustless.org/',
- "descr": 'a REST-like API micro-framework inspired by ' + md_link('Grape', 'https://github.com/intridea/grape') + ' and ' + md_link('Hyper', 'https://github.com/hyperium/hyper'),
- "travis_url": 'https://travis-ci.org/rustless/rustless',
- "travis_badge": 'https://travis-ci.org/rustless/rustless.svg?branch=master',
- "unstable": False
+ 'descr': "a REST-like API micro-framework inspired by [Grape](https://github.com/intridea/grape) and [Hyper](https://github.com/hyperium/hyper)",
+ 'travis_badge': 'https://travis-ci.org/rustless/rustless.svg?branch=master',
+ 'travis_url': 'https://travis-ci.org/rustless/rustless',
+ 'unstable': False,
+ 'url': 'http://rustless.org/',
},
- 'tomjakubowski/rethinkdb-rs': {
- "url": 'https://github.com/tomjakubowski/rethinkdb-rs',
- "descr": md_link('RethinkDB', 'http://www.rethinkdb.com') + ' bindings',
- "travis_url": 'https://travis-ci.org/tomjakubowski/rethinkdb-rs',
- "travis_badge": 'https://travis-ci.org/tomjakubowski/rethinkdb-rs.svg?branch=master',
- "unstable": True
+ 'Servo': {
+ 'descr': "a prototype web browser engine written in Rust",
+ 'unstable': False,
+ 'travis_url': None,
+ 'url': 'https://github.com/servo/servo',
},
- 'alexcrichton/flate2-rs': {
- "url": 'https://github.com/alexcrichton/flate2-rs',
- "descr": md_link('miniz', 'https://code.google.com/p/miniz/') + ' bindings',
- "travis_url": 'https://travis-ci.org/alexcrichton/flate2-rs',
- "travis_badge": 'https://travis-ci.org/alexcrichton/flate2-rs.svg?branch=master',
+ 'SiegeLord/RustAllegro': {
+ 'descr': "[Allegro 5](http://liballeg.org/) bindings",
+ 'unstable': False,
+ },
+ 'SiegeLord/RustCMake': {
+ 'descr': "an example project showing usage of CMake with Rust",
+ 'unstable': False,
+ },
+ 'Teepee': {
+ 'unstable': True,
+ },
+ 'TyOverby/bincode': {
+ 'descr': "a binary encoder/decoder in Rust",
+ 'unstable': False,
+ },
+ 'Ygg01/xml-air': {
+ 'descr': "A hybrid pull, DOM parser written in pure Rust",
+ 'unstable': True,
},
'alexcrichton/bzip2-rs': {
- "url": 'https://github.com/alexcrichton/bzip2-rs',
- "descr": md_link('libbz2', 'http://www.bzip.org') + ' bindings',
- "travis_url": 'https://travis-ci.org/alexcrichton/bzip2-rs',
- "travis_badge": 'https://travis-ci.org/alexcrichton/bzip2-rs.svg?branch=master',
+ 'descr': "[libbz2](http://www.bzip.org) bindings",
+ 'unstable': False,
+ },
+ 'alexcrichton/flate2-rs': {
+ 'descr': "[miniz](https://code.google.com/p/miniz/) bindings",
+ 'unstable': False,
+ },
+ 'alexcrichton/ssh2-rs': {
+ 'descr': "[libssh2](http://www.libssh2.org/) bindings",
+ 'unstable': False,
},
'alexcrichton/tar-rs': {
- "url": 'https://github.com/alexcrichton/tar-rs',
- "descr": 'tar archive reading/writing in Rust',
- "travis_url": 'https://travis-ci.org/alexcrichton/tar-rs',
- "travis_badge": 'https://travis-ci.org/alexcrichton/tar-rs.svg?branch=master',
+ 'descr': "tar archive reading/writing in Rust",
+ 'unstable': False,
+ },
+ 'alexcrichton/toml-rs': {
+ 'unstable': False,
+ },
+ 'arjantop/rust-bencode': {
+ 'descr': "[Bencode](http://en.wikipedia.org/wiki/Bencode) implementation in Rust",
+ 'unstable': False,
+ },
+ 'bachm/rusty-tetris': {
+ 'unstable': True,
},
'bbodi/rust-voxlap': {
- "url": 'https://github.com/bbodi/rust-voxlap',
- "descr": md_link('Voxlap', 'http://advsys.net/ken/voxlap.htm') + ' bindings',
+ 'descr': "[Voxlap](http://advsys.net/ken/voxlap.htm) bindings",
+ 'unstable': False,
},
- 'tomaka/glutin': {
- "url": 'https://github.com/tomaka/glutin',
- "descr": 'Rust alternative to ' + md_link('GLFW', 'http://www.glfw.org/'),
- "travis_url": 'https://travis-ci.org/tomaka/glutin',
- "travis_badge": 'https://travis-ci.org/tomaka/glutin.svg?branch=master',
+ 'bjz/bullet-rs': {
+ 'unstable': True,
+ },
+ 'bjz/gl-rs': {
+ 'unstable': False,
+ },
+ 'bjz/glfw-rs': {
+ 'unstable': False,
+ },
+ 'bjz/openal-rs': {
+ 'descr': "[OpenAL 1.1](http://www.openal.org/) bindings",
+ 'unstable': False,
+ },
+ 'blackbeam/rust-mysql-simple': {
+ 'descr': "a native MySql client",
+ 'unstable': False,
+ },
+ 'brson/rust-sdl': {
+ 'descr': "[SDL1](http://www.libsdl.org/) bindings",
+ 'unstable': False,
+ },
+ 'bvssvni/rust-snake': {
+ 'unstable': True,
+ },
+ 'carllerche/curl-rust': {
+ 'descr': "[libcurl](http://curl.haxx.se/libcurl/) bindings",
+ 'unstable': False,
+ },
+ 'carllerche/nix-rust': {
+ 'descr': "Linux API bindings",
+ 'unstable': False,
+ },
+ 'chris-morgan/rust-http': {
+ 'descr': "will be replaced by [Teepee](http://teepee.rs/)",
+ 'unstable': False,
+ },
+ 'cyndis/qmlrs': {
+ 'descr': "[QtQuick](http://doc.qt.io) bindings",
+ 'unstable': False,
+ },
+ 'dnaq/sodiumoxide': {
+ 'descr': "[libsodium](https://github.com/jedisct1/libsodium) bindings",
+ 'unstable': False,
+ },
+ 'docopt/docopt.rs': {
+ 'descr': "a Rust implementation of [DocOpt](http://docopt.org)",
+ 'unstable': False,
+ },
+ 'dpc/rustyhex': {
+ 'unstable': True,
+ },
+ 'dwrensha/capnproto-rust': {
+ 'unstable': False,
+ },
+ 'erickt/rust-mongrel2': {
+ 'descr': "[Mongrel2](http://mongrel2.org) bindings",
+ 'unstable': True,
+ },
+ 'erickt/rust-mustache': {
+ 'unstable': True,
+ },
+ 'erickt/rust-tnetstring': {
+ 'unstable': False,
+ },
+ 'erickt/rust-zmq': {
+ 'descr': "[ZeroMQ](http://zeromq.org) bindings",
+ 'unstable': True,
+ },
+ 'farcaller/shiny': {
+ 'descr': "a fancy syntax similar to Ruby's Rspec or Objective-C' kiwi",
+ 'unstable': False,
+ },
+ 'gchp/iota': {
+ 'descr': "a simple text editor written in Rust",
+ 'unstable': False,
+ },
+ 'gchp/rustbox': {
+ 'descr': "a Rust implementation of [termbox](http://github.com/nsf/termbox)",
+ 'unstable': False,
+ },
+ 'hyperium/hyper': {
+ 'descr': "an HTTP implementation",
+ 'unstable': False,
+ },
+ 'jeaye/ncurses-rs': {
+ 'unstable': False,
+ },
+ 'jeaye/q3': {
+ 'unstable': True,
+ },
+ 'jeremyletang/rust-sfml': {
+ 'descr': "[SFML](http://www.sfml-dev.org/) bindings",
+ 'unstable': False,
+ },
+ 'kenz-gelsoft/wxRust': {
+ 'descr': "[wxWidgets](http://www.wxwidgets.org/) bindings",
+ 'unstable': True,
+ },
+ 'kimhyunkang/libyaml-rust': {
+ 'descr': "[libyaml](http://pyyaml.org/wiki/LibYAML) bindings",
+ 'unstable': False,
+ },
+ 'klutzy/suruga': {
+ 'descr': "a Rust implementation of [TLS 1.2](http://tools.ietf.org/html/rfc5246)",
+ 'unstable': False,
+ },
+ 'libpnet/libpnet': {
+ 'descr': "Cross-platform, low level networking",
+ 'unstable': False,
+ },
+ 'lifthrasiir/angolmois-rust': {
+ 'descr': "a minimalistic music video game which supports the BMS format",
+ 'unstable': False,
+ },
+ 'lifthrasiir/rust-chrono': {
+ 'descr': "",
+ 'unstable': False,
+ },
+ 'lifthrasiir/rust-encoding': {
+ 'unstable': False,
+ },
+ 'lifthrasiir/rust-zip': {
+ 'descr': "read and write ZIP archives",
+ 'unstable': False,
+ },
+ 'linuxfood/rustsqlite': {
+ 'descr': "[Sqlite3](http://www.sqlite.org/) bindings",
+ 'unstable': False,
+ },
+ 'luqmana/rust-opencl': {
+ 'descr': "[OpenCL](https://www.khronos.org/opencl/) bindings",
+ 'unstable': False,
+ },
+ 'mitsuhiko/redis-rs': {
+ 'descr': "[Redis](http://redis.io) library in Rust",
+ 'unstable': False,
+ },
+ 'mneumann/rust-msgpack': {
+ 'unstable': False,
+ },
+ 'mozilla-servo/rust-cocoa': {
+ 'travis_url': None,
+ 'unstable': False,
+ },
+ 'mynery/xxo': {
+ 'unstable': True,
+ },
+ 'netvl/xml-rs': {
+ 'descr': "a streaming XML library",
+ 'unstable': False,
+ },
+ 'ozkriff/marauder': {
+ 'unstable': True,
+ },
+ 'rlane/cubeland': {
+ 'unstable': True,
+ },
+ 'rust-lang/time': {
+ 'descr': "",
+ 'unstable': False,
+ },
+ 'rustache/rustache': {
+ 'unstable': False,
+ },
+ 'samdoshi/portmidi-rs': {
+ 'descr': "[PortMidi](http://portmedia.sourceforge.net/portmidi/) bindings",
+ 'unstable': False,
+ },
+ 'schickling/rust-beanstalkd': {
+ 'descr': "[Beanstalkd](https://github.com/kr/beanstalkd) bindings",
+ 'unstable': False,
+ },
+ 'seb-m/common.rs': {
+ 'descr': "Common Rust crypto utilities",
+ 'unstable': False,
+ },
+ 'sebcrozet/kiss3d': {
+ 'unstable': True,
+ },
+ 'sebcrozet/ncollide': {
+ 'unstable': True,
+ },
+ 'sebcrozet/nphysics': {
+ 'unstable': True,
},
'servo/html5ever': {
- "url": 'https://github.com/servo/html5ever',
- "descr": 'High-performance browser-grade HTML5 parser',
- "travis_url": 'https://travis-ci.org/servo/html5ever',
- "travis_badge": 'https://travis-ci.org/servo/html5ever.svg?branch=master',
+ 'descr': "High-performance browser-grade HTML5 parser",
+ 'unstable': False,
},
- "alexcrichton/ssh2-rs": {
- "url": "https://github.com/alexcrichton/ssh2-rs",
- "descr": md_link('libssh2', 'http://www.libssh2.org/') + " bindings",
- "travis_url": 'https://travis-ci.org/alexcrichton/ssh2-rs',
- "travis_badge": 'https://travis-ci.org/alexcrichton/ssh2-rs.svg?branch=master',
+ 'servo/rust-glut': {
+ 'travis_url': None,
+ 'unstable': False,
},
- "zslayton/stomp-rs": {
- "url": "https://github.com/zslayton/stomp-rs",
- "descr": md_link('STOMP 1.2', 'http://stomp.github.io/stomp-specification-1.2.html') + " client implementation in Rust",
- "travis_url": 'https://travis-ci.org/zslayton/stomp-rs',
- "travis_badge": 'https://api.travis-ci.org/zslayton/stomp-rs.svg?branch=master',
+ 'servo/rust-opengles': {
+ 'unstable': True,
},
- "thestinger/rust-gmp": {
- "url": "https://github.com/thestinger/rust-gmp",
- "descr": md_link('libgmp', 'https://gmplib.org/') + " bindings",
+ 'sfackler/rust-openssl': {
+ 'descr': "[OpenSSL](https://www.openssl.org/) bindings",
+ 'unstable': False,
},
- "libpnet/libpnet": {
- "url": "https://github.com/libpnet/libpnet",
- "descr": "Cross-platform, low level networking",
- "travis_url": 'https://travis-ci.org/libpnet/libpnet',
- "travis_badge": 'https://api.travis-ci.org/libpnet/libpnet.svg?branch=master',
+ 'sfackler/rust-postgres': {
+ 'descr': "a native [PostgreSQL](http://www.postgresql.org) client",
+ 'unstable': False,
+ },
+ 'stepancheg/rust-protobuf': {
+ 'unstable': False,
+ },
+ 'thehydroimpulse/nanomsg.rs': {
+ 'descr': "a modern messaging library that is the successor to ZeroMQ",
+ 'unstable': False,
+ },
+ 'thestinger/rust-gmp': {
+ 'descr': "[libgmp](https://gmplib.org/) bindings",
+ 'unstable': False,
+ },
+ 'tomaka/android-rs-glue': {
+ 'descr': "glue between Rust and Android",
+ 'unstable': False,
+ },
+ 'tomaka/glutin': {
+ 'descr': "Rust alternative to [GLFW](http://www.glfw.org/)",
+ 'unstable': False,
+ },
+ 'tomjakubowski/rethinkdb-rs': {
+ 'descr': "[RethinkDB](http://www.rethinkdb.com) bindings",
+ 'unstable': True,
+ },
+ 'uutils/coreutils': {
+ 'descr': "cross-platform Rust rewrite of the GNU coreutils",
+ 'unstable': False,
+ },
+ 'vhbit/ObjCrust': {
+ 'descr': "using Rust to create an iOS static library",
+ 'unstable': False,
+ },
+ 'vhbit/curl-rs': {
+ 'descr': "[libcurl](http://curl.haxx.se/libcurl/) bindings",
+ 'unstable': False,
+ },
+ 'wycats/hammer.rs': {
+ 'unstable': True,
+ },
+ 'zeromq/zmq.rs': {
+ 'descr': "Rust implementation of the [ZeroMQ](http://zeromq.org)protocol",
+ 'unstable': True,
+ },
+ 'zokier/pong-rs': {
+ 'unstable': True,
+ },
+ 'zslayton/stomp-rs': {
+ 'descr': "[STOMP 1.2](http://stomp.github.io/stomp-specification-1.2.html) client implementation in Rust",
+ 'unstable': False,
},
- "bjz/openal-rs": {
- "url": "https://github.com/bjz/openal-rs/",
- "descr": md_link('OpenAL 1.1', 'http://www.openal.org/') + " bindings"
- },
- "Cargo": {
- "url": "http://crates.io",
- "descr": "the Rust package manager"
- },
- "klutzy/suruga": {
- "url": 'https://github.com/klutzy/suruga',
- "descr": 'a Rust implementation of ' + md_link('TLS 1.2', 'http://tools.ietf.org/html/rfc5246')
- },
- "JeremyLetang/ears": {
- "url": "https://github.com/JeremyLetang/ears",
- "descr": "a simple library to play Sounds and Musics, on top of OpenAL and libsndfile",
- "travis_url": "https://travis-ci.org/JeremyLetang/ears",
- "travis_badge": "https://travis-ci.org/jeremyletang/ears.svg?branch=master"
- },
- "JeremyLetang/rust-portaudio": {
- "url": "https://github.com/JeremyLetang/rust-portaudio",
- "descr": md_link('PortAudio', 'http://www.portaudio.com/') + " bindings",
- "travis_url": "https://travis-ci.org/JeremyLetang/rust-portaudio",
- "travis_badge": "https://travis-ci.org/jeremyletang/rust-portaudio.svg?branch=master"
- },
- "samdoshi/portmidi-rs": {
- "url": "https://github.com/samdoshi/portmidi-rs",
- "descr": md_link('PortMidi', 'http://portmedia.sourceforge.net/portmidi/') + " bindings",
- "travis_url": "https://travis-ci.org/samdoshi/portmidi-rs",
- "travis_badge": "https://travis-ci.org/samdoshi/portmidi-rs.svg?branch=master"
- },
- "PistonDevelopers/image": {
- "url": "https://github.com/PistonDevelopers/image",
- "descr": 'Basic imaging processing functions and methods for converting to and from image formats',
- "travis_url": "https://travis-ci.org/PistonDevelopers/image",
- "travis_badge": "https://travis-ci.org/PistonDevelopers/image.svg?branch=master"
- },
- "seb-m/common.rs": {
- "url": 'https://github.com/klutzy/suruga',
- "descr": 'Common Rust crypto utilities'
- },
- "SiegeLord/RustCMake": {
- "url": "https://github.com/SiegeLord/RustCMake",
- "descr": "an example project showing usage of CMake with Rust",
- "travis_url": "https://travis-ci.org/SiegeLord/RustCMake",
- "travis_badge": "https://travis-ci.org/SiegeLord/RustCMake.svg?branch=master"
- },
- "docopt/docopt.rs": {
- "url": "https://github.com/docopt/docopt.rs",
- "descr": "a Rust implementation of " + md_link('DocOpt', 'http://docopt.org'),
- "travis_url": "https://travis-ci.org/docopt/docopt.rs",
- "travis_badge": "https://travis-ci.org/docopt/docopt.rs.svg?branch=master"
- },
- "wycats/hammer.rs": {
- "url": "https://github.com/wycats/hammer.rs",
- "unstable": True
- },
- "lifthrasiir/rust-zip": {
- "url": "https://github.com/lifthrasiir/rust-zip",
- "descr": "read and write ZIP archives",
- "travis_url": "https://travis-ci.org/lifthrasiir/rust-zip",
- "travis_badge": "https://travis-ci.org/lifthrasiir/rust-zip.svg?branch=master"
- },
- "luqmana/rust-opencl": {
- "url": "https://github.com/luqmana/rust-opencl",
- "descr": md_link('OpenCL', 'https://www.khronos.org/opencl/') + " bindings",
- "travis_url": "https://travis-ci.org/luqmana/rust-opencl",
- "travis_badge": "https://travis-ci.org/luqmana/rust-opencl.svg?branch=master"
- },
- "DaGenix/rust-crypto": {
- "url": "https://github.com/DaGenix/rust-crypto",
- "descr": "cryptographic algorithms in Rust",
- "travis_url": "https://travis-ci.org/DaGenix/rust-crypto",
- "travis_badge": "https://travis-ci.org/DaGenix/rust-crypto.svg?branch=master"
- },
- "dnaq/sodiumoxide": {
- "url": "https://github.com/dnaq/sodiumoxide",
- "descr": md_link('libsodium', 'https://github.com/jedisct1/libsodium') + " bindings"
- },
- "sfackler/rust-openssl": {
- "url": "https://github.com/sfackler/rust-openssl",
- "descr": md_link('OpenSSL', 'https://www.openssl.org/') + " bindings",
- "travis_url": "https://travis-ci.org/sfackler/rust-openssl",
- "travis_badge": "https://travis-ci.org/sfackler/rust-openssl.svg?branch=master"
- },
- "blackbeam/rust-mysql-simple": {
- "url": "https://github.com/blackbeam/rust-mysql-simple",
- "descr": "a native MySql client",
- "travis_url": "https://travis-ci.org/blackbeam/rust-mysql-simple",
- "travis_badge": "https://travis-ci.org/blackbeam/rust-mysql-simple.svg?branch=master"
- },
- "sfackler/rust-postgres": {
- "url": "https://github.com/sfackler/rust-postgres",
- "descr": "a native " + md_link('PostgreSQL', 'http://www.postgresql.org') + " client",
- "travis_url": "https://travis-ci.org/sfackler/rust-postgres",
- "travis_badge": "https://travis-ci.org/sfackler/rust-postgres.svg?branch=master"
- },
- "linuxfood/rustsqlite": {
- "url": "https://github.com/linuxfood/rustsqlite",
- "descr": md_link('Sqlite3', 'http://www.sqlite.org/') + " bindings",
- "travis_url": "https://travis-ci.org/linuxfood/rustsqlite",
- "travis_badge": "https://travis-ci.org/linuxfood/rustsqlite.svg?branch=master"
- },
- "dwrensha/capnproto-rust": {
- "url": "https://github.com/dwrensha/capnproto-rust",
- "travis_url": "https://travis-ci.org/dwrensha/capnproto-rust",
- "travis_badge": "https://travis-ci.org/dwrensha/capnproto-rust.svg?branch=master"
- },
- "lifthrasiir/rust-encoding": {
- "url": "https://github.com/lifthrasiir/rust-encoding",
- "travis_url": "https://travis-ci.org/lifthrasiir/rust-encoding",
- "travis_badge": "https://travis-ci.org/lifthrasiir/rust-encoding.svg?branch=master"
- },
- "BurntSushi/rust-csv": {
- "url": "https://github.com/BurntSushi/rust-csv",
- "travis_url": "https://travis-ci.org/BurntSushi/rust-csv",
- "travis_badge": "https://api.travis-ci.org/BurntSushi/rust-csv.svg?branch=master"
- },
- "Geal/rust-csv": {
- "url": "https://github.com/Geal/rust-csv",
- "travis_url": "https://travis-ci.org/Geal/rust-csv",
- "travis_badge": "https://travis-ci.org/Geal/rust-csv.svg?branch=master",
- "unstable": True
- },
- "mneumann/rust-msgpack": {
- "url": "https://github.com/mneumann/rust-msgpack",
- "travis_url": "https://travis-ci.org/mneumann/rust-msgpack",
- "travis_badge": "https://travis-ci.org/mneumann/rust-msgpack.svg?branch=master"
- },
- "stepancheg/rust-protobuf": {
- "url": "https://github.com/stepancheg/rust-protobuf",
- "travis_url": "https://travis-ci.org/stepancheg/rust-protobuf",
- "travis_badge": "https://travis-ci.org/stepancheg/rust-protobuf.svg?branch=master"
- },
- "alexcrichton/toml-rs": {
- "url": "https://github.com/alexcrichton/toml-rs",
- "travis_url": "https://travis-ci.org/alexcrichton/toml-rs",
- "travis_badge": "https://travis-ci.org/alexcrichton/toml-rs.svg?branch=master"
- },
- "erickt/rust-tnetstring": {
- "url": "https://github.com/erickt/rust-tnetstring",
- "travis_url": "https://travis-ci.org/erickt/rust-tnetstring",
- "travis_badge": "https://travis-ci.org/erickt/rust-tnetstring.svg?branch=master",
- "unstable": False
- },
- "Ygg01/xml-air": {
- "url": "https://github.com/Ygg01/xml-air",
- "descr": "A hybrid pull, DOM parser written in pure Rust",
- "travis_url": "https://travis-ci.org/Ygg01/xml-air",
- "travis_badge": "https://travis-ci.org/Ygg01/xml-air.svg?branch=master",
- "unstable": True
- },
- "Florob/RustyXML": {
- "url": "https://github.com/Florob/RustyXML",
- "descr": "an XML parser written in Rust",
- "travis_url": "https://travis-ci.org/Florob/RustyXM",
- "travis_badge": "https://travis-ci.org/Florob/RustyXML.svg?branch=master"
- },
- "netvl/xml-rs": {
- "url": "https://github.com/netvl/xml-rs",
- "descr": "a streaming XML library",
- "travis_url": "https://travis-ci.org/netvl/xml-rs",
- "travis_badge": "https://travis-ci.org/netvl/xml-rs.svg?branch=master"
- },
- "JeremyLetang/rustenstein3D": {
- "url": "https://github.com/JeremyLetang/rustenstein3D/",
- "descr": "a raycasting engine in rust",
- "travis_url": "",
- "travis_badge": "",
- 'unstable': True
- },
- "lifthrasiir/angolmois-rust": {
- "url": "https://github.com/lifthrasiir/angolmois-rust",
- "descr": "a minimalistic music video game which supports the BMS format",
- "travis_url": "https://travis-ci.org/lifthrasiir/angolmois-rust",
- "travis_badge": "https://travis-ci.org/lifthrasiir/angolmois-rust.svg?branch=master"
- },
- "mozilla-servo/rust-cocoa": {
- "url": "https://github.com/mozilla-servo/rust-cocoa"
- },
- "JeremyLetang/rgtk": {
- "url": "https://github.com/JeremyLetang/rgtk",
- "descr": md_link('Gtk+', 'http://www.gtk.org') + " bindings",
- "travis_url": "https://travis-ci.org/jeremyletang/rgtk",
- "travis_badge": "https://travis-ci.org/jeremyletang/rgtk.svg?branch=master"
- },
- "jeaye/ncurses-rs": {
- "url": "https://github.com/jeaye/ncurses-rs",
- "travis_url": "https://travis-ci.org/jeaye/ncurses-rs",
- "travis_badge": "https://travis-ci.org/jeaye/ncurses-rs.svg?branch=master"
- },
- "AngryLawyer/rust-sdl2": {
- "url": "https://github.com/AngryLawyer/rust-sdl2",
- "descr": md_link('SDL2', 'http://www.libsdl.org/') + " bindings",
- "travis_url": "https://travis-ci.org/AngryLawyer/rust-sdl2",
- "travis_badge": "https://travis-ci.org/AngryLawyer/rust-sdl2.svg?branch=master"
- },
- "brson/rust-sdl": {
- "url": "https://github.com/brson/rust-sdl",
- "descr": md_link('SDL1', 'http://www.libsdl.org/') + " bindings",
- "travis_url": "https://travis-ci.org/brson/rust-sdl",
- "travis_badge": "https://travis-ci.org/brson/rust-sdl.svg?branch=master"
- },
- "gchp/rustbox": {
- "url": "https://github.com/gchp/rustbox",
- "descr": "a Rust implementation of " + md_link('termbox', 'http://github.com/nsf/termbox')
- },
- "erickt/rust-zmq": {
- "url": "https://github.com/erickt/rust-zmq",
- "descr": md_link('ZeroMQ', 'http://zeromq.org') + " bindings",
- "travis_url": "https://travis-ci.org/erickt/rust-zmq",
- "travis_badge": "https://travis-ci.org/erickt/rust-zmq.svg?branch=master",
- "unstable": True
- },
- "zeromq/zmq.rs": {
- "url": "https://github.com/zeromq/zmq.rs",
- "descr": "Rust implementation of the " + md_link('ZeroMQ', 'http://zeromq.org') + "protocol",
- "travis_url": "https://travis-ci.org/zeromq/zmq.rs",
- "travis_badge": "https://travis-ci.org/zeromq/zmq.rs.svg?branch=master",
- "unstable": True
- },
- "erickt/rust-mustache": {
- "url": "https://github.com/erickt/rust-mustache",
- "travis_url": "https://travis-ci.org/erickt/rust-mustache",
- "travis_badge": "https://travis-ci.org/erickt/rust-mustache.svg?branch=master",
- "unstable": True
- },
- "BurntSushi/quickcheck": {
- "url": "https://github.com/BurntSushi/quickcheck",
- "descr": 'a Rust implementation of ' + md_link('QuickCheck', 'http://www.haskell.org/haskellwiki/Introduction_to_QuickCheck1'),
- "travis_url": "https://travis-ci.org/BurntSushi/quickcheck",
- "travis_badge": "https://travis-ci.org/BurntSushi/quickcheck.svg?branch=master"
- },
- "farcaller/shiny": {
- "url": "https://github.com/farcaller/shiny",
- "descr": "a fancy syntax similar to ruby's rspec or Objective-C's kiwi",
- "travis_url": "https://travis-ci.org/farcaller/shiny",
- "travis_badge": "https://travis-ci.org/farcaller/shiny.svg?branch=master",
- "unstable": False
- },
- "chris-morgan/rust-http": {
- "url": "https://github.com/chris-morgan/rust-http",
- "descr": "will be replaced by " + md_link('Teepee', 'http://teepee.rs/'),
- "travis_url": "https://travis-ci.org/chris-morgan/rust-http",
- "travis_badge": "https://travis-ci.org/chris-morgan/rust-http.svg?branch=master"
- },
- "Teepee": {
- "url": "http://teepee.rs/",
- "travis_url": "https://travis-ci.org/teepee/teepee",
- "travis_badge": "https://travis-ci.org/teepee/teepee.svg?branch=master",
- 'unstable': True
- },
- "hyperium/hyper": {
- "url": "https://github.com/hyperium/hyper",
- "descr": "an HTTP implementation",
- "travis_url": "https://travis-ci.org/hyperium/hyper",
- "travis_badge": "https://travis-ci.org/hyperium/hyper.svg?branch=master"
- },
- "carllerche/curl-rust": {
- "url": "https://github.com/carllerche/curl-rust",
- "descr": md_link('libcurl', 'http://curl.haxx.se/libcurl/') + " bindings"
- },
- "vhbit/curl-rs": {
- "url": "https://github.com/vhbit/curl-rs",
- "descr": md_link('libcurl', 'http://curl.haxx.se/libcurl/') + " bindings",
- },
- "erickt/rust-mongrel2": {
- "url": "https://github.com/erickt/rust-mongrel2",
- "descr": md_link('Mongrel2', 'http://mongrel2.org') + " bindings",
- "travis_url": "https://travis-ci.org/erickt/rust-mongrel2",
- "travis_badge": "https://travis-ci.org/erickt/rust-mongrel2.svg?branch=master",
- "unstable": True
- },
- "Iron": {
- "url": "http://ironframework.io/",
- "descr": 'a middleware-based server framework',
- "travis_url": "https://travis-ci.org/iron/iron",
- "travis_badge": "https://travis-ci.org/iron/iron.svg?branch=master",
- },
- "Nickel": {
- "url": "http://nickel.rs/",
- "descr": "inspired by " + md_link('Express', 'http://expressjs.com/'),
- "travis_url": "https://travis-ci.org/nickel-org/nickel.rs",
- "travis_badge": "https://travis-ci.org/nickel-org/nickel.rs.svg?branch=master",
- },
- "Rust by Example": {
- "url": "http://rustbyexample.com/",
- },
- "Rust CI": {
- "url": "http://www.rust-ci.org",
- "descr": "a " + md_link('Travis CI', 'https://travis-ci.com') + " dashboard for Rust projects",
- },
- "Rust Guidelines": {
- "url": "http://aturon.github.io",
- },
- "kenz-gelsoft/wxRust": {
- "url": "https://github.com/kenz-gelsoft/wxRust",
- "descr": md_link('wxWidgets', 'http://www.wxwidgets.org/') + " bindings",
- "travis_url": "https://travis-ci.org/kenz-gelsoft/wxRust",
- "travis_badge": "https://travis-ci.org/kenz-gelsoft/wxRust.svg?branch=master",
- "unstable": True
- },
- "Arcterus/game-of-life": {
- "url": "https://github.com/Arcterus/game-of-life",
- "unstable": True
- },
- "Arcterus/rust-snake": {
- "url": "https://github.com/Arcterus/rust-snake",
- "unstable": True
- },
- "bachm/rusty-tetris": {
- "url": "https://github.com/bachm/rusty-tetris",
- "unstable": True
- },
- "bvssvni/rust-snake": {
- "url": "https://github.com/bvssvni/rust-snake",
- "unstable": True
- },
- "Coeuvre/rust-2048": {
- "url": "https://github.com/Coeuvre/rust-2048",
- "unstable": False
- },
- "Coeuvre/rust-pong": {
- "url": "https://github.com/Coeuvre/rust-pong",
- "unstable": True
- },
- "dpc/rustyhex": {
- "url": "https://github.com/dpc/rustyhex",
- "unstable": True
- },
- "FrozenCow/rust-airhockey": {
- "url": "https://github.com/FrozenCow/rust-airhockey",
- "unstable": True
- },
- "jeaye/q3": {
- "url": "https://github.com/jeaye/q3",
- "unstable": True
- },
- "mynery/xxo": {
- "url": "https://github.com/mynery/xxo",
- "unstable": True
- },
- "ozkriff/marauder": {
- "url": "https://github.com/ozkriff/marauder",
- "unstable": True
- },
- "rlane/cubeland": {
- "url": "https://github.com/rlane/cubeland",
- "unstable": True
- },
- "zokier/pong-rs": {
- "url": "https://github.com/zokier/pong-rs",
- "unstable": True
- },
- "bjz/gl-rs": {
- "url": "https://github.com/bjz/gl-rs",
- "unstable": False
- },
- "servo/rust-opengles": {
- "url": "https://github.com/servo/rust-opengles",
- "unstable": True
- },
- "PistonDevelopers/piston": {
- "url": "https://github.com/pistondevelopers/piston",
- "travis_url": "https://travis-ci.org/PistonDevelopers/piston",
- "travis_badge": "https://travis-ci.org/PistonDevelopers/piston.svg?branch=master",
- },
- "sebcrozet/kiss3d": {
- "url": "https://github.com/sebcrozet/kiss3d",
- "unstable": True
- },
- "servo/rust-glut": {
- "url": "https://github.com/mozilla-servo/rust-glut",
- "unstable": False
- },
- "bjz/glfw-rs": {
- "url": "https://github.com/bjz/glfw-rs",
- "unstable": False
- },
- "jeremyletang/rust-sfml": {
- "url": "https://github.com/JeremyLetang/rust-sfml",
- "descr": md_link('SFML', 'http://www.sfml-dev.org/') + " bindings",
- "travis_url": "https://travis-ci.org/jeremyLetang/rust-sfml",
- "travis_badge": "https://travis-ci.org/jeremyletang/rust-sfml.svg?branch=master",
- },
- "SiegeLord/RustAllegro": {
- "url": "https://github.com/SiegeLord/RustAllegro",
- "descr": md_link('Allegro 5', 'http://liballeg.org/') + " bindings",
- "travis_url": "https://travis-ci.org/SiegeLord/RustAllegro",
- "travis_badge": "https://travis-ci.org/SiegeLord/RustAllegro.svg?branch=master",
- },
- "bjz/bullet-rs": {
- "url": "https://github.com/bjz/bullet-rs",
- "unstable": True
- },
- "sebcrozet/ncollide": {
- "url": "https://github.com/sebcrozet/ncollide",
- "unstable": True
- },
- "sebcrozet/nphysics": {
- "url": "https://github.com/sebcrozet/nphysics",
- "unstable": True
- },
- "rustache/rustache": {
- "url": "https://github.com/rustache/rustache",
- "travis_url": "https://travis-ci.org/rustache/rustache",
- "travis_badge": "https://travis-ci.org/rustache/rustache.svg?branch=master"
- },
- "thehydroimpulse/nanomsg.rs": {
- "url": "https://github.com/thehydroimpulse/nanomsg.rs",
- "descr": "a modern messaging library that is the successor to ZeroMQ",
- "travis_url": "https://travis-ci.org/thehydroimpulse/nanomsg.rs",
- "travis_badge": "https://travis-ci.org/thehydroimpulse/nanomsg.rs.svg?branch=master",
- },
}
+def pretty_print():
+ """
+ """
+
+ projects_names = DATA.keys()
+ projects_names.sort()
+
+ print ' {'
+
+ for projects_name in projects_names:
+
+ project_data = DATA[projects_name]
+ project_data.setdefault('unstable', False)
+
+ print " '%s': {" % projects_name
+
+ keys = project_data.keys()
+ keys.sort()
+
+ for key in keys:
+
+ value = project_data[key]
+
+ if type(value) == str:
+ value_format = '"%s"' % value
+ else:
+ value_format = "%s" % value
+
+ print " '%s': %s," % (key, value_format)
+
+ print " },"
+
+ print ' }'
+
+# end def pretty_print
+
+
HEADER_STABLE = \
"""# Awesome Rust
@@ -642,50 +516,64 @@ TOC = \
- [Resources](#resources)
"""
-def add( value, rows_stable=None, rows_unstable=None ):
+def add(value, rows_stable=None, rows_unstable=None):
if rows_stable:
- rows_stable.append( value )
+ rows_stable.append(value)
if rows_unstable:
- rows_unstable.append( value )
+ rows_unstable.append(value)
-#end def add
-def entry( prefix, name, rows_stable=None, rows_unstable=None ):
+# end def add
- entry = DATA.get(name)
- if entry is None:
- print '"%s" not found' % name
+def entry(prefix, project_name, rows_stable=None, rows_unstable=None):
+
+ # Get the project data.
+ project_data = DATA.get(project_name)
+
+ if project_data is None:
+ print '"%s" not found' % project_name
return
- url = entry.get('url')
- description = entry.get('descr', '')
+ url = project_data.get('url', 'https://github.com/%s' % project_name)
+ description = project_data.get('descr', '')
if description:
description = ' ' + description
- travis_badge = entry.get('travis_badge')
- travis_url = entry.get('travis_url')
+
+ if 'travis_badge' in project_data:
+ travis_badge = project_data.get('travis_badge')
+ else:
+ travis_badge = 'https://travis-ci.org/%s.svg?branch=master' % project_name
+
+
+ if 'travis_url' in project_data:
+ travis_url = project_data.get('travis_url')
+ else:
+ travis_url = 'https://travis-ci.org/%s' % project_name
+
if travis_badge and travis_url:
- travis = ' ' + md_link( '
' % travis_badge, travis_url )
+ travis = ' ' + md_link('
' % travis_badge, travis_url)
else:
travis = ''
+
if description or travis:
separator = ' —'
else:
separator = ''
- unstable = entry.get('unstable')
+ unstable = project_data.get('unstable')
if unstable:
rows = rows_unstable
else:
rows = rows_stable
- rows.append('%s[%s](%s)%s%s%s' % (prefix, name, url, separator, description, travis))
+ rows.append('%s[%s](%s)%s%s%s' % (prefix, project_name, url, separator, description, travis))
#end def entry
@@ -694,199 +582,201 @@ def entry( prefix, name, rows_stable=None, rows_unstable=None ):
rows_stable = [HEADER_STABLE, TOC]
rows_unstable = [HEADER_UNSTABLE, TOC]
-add( '## Applications\n', rows_stable, rows_unstable )
-entry( '* ', 'gchp/iota', rows_stable, rows_unstable )
-entry( '* ', 'uutils/coreutils', rows_stable, rows_unstable )
-entry( '* ', 'Servo', rows_stable, rows_unstable )
+add('## Applications\n', rows_stable, rows_unstable)
+entry('* ', 'gchp/iota', rows_stable, rows_unstable)
+entry('* ', 'uutils/coreutils', rows_stable, rows_unstable)
+entry('* ', 'Servo', rows_stable, rows_unstable)
-add( '\n### Games\n', rows_stable, rows_unstable )
-entry( '* ', 'Arcterus/game-of-life', rows_stable, rows_unstable )
-entry( '* ', 'Arcterus/rust-snake', rows_stable, rows_unstable )
-entry( '* ', 'bachm/rusty-tetris', rows_stable, rows_unstable )
-entry( '* ', 'bvssvni/rust-snake', rows_stable, rows_unstable )
-entry( '* ', 'Coeuvre/rust-2048', rows_stable, rows_unstable )
-entry( '* ', 'Coeuvre/rust-pong', rows_stable, rows_unstable )
-entry( '* ', 'dpc/rustyhex', rows_stable, rows_unstable )
-entry( '* ', 'FrozenCow/rust-airhockey', rows_stable, rows_unstable )
-entry( '* ', 'jeaye/q3', rows_stable, rows_unstable )
-entry( '* ', 'lifthrasiir/angolmois-rust', rows_stable, rows_unstable )
-entry( '* ', 'mynery/xxo', rows_stable, rows_unstable )
-entry( '* ', 'ozkriff/marauder', rows_stable, rows_unstable )
-entry( '* ', 'rlane/cubeland', rows_stable, rows_unstable )
-entry( '* ', 'zokier/pong-rs', rows_stable, rows_unstable )
+add('\n### Games\n', rows_stable, rows_unstable)
+entry('* ', 'Arcterus/game-of-life', rows_stable, rows_unstable)
+entry('* ', 'Arcterus/rust-snake', rows_stable, rows_unstable)
+entry('* ', 'bachm/rusty-tetris', rows_stable, rows_unstable)
+entry('* ', 'bvssvni/rust-snake', rows_stable, rows_unstable)
+entry('* ', 'Coeuvre/rust-2048', rows_stable, rows_unstable)
+entry('* ', 'Coeuvre/rust-pong', rows_stable, rows_unstable)
+entry('* ', 'dpc/rustyhex', rows_stable, rows_unstable)
+entry('* ', 'FrozenCow/rust-airhockey', rows_stable, rows_unstable)
+entry('* ', 'jeaye/q3', rows_stable, rows_unstable)
+entry('* ', 'lifthrasiir/angolmois-rust', rows_stable, rows_unstable)
+entry('* ', 'mynery/xxo', rows_stable, rows_unstable)
+entry('* ', 'ozkriff/marauder', rows_stable, rows_unstable)
+entry('* ', 'rlane/cubeland', rows_stable, rows_unstable)
+entry('* ', 'zokier/pong-rs', rows_stable, rows_unstable)
-add( '\n## Frameworks\n', rows_stable, rows_unstable )
+add('\n## Frameworks\n', rows_stable, rows_unstable)
-add( '\n### Audio\n', rows_stable, rows_unstable )
-entry( '* ', 'bjz/openal-rs', rows_stable, rows_unstable )
-entry( '* ', 'JeremyLetang/ears', rows_stable, rows_unstable )
-entry( '* ', 'JeremyLetang/rust-portaudio', rows_stable, rows_unstable )
-entry( '* ', 'samdoshi/portmidi-rs', rows_stable, rows_unstable )
+add('\n### Audio\n', rows_stable, rows_unstable)
+entry('* ', 'bjz/openal-rs', rows_stable, rows_unstable)
+entry('* ', 'JeremyLetang/ears', rows_stable, rows_unstable)
+entry('* ', 'JeremyLetang/rust-portaudio', rows_stable, rows_unstable)
+entry('* ', 'samdoshi/portmidi-rs', rows_stable, rows_unstable)
-add( '\n### Build system\n', rows_stable, rows_unstable )
-entry( '* ', 'Cargo', rows_stable, rows_unstable )
-add( '* CMake', rows_stable, rows_unstable )
-entry( ' * ', 'SiegeLord/RustCMake', rows_stable, rows_unstable )
+add('\n### Build system\n', rows_stable, rows_unstable)
+entry('* ', 'Cargo', rows_stable, rows_unstable)
+add('* CMake', rows_stable, rows_unstable)
+entry(' * ', 'SiegeLord/RustCMake', rows_stable, rows_unstable)
-add( '\n### Command-line argument parsing\n', rows_stable, rows_unstable )
-entry( '* ', 'docopt/docopt.rs', rows_stable, rows_unstable )
-entry( '* ', 'wycats/hammer.rs', rows_stable, rows_unstable )
+add('\n### Command-line argument parsing\n', rows_stable, rows_unstable)
+entry('* ', 'docopt/docopt.rs', rows_stable, rows_unstable)
+entry('* ', 'wycats/hammer.rs', rows_stable, rows_unstable)
-add( '\n### Compression\n', rows_stable, rows_unstable )
-entry( '* ', 'alexcrichton/bzip2-rs', rows_stable, rows_unstable )
-entry( '* ', 'alexcrichton/flate2-rs', rows_stable, rows_unstable )
-entry( '* ', 'alexcrichton/tar-rs', rows_stable, rows_unstable )
-entry( '* ', 'lifthrasiir/rust-zip', rows_stable, rows_unstable )
+add('\n### Compression\n', rows_stable, rows_unstable)
+entry('* ', 'alexcrichton/bzip2-rs', rows_stable, rows_unstable)
+entry('* ', 'alexcrichton/flate2-rs', rows_stable, rows_unstable)
+entry('* ', 'alexcrichton/tar-rs', rows_stable, rows_unstable)
+entry('* ', 'lifthrasiir/rust-zip', rows_stable, rows_unstable)
-add( '\n### Computation\n', rows_stable, rows_unstable )
-entry( '* ', 'luqmana/rust-opencl', rows_stable, rows_unstable )
-entry( '* ', 'thestinger/rust-gmp', rows_stable, rows_unstable )
+add('\n### Computation\n', rows_stable, rows_unstable)
+entry('* ', 'luqmana/rust-opencl', rows_stable, rows_unstable)
+entry('* ', 'thestinger/rust-gmp', rows_stable, rows_unstable)
-add( '\n### Cryptography\n', rows_stable, rows_unstable )
-entry( '* ', 'DaGenix/rust-crypto', rows_stable, rows_unstable )
-entry( '* ', 'dnaq/sodiumoxide', rows_stable, rows_unstable )
-entry( '* ', 'klutzy/suruga', rows_stable, rows_unstable )
-entry( '* ', 'seb-m/common.rs', rows_stable, rows_unstable )
-entry( '* ', 'sfackler/rust-openssl', rows_stable, rows_unstable )
+add('\n### Cryptography\n', rows_stable, rows_unstable)
+entry('* ', 'DaGenix/rust-crypto', rows_stable, rows_unstable)
+entry('* ', 'dnaq/sodiumoxide', rows_stable, rows_unstable)
+entry('* ', 'klutzy/suruga', rows_stable, rows_unstable)
+entry('* ', 'seb-m/common.rs', rows_stable, rows_unstable)
+entry('* ', 'sfackler/rust-openssl', rows_stable, rows_unstable)
-add( '\n### Database\n', rows_stable, rows_unstable )
-add( '* NoSQL', rows_stable, rows_unstable )
-add( ' * Redis', rows_stable, rows_unstable )
-entry( ' * ', 'mitsuhiko/redis-rs', rows_stable, rows_unstable )
-add( ' * RethinkDB', rows_stable, rows_unstable )
-entry( ' * ', 'tomjakubowski/rethinkdb-rs', rows_stable, rows_unstable )
-add( '* SQL', rows_stable, rows_unstable )
-add( ' * MySql', rows_stable, rows_unstable )
-entry( ' * ', 'blackbeam/rust-mysql-simple', rows_stable, rows_unstable )
-add( ' * PostgreSql', rows_stable, rows_unstable )
-entry( ' * ', 'sfackler/rust-postgres', rows_stable, rows_unstable )
-add( ' * Sqlite', rows_stable, rows_unstable )
-entry( ' * ', 'linuxfood/rustsqlite', rows_stable, rows_unstable )
+add('\n### Database\n', rows_stable, rows_unstable)
+add('* NoSQL', rows_stable, rows_unstable)
+add(' * Redis', rows_stable, rows_unstable)
+entry(' * ', 'mitsuhiko/redis-rs', rows_stable, rows_unstable)
+add(' * RethinkDB', rows_stable, rows_unstable)
+entry(' * ', 'tomjakubowski/rethinkdb-rs', rows_stable, rows_unstable)
+add('* SQL', rows_stable, rows_unstable)
+add(' * MySql', rows_stable, rows_unstable)
+entry(' * ', 'blackbeam/rust-mysql-simple', rows_stable, rows_unstable)
+add(' * PostgreSql', rows_stable, rows_unstable)
+entry(' * ', 'sfackler/rust-postgres', rows_stable, rows_unstable)
+add(' * Sqlite', rows_stable, rows_unstable)
+entry(' * ', 'linuxfood/rustsqlite', rows_stable, rows_unstable)
-add( '\n### Date and time\n', rows_stable, rows_unstable )
-entry( '* ', 'lifthrasiir/rust-chrono', rows_stable, rows_unstable )
-entry( '* ', 'rust-lang/time', rows_stable, rows_unstable )
+add('\n### Date and time\n', rows_stable, rows_unstable)
+entry('* ', 'lifthrasiir/rust-chrono', rows_stable, rows_unstable)
+entry('* ', 'rust-lang/time', rows_stable, rows_unstable)
-add( '\n### Encoding\n', rows_stable, rows_unstable )
-entry( '* ', 'TyOverby/bincode', rows_stable, rows_unstable )
-add( '* Bencode', rows_stable, rows_unstable )
-entry( ' * ', 'arjantop/rust-bencode', rows_stable, rows_unstable )
-add( '* Cap\'n Proto', rows_stable, rows_unstable )
-entry( ' * ', 'dwrensha/capnproto-rust', rows_stable, rows_unstable )
-add( '* Character Encoding', rows_stable, rows_unstable )
-entry( ' * ', 'lifthrasiir/rust-encoding', rows_stable, rows_unstable )
-add( '* CSV', rows_stable, rows_unstable )
-entry( ' * ', 'BurntSushi/rust-csv', rows_stable, rows_unstable )
-entry( ' * ', 'Geal/rust-csv', rows_stable, rows_unstable )
-add( '* HTML', rows_stable, rows_unstable )
-entry( ' * ', 'servo/html5ever', rows_stable, rows_unstable )
-add( '* MsgPck', rows_stable, rows_unstable )
-entry( ' * ', 'mneumann/rust-msgpack', rows_stable, rows_unstable )
-add( '* ProtocolBuffers', rows_stable, rows_unstable )
-entry( ' * ', 'stepancheg/rust-protobuf', rows_stable, rows_unstable )
-add( '* TOML', rows_stable, rows_unstable )
-entry( ' * ', 'alexcrichton/toml-rs', rows_stable, rows_unstable )
-add( '* Tnetstring', rows_stable, rows_unstable )
-entry( ' * ', 'erickt/rust-tnetstring', rows_stable, rows_unstable )
-add( '* XML', rows_stable, rows_unstable )
-entry( ' * ', 'Florob/RustyXML', rows_stable, rows_unstable )
-entry( ' * ', 'netvl/xml-rs', rows_stable, rows_unstable )
-entry( ' * ', 'Ygg01/xml-air', rows_stable, rows_unstable )
-add( '* YAML', rows_stable, rows_unstable )
-entry( ' * ', 'kimhyunkang/libyaml-rust', rows_stable, rows_unstable )
+add('\n### Encoding\n', rows_stable, rows_unstable)
+entry('* ', 'TyOverby/bincode', rows_stable, rows_unstable)
+add('* Bencode', rows_stable, rows_unstable)
+entry(' * ', 'arjantop/rust-bencode', rows_stable, rows_unstable)
+add('* Cap\'n Proto', rows_stable, rows_unstable)
+entry(' * ', 'dwrensha/capnproto-rust', rows_stable, rows_unstable)
+add('* Character Encoding', rows_stable, rows_unstable)
+entry(' * ', 'lifthrasiir/rust-encoding', rows_stable, rows_unstable)
+add('* CSV', rows_stable, rows_unstable)
+entry(' * ', 'BurntSushi/rust-csv', rows_stable, rows_unstable)
+entry(' * ', 'Geal/rust-csv', rows_stable, rows_unstable)
+add('* HTML', rows_stable, rows_unstable)
+entry(' * ', 'servo/html5ever', rows_stable, rows_unstable)
+add('* MsgPck', rows_stable, rows_unstable)
+entry(' * ', 'mneumann/rust-msgpack', rows_stable, rows_unstable)
+add('* ProtocolBuffers', rows_stable, rows_unstable)
+entry(' * ', 'stepancheg/rust-protobuf', rows_stable, rows_unstable)
+add('* TOML', rows_stable, rows_unstable)
+entry(' * ', 'alexcrichton/toml-rs', rows_stable, rows_unstable)
+add('* Tnetstring', rows_stable, rows_unstable)
+entry(' * ', 'erickt/rust-tnetstring', rows_stable, rows_unstable)
+add('* XML', rows_stable, rows_unstable)
+entry(' * ', 'Florob/RustyXML', rows_stable, rows_unstable)
+entry(' * ', 'netvl/xml-rs', rows_stable, rows_unstable)
+entry(' * ', 'Ygg01/xml-air', rows_stable, rows_unstable)
+add('* YAML', rows_stable, rows_unstable)
+entry(' * ', 'kimhyunkang/libyaml-rust', rows_stable, rows_unstable)
-add( '\n### Game development\n', rows_stable, rows_unstable )
-entry( '* ', 'bbodi/rust-voxlap', rows_stable, rows_unstable )
-entry( '* ', 'bjz/bullet-rs', rows_stable, rows_unstable )
-entry( '* ', 'JeremyLetang/rustenstein3D', rows_stable, rows_unstable )
-entry( '* ', 'PistonDevelopers/piston', rows_stable, rows_unstable )
-entry( '* ', 'sebcrozet/kiss3d', rows_stable, rows_unstable )
-entry( '* ', 'sebcrozet/ncollide', rows_stable, rows_unstable )
-entry( '* ', 'sebcrozet/nphysics', rows_stable, rows_unstable )
-entry( '* ', 'SiegeLord/RustAllegro', rows_stable, rows_unstable )
+add('\n### Game development\n', rows_stable, rows_unstable)
+entry('* ', 'bbodi/rust-voxlap', rows_stable, rows_unstable)
+entry('* ', 'bjz/bullet-rs', rows_stable, rows_unstable)
+entry('* ', 'JeremyLetang/rustenstein3D', rows_stable, rows_unstable)
+entry('* ', 'PistonDevelopers/piston', rows_stable, rows_unstable)
+entry('* ', 'sebcrozet/kiss3d', rows_stable, rows_unstable)
+entry('* ', 'sebcrozet/ncollide', rows_stable, rows_unstable)
+entry('* ', 'sebcrozet/nphysics', rows_stable, rows_unstable)
+entry('* ', 'SiegeLord/RustAllegro', rows_stable, rows_unstable)
-add( '\n### GUI\n', rows_stable, rows_unstable )
-add( '* Cocoa', rows_stable, rows_unstable )
-entry( ' * ', 'mozilla-servo/rust-cocoa', rows_stable, rows_unstable )
-add( '* Gtk+', rows_stable, rows_unstable )
-entry( ' * ', 'JeremyLetang/rgtk', rows_stable, rows_unstable )
-add( '* ncurses', rows_stable, rows_unstable )
-entry( ' * ', 'jeaye/ncurses-rs', rows_stable, rows_unstable )
-add( '* OpenGL', rows_stable, rows_unstable )
-entry( ' * ', 'bjz/gl-rs', rows_stable, rows_unstable )
-entry( ' * ', 'bjz/glfw-rs', rows_stable, rows_unstable )
-entry( ' * ', 'servo/rust-glut', rows_stable, rows_unstable )
-entry( ' * ', 'servo/rust-opengles', rows_stable, rows_unstable )
-entry( ' * ', 'tomaka/glutin', rows_stable, rows_unstable )
-add( '* Qt', rows_stable, rows_unstable )
-entry( ' * ', 'cyndis/qmlrs', rows_stable, rows_unstable )
-add( '* SDL', rows_stable, rows_unstable )
-entry( ' * ', 'AngryLawyer/rust-sdl2', rows_stable, rows_unstable )
-entry( ' * ', 'brson/rust-sdl', rows_stable, rows_unstable )
-add( '* SFML', rows_stable, rows_unstable )
-entry( ' * ', 'jeremyletang/rust-sfml', rows_stable, rows_unstable )
-add( '* Termbox', rows_stable, rows_unstable )
-entry( ' * ', 'gchp/rustbox', rows_stable, rows_unstable )
-add( '* wxWidgets', rows_stable, rows_unstable )
-entry( ' * ', 'kenz-gelsoft/wxRust', rows_stable, rows_unstable )
+add('\n### GUI\n', rows_stable, rows_unstable)
+add('* Cocoa', rows_stable, rows_unstable)
+entry(' * ', 'mozilla-servo/rust-cocoa', rows_stable, rows_unstable)
+add('* Gtk+', rows_stable, rows_unstable)
+entry(' * ', 'JeremyLetang/rgtk', rows_stable, rows_unstable)
+add('* ncurses', rows_stable, rows_unstable)
+entry(' * ', 'jeaye/ncurses-rs', rows_stable, rows_unstable)
+add('* OpenGL', rows_stable, rows_unstable)
+entry(' * ', 'bjz/gl-rs', rows_stable, rows_unstable)
+entry(' * ', 'bjz/glfw-rs', rows_stable, rows_unstable)
+entry(' * ', 'servo/rust-glut', rows_stable, rows_unstable)
+entry(' * ', 'servo/rust-opengles', rows_stable, rows_unstable)
+entry(' * ', 'tomaka/glutin', rows_stable, rows_unstable)
+add('* Qt', rows_stable, rows_unstable)
+entry(' * ', 'cyndis/qmlrs', rows_stable, rows_unstable)
+add('* SDL', rows_stable, rows_unstable)
+entry(' * ', 'AngryLawyer/rust-sdl2', rows_stable, rows_unstable)
+entry(' * ', 'brson/rust-sdl', rows_stable, rows_unstable)
+add('* SFML', rows_stable, rows_unstable)
+entry(' * ', 'jeremyletang/rust-sfml', rows_stable, rows_unstable)
+add('* Termbox', rows_stable, rows_unstable)
+entry(' * ', 'gchp/rustbox', rows_stable, rows_unstable)
+add('* wxWidgets', rows_stable, rows_unstable)
+entry(' * ', 'kenz-gelsoft/wxRust', rows_stable, rows_unstable)
-add( '\n### Image processing\n', rows_stable, rows_unstable )
-entry( '* ', 'PistonDevelopers/image', rows_stable, rows_unstable )
+add('\n### Image processing\n', rows_stable, rows_unstable)
+entry('* ', 'PistonDevelopers/image', rows_stable, rows_unstable)
-add( '\n### Mobile\n', rows_stable, rows_unstable )
-entry( '* ', 'tomaka/android-rs-glue', rows_stable, rows_unstable )
-entry( '* ', 'vhbit/ObjCrust', rows_stable, rows_unstable )
+add('\n### Mobile\n', rows_stable, rows_unstable)
+entry('* ', 'tomaka/android-rs-glue', rows_stable, rows_unstable)
+entry('* ', 'vhbit/ObjCrust', rows_stable, rows_unstable)
-add( '\n### Network programming\n', rows_stable, rows_unstable )
-add( '* Low level', rows_stable, rows_unstable )
-entry( ' * ', 'libpnet/libpnet', rows_stable, rows_unstable )
-add( '* NanoMsg', rows_stable, rows_unstable )
-entry( ' * ', 'thehydroimpulse/nanomsg.rs', rows_stable, rows_unstable )
-add( '* SSH', rows_stable, rows_unstable )
-entry( ' * ', 'alexcrichton/ssh2-rs', rows_stable, rows_unstable )
-add( '* Stomp', rows_stable, rows_unstable )
-entry( ' * ', 'zslayton/stomp-rs', rows_stable, rows_unstable )
-add( '* ZeroMQ', rows_stable, rows_unstable )
-entry( ' * ', 'erickt/rust-zmq', rows_stable, rows_unstable )
+add('\n### Network programming\n', rows_stable, rows_unstable)
+add('* Low level', rows_stable, rows_unstable)
+entry(' * ', 'libpnet/libpnet', rows_stable, rows_unstable)
+add('* Beanstalkd', rows_stable, rows_unstable)
+entry(' * ', 'schickling/rust-beanstalkd', rows_stable, rows_unstable)
+add('* NanoMsg', rows_stable, rows_unstable)
+entry(' * ', 'thehydroimpulse/nanomsg.rs', rows_stable, rows_unstable)
+add('* SSH', rows_stable, rows_unstable)
+entry(' * ', 'alexcrichton/ssh2-rs', rows_stable, rows_unstable)
+add('* Stomp', rows_stable, rows_unstable)
+entry(' * ', 'zslayton/stomp-rs', rows_stable, rows_unstable)
+add('* ZeroMQ', rows_stable, rows_unstable)
+entry(' * ', 'erickt/rust-zmq', rows_stable, rows_unstable)
-add( '\n### Platform specific\n', rows_stable, rows_unstable )
-add( '* Linux', rows_stable, rows_unstable )
-entry( ' * ', 'carllerche/nix-rust', rows_stable, rows_unstable )
+add('\n### Platform specific\n', rows_stable, rows_unstable)
+add('* Linux', rows_stable, rows_unstable)
+entry(' * ', 'carllerche/nix-rust', rows_stable, rows_unstable)
-add( '\n### Template engine\n', rows_stable, rows_unstable )
-add( '* Mustache', rows_stable, rows_unstable )
-entry( ' * ', 'erickt/rust-mustache', rows_stable, rows_unstable )
-entry( ' * ', 'rustache/rustache', rows_stable, rows_unstable )
+add('\n### Template engine\n', rows_stable, rows_unstable)
+add('* Mustache', rows_stable, rows_unstable)
+entry(' * ', 'erickt/rust-mustache', rows_stable, rows_unstable)
+entry(' * ', 'rustache/rustache', rows_stable, rows_unstable)
-add( '\n### Testing\n', rows_stable, rows_unstable )
-entry( '* ', 'BurntSushi/quickcheck', rows_stable, rows_unstable )
-entry( '* ', 'farcaller/shiny', rows_stable, rows_unstable )
+add('\n### Testing\n', rows_stable, rows_unstable)
+entry('* ', 'BurntSushi/quickcheck', rows_stable, rows_unstable)
+entry('* ', 'farcaller/shiny', rows_stable, rows_unstable)
-add( '\n### Web programming\n', rows_stable, rows_unstable )
-add( 'See also ' + md_link('http://arewewebyet.com/', 'http://arewewebyet.com/') + '\n', rows_stable, rows_unstable )
-add( '* Core', rows_stable, rows_unstable )
-entry( ' * ', 'chris-morgan/rust-http', rows_stable, rows_unstable )
-entry( ' * ', 'hyperium/hyper', rows_stable, rows_unstable )
-entry( ' * ', 'Teepee', rows_stable, rows_unstable )
-add( '* Client', rows_stable, rows_unstable )
-entry( ' * ', 'carllerche/curl-rust', rows_stable, rows_unstable )
-entry( ' * ', 'vhbit/curl-rs', rows_stable, rows_unstable )
-add( '* Server', rows_stable, rows_unstable )
-entry( ' * ', 'erickt/rust-mongrel2', rows_stable, rows_unstable )
-entry( ' * ', 'Iron', rows_stable, rows_unstable )
-entry( ' * ', 'Nickel', rows_stable, rows_unstable )
-entry( ' * ', 'Ogeon/rustful', rows_stable, rows_unstable )
-entry( ' * ', 'Rustless', rows_stable, rows_unstable )
+add('\n### Web programming\n', rows_stable, rows_unstable)
+add('See also ' + md_link('http://arewewebyet.com/', 'http://arewewebyet.com/') + '\n', rows_stable, rows_unstable)
+add('* Core', rows_stable, rows_unstable)
+entry(' * ', 'chris-morgan/rust-http', rows_stable, rows_unstable)
+entry(' * ', 'hyperium/hyper', rows_stable, rows_unstable)
+entry(' * ', 'Teepee', rows_stable, rows_unstable)
+add('* Client', rows_stable, rows_unstable)
+entry(' * ', 'carllerche/curl-rust', rows_stable, rows_unstable)
+entry(' * ', 'vhbit/curl-rs', rows_stable, rows_unstable)
+add('* Server', rows_stable, rows_unstable)
+entry(' * ', 'erickt/rust-mongrel2', rows_stable, rows_unstable)
+entry(' * ', 'Iron', rows_stable, rows_unstable)
+entry(' * ', 'Nickel', rows_stable, rows_unstable)
+entry(' * ', 'Ogeon/rustful', rows_stable, rows_unstable)
+entry(' * ', 'Rustless', rows_stable, rows_unstable)
-add( '\n## Resources\n', rows_stable, rows_unstable )
-entry( '* ', 'Rust by Example', rows_stable, rows_unstable )
-entry( '* ', 'Rust CI', rows_stable, rows_unstable )
-entry( '* ', 'Rust Guidelines', rows_stable, rows_unstable )
+add('\n## Resources\n', rows_stable, rows_unstable)
+entry('* ', 'Rust by Example', rows_stable, rows_unstable)
+entry('* ', 'Rust CI', rows_stable, rows_unstable)
+entry('* ', 'Rust Guidelines', rows_stable, rows_unstable)
markdown_stable = '\n'.join(rows_stable)
-markdown_unstable = '\n'.join(rows_unstable )
+markdown_unstable = '\n'.join(rows_unstable)
-with open( 'README.md', 'wb' ) as f:
- f.write( markdown_stable )
-with open( 'UNSTABLE.md', 'wb' ) as f:
- f.write( markdown_unstable )
+with open('README.md', 'wb') as f:
+ f.write(markdown_stable)
+with open('UNSTABLE.md', 'wb') as f:
+ f.write(markdown_unstable)