diff --git a/404.html b/404.html new file mode 100644 index 00000000..f8414f0e --- /dev/null +++ b/404.html @@ -0,0 +1,3 @@ + +404 Not Found +

404 Not Found

diff --git a/about/comments-shown.png b/about/comments-shown.png new file mode 100644 index 00000000..2240779d Binary files /dev/null and b/about/comments-shown.png differ diff --git a/about/comments.png b/about/comments.png new file mode 100644 index 00000000..0920b63f Binary files /dev/null and b/about/comments.png differ diff --git a/about/index.html b/about/index.html new file mode 100644 index 00000000..7aaa4138 --- /dev/null +++ b/about/index.html @@ -0,0 +1,137 @@ + + + + + + + + + + About AWWY » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+ +

About AWWY

+ +

About

+

Are We Web Yet – or AWWY (pronounced a-we?) for short – tries to answer the question: Can I use Rust to do web development (yet)?

+

How to use the site

+

This website has various features that make your life easier researching whether you can use Rust for the web development already or not. While some stuff is possible already, other parts are still challenging and this website wants to give you insight for your particular case. The easiest is to start looking into the topics most relevant for you.

+

While most things should be rather quick to comprehend, there are some features, we'd like to explain to you a little deeper to improve the speed with which you can answer the question for you.

+

The Package Info

+

Package Info

+

For each package we list the most important information in one quick view. Aside from the package id (hyper), the header shows various links – if available: the crate.io-page, the homepage, the documentation and to the source code. Tip: When you hover over name, it also shows when the package was created and last updated.

+

In the second row features the latest published version number, how often the package has been downloaded so far and how it is licensed – all as pretty badges of live data pulled from shields.io.

+

Under that you can find the short description provided for that package.

+

Understanding the level indicator

+

Throughout the app – mostly on section titles – you find the small level indicators: a colored glyph, which should give you a hint on the maturity of the subject overall as designated by the curators. The following indicators are available:

+ +

If you need a reminder, you can also just hover over the glyph to get the text.

+

Credits

+

This project is hosted and largely developed by The Bashy, specifically Benjamin Kampmann. The content is curated by the curators. The first version was developed and hosted by Chris Morgan. All content is licensed under the Creative Commons Attribution License (International).

+ + +
+ + +
+ + + + + diff --git a/about/package-info.png b/about/package-info.png new file mode 100644 index 00000000..85c59906 Binary files /dev/null and b/about/package-info.png differ diff --git a/bashy-big.svg b/bashy-big.svg new file mode 100644 index 00000000..f2103f35 --- /dev/null +++ b/bashy-big.svg @@ -0,0 +1,858 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/curators/index.html b/curators/index.html new file mode 100644 index 00000000..ac922722 --- /dev/null +++ b/curators/index.html @@ -0,0 +1,165 @@ + + + + + + + + + + Curators » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Curators

+ +

Are We Web Yet (AWWY) is curated by:

+ + + + + + + + + +
+ + + + + + + Takayuki Nakata + + + + + + + +
+ + + + + +
+ + + + + + + Ibraheem Ahmed + + + + + + + +
+ + + + + + + + + + + + + +
+

You want to become a curator?

+

You want to help us curate this website? Well, that is just awesome. Please follow this guide to join! +

+
+
+ +
+ + + + + diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 00000000..b8ad2376 Binary files /dev/null and b/favicon.ico differ diff --git a/fonts/FiraSans-Light.woff b/fonts/FiraSans-Light.woff new file mode 100644 index 00000000..af97f502 Binary files /dev/null and b/fonts/FiraSans-Light.woff differ diff --git a/fonts/FiraSans-Medium.woff b/fonts/FiraSans-Medium.woff new file mode 100644 index 00000000..61a59e01 Binary files /dev/null and b/fonts/FiraSans-Medium.woff differ diff --git a/fonts/FiraSans-Regular.woff b/fonts/FiraSans-Regular.woff new file mode 100644 index 00000000..16e74f2b Binary files /dev/null and b/fonts/FiraSans-Regular.woff differ diff --git a/fonts/LICENSE b/fonts/LICENSE new file mode 100644 index 00000000..1086bb14 --- /dev/null +++ b/fonts/LICENSE @@ -0,0 +1,99 @@ +Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ +with Reserved Font Name Fira Sans. + +Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ +with Reserved Font Name Fira Mono. + +Copyright (c) 2014, Telefonica S.A. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/gh-fork-ribbon.css b/gh-fork-ribbon.css new file mode 100644 index 00000000..5806121f --- /dev/null +++ b/gh-fork-ribbon.css @@ -0,0 +1,140 @@ +/*! + * "Fork me on GitHub" CSS ribbon v0.1.1 | MIT License + * https://github.com/simonwhitaker/github-fork-ribbon-css +*/ + +/* Left will inherit from right (so we don't need to duplicate code) */ +.github-fork-ribbon { + /* The right and left classes determine the side we attach our banner to */ + position: absolute; + + /* Add a bit of padding to give some substance outside the "stitching" */ + padding: 2px 0; + + /* Set the base colour */ + background-color: #a00; + + /* Set a gradient: transparent black at the top to almost-transparent black at the bottom */ + background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0.15))); + background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)); + background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)); + background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)); + background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)); + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)); + + /* Add a drop shadow */ + -webkit-box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.5); + box-shadow: 0 2px 3px 0 rgba(0, 0, 0, 0.5); + + /* Set the font */ + font: 700 13px "Helvetica Neue", Helvetica, Arial, sans-serif; + + z-index: 9999; + pointer-events: auto; +} + +.github-fork-ribbon a, +.github-fork-ribbon a:hover { + /* Set the text properties */ + color: #fff; + text-decoration: none; + text-shadow: 0 -1px rgba(0, 0, 0, 0.5); + text-align: center; + + /* Set the geometry. If you fiddle with these you'll also need + to tweak the top and right values in .github-fork-ribbon. */ + width: 200px; + line-height: 20px; + + /* Set the layout properties */ + display: inline-block; + padding: 2px 0; + + /* Add "stitching" effect */ + border-width: 1px 0; + border-style: dotted; + border-color: #fff; + border-color: rgba(255, 255, 255, 0.7); +} + +.github-fork-ribbon-wrapper { + width: 150px; + height: 150px; + position: absolute; + overflow: hidden; + top: 0; + z-index: 9999; + pointer-events: none; +} + +.github-fork-ribbon-wrapper.fixed { + position: fixed; +} + +.github-fork-ribbon-wrapper.left { + left: 0; +} + +.github-fork-ribbon-wrapper.right { + right: 0; +} + +.github-fork-ribbon-wrapper.left-bottom { + position: fixed; + top: inherit; + bottom: 0; + left: 0; +} + +.github-fork-ribbon-wrapper.right-bottom { + position: fixed; + top: inherit; + bottom: 0; + right: 0; +} + +.github-fork-ribbon-wrapper.right .github-fork-ribbon { + top: 42px; + right: -43px; + + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} + +.github-fork-ribbon-wrapper.left .github-fork-ribbon { + top: 42px; + left: -43px; + + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); +} + + +.github-fork-ribbon-wrapper.left-bottom .github-fork-ribbon { + top: 80px; + left: -43px; + + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} + +.github-fork-ribbon-wrapper.right-bottom .github-fork-ribbon { + top: 80px; + right: -43px; + + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); +} diff --git a/index.html b/index.html new file mode 100644 index 00000000..e4b10b7e --- /dev/null +++ b/index.html @@ -0,0 +1,422 @@ + + + + + + + + + + Are we web yet? Yes, and it's freaking fast! + + + + + + + + + + + + + + + + + +
+ + + +
+ +
+ +
+

Are we web yet?

+ +

Yes! And it's freaking fast!

+ +

+ Rust has mature and production ready frameworks in Actix Web and + Axum, and innovative ones like Warp + and Tide. These provide everything you’d expect from a web framework, from routing + and middleware, to templating, and JSON/form handling. There are crates for everything, and more! For databases, there’s:

+ + + + + There are many integrations to third-party services + + + +, such as: + + + + + + + + +

And of course, there is plenty of support for basic web needs, like logging + + + + +, authorization + + + +, templating + + + +, and email + + + + +.

+ + +

Can I replace my Rails/Django/Laravel app already?

+ +

+ Rust does not have a dominant framework at the level of Django or Rails. Most Rust frameworks are smaller and modular, similar to Flask or Sinatra. + Rust does have a diverse package ecosystem, but you generally have to wire everything up yourself. Expect to put in a little bit of extra set up work + to get started. If you are expecting everything bundled up for you, then Rust might not be for you just yet. +

+ + + +

WebAssembly???

+ +

Rust can run on the browser by compiling to WebAssembly + + + + +. This means that you can take advantage of the amazing Rust ecosystem on the browser! Rust and + WebAssembly integrate with existing Javascript tooling like NPM, Webpack, and ECMAScript modules! There are + some awesome Rust and WebAssembly projects out there. For example, Yew and Seed let you create + front-end web apps with Rust in a way that feels almost like React.js.

+ +

For more information about Rust and WebAssembly, check out the Rust and WebAssembly Book.

+ +

Getting started

+ +

After you’ve set up your Rust and worked yourself through “The Book”, + you might want to check any of these resources:

+ + + +

There are also some real world examples that can be looked at for reference:

+ + + +

If you find yourself stuck and looking for help, you can check out the official Rust forum, the Rust tag on Stackoverflow, or the Rust Discord server where you are welcome to post your questions and + will find excellent help.

+ +

In detail

+ +

Learn more about the state of web development in Rust by topic:

+ + + + +
+ + +
+ + + + + diff --git a/news/7-high-priority-rust-libraries-that-need-to-be-written/index.html b/news/7-high-priority-rust-libraries-that-need-to-be-written/index.html new file mode 100644 index 00000000..04c67ea6 --- /dev/null +++ b/news/7-high-priority-rust-libraries-that-need-to-be-written/index.html @@ -0,0 +1,187 @@ + + + + + + + + + + 7 high priority Rust libraries that need to be written » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

7 high priority Rust libraries that need to be written

+ +
+ Published 2014-06-04 + under
    + +
  • + database +
  • + +
  • + i18n +
  • + +
  • + crypto +
  • + +
+ +
+ + + +
+ + + Posted + + on rust-dev Mailinglist + + + + by Brian Anderson + : + +

Greetings, all.

+

Looking for ways to have an impact on Rust? The current plan for Rust +defers the creation of some key libraries until after Rust 1.0, but that +doesn't mean we can't start on them now if the interest is out there. +Here are 7 libraries that need to be created soon rather than later. +Since these are all destined to be either incorporated directly into the +Rust distribution or to be officially-maintained cargo packages, and +since they are targeted for inclusion in the post-1.0 timeframe, they +need to be designed carefully and implemented thoroughly.

+

Internationalization

+

ECMA 402 is a standard for internationalization, dealing with the +automatic conversion of various information based on locale. Rust's core +libraries provide no internationalization. A core problem here will be +determining how Rust should think about locales.

+

Localization

+

This may depend on the previous for locale support, if nothing else. +This is largely about the human-assisted translation of strings. We +would like to experiment with a new Moco-developed standard for this, +called L20N. This project will be about figuring out how the L20N API +can be adapted to Rust.

+

Unicode (ICU)

+

The exact path forward here may require a bit of discussion still, but I +think the most viable approach starts with binding libicu and wrapping +in a Rust API.

+

Date/Time

+

Our time crate is very minimal, and the API looks dated. This is a hard +problem and JodaTime seems to be well regarded so let's just copy it.

+

HTTP

+

ChrisMorgan is leading an effort to implement HTTP for Rust and I'm sure +he would love more contributions.

+

Crypto

+

We've previously made the decision not to distribute any crypto with +Rust at all, but this is probably not tenable since crypto is used +everywhere. My current opinion is that we should not distribute any +crypto /written in Rust/, but that distributing bindings to proven +crypto is fine.

+

Figure out a strategy here, build consensus, then start implementing a +robust crypto library out of tree, with the goal of merging into the +main distribution someday, and possibly - far in the future - +reimplementing in Rust. There are some existing efforts along these +lines that should be evaluated for this purpose.

+

There are a lot of people interested in, and working on, this subject, +and crypto potentially interacts with many libraries (like HTTP) so +coordination is needed.

+

SQL

+

Generic SQL bindings. I'm told SqlAlchemy core is a good system to learn +from.

+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/announcing-diesel-a-safe-extensible-orm-and-query-builder-for-rust/index.html b/news/announcing-diesel-a-safe-extensible-orm-and-query-builder-for-rust/index.html new file mode 100644 index 00000000..f8a0c3f8 --- /dev/null +++ b/news/announcing-diesel-a-safe-extensible-orm-and-query-builder-for-rust/index.html @@ -0,0 +1,143 @@ + + + + + + + + + + Announcing Diesel — A Safe, Extensible ORM and Query Builder for Rust » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Announcing Diesel — A Safe, Extensible ORM and Query Builder for Rust

+ +
+ Published 2015-11-29 + under
    + +
  • + database +
  • + +
  • + orms +
  • + +
  • + diesel +
  • + +
+ +
+ + + +
+ + + Posted + + on Rust Users Forum + + + + by Sean Griffin (sgrif) + : + +

(official release announcement here)

+

Hey folks,

+

Today I'm releasing version 0.1 of Diesel, a new ORM and Query Builder for Rust that I've been working on for the last few months. This isn't a port of Active Record or Hibernate, but is my take on what an ORM that "feels like Rust" looks like. I've been the maintainer of Active Record, which is the ORM for Ruby on Rails for some time, and I've taken a lot of the lessons from that experience and applied them here. Check out the getting started guide, and feel free to ping me here or open an issue if you have any problems or questions. It is by no means feature complete, and there's still gaps in the API to fill, but I've really been enjoying using the core of this thing, and I'm excited to share it with you.

+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/announcing-gotham/index.html b/news/announcing-gotham/index.html new file mode 100644 index 00000000..4347ee96 --- /dev/null +++ b/news/announcing-gotham/index.html @@ -0,0 +1,168 @@ + + + + + + + + + + Announcing Gotham » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Announcing Gotham

+ +
+ Published 2017-08-11 + under
    + +
  • + framework +
  • + +
  • + announcement +
  • + +
+ +
+ + + +
+ + + Posted + + on Rust Users Forum + + + + by Bradley Beddoes (bradleybeddoes) + : + +

For the last eight months, we've been hard at work on a project that we're thrilled to be able to share with the wider Rust community.

+

We know it as Gotham and today we're releasing 0.1.

+

Gotham is a flexible web framework that does not sacrifice safety, security or speed. The Gotham core team loves many of the elegant concepts that are found in dynamically typed web application frameworks, such as Rails/Phoenix/Django and aspire to achieve them with the type and memory safety guarantees provided by Rust.

+

Gotham is stability focused. With our release of Gotham 0.1, we're compatible with Rust stable and every future release of Gotham will maintain that contract. Naturally, we build on beta and nightly as well so if you're on the bleeding edge Gotham is good to go.

+

Gotham leverages async extensively thanks to the Tokio project and is further enhanced by being built directly on top of async Hyper. Completing web requests in µs with almost non-existent memory footprints is still taking some getting used to.

+

We wanted to get Gotham in the hands of the Rust community early with regular smaller iterations to follow. The Gotham 0.1 release includes the following features:

+
    +
  • Handlers and Controllers
  • +
  • Advanced Routing
  • +
  • Type Safe Extractors
  • +
  • Middleware and Pipelines
  • +
  • Request State
  • +
  • Sessions
  • +
  • Request and Response helpers
  • +
  • Test helpers
  • +
  • Thoroughly documented code and the beginnings of a Gotham book
  • +
+

There are some important features still to be built and we hope that the community will help us define even more. Right now our roadmap includes:

+
    +
  • Enhancing our Router API with builders/macros to make this much more comfortable for folks used to defining routes in Rails or Phoenix
  • +
  • Compiled Templates
  • +
  • Form extraction
  • +
  • First class Diesel integration
  • +
  • Async static file serving
  • +
  • i18n
  • +
  • Hot reload during development
  • +
  • Structured logging
  • +
+

You can find out more about Gotham at https://gotham.rs. We look forward to welcoming you into the Gotham community.

+

Finally, we'd like to say a very sincere thank you to the developers and communities of every dependency we've built Gotham on top of, including of course, Rust itself. Your work is amazing and we could not have gotten here without it. We look forward to working with you all in the future.

+

@bradleybeddoes and +@smangelsdorf

+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/basic-http-server-a-simple-http-file-server-built-on-rotor/index.html b/news/basic-http-server-a-simple-http-file-server-built-on-rotor/index.html new file mode 100644 index 00000000..1739c367 --- /dev/null +++ b/news/basic-http-server-a-simple-http-file-server-built-on-rotor/index.html @@ -0,0 +1,150 @@ + + + + + + + + + + Basic-http-server, a simple HTTP file server built on Rotor » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Basic-http-server, a simple HTTP file server built on Rotor

+ +
+ Published 2016-01-18 + under
    + +
  • + stack +
  • + +
  • + static-sver +
  • + +
+ +
+ + + +
+ + + Posted + + on Rust Users Forum + + + + by Brian Anderson (brson) + : + +

While working on the docs I wanted to be able to serve them quickly, but didn't have a Rust-based tool for it, so I wrote basic-http-server as an excuse to play with rotor. It serves static files out of the current directory over HTTP.

+

Here is it's --help output.

+

USAGE:
+   basic-http-server [FLAGS] [OPTIONS] [ARGS]
+

FLAGS: +-h, --help Prints help information +-V, --version Prints version information

+

OPTIONS: +-a, --addr <ADDR> Sets the IP:PORT combination (default "127.0.0.1:4000")

+

ARGS: +ROOT Sets the root dir (default ".")

+

The source is simple and thoroughly commented.

+

I've had difficulty measuring how fast it is. When I measure with wrk the results seem good, but with ab all requests timeout. I suspect that's a bug in rotor-http, but don't know.

+

cc @tailhook

+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/dbmigrate-a-sql-migration-tool/index.html b/news/dbmigrate-a-sql-migration-tool/index.html new file mode 100644 index 00000000..3ef8db1e --- /dev/null +++ b/news/dbmigrate-a-sql-migration-tool/index.html @@ -0,0 +1,147 @@ + + + + + + + + + + Dbmigrate, a SQL migration tool » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Dbmigrate, a SQL migration tool

+ +
+ Published 2016-01-11 + under
    + +
  • + database +
  • + +
  • + tooling +
  • + +
  • + dbmigrate +
  • + +
+ +
+ + + +
+ + + Posted + + on Rust Users Forum + + + + by Keats + : + +

dbmigrate

+

https://github.com/Keats/dbmigrate

+

I mentioned it before on reddit but since I just released a new version working with MySQL as well, might be worth putting it here.

+

This is a tool heavily inspired by a Go tool I've used: migrate and django migrations.

+

In short, a migration involves 2 sql files, a up and a down which are plain SQL and are executed depending on what you want do (running dbmigrate up will run all the up migrations not done yet in order for example).

+

This currently supports PostgreSQL and MySQL, adding a driver is not too hard so let me know if there's another database that could use it.

+

Also looking for feedback on needed commands I don't have implemented yet and general code review.

+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/handlebars-templating-libraries-now-works-with/index.html b/news/handlebars-templating-libraries-now-works-with/index.html new file mode 100644 index 00000000..09193b36 --- /dev/null +++ b/news/handlebars-templating-libraries-now-works-with/index.html @@ -0,0 +1,156 @@ + + + + + + + + + + Handlebars templating libraries now works with Serde data » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Handlebars templating libraries now works with Serde data

+ +
+ Published 2016-02-01 + under
    + +
  • + templates +
  • + +
  • + serde +
  • + +
  • + handlebars +
  • + +
  • + serializer +
  • + +
  • + json +
  • + +
+ +
+ + + +
+ + + Posted + + on Rust Users Forum + + + + by sunng + : + +

Just a quick update on my handlebars libraries: You can now use serde for template data.

+

This is implemented via a feature called serde_type. Internally we use serde_json::value::Value as data type which is pretty similar to the Json enum in rustc_serialize. Anything implements serde::ser::Serialize can be rendered. To use serde for handlebars-iron, configure your Cargo.toml like this:

+
 [features]
+  default = ["handlebars-iron/serde_type"]
+
+

The API is fully compatible with default one so you don't have to change any code except the data type.

+

handlebars core: github.com/sunng87/handlebars-rust +handlebar iron middleware: github.com/sunng87/handlebars-iron

+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/herd-a-http-load-testing-application-written-in-rust/index.html b/news/herd-a-http-load-testing-application-written-in-rust/index.html new file mode 100644 index 00000000..73d0896d --- /dev/null +++ b/news/herd-a-http-load-testing-application-written-in-rust/index.html @@ -0,0 +1,138 @@ + + + + + + + + + + Herd - A HTTP load testing application written in Rust » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Herd - A HTTP load testing application written in Rust

+ +
+ Published 2015-06-23 +
+ + + +
+ + + Posted + + on Rust Users Forum + + + + by Jacob Clark (imjacobclark) + : + +

Hi Rust community,

+

I have begun developing a unix HTTP load testing application written in Rust! It's main focus is being easy to use and low on OS level dependencies such as the JVM (because it's written in Rust!).

+

Currently Herd is able to spawn thousands of concurrent requests to HTTP endpoints by making use of unix process forking and multithreadding, however, there are features I want to implement, but I'm looking for contributors to help get the project off the ground!

+

Contributions very welcome in the form of pull requests in github: https://github.com/imjacobclark/Herd

+

Todo

+
    +
  • Linear scenario
  • +
  • Ramp up scenario
  • +
  • Batched scenario
  • +
  • Accept command line flags to begin a test
  • +
  • Ability to create tests via a YAML config file
  • +
  • Export data to influxDB or other data store
  • +
  • Graph metrics
  • +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/hyper-v0-6/index.html b/news/hyper-v0-6/index.html new file mode 100644 index 00000000..0fc08b7e --- /dev/null +++ b/news/hyper-v0-6/index.html @@ -0,0 +1,170 @@ + + + + + + + + + + hyper v.0.6 » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

hyper v.0.6

+ +
+ Published 2015-06-25 + under
    + +
  • + stack +
  • + +
  • + hyper +
  • + +
+ +
+ + + +
+ + + Posted + + on seanmonster.com + + + + by seanmonster + : + +

A bunch of goodies are included in version 0.6 of hyper.

+

Highlights

+
  • Experimental HTTP2 support for the Client! Thanks to tireless work of @mlalic.
  • +
  • Redesigned Ssl support. The Server and Client can accept any implementation of the Ssl trait. By default, hyper comes with an implementation for OpenSSL, but this can now be disabled via the ssl cargo feature.
  • +
  • A thread safe Client. As in, Client is Sync. You can share a Client over multiple threads, and make several requests simultaneously.
  • +
  • Just about 90% test coverage. @winding-lines has been bumping the number ever higher.
  • +

Also, as a reminder, hyper has been following semver more closely, and so, breaking changes mean bumping the minor version (until 1.0). So, to reduce unplanned breakage, you should probably depend on a specific minor version, such as 0.6, and not *.

+
+ + + + + + + + + + + + + + + + + + + + +
+

Author

+ +
+ + + + + Sean McArthur + + + + + +
+ +
+ + + + +
+ +
+ + + + + diff --git a/news/index.html b/news/index.html new file mode 100644 index 00000000..0bfa2395 --- /dev/null +++ b/news/index.html @@ -0,0 +1,216 @@ + + + + + + + + + + Are we web yet? Yes, and it's freaking fast! + + + + + + + + + + + + + + + + + +
+ + +
+ +

Latest News

+ + + + +
+

Are we missing some important news?

+

Did we miss an important announcement or update? Or maybe you want to share some good news about future development + with our audience? Please go ahead! +

+
+ +
+ +
+ + + + + diff --git a/news/introducing-pencil/index.html b/news/introducing-pencil/index.html new file mode 100644 index 00000000..75ff16bf --- /dev/null +++ b/news/introducing-pencil/index.html @@ -0,0 +1,299 @@ + + + + + + + + + + Introducing Pencil: A Microframework Inspired By Flask For Rust » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Introducing Pencil: A Microframework Inspired By Flask For Rust

+ +
+ Published 2016-03-08 +
+ + + +
+ + + Posted + + on Shipeng Feng's blog + + + + by Shipeng Feng (_fengsp) + : + +

A Minimal Application

+
extern crate pencil;
+
+use pencil::{Pencil, Request, Response, PencilResult};
+
+fn hello(_: &mut Request) -> PencilResult {
+    Ok(Response::from("Hello World!"))
+}
+
+fn main() {
+    let mut app = Pencil::new("/web/hello");
+    app.get("/", "hello", hello);
+    app.run("127.0.0.1:5000");
+}
+
+

Routing

+
fn user(r: &mut Request) -> PencilResult {
+    let user_id = r.view_args.get("user_id").unwrap();
+    Ok(format!("user {}", user_id).into())
+}
+
+fn main() {
+    // app here
+    app.get("/user/<user_id:int>", "user", user);
+}
+
+

JSON Handling

+
use std::collections::BTreeMap;
+use pencil::jsonify;
+
+fn app_info(_: &mut Request) -> PencilResult {
+    let mut d = BTreeMap::new();
+    d.insert("name", "hello");
+    d.insert("version", "0.1.0");
+    return jsonify(&d);
+}
+
+fn main() {
+    // app here
+    app.get("/info", "app_info", app_info);
+}
+
+

Error Handling

+
use pencil::HTTPError;
+
+fn page_not_found(_: HTTPError) -> PencilResult {
+    let mut response = Response::from("Customized 404 :)");
+    response.status_code = 404;
+    Ok(response)
+}
+
+fn main() {
+    // app here
+    app.httperrorhandler(404, page_not_found);
+}
+
+

Static Files

+

Just create the static folder under your application root path, it just works. +Now you can visit http://localhost:5000/static/example.png and get your file. +You can customize the static folder and static url path.

+
fn main() {
+    // app here
+    app.enable_static_file_handling();
+}
+
+

Templating

+

Just create the templates folder under your application root path, it just works. +You can customize the template folder.

+
<!DOCTYPE html>
+<html>
+  <body>
+    <h1>
+      Hello {{ name }}!
+    </h1>
+  </body>
+</html>
+
+
fn hello_template(request: &mut Request) -> PencilResult {
+    let mut context = BTreeMap::new();
+    context.insert("name".to_string(), "template".to_string());
+    return request.app.render_template("hello.html", &context);
+}
+
+fn main() {
+    // app here
+    app.register_template("hello.html");
+    app.get("/hello_template", "hello_template", hello_template);
+}
+
+

Logging

+
#[macro_use] extern crate log;
+extern crate env_logger;
+
+fn main() {
+    // app here
+    app.set_debug(true);
+    app.set_log_level();
+    env_logger::init().unwrap();
+    debug!("* Running on http://localhost:5000/");
+    app.run("127.0.0.1:5000");
+}
+
+

Redirects And Errors

+
use pencil::{redirect, abort};
+
+fn github(_: &mut Request) -> PencilResult {
+    return redirect("https://github.com/", 302);
+}
+
+fn login(_: &mut Request) -> PencilResult {
+    return abort(401);
+}
+
+fn main() {
+    // app here
+    app.get("/github", "github", github);
+    app.get("/login", "login", login);
+}
+
+

Request And Response Objects

+

They are really easy to use, check docs for more details.

+
fn search(request: &mut Request) -> PencilResult {
+    let keyword = match request.args().get("q") {
+        Some(q) => q as &str,
+        None => "",
+    };
+    Ok(Response::from(format!("You are searching for {}", keyword)))
+}
+
+fn main() {
+    // app here
+    app.get("/search", "search", search);
+}
+
+

Before/After Request

+
extern crate typemap;
+
+use typemap::Key;
+
+struct KeyType;
+struct Value(i32);
+impl Key for KeyType { type Value = Value; }
+
+fn before_request(request: &mut Request) -> Option<PencilResult> {
+    request.extensions_data.insert::<KeyType>(Value(100));
+    None
+}
+
+fn main() {
+    // app here
+    app.before_request(before_request);
+}
+
+

Modular Applications

+
use pencil::method::Get;
+use pencil::Module;
+
+fn hi_module(_: &mut Request) -> PencilResult {
+    Ok("Hi module.".into())
+}
+
+fn main() {
+    // app here
+    let mut demo_module = Module::new("demo", "/web/hello/demo");
+    demo_module.route("/demo/hi", &[Get], "hi", hi_module);
+    app.register_module(demo_module);
+}
+
+ + +

Have fun!

+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/kafka-client-for-rust/index.html b/news/kafka-client-for-rust/index.html new file mode 100644 index 00000000..d3467266 --- /dev/null +++ b/news/kafka-client-for-rust/index.html @@ -0,0 +1,142 @@ + + + + + + + + + + Kafka Client for Rust » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Kafka Client for Rust

+ +
+ Published 2015-05-11 + under
    + +
  • + services +
  • + +
  • + kafka +
  • + +
+ +
+ + + +
+ + + Posted + + on Rust Users Forum + + + + by Spicavigo + : + +

Hello,

+

I have create Kafka client for Rust. The client supports Metadata, Produce, Fetch, and Offset requests. I plan to add support of Consumers soon.

+

I am using 1.0.0-beta

+

code: https://github.com/spicavigo/kafka-rust
doc: http://fauzism.co/rustdoc/kafka/index.html
crate: kafka

+

I started learning Rust a week ago so any feedback will be useful.

+

--
Yousuf

+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/kinglet-an-asynchronous-http-server/index.html b/news/kinglet-an-asynchronous-http-server/index.html new file mode 100644 index 00000000..fcfdad70 --- /dev/null +++ b/news/kinglet-an-asynchronous-http-server/index.html @@ -0,0 +1,141 @@ + + + + + + + + + + Kinglet – an asynchronous HTTP server » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Kinglet – an asynchronous HTTP server

+ +
+ Published 2015-12-03 + under
    + +
  • + stack +
  • + +
  • + kinglet +
  • + +
  • + async +
  • + +
+ +
+ + + +
+ + + Posted + + on Rust Users Forum + + + + by pyfisch + : + +

Kinglet is the beginning of a HTTP server based on mio. It manages connnections using state machines from rotor by @tailhook. The most interesting part is the request state machine: with only a few lines of code it supports parsing requests with fixed size bodies, chunked bodies with optional trailers and even pipelining. Adding support for more states like 100-Expect-Continue will be easy. Some parts of the code still need cleanup and the structures of requests and responses will change.

+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/pwhash-a-password-hashing-verification-library/index.html b/news/pwhash-a-password-hashing-verification-library/index.html new file mode 100644 index 00000000..485239d0 --- /dev/null +++ b/news/pwhash-a-password-hashing-verification-library/index.html @@ -0,0 +1,139 @@ + + + + + + + + + + Pwhash: a password hashing/verification library » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Pwhash: a password hashing/verification library

+ +
+ Published 2016-02-09 + under
    + +
  • + crypto +
  • + +
  • + passwords +
  • + +
+ +
+ + + +
+ + + Posted + + on Rust Users Forum + + + + by Ivan Nejgebauer (inejge) + : + +

Pwhash is a crate which lets you easily generate a hash from a password using several common algorithms, or check a password against an existing hash. You can get it from crates.io, or browse the source repository.

+

The initial release contains algorithms commonly found on free Unices. It shouldn't be difficult to extend if there's interest.

+

Comments/suggestions/criticism are welcome.

+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/rustful-0-1-0-is-now-available-on-crates-io/index.html b/news/rustful-0-1-0-is-now-available-on-crates-io/index.html new file mode 100644 index 00000000..61bb284b --- /dev/null +++ b/news/rustful-0-1-0-is-now-available-on-crates-io/index.html @@ -0,0 +1,124 @@ + + + + + + + + + + Rustful 0.1.0 is now available on crates.io » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Rustful 0.1.0 is now available on crates.io

+ +
+ Published 2015-05-08 +
+ + + +
+ + + Posted + + on Rust Users Forum + + + + by ogeon + : + +

I'm proud to announce that I have finally brought Rustful, a small web framework, to a state where it deserves a proper version number and a place on crates.io tada. I have also written an introduction to what it's currently all about and a little about its past and what the future holds. Take a look at what it has so far, give it a try and tell me what you think. I would be happy to hear your feedback.

+
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/rustwebdigest-1-getting-started-servo/index.html b/news/rustwebdigest-1-getting-started-servo/index.html new file mode 100644 index 00000000..a9e26ebb --- /dev/null +++ b/news/rustwebdigest-1-getting-started-servo/index.html @@ -0,0 +1,256 @@ + + + + + + + + + + RustWebDigest #1: Getting Started Section, Servo this summer, iron session » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

RustWebDigest #1: Getting Started Section, Servo this summer, iron session

+ +
+ Published 2016-03-14 + under
    + +
  • + frameworks +
  • + +
  • + servo +
  • + +
  • + digest +
  • + +
+ +
+ + + +
+ + + Posted + + + + by ben + : + +

About a month has passed since we relaunched AreWeWebYet and quite a few news and updates made the rounds. To make it easier for you to stay up to date with current developments in Rust-Web, we decided to launch the RustWebDigest – a semi regular blog series from the AWWY curators on the state of affairs and changes since the last update. Welcome to edition #1.

+

Getting started just got easier

+

We've added a new "Getting Started" section to the homepage to highlight great resources to make it easier for you get into rust web development. One especially important news in there was the launch of the clippy service by the Bashy Initiative, a rust linting service which ships with 100% annotated source code for everyone to learn from.

+

Servo in Summer of code

+

Servo was accepted to both Google Summer of Code and Rails Girls Summer of Code. If you are interested to join either program, take a look at the announcement blog post for more info

+

rust-url approaches v1

+

In other news from the servo project, the famous Rust-URL-Crate for URL parsing and handling is approaching version 1.0 and is looking for feedback on their API design and data structures.

+

Crate releases

+

Notable crates

+
    +
  • Iron has published a middleware for session management, appropriately named: iron_session and we've found our first login-module: iron-login
  • +
  • oppgave is a simple redis-based worker queue implementation – finally!
  • +
  • polly offers a truly logic-less templating language implementation in rust
  • +
  • With the latest rust release 1.7 twox-hash jumped a major version and released its version 1.0!
  • +
+

Added to index:

+

The following have been added to our tracking index (and the website where appropriate)

+ +

Updates recorded:

+

Further more we recorded new releases to the following crates

+ +

Anything we missed? Let us know!

+ +
+ +
+ + + + +
+

Author

+ +
+ + + + + Benjamin Kampmann + + + + +

+ Freelance OpenSource Software Architect and Developer. I design, build and supervise the building of software (systems). Sometimes for clients, often times on my own, whenever possible as OpenSource. I care about good design in both, the User Experience and backend architecture and infrastructure. And I write about all this stuff. +

+ + +
+ +
+ + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/rustwebdigest-2-learn-more-with-blogs-and-events/index.html b/news/rustwebdigest-2-learn-more-with-blogs-and-events/index.html new file mode 100644 index 00000000..41b64739 --- /dev/null +++ b/news/rustwebdigest-2-learn-more-with-blogs-and-events/index.html @@ -0,0 +1,296 @@ + + + + + + + + + + RustWebDigest #2: Learn More with Blogs and Events » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

RustWebDigest #2: Learn More with Blogs and Events

+ +
+ Published 2016-05-25 + under
    + +
  • + frameworks +
  • + +
  • + digest +
  • + +
  • + events +
  • + +
+ +
+ + + +
+ + + Posted + + + + by ben + : + +

Great things have happened in the Rust(Web) Ecosphere since the first RustWebDigest was published about two months ago. You've probably figured by now that we are doing this digest on an irregular bases with a summary of news as we see fit. If you want to help us get these out more regularly, we are looking for more people to join the team!

+

Events

+

The announcement period for this years autumn conference season has come and it has blasting us all away with three major events dedicated to Rust. And all of them continue the trend to have another dedicated workshop day alongside their talk days. We hope to see plenty Web-Related Workshops there!

+

It goes without saying that we'd love to have you send in a talk proposal (and workshop proposals!) – especially if you want to talk/teach about the Web!

+

RustConf

+

On September 10th there will be another official RustConf organised by the RustCore Team. It will take place in Portland, Oregon, USA. Further more, they also offer a day of training by the Rust Core Team if you come a day early.

+

Tickets aren't available yet, but the Call for Papers is still open until Jun 5th.

+

RustFest

+

(Disclaimer: The author is part of the organising team!)

+

Following just a week later on Sept 17th RustFest will be the first dedicated Rust Conference on european grounds. Taking place in lovely, central Berlin this community conference will host one day of talks followed by a workshop day.

+

Tickets aren't available yet either, however you still have until June 20th to send in your talk proposal.

+

Rust Belt Rust

+

Last but not least, Rust Belt Rust will take place again October 29th & 28th in Pittsburgh, PA, USA. It also features one day of workshops, followed by a single track talks day.

+

Although the latest in the year, the CfP is already closed. Tickets aren't available yet. Nothing to do other than staying tuned.

+

More Example Blogs

+

For those, who can't wait to learn about stuff at the conferences – and their official workshop days, you are in luck. Since the last publication, we've also seen an influx of new blog posts helping you get started with Rust Web. We've also restructured the Learn-More-Section on the website to allow space for more posts (ordered latest first). The latest additions are:

+ +

Notable crates

+

Sapper is not yet released as a crate but has already quite some impressive benchmarks, showing how Rust can boost Web a ton. Sapper Works appears to want to build an entire ecosystem for "snappy" web development. We are excited to see what will come out of that!

+

Neon combines Node and Rust. It essentially allows you to write native code in rust, which can then easily interact with NodeJS. This is clearly web – somehow, but we aren't really sure where to put this in the category tree. If you have an idea, let us know here.

+

RustW is a web frontend for the rust compiler. Allowing you to paste your code to a web-server and see the results (and errors) rendered in a webpage.

+

Hyper announced they will be adding asynchronous IO – using our all beloved MIO. The branch mentioned in the blog post has even been merged now and it should be working with the latest release!

+

Added to index:

+

The following have been added to our tracking index (and the website where appropriate)

+ +

Updates recorded:

+

Further more we recorded new releases to the following crates

+ +

Anything we missed? Let us know!

+ +
+ +
+ + + + +
+

Author

+ +
+ + + + + Benjamin Kampmann + + + + +

+ Freelance OpenSource Software Architect and Developer. I design, build and supervise the building of software (systems). Sometimes for clients, often times on my own, whenever possible as OpenSource. I care about good design in both, the User Experience and backend architecture and infrastructure. And I write about all this stuff. +

+ + +
+ +
+ + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/rustwebdigest-3-authentication-rest-and-more-learning/index.html b/news/rustwebdigest-3-authentication-rest-and-more-learning/index.html new file mode 100644 index 00000000..d077b78c --- /dev/null +++ b/news/rustwebdigest-3-authentication-rest-and-more-learning/index.html @@ -0,0 +1,271 @@ + + + + + + + + + + RustWebDigest #3: Authentication, Rust and Rest and more learning » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

RustWebDigest #3: Authentication, Rust and Rest and more learning

+ +
+ Published 2016-07-24 + under
    + +
  • + logging +
  • + +
  • + rest +
  • + +
+ +
+ + + +
+ + + Posted + + + + by ben + : + +

The biggest news since the last RustWebDigest is without question the alpha release of Servo – the web rendering engine entirely written in Rust by Mozilla. It's a big effing deal and if you haven't downloaded it yet, I highly recommend doing so. While its still in alpha stage, it is very impressive what the team has delivered and keeps delivering with their nightly builds 👏.

+

The second most widely spread news Armin Ronacher's – you know, the person behind Flask – blog post about doing nice API development for Rest-APIs with Rust that he encountered while implementing the Sentry Rust Client. Similarly big waves only received Dropbox for their all rust brotli implementation, claiming to bring pied piper to life, but weirdly only implementing de compression so far. But both of sources of big credit showing strengths of Rust in very public posts, increasing the visibility and viability of Rust as decent web development environment.

+

Authentication, remote logging

+

After due consideration we've decided to rename the prior OAuth topic to a broader "Authentication/Authorization" topic as suggested by Marcel Müller. Thanks, Marcel, good idea!

+

Making that topic more broad also allowed us to add more libraries to that area. Go check it out.

+

The second big change on the website is around logging: We've added slog (a structured logging facility) and a few remote logging implementations (sentry, airbrake) – very important tooling for every web developer!

+

More Learning

+

Disclaimer: the author is co-organiser of RustFest.

+

Connecting RustFest and View Source

+

More of a side note the RustFest team announced their collaboration with Mozilla sponsored "View Source", a conference dedicated to the open web. Within that side note, they announced to be hosting a discussion area about rust at View Source – reaching out to the web developer folks on their own turf. Despite not having announced any web-related talks at that conference, that's an important sign. I highly recommend to get in touch if you are interested making that discussion awesome.

+

More blogs

+

We've also seen a few more interesting blog posts about rust for web development and updates the main website accordingly:

+ +

arewewebyet/web development talk at Berlin Rust User Group

+

And finally, you have the chance to see me on stage this week at Berlin Rust User Group, trying to convince the folks in front of me to do web development with rust by implementing a tiny microservice with the help of arewewebyet. Come by and say hi!

+

Crate updates:

+

Added to index:

+

The following have been added to our tracking index (and the website where appropriate)

+ +

Updates recorded:

+

Further more we recorded new releases to the following crates

+ +

Anything we missed? Let us know!

+ +
+ +
+ + + + +
+

Author

+ +
+ + + + + Benjamin Kampmann + + + + +

+ Freelance OpenSource Software Architect and Developer. I design, build and supervise the building of software (systems). Sometimes for clients, often times on my own, whenever possible as OpenSource. I care about good design in both, the User Experience and backend architecture and infrastructure. And I write about all this stuff. +

+ + +
+ +
+ + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/rustwebdigest-4-i-wish-there-was-async-but-at-least-we-got-cms/index.html b/news/rustwebdigest-4-i-wish-there-was-async-but-at-least-we-got-cms/index.html new file mode 100644 index 00000000..6d822efe --- /dev/null +++ b/news/rustwebdigest-4-i-wish-there-was-async-but-at-least-we-got-cms/index.html @@ -0,0 +1,290 @@ + + + + + + + + + + RustWebDigest #4: I wish there was async, but at least we got CMSs! » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

RustWebDigest #4: I wish there was async, but at least we got CMSs!

+ +
+ Published 2016-11-20 + under
    + +
  • + async +
  • + +
  • + cms +
  • + +
  • + stack +
  • + +
+ +
+ + + +
+ + + Posted + + + + by ben + : + +

With the release of futures and soon after the Tokio-frameworks, this summer was async became all the range in the rust (web) world. While we were hoping to be able to start a new async-section and populate it with amazing libraries by now, even pushing down the timeframe of the digest itself, there isn't sufficient work on this (in the web area) yet. But in order to track these "in development"-things better, and also shed some light into it for people not familiar, we added another section to selected topics, called upcoming.

+

Secondly, we also added another site tracking Content Management Systems. While it currently also features only cobolt-bin (do you know some others?), it takes full advantage of the new upcoming feature and lets you know where you can help.

+

Crate updates:

+

Added to index:

+

The following have been added to our tracking index (and the website where appropriate)

+ +

Updates recorded:

+

Further more we recorded new releases to the following crates

+

Crates updates found:

+ +

Anything we missed? Let us know!

+ +
+ +
+ + + + +
+

Author

+ +
+ + + + + Benjamin Kampmann + + + + +

+ Freelance OpenSource Software Architect and Developer. I design, build and supervise the building of software (systems). Sometimes for clients, often times on my own, whenever possible as OpenSource. I care about good design in both, the User Experience and backend architecture and infrastructure. And I write about all this stuff. +

+ + +
+ +
+ + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/treasure-orm-initial-design-with-small-working/index.html b/news/treasure-orm-initial-design-with-small-working/index.html new file mode 100644 index 00000000..33a47768 --- /dev/null +++ b/news/treasure-orm-initial-design-with-small-working/index.html @@ -0,0 +1,142 @@ + + + + + + + + + + Treasure ORM - initial design, with small working parts (mapper) » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Treasure ORM - initial design, with small working parts (mapper)

+ +
+ Published 2015-07-26 + under
    + +
  • + database +
  • + +
  • + orm +
  • + +
+ +
+ + + +
+ + + Posted + + on Rust Users Forum + + + + by phonkee + : + +

Hi,

+

I've been watching rust and its community for about a year, studied a lot about rust, and I have to say that I love rust. Time has come to try to build something real so I decided to start working on ORM for rust (yes ORM).

+

Since rust is statically compiled and there is no way to do "inspection" I went the way of syntax extensions (nightly), and started to generate code. I have just small part working, so please be kind.

+

If you are interested have a look at github.com/phonkee/treasure

+

I would be really happy if you can comment it or want to help with building/designing Treasure ORM, so we can make a green badge on arewewebyet.com.

+

Thank you.

+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/treasure-orm-progress-query-api-just-grammar-docs/index.html b/news/treasure-orm-progress-query-api-just-grammar-docs/index.html new file mode 100644 index 00000000..ad7c607f --- /dev/null +++ b/news/treasure-orm-progress-query-api-just-grammar-docs/index.html @@ -0,0 +1,143 @@ + + + + + + + + + + Treasure orm progress. Query api (just "grammar"), docs.. » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

Treasure orm progress. Query api (just "grammar"), docs..

+ +
+ Published 2015-07-30 + under
    + +
  • + database +
  • + +
  • + orm +
  • + +
+ +
+ + + +
+ + + Posted + + on Rust Users Forum + + + + by phonkee + : + +

Hi all, +This is update how treasure orm development progresses. +I have added small portion of querying api macros (well honestly just "select" for now with filtering api, other are not implemented but documented how they will be implemented).

+

Be aware that it's just "grammar". This query api should not change much in the future. Now I will start to work on query builder, which will this api will use. +You can find more info about querying here github.com/phonkee/treasure#query Also I have updated more documentation with ideas and future plans.

+

Have a good day! +phonkee

+ +
+ +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/news/we-are-back-baby/index.html b/news/we-are-back-baby/index.html new file mode 100644 index 00000000..8c086348 --- /dev/null +++ b/news/we-are-back-baby/index.html @@ -0,0 +1,170 @@ + + + + + + + + + + We are back, baby! » AWWY? + + + + + + + + + + + + + + + + + +
+ + + +
+
+

We are back, baby!

+ +
+ Published 2016-02-16 +
+ + + +
+ + + Posted + + + + by ben + : + +

It has been long, since you heard from us. But we are back – with an all new shiny and new approach of trying to answer the question:

+

Are We Web yet

+

A relaunch was needed

+

A lot has happened over the last year in Rust Web-Development since the first inception of AreWeWebYet. While some parts of the ecosystem grew quickly, others are still lacking in features, support and stability. But the sheer number of packages we'd have to list now, would make the website inaccessible and hard to maintain. It was time to rethink how we could answer the question differently. The rewrite of this website is reflecting that, by not only giving a more nuanced answer on its main page, but also shed more light into each separate topic so you can take a more informed decision.

+

More, detailed info

+

Package Info

+

Among other things the new website gives much deeper insight on faster glance than you might notice. All package information is regularly synced with crates.io, the badges are even pulled live when you access the website. Each section has its own small indicator, giving you an idea of what the curators think about that particular part in one single glyph – more details about those in the help section of the about page.

+

Curated comments

+

Comments

+

But a version info and a package link don't necessarily say much about a project. At least not as much as an insight about the project from someone, who's used it. Which is why the new version of the website features comments by the curators or otherwise found on the web on a per package basis. Toggled off by default to keep the design clean, those allow you to catch a small glimpse into the inside of what means to use that package.

+

A news section

+

But the ecosystem is not slowing down, quite the contrary it is just getting started. And while the website is good for a quick glance at a specific point in time, it isn't particularly suited to keep up with the ever increasing pace of whats happening. This is why we also launched a News section and invite everyone to share their updates and news with us and the wider audience.

+

And if you are interested to stay up to date with news from the Rust Web Ecosystem, we know offer a nice and clean RSS-Feed for your convenience.

+

Under new management

+

One other change you might have noticed is that we moved to a .org domain, under the umbrella of the Bashy Organisation. This reflects the new, open approach in ensuring the website stays current with latest development. We moved it from its previous hosting provider (which only a selected few had access to) to Github-Pages, re-rendering the page with every Pull-Request merged or change made, and we are actively seeking for more people to help us maintain and curate the content.

+

We run the project under the Contributor Covenant Code of Conduct and have a rather relaxed policy on giving curator-positions to others. If you are interested, please take a look at the Contributing Guidelines. We are looking forward to your contributions!

+ +
+ +
+ + + + +
+

Author

+ +
+ + + + + Benjamin Kampmann + + + + +

+ Freelance OpenSource Software Architect and Developer. I design, build and supervise the building of software (systems). Sometimes for clients, often times on my own, whenever possible as OpenSource. I care about good design in both, the User Experience and backend architecture and infrastructure. And I write about all this stuff. +

+ + +
+ +
+ + + + + + + + + + + + + + + + +
+ +
+ + + + + diff --git a/robots.txt b/robots.txt new file mode 100644 index 00000000..1ad58dd7 --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Disallow: +Allow: / +Sitemap: https://www.arewewebyet.org/sitemap.xml diff --git a/rust.png b/rust.png new file mode 100644 index 00000000..31417319 Binary files /dev/null and b/rust.png differ diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 00000000..e1ee45f2 Binary files /dev/null and b/screenshot.png differ diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..5d7112e1 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,176 @@ + + + + https://www.arewewebyet.org/ + + + https://www.arewewebyet.org/about/ + + + https://www.arewewebyet.org/curators/ + + + https://www.arewewebyet.org/news/ + + + https://www.arewewebyet.org/news/7-high-priority-rust-libraries-that-need-to-be-written/ + 2014-06-04 + + + https://www.arewewebyet.org/news/announcing-diesel-a-safe-extensible-orm-and-query-builder-for-rust/ + 2015-11-29 + + + https://www.arewewebyet.org/news/announcing-gotham/ + 2017-08-11 + + + https://www.arewewebyet.org/news/basic-http-server-a-simple-http-file-server-built-on-rotor/ + 2016-01-18 + + + https://www.arewewebyet.org/news/dbmigrate-a-sql-migration-tool/ + 2016-01-11 + + + https://www.arewewebyet.org/news/handlebars-templating-libraries-now-works-with/ + 2016-02-01 + + + https://www.arewewebyet.org/news/herd-a-http-load-testing-application-written-in-rust/ + 2015-06-23 + + + https://www.arewewebyet.org/news/hyper-v0-6/ + 2015-06-25 + + + https://www.arewewebyet.org/news/introducing-pencil/ + 2016-03-08 + + + https://www.arewewebyet.org/news/kafka-client-for-rust/ + 2015-05-11 + + + https://www.arewewebyet.org/news/kinglet-an-asynchronous-http-server/ + 2015-12-03 + + + https://www.arewewebyet.org/news/pwhash-a-password-hashing-verification-library/ + 2016-02-09 + + + https://www.arewewebyet.org/news/rustful-0-1-0-is-now-available-on-crates-io/ + 2015-05-08 + + + https://www.arewewebyet.org/news/rustwebdigest-1-getting-started-servo/ + 2016-03-14 + + + https://www.arewewebyet.org/news/rustwebdigest-2-learn-more-with-blogs-and-events/ + 2016-05-25 + + + https://www.arewewebyet.org/news/rustwebdigest-3-authentication-rest-and-more-learning/ + 2016-07-24 + + + https://www.arewewebyet.org/news/rustwebdigest-4-i-wish-there-was-async-but-at-least-we-got-cms/ + 2016-11-20 + + + https://www.arewewebyet.org/news/treasure-orm-initial-design-with-small-working/ + 2015-07-26 + + + https://www.arewewebyet.org/news/treasure-orm-progress-query-api-just-grammar-docs/ + 2015-07-30 + + + https://www.arewewebyet.org/news/we-are-back-baby/ + 2016-02-16 + + + https://www.arewewebyet.org/topics/ + + + https://www.arewewebyet.org/topics/asyncio/ + + + https://www.arewewebyet.org/topics/auth/ + + + https://www.arewewebyet.org/topics/binary-protocols/ + + + https://www.arewewebyet.org/topics/browser/ + + + https://www.arewewebyet.org/topics/cms/ + + + https://www.arewewebyet.org/topics/compression/ + + + https://www.arewewebyet.org/topics/crypto/ + + + https://www.arewewebyet.org/topics/database/ + + + https://www.arewewebyet.org/topics/deploy/ + + + https://www.arewewebyet.org/topics/email/ + + + https://www.arewewebyet.org/topics/encoding/ + + + https://www.arewewebyet.org/topics/frameworks/ + + + https://www.arewewebyet.org/topics/http-clients/ + + + https://www.arewewebyet.org/topics/i18n/ + + + https://www.arewewebyet.org/topics/logging/ + + + https://www.arewewebyet.org/topics/lower-web-stack/ + + + https://www.arewewebyet.org/topics/nodejs/ + + + https://www.arewewebyet.org/topics/serializer/ + + + https://www.arewewebyet.org/topics/services/ + + + https://www.arewewebyet.org/topics/syndication/ + + + https://www.arewewebyet.org/topics/templating/ + + + https://www.arewewebyet.org/topics/testing/ + + + https://www.arewewebyet.org/topics/utils/ + + + https://www.arewewebyet.org/topics/wasm-runtimes/ + + + https://www.arewewebyet.org/topics/web-apis/ + + + https://www.arewewebyet.org/topics/webassembly/ + + diff --git a/styles.css b/styles.css new file mode 100644 index 00000000..13c900e4 --- /dev/null +++ b/styles.css @@ -0,0 +1 @@ +.authors{font-size:.75em;margin-top:5em}.authors:before{display:inline-block;width:50%;border-top:2px solid #eee;content:" ";margin-left:25%}.authors h3{margin:0;padding:0}.avatar{grid-area:avatar;height:3em;margin-right:1em;border-radius:50%;border:2px #eee solid;align-self:center}.author{margin:2em 0;display:grid;grid-template:"avatar name" auto "avatar social" auto "bio bio" auto/auto 1fr}.social-media{grid-area:social;margin:0}.social-media a{margin-left:.7em;display:inline-block}.social-media a:first-of-type{margin-left:0}.bio{grid-area:bio;margin:.5em 0 1em}.content{position:relative;padding:1rem 2rem;min-height:600px}@media (min-width: 600px){.content{padding:2em 4em;margin:0 auto}}.content:before{position:absolute;top:0;left:0;right:0;z-index:-1;height:1050px;max-height:100%;display:block;content:" ";background-image:linear-gradient(to bottom, rgba(250,250,250,.6), rgba(0,0,0,0))}.rust-logo{position:absolute;top:-64px;right:-64px;width:256px;height:256px;opacity:.25;z-index:-2;-webkit-transform:rotate(35deg);transform:rotate(35deg)}@media (min-width: 900px){.rust-logo{top:-128px;right:-128px;width:512px;height:512px}}*{box-sizing:border-box}body,html{overflow-x:hidden;margin:0;padding:0}body,html{font-size:16px}@media screen and (min-width: 320px){body,html{font-size:calc(.7648183556vw + 13.552581262px)}}@media screen and (min-width: 1366px){body,html{font-size:24px}}header{line-height:2}h1,h2,h3,h4,h5,h6,strong{font-weight:400}h1{margin:0;color:#666;font-weight:300}h1{font-size:46px}@media screen and (min-width: 320px){h1{font-size:calc(2.4856596558vw + 38.0458891013px)}}@media screen and (min-width: 1366px){h1{font-size:72px}}html{font-family:Fira Sans,Helvetica Neue,Helvetica,Arial,sans-serif;background-color:#fff;background-repeat:no-repeat;color:#202020;line-height:1.6;font-weight:300;width:100%}@media print{:root{color:#000}}@font-face{font-family:"Fira Sans";font-style:normal;font-weight:300;src:local("Fira Sans Light"),url("fonts/FiraSans-Light.woff") format("woff")}@font-face{font-family:"Fira Sans";font-style:normal;font-weight:400;src:local("Fira Sans"),url("fonts/FiraSans-Regular.woff") format("woff")}@font-face{font-family:"Fira Sans";font-style:normal;font-weight:500;src:local("Fira Sans Medium"),url("fonts/FiraSans-Medium.woff") format("woff")}footer{font-size:.6em;background-color:#fafafa;border-top:1px solid #cba;margin-top:5em;padding:1em 4em .5em 4em}.devider{display:flex;justify-content:center}.logo{text-align:center;flex-grow:1}.links{flex-grow:2}.call-to-action{flex-grow:4}.last-updated{text-align:center;margin-bottom:0}.logo img{height:5em}.pages{display:flex;justify-content:center;align-items:center;margin:0;list-style:none;padding:0;flex-wrap:wrap}.pages li{line-height:2rem;display:inline-block;margin:.5rem 0;flex-basis:50%;text-align:center}.pages li{font-size:14px}@media screen and (min-width: 320px){.pages li{font-size:calc(.6818181818vw + 11.8181818182px)}}@media screen and (min-width: 1200px){.pages li{font-size:20px}}@media (min-width: 600px){.pages li{flex-basis:inherit;margin:1rem}}.legend{list-style:none;margin:1rem 0;padding:0}.legend{font-size:14px}@media screen and (min-width: 320px){.legend{font-size:calc(.5736137667vw + 12.1644359465px)}}@media screen and (min-width: 1366px){.legend{font-size:20px}}.legend li{display:inline;margin-right:.75em}.topic-list{list-style:none;padding:0;display:inline}.topic-list li{display:inline-block;padding:5px}.tagline{margin:0 0 .5em;color:#000;font-size:3rem}@media (min-width: 600px){.tagline{font-size:3.5rem}}@media (min-width: 900px){.tagline{font-size:5rem}}.level-indicator{font-weight:300;font-size:.65em;vertical-align:middle;color:#fff}.level-indicator .fa{color:#e4371b}.level-indicator.level-0 .fa{color:#04ec04}.level-indicator.level-1 .fa{color:#08c008}.level-indicator.level-2 .fa{color:#00ab00}.level-indicator.level-3 .fa{color:#026302}.level-indicator.level-4 .fa{color:#e4b71b}.level-indicator.level-5 .fa{color:#e4771b}a,a:visited{color:#428bca}a:hover{color:#3276b1}.meta{font-size:.6em;line-height:.5em;padding:0;margin:10px 0 0 0}.news-item .date{font-size:.8em;margin-right:.51em}.news h1{font-size:2em}.news h1::before{content:" News » ";display:inline-block;font-size:.35em;color:#fff;background:#666;padding:.25em .75em;margin-right:1em;vertical-align:middle}.news .meta ul{list-style:none;margin:0;padding:0;display:inline}.news .meta ul li{display:inline-block;font-style:italic}blockquote{border-left:#eee .34em solid;padding-left:1em;font-weight:300;margin-left:2em}cite{font-size:.75em}.pkg-list{list-style:none;padding:0 0 0 .5em}.pkg-name{margin-top:2em;margin-right:.35em;font-weight:400}.pkg-meta{margin:0}.pkg-desc{font-size:.9em;margin:.1em 0 2em 0}.pkg-links{width:100%;margin:.5rem 0}@media (min-width: 600px){.pkg-links{display:inline;width:auto}}.pkg-link{display:inline-block;margin:0 1rem;font-size:1.5rem;opacity:.5;vertical-align:middle}@media (min-width: 600px){.pkg-link{display:inline;font-size:.75rem;margin:.5rem}}.pkg-link:first-of-type{margin-left:0}@media (min-width: 600px){.pkg-link:first-of-type{margin:.5rem}}.pkg-link:hover{opacity:.8}li.pkg{margin-top:1.5em}.action{opacity:0;transition:.25s}*:hover>.action{opacity:1;transition:1s}.upcoming{margin:.5rem 0;padding:0;list-style:none}.upcoming li{display:inline;margin:0;padding:0}.upcoming li p{display:inline}.upcoming li:not(:last-of-type):after{display:inline;content:" ,"}.upcoming li:last-of-type:after{display:inline;content:"."}.article{position:relative;overflow:hidden;margin:3vh auto 1vh}@media (min-width: 900px){.article{max-width:960px;margin:0 auto}}.article--banner-spacing{margin:6rem auto 1rem}@media (min-width: 600px){.article--banner-spacing{margin:2rem auto 1rem}}@media (min-width: 900px){.article--banner-spacing{margin:0 auto}}.alert-box{margin:4em 0;font-size:.95em;border:1px solid #eadc3d;padding:.5em 2em;background:#fefce7}.review{font-size:.65em}.review.positive,.review.recommendation{border-color:#d0e9c3}.review.note{border-color:rgba(66,139,202,.36)}.review.warning{border-color:#e4b71b}.review.negative{border-color:#e4771b}.review.terrible{border-color:#e4371b}.review:after{clear:both;content:"";display:table}.review cite{position:relative;padding-left:5em;display:inline-block}.review cite:before{content:"—";font-size:2em;font-style:italic;font-weight:300;position:absolute;top:50%;transform:translate(0, -50%);left:1em}.review cite img{height:2em;vertical-align:middle;margin:.25em 1em .25em 0;border-radius:50%;border:1px solid #eee}.review .name{font-size:1.2em;font-weight:400;display:inline}.review p.info{margin:0}.review .version{font-weight:400}.review p{margin:1em 0 .5em}.related-news{list-style:"» ";font-size:.8em} \ No newline at end of file diff --git a/styles/authors.css b/styles/authors.css new file mode 100644 index 00000000..aa465b98 --- /dev/null +++ b/styles/authors.css @@ -0,0 +1 @@ +.authors{font-size:.75em;margin-top:5em}.authors:before{display:inline-block;width:50%;border-top:2px solid #eee;content:" ";margin-left:25%}.authors h3{margin:0;padding:0}.avatar{grid-area:avatar;height:3em;margin-right:1em;border-radius:50%;border:2px #eee solid;align-self:center}.author{margin:2em 0;display:grid;grid-template:"avatar name" auto "avatar social" auto "bio bio" auto/auto 1fr}.social-media{grid-area:social;margin:0}.social-media a{margin-left:.7em;display:inline-block}.social-media a:first-of-type{margin-left:0}.bio{grid-area:bio;margin:.5em 0 1em} \ No newline at end of file diff --git a/styles/base.css b/styles/base.css new file mode 100644 index 00000000..9915a346 --- /dev/null +++ b/styles/base.css @@ -0,0 +1 @@ +.content{position:relative;padding:1rem 2rem;min-height:600px}@media (min-width: 600px){.content{padding:2em 4em;margin:0 auto}}.content:before{position:absolute;top:0;left:0;right:0;z-index:-1;height:1050px;max-height:100%;display:block;content:" ";background-image:linear-gradient(to bottom, rgba(250,250,250,.6), rgba(0,0,0,0))}.rust-logo{position:absolute;top:-64px;right:-64px;width:256px;height:256px;opacity:.25;z-index:-2;-webkit-transform:rotate(35deg);transform:rotate(35deg)}@media (min-width: 900px){.rust-logo{top:-128px;right:-128px;width:512px;height:512px}} \ No newline at end of file diff --git a/styles/core.css b/styles/core.css new file mode 100644 index 00000000..c36f5a6a --- /dev/null +++ b/styles/core.css @@ -0,0 +1 @@ +*{box-sizing:border-box}body,html{overflow-x:hidden;margin:0;padding:0}body,html{font-size:16px}@media screen and (min-width: 320px){body,html{font-size:calc(.7648183556vw + 13.552581262px)}}@media screen and (min-width: 1366px){body,html{font-size:24px}}header{line-height:2}h1,h2,h3,h4,h5,h6,strong{font-weight:400}h1{margin:0;color:#666;font-weight:300}h1{font-size:46px}@media screen and (min-width: 320px){h1{font-size:calc(2.4856596558vw + 38.0458891013px)}}@media screen and (min-width: 1366px){h1{font-size:72px}}html{font-family:Fira Sans,Helvetica Neue,Helvetica,Arial,sans-serif;background-color:#fff;background-repeat:no-repeat;color:#202020;line-height:1.6;font-weight:300;width:100%}@media print{:root{color:#000}} \ No newline at end of file diff --git a/styles/fonts.css b/styles/fonts.css new file mode 100644 index 00000000..42ccaa4e --- /dev/null +++ b/styles/fonts.css @@ -0,0 +1 @@ +@font-face{font-family:"Fira Sans";font-style:normal;font-weight:300;src:local("Fira Sans Light"),url("fonts/FiraSans-Light.woff") format("woff")}@font-face{font-family:"Fira Sans";font-style:normal;font-weight:400;src:local("Fira Sans"),url("fonts/FiraSans-Regular.woff") format("woff")}@font-face{font-family:"Fira Sans";font-style:normal;font-weight:500;src:local("Fira Sans Medium"),url("fonts/FiraSans-Medium.woff") format("woff")} \ No newline at end of file diff --git a/styles/footer.css b/styles/footer.css new file mode 100644 index 00000000..57d03972 --- /dev/null +++ b/styles/footer.css @@ -0,0 +1 @@ +footer{font-size:.6em;background-color:#fafafa;border-top:1px solid #cba;margin-top:5em;padding:1em 4em .5em 4em}.devider{display:flex;justify-content:center}.logo{text-align:center;flex-grow:1}.links{flex-grow:2}.call-to-action{flex-grow:4}.last-updated{text-align:center;margin-bottom:0}.logo img{height:5em}.pages{display:flex;justify-content:center;align-items:center;margin:0;list-style:none;padding:0;flex-wrap:wrap}.pages li{line-height:2rem;display:inline-block;margin:.5rem 0;flex-basis:50%;text-align:center}.pages li{font-size:14px}@media screen and (min-width: 320px){.pages li{font-size:calc(.6818181818vw + 11.8181818182px)}}@media screen and (min-width: 1200px){.pages li{font-size:20px}}@media (min-width: 600px){.pages li{flex-basis:inherit;margin:1rem}} \ No newline at end of file diff --git a/styles/home.css b/styles/home.css new file mode 100644 index 00000000..e65b1c4a --- /dev/null +++ b/styles/home.css @@ -0,0 +1 @@ +.legend{list-style:none;margin:1rem 0;padding:0}.legend{font-size:14px}@media screen and (min-width: 320px){.legend{font-size:calc(.5736137667vw + 12.1644359465px)}}@media screen and (min-width: 1366px){.legend{font-size:20px}}.legend li{display:inline;margin-right:.75em}.topic-list{list-style:none;padding:0;display:inline}.topic-list li{display:inline-block;padding:5px}.tagline{margin:0 0 .5em;color:#000;font-size:3rem}@media (min-width: 600px){.tagline{font-size:3.5rem}}@media (min-width: 900px){.tagline{font-size:5rem}} \ No newline at end of file diff --git a/styles/level-indicator.css b/styles/level-indicator.css new file mode 100644 index 00000000..e12bcefa --- /dev/null +++ b/styles/level-indicator.css @@ -0,0 +1 @@ +.level-indicator{font-weight:300;font-size:.65em;vertical-align:middle;color:#fff}.level-indicator .fa{color:#e4371b}.level-indicator.level-0 .fa{color:#04ec04}.level-indicator.level-1 .fa{color:#08c008}.level-indicator.level-2 .fa{color:#00ab00}.level-indicator.level-3 .fa{color:#026302}.level-indicator.level-4 .fa{color:#e4b71b}.level-indicator.level-5 .fa{color:#e4771b} \ No newline at end of file diff --git a/styles/links.css b/styles/links.css new file mode 100644 index 00000000..20e4828b --- /dev/null +++ b/styles/links.css @@ -0,0 +1 @@ +a,a:visited{color:#428bca}a:hover{color:#3276b1} \ No newline at end of file diff --git a/styles/news.css b/styles/news.css new file mode 100644 index 00000000..1129c8f8 --- /dev/null +++ b/styles/news.css @@ -0,0 +1 @@ +.meta{font-size:.6em;line-height:.5em;padding:0;margin:10px 0 0 0}.news-item .date{font-size:.8em;margin-right:.51em}.news h1{font-size:2em}.news h1::before{content:" News » ";display:inline-block;font-size:.35em;color:#fff;background:#666;padding:.25em .75em;margin-right:1em;vertical-align:middle}.news .meta ul{list-style:none;margin:0;padding:0;display:inline}.news .meta ul li{display:inline-block;font-style:italic}blockquote{border-left:#eee .34em solid;padding-left:1em;font-weight:300;margin-left:2em}cite{font-size:.75em} \ No newline at end of file diff --git a/styles/pkg.css b/styles/pkg.css new file mode 100644 index 00000000..ca49f514 --- /dev/null +++ b/styles/pkg.css @@ -0,0 +1 @@ +.pkg-list{list-style:none;padding:0 0 0 .5em}.pkg-name{margin-top:2em;margin-right:.35em;font-weight:400}.pkg-meta{margin:0}.pkg-desc{font-size:.9em;margin:.1em 0 2em 0}.pkg-links{width:100%;margin:.5rem 0}@media (min-width: 600px){.pkg-links{display:inline;width:auto}}.pkg-link{display:inline-block;margin:0 1rem;font-size:1.5rem;opacity:.5;vertical-align:middle}@media (min-width: 600px){.pkg-link{display:inline;font-size:.75rem;margin:.5rem}}.pkg-link:first-of-type{margin-left:0}@media (min-width: 600px){.pkg-link:first-of-type{margin:.5rem}}.pkg-link:hover{opacity:.8}li.pkg{margin-top:1.5em}.action{opacity:0;transition:.25s}*:hover>.action{opacity:1;transition:1s} \ No newline at end of file diff --git a/styles/topic.css b/styles/topic.css new file mode 100644 index 00000000..dca74cc5 --- /dev/null +++ b/styles/topic.css @@ -0,0 +1 @@ +.upcoming{margin:.5rem 0;padding:0;list-style:none}.upcoming li{display:inline;margin:0;padding:0}.upcoming li p{display:inline}.upcoming li:not(:last-of-type):after{display:inline;content:" ,"}.upcoming li:last-of-type:after{display:inline;content:"."} \ No newline at end of file diff --git a/topics/asyncio/index.html b/topics/asyncio/index.html new file mode 100644 index 00000000..16c53dd2 --- /dev/null +++ b/topics/asyncio/index.html @@ -0,0 +1,837 @@ + + + + + + + + + + Async I/O » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Async I/O + + + +

+ + +

List of different packages, related to asynchronous I/O and async/await

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/auth/index.html b/topics/auth/index.html new file mode 100644 index 00000000..aa54f03f --- /dev/null +++ b/topics/auth/index.html @@ -0,0 +1,734 @@ + + + + + + + + + + Authorization/Authentication » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Authorization/Authentication + + + +

+ + +

Authorization and Authentication are a big deal for web development. Take OAuth, the most widely used protocol of authentication between services on the web. Such a simple idea, but with so many varying implementations (twitter, facebook, whatever...) and tricky parts in the details – it's almost impossible to get right without a library. Luckily, these crates will help you address authentication problems. For hashing and algorithm crates, see: Cryptography

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/binary-protocols/index.html b/topics/binary-protocols/index.html new file mode 100644 index 00000000..98db9a6b --- /dev/null +++ b/topics/binary-protocols/index.html @@ -0,0 +1,697 @@ + + + + + + + + + + Binary protocols » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Binary protocols + + + +

+ + +

Binary protocol support

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/browser/index.html b/topics/browser/index.html new file mode 100644 index 00000000..1529686a --- /dev/null +++ b/topics/browser/index.html @@ -0,0 +1,426 @@ + + + + + + + + + + Browser » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Browser + + + +

+ + +

The Webbrowser is the bastion, the holy grail of web development and one of the biggest projects in the Rust ecosystem focusses exactly on that. If Rust achieves to run a browser engine, be used to write server code while also being used as the frontend-development language within the browser, then it will truly be the language of the web like no other.

+ + + +

Web Rendering Engine: Servo

+

Not yet published on crates.io but steady and continuously developed by Mozilla.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/cms/index.html b/topics/cms/index.html new file mode 100644 index 00000000..13e4db60 --- /dev/null +++ b/topics/cms/index.html @@ -0,0 +1,446 @@ + + + + + + + + + + CMS » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

CMS + + + +

+ + +

Managing digital content is a fundamental part of the web as we have it today. Content management systems aim to make it easier to create, update, and serve digital content. Currently, the Rust CMS ecosytem consists only of static site generators, which serve as frameworks for creating websites from static content files.

+ + + +

Static Site Generators + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Related News

+ + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/compression/index.html b/topics/compression/index.html new file mode 100644 index 00000000..b90f1a74 --- /dev/null +++ b/topics/compression/index.html @@ -0,0 +1,545 @@ + + + + + + + + + + Compression Libs » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Compression Libs + + + +

+ + +

One of the first things almost anyone does to improve performance (specifically bandwidth) is to turn on compression. Luckily compression is well supported in rust.

+ + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/crypto/index.html b/topics/crypto/index.html new file mode 100644 index 00000000..6d1f3a26 --- /dev/null +++ b/topics/crypto/index.html @@ -0,0 +1,1611 @@ + + + + + + + + + + Crypto » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Crypto + + + +

+ + +

Cryptography is a corner stone of a trusted web. Without it many services could not be offered reliably. Rust has strong cryptography libraries. Many of these are managed by Rust Crypto, an organization that maintains cryptography algorithms written in pure Rust.

+ + + +
+

Suites + + + + +

+ +
    + + + + + +
  • + openssl + + + + +

    + + + + + + + +

    + +

    + OpenSSL bindings +

    +
  • + + + + + + + +
  • + orion + + + + +

    + + + + + + + +

    + +

    + Usable, easy and safe pure-Rust crypto +

    +
  • + + + + + + + +
  • + libsodium-sys + + + + +

    + + + + + + + +

    + +

    + FFI binding to libsodium +

    +
  • + + + + + + + +
  • + gpgme + + + + +

    + + + + + + + +

    + +

    + GPGme bindings for Rust +

    +
  • + + + + + + + +
  • + ring + + + + +

    + + + + + + + +

    + +

    + Safe, fast, small crypto using Rust. +

    +
  • + + + +
+

Random Number Generators + + + + +

+ +
    + + + + + +
  • + rand + + + + +

    + + + + + + + +

    + +

    + Random number generators and other randomness functionality. + +

    +
  • + + + + + + + +
  • + uuid + + + + +

    + + + + + + + +

    + +

    + A library to generate and parse UUIDs. +

    +
  • + + + +
+

Hashing + + + + +

+ +
    + + + + + +
  • + bcrypt + + + + +

    + + + + + + + +

    + +

    + Easily hash and verify passwords using bcrypt +

    +
  • + + + + + + + +
  • + blake2 + + + + +

    + + + + + + + +

    + +

    + BLAKE2 hash functions +

    +
  • + + + + + + + +
  • + djangohashers + + + + +

    + + + + + + + +

    + +

    + A Rust port of the password primitives used in Django project. +

    +
  • + + + + + + + +
  • + hmac + + + + +

    + + + + + + + +

    + +

    + Generic implementation of Hash-based Message Authentication Code (HMAC) +

    +
  • + + + + + + + +
  • + fnv + + + + +

    + + + + + + + +

    + +

    + Fowler–Noll–Vo hash function +

    +
  • + + + + + + + +
  • + twox-hash + + + + +

    + + + + + + + +

    + +

    + A Rust implementation of the XXHash and XXH3 algorithms +

    +
  • + + + + + + + +
  • + md-5 + + + + +

    + + + + + + + +

    + +

    + MD5 hash function +

    +
  • + + + + + + + +
  • + sha2 + + + + +

    + + + + + + + +

    + +

    + Pure Rust implementation of the SHA-2 hash function family +including SHA-224, SHA-256, SHA-384, and SHA-512. + +

    +
  • + + + + + + + +
  • + pwhash + + + + +

    + + + + + + + +

    + +

    + A collection of password hashing routines in pure Rust. +

    +
  • + + + +
+

Algorithms + + + + +

+ +
    + + + + + +
  • + aes-gcm + + + + +

    + + + + + + + +

    + +

    + Pure Rust implementation of the AES-GCM (Galois/Counter Mode) +Authenticated Encryption with Associated Data (AEAD) Cipher +with optional architecture-specific hardware acceleration + +

    +
  • + + + + + + + +
  • + bulletproofs + + + + +

    + + + + + + + +

    + +

    + A pure-Rust implementation of Bulletproofs using Ristretto +

    +
  • + + + + + + + +
  • + chacha20poly1305 + + + + +

    + + + + + + + +

    + +

    + Pure Rust implementation of the ChaCha20Poly1305 Authenticated Encryption +with Additional Data Cipher (RFC 8439) with optional architecture-specific +hardware acceleration. Also contains implementations of the XChaCha20Poly1305 +extended nonce variant of ChaCha20Poly1305, and the reduced-round +ChaCha8Poly1305 and ChaCha12Poly1305 lightweight variants. + +

    +
  • + + + + + + + +
  • + curve25519-dalek + + + + +

    + + + + + + + +

    + +

    + A pure-Rust implementation of group operations on ristretto255 and Curve25519 +

    +
  • + + + + + + + +
  • + ed25519-dalek + + + + +

    + + + + + + + +

    + +

    + Fast and efficient ed25519 EdDSA key generations, signing, and verification in pure Rust. +

    +
  • + + + + + + + +
  • + secp256k1 + + + + +

    + + + + + + + +

    + +

    + Rust wrapper library for Pieter Wuille's `libsecp256k1`. Implements ECDSA and BIP 340 signatures for the SECG elliptic curve group secp256k1 and related utilities. +

    +
  • + + + + + + + +
  • + subtle + + + + +

    + + + + + + + +

    + +

    + Pure-Rust traits and utilities for constant-time cryptographic implementations. +

    +
  • + + + + + + + +
  • + twox-hash + + + + +

    + + + + + + + +

    + +

    + A Rust implementation of the XXHash and XXH3 algorithms +

    +
  • + + + + + + + +
  • + x25519-dalek + + + + +

    + + + + + + + +

    + +

    + X25519 elliptic curve Diffie-Hellman key exchange in pure-Rust, using curve25519-dalek. +

    +
  • + + + +
+

TLS + + + + +

+ +
    + + + + + +
  • + rustls + + + + +

    + + + + + + + +

    + +

    + Rustls is a modern TLS library written in Rust. +

    +
  • + + + + + + + +
  • + tokio-openssl + + + + +

    + + + + + + + +

    + +

    + An implementation of SSL streams for Tokio backed by OpenSSL + +

    +
  • + + + + + + + +
  • + tokio-rustls + + + + +

    + + + + + + + +

    + +

    + Asynchronous TLS/SSL streams for Tokio using Rustls. +

    +
  • + + + + + + + +
  • + tokio-tls + + + + +

    + + + + + + + +

    + +

    + Deprecated in favor of `tokio-naitve-tls`. + +An implementation of TLS/SSL streams for Tokio giving an implementation of TLS +for nonblocking I/O streams. + +

    +
  • + + + + + + + +
  • + openssl + + + + +

    + + + + + + + +

    + +

    + OpenSSL bindings +

    +
  • + + + + + + + +
  • + webpki + + + + +

    + + + + + + + +

    + +

    + Web PKI X.509 Certificate Verification. +

    +
  • + + + +
+ + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/database/index.html b/topics/database/index.html new file mode 100644 index 00000000..f58ab709 --- /dev/null +++ b/topics/database/index.html @@ -0,0 +1,1512 @@ + + + + + + + + + + Database » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Database + + + +

+ + +

Proper Database support is crucial for modern web development. This page gives an overview of the various drivers, ORMs, integrations and tools.

+ + + +

Drivers

+ + +

ORMs

+ + +

Connection pools

+ + +

Tooling

+ + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/deploy/index.html b/topics/deploy/index.html new file mode 100644 index 00000000..db450e51 --- /dev/null +++ b/topics/deploy/index.html @@ -0,0 +1,166 @@ + + + + + + + + + + Deployment » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Deployment + + + +

+ + +

How is Rust deployment onto existing server infrastructures? Well, stuff is looking quite good actually.

+ + + +

Heroku + + + + +

+

Heroku is a cloud PaaS tool that supports collections of languages. It does not support Rust natively, however, you can run Heroku with github.com/emk/heroku-buildpack-rust, a popular but unofficial buildpack.

+

AWS Lambda + + + + +

+

AWS Lambda supports Rust natively with an opensource runtime! There is also an unofficial but very popular AWS SDK, rusoto.

+

Docker + + + + +

+

There are official docker images for rust (rust) with over 10+ Million downloads! There are also nightly images (rustlang/rust) if your application requires it. If you use docker's multi-stage builds, you can build your application binary and then copy it into a container. This allows you to avoid deploying the entire compilation toolchain with your web application.

+

Cloud-Native Buildpacks + + + + +

+

Cloud-Native Buildpacks is a CNCF project that provides a specification for automatically transforming source code into OCI images you can run on any cloud. Paketo Buildpacks, a popular implementation of the Cloud-Native Buildpacks specification, has a Rust buildpack that supports transforming your Rust source code into OCI images.

+

Present features: pick your Rust version including nightly, automatically detects your binaries and configures the container to run them, supports projects with multiple binaries & workspace projects, supports installing additional tools via cargo install, can optionally install tini for proper pid1 handling, can generate images as small as a few MB plus your binaries, and loads of caching for fast rebuilds.

+

Vercel + + + + +

+

▲ Vercel, (formerly Zeit) is a cloud platform for serverless functions. There is a community rust runtime, vercel-rust.

+

Unikernels + + + + +

+

Unikernels are the rising star and newest hot thing to do big scale deployment. With Rust being a system language unikernels are an obvious approach to the problem and doing your research you'll find that there is a lot happening here indeed. There's a number of unikernels which support rust:

+ + + + + + + + +

Still missing...

+ + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/email/index.html b/topics/email/index.html new file mode 100644 index 00000000..96eb4099 --- /dev/null +++ b/topics/email/index.html @@ -0,0 +1,759 @@ + + + + + + + + + + Email » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Email + + + +

+ + +

What would the web be without Email? It is one of the mose widely used communication, authentication, and notification systems. There are rust crates providing smtp and imap clients, as well integrations with third party email delivery services.

+ + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/encoding/index.html b/topics/encoding/index.html new file mode 100644 index 00000000..638cf731 --- /dev/null +++ b/topics/encoding/index.html @@ -0,0 +1,571 @@ + + + + + + + + + + En- & Decoding » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

En- & Decoding + + + +

+ + +

Encoding is one of those things you don't really want to bother about, but just rely on a well tested library for – there are just too many edge and quirky cases. Luckily, as a system language, this is one of the things rust shines at – and offers a set of nice packages for all data formats.

+ + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/frameworks/index.html b/topics/frameworks/index.html new file mode 100644 index 00000000..058493b5 --- /dev/null +++ b/topics/frameworks/index.html @@ -0,0 +1,956 @@ + + + + + + + + + + Web Frameworks » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Web Frameworks + + + +

+ + +

When building a modern web-application you don't want to bother on how to parse the http-header or where the route is supposed to be dispatched to. Frameworks offer exactly those features and make it quick'n'easy to build your specific app on the web-stack. Rust has many backend server frameworks, as well as frontend frameworks for building client apps with webassembly.

+ + + +

Server

+ + +

Frontend (WebAssembly)

+ + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/http-clients/index.html b/topics/http-clients/index.html new file mode 100644 index 00000000..21370c0b --- /dev/null +++ b/topics/http-clients/index.html @@ -0,0 +1,600 @@ + + + + + + + + + + HTTP Clients » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

HTTP Clients + + + +

+ + +

Without a proper HTTP Client there isn't much web - even for the backend, scraping or API-Services on the web HTTP is the protocol of choice. Thus a stable, strong HTTP-Client stack is very important to any web-ecosystem.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/i18n/index.html b/topics/i18n/index.html new file mode 100644 index 00000000..3bb6a0c3 --- /dev/null +++ b/topics/i18n/index.html @@ -0,0 +1,408 @@ + + + + + + + + + + Internationalization » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Internationalization + + + +

+ + +

Internationalization is still a work in progress. There is no standard mature implementation of i18n in Rust, although there are many newer libraries aiming to fill this gap.

+ + + + + + + + + + + + +

Upcoming

+ The following crates look awesome! But they have not yet reached maturity. + + + + +

Still missing...

+ + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/index.html b/topics/index.html new file mode 100644 index 00000000..6c5e7b93 --- /dev/null +++ b/topics/index.html @@ -0,0 +1,503 @@ + + + + + + + + + + Are we web yet? Yes, and it's freaking fast! + + + + + + + + + + + + + + + + + +
+ + +
+ +

Topics

+ +
+ + +

+ Async I/O + + + + + +

+ + +

List of different packages, related to asynchronous I/O and async/await

+ + + + + +

+ En- & Decoding + + + + + +

+ + +

Encoding is one of those things you don't really want to bother about, but just rely on a well tested library for – there are just too many edge and quirky cases. Luckily, as a system language, this is one of the things rust shines at – and offers a set of nice packages for all data formats.

+ + + + + +

+ External Services + + + + + +

+ + +

The modern web development stack doesn't only need a web-server but is often built on a range of external services to provide specific features, from worker queues to search and pubsub. There are many mature crates for popular external services. For services accessed through a Web API, such as Cloud SDKs, see: External Web APIs and for database support, see: Databases

+ + + + + +

+ Compression Libs + + + + + +

+ + +

One of the first things almost anyone does to improve performance (specifically bandwidth) is to turn on compression. Luckily compression is well supported in rust.

+ + + + + +

+ HTTP Clients + + + + + +

+ + +

Without a proper HTTP Client there isn't much web - even for the backend, scraping or API-Services on the web HTTP is the protocol of choice. Thus a stable, strong HTTP-Client stack is very important to any web-ecosystem.

+ + + + + +

+ Serializers + + + + + +

+ + +

Serializers allow you to easily transfer states and reliably get it back – important not only when working with JSON but also backbone of many types of worker-queue systems. Many of these crates are built on top of Serde, the awesome serialization framework for Rust.

+ + + + + +

+ Web Frameworks + + + + + +

+ + +

When building a modern web-application you don't want to bother on how to parse the http-header or where the route is supposed to be dispatched to. Frameworks offer exactly those features and make it quick'n'easy to build your specific app on the web-stack. Rust has many backend server frameworks, as well as frontend frameworks for building client apps with webassembly.

+ + + + + +

+ External Web APIs + + + + + +

+ + +

With many Web-Apps we want to reach farther than our locally hosted services and reach APIs hosted by other platforms and services outside our network. Connecting to the outside world is important, too many modern web applications are useless without an external party they connect to and interact with. There are many client libraries for most of the popular web APIs. Some of them are listed below:

+ + + + + +

+ Lower Web-Stack + + + + + +

+ + +

A strong lower web-stack is important not only to build strong web frameworks on top, but also to allow performance critical systems to reach deeper to squeeze out extra juice. Rust has a good support on HTTP servers, even an HTTP2 implementation, websockets and other protocols.

+ + + + + +

+ Testing + + + + + +

+ + +

Rust and Cargo have a very good system for testing. However, there are still many useful utility crates that make testing easier. Some of them are listed below:

+ + + + + +

+ Templating + + + + + +

+ + +

No Web-App is complete if it doesn't spit out HTML at least some of the time. Managing that, and making sure it renders performant and can be maintained is what templating libraries focus on. Rust has many traditional templating languages, as well as macro-based libraries that enforce type safety! Some of these are listed below.

+ + + + + +

+ WebAssembly + + + + + +

+ + +

Rust can even run on the browser, by compiling to WebAssembly. This means that you can take advantage of the amazing Rust ecosystem on the browser! Rust and WebAssembly integrate with existing Javascript tooling. It supports NPM, Webpack, and ECMAScript modules! Here are some of the awesome Rust and WebAssembly projects out there. For frontend WebAssembly frameworks, see: WebAssembly Frameworks

+ + + + + +

+ Browser + + + + + +

+ + +

The Webbrowser is the bastion, the holy grail of web development and one of the biggest projects in the Rust ecosystem focusses exactly on that. If Rust achieves to run a browser engine, be used to write server code while also being used as the frontend-development language within the browser, then it will truly be the language of the web like no other.

+ + + + + +

+ Internationalization + + + + + +

+ + +

Internationalization is still a work in progress. There is no standard mature implementation of i18n in Rust, although there are many newer libraries aiming to fill this gap.

+ + + + + +

+ Node.js + + + + + +

+ + +

Rust can be used to write fast and safe native Node.js modules through bindings to the V8 engine!

+ + + + + +

+ Logging + + + + + +

+ + +

Logging is part of the rust ecosystem for a long time and with log and env_logger you have some great defaults.

+ + + + + +

+ Binary protocols + + + + + +

+ + +

Binary protocol support

+ + + + + +

+ Authorization/Authentication + + + + + +

+ + +

Authorization and Authentication are a big deal for web development. Take OAuth, the most widely used protocol of authentication between services on the web. Such a simple idea, but with so many varying implementations (twitter, facebook, whatever...) and tricky parts in the details – it's almost impossible to get right without a library. Luckily, these crates will help you address authentication problems. For hashing and algorithm crates, see: Cryptography

+ + + + + +

+ Crypto + + + + + +

+ + +

Cryptography is a corner stone of a trusted web. Without it many services could not be offered reliably. Rust has strong cryptography libraries. Many of these are managed by Rust Crypto, an organization that maintains cryptography algorithms written in pure Rust.

+ + + + + +

+ Database + + + + + +

+ + +

Proper Database support is crucial for modern web development. This page gives an overview of the various drivers, ORMs, integrations and tools.

+ + + + + +

+ Web Utils + + + + + +

+ + +

This collects a range of packages which are commonly used and needed in web development, like URL or HTTP-Body-parsers.

+ + + + + +

+ CMS + + + + + +

+ + +

Managing digital content is a fundamental part of the web as we have it today. Content management systems aim to make it easier to create, update, and serve digital content. Currently, the Rust CMS ecosytem consists only of static site generators, which serve as frameworks for creating websites from static content files.

+ + + + + +

+ Syndication/RSS + + + + + +

+ + +

Syndication has often been announced dead just to still stick around. Parsing and generating good RSS feeds isn't especially hard, but also something you don't necessarily want to have to do yourself. There are some libraries and packages to help you with that.

+ + + + + +

+ WebAssembly Runtimes + + + + + +

+ + +

While the main showcase of WebAssembly initially was the web browser, there is new exciting work on using it outside too. Here is a list of WebAssembly runtimes that are compatible with Rust.

+ + + + + +

+ Email + + + + + +

+ + +

What would the web be without Email? It is one of the mose widely used communication, authentication, and notification systems. There are rust crates providing smtp and imap clients, as well integrations with third party email delivery services.

+ + + + + +

+ Deployment + + + + + +

+ + +

How is Rust deployment onto existing server infrastructures? Well, stuff is looking quite good actually.

+ + + + + +
+ +
+ +
+ + + + + diff --git a/topics/logging/index.html b/topics/logging/index.html new file mode 100644 index 00000000..963d456d --- /dev/null +++ b/topics/logging/index.html @@ -0,0 +1,623 @@ + + + + + + + + + + Logging » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Logging + + + +

+ + +

Logging is part of the rust ecosystem for a long time and with log and env_logger you have some great defaults.

+ + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/lower-web-stack/index.html b/topics/lower-web-stack/index.html new file mode 100644 index 00000000..845f3a38 --- /dev/null +++ b/topics/lower-web-stack/index.html @@ -0,0 +1,685 @@ + + + + + + + + + + Lower Web-Stack » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Lower Web-Stack + + + +

+ + +

A strong lower web-stack is important not only to build strong web frameworks on top, but also to allow performance critical systems to reach deeper to squeeze out extra juice. Rust has a good support on HTTP servers, even an HTTP2 implementation, websockets and other protocols.

+ + + +

HTTP Stack

+ + +

Websocket

+ + +

Other protocols

+ + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/nodejs/index.html b/topics/nodejs/index.html new file mode 100644 index 00000000..2b58ee43 --- /dev/null +++ b/topics/nodejs/index.html @@ -0,0 +1,292 @@ + + + + + + + + + + Node.js » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Node.js + + + +

+ + +

Rust can be used to write fast and safe native Node.js modules through bindings to the V8 engine!

+ + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/serializer/index.html b/topics/serializer/index.html new file mode 100644 index 00000000..f4f586dd --- /dev/null +++ b/topics/serializer/index.html @@ -0,0 +1,533 @@ + + + + + + + + + + Serializers » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Serializers + + + +

+ + +

Serializers allow you to easily transfer states and reliably get it back – important not only when working with JSON but also backbone of many types of worker-queue systems. Many of these crates are built on top of Serde, the awesome serialization framework for Rust.

+ + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/services/index.html b/topics/services/index.html new file mode 100644 index 00000000..a6b04643 --- /dev/null +++ b/topics/services/index.html @@ -0,0 +1,864 @@ + + + + + + + + + + External Services » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

External Services + + + +

+ + +

The modern web development stack doesn't only need a web-server but is often built on a range of external services to provide specific features, from worker queues to search and pubsub. There are many mature crates for popular external services. For services accessed through a Web API, such as Cloud SDKs, see: External Web APIs and for database support, see: Databases

+ + + +

Worker Queue

+ + +

Data Processing

+ + +

Search Services

+ + +

Pubsub

+ + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/syndication/index.html b/topics/syndication/index.html new file mode 100644 index 00000000..9b6ad536 --- /dev/null +++ b/topics/syndication/index.html @@ -0,0 +1,342 @@ + + + + + + + + + + Syndication/RSS » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Syndication/RSS + + + +

+ + +

Syndication has often been announced dead just to still stick around. Parsing and generating good RSS feeds isn't especially hard, but also something you don't necessarily want to have to do yourself. There are some libraries and packages to help you with that.

+ + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/templating/index.html b/topics/templating/index.html new file mode 100644 index 00000000..939a0ff0 --- /dev/null +++ b/topics/templating/index.html @@ -0,0 +1,906 @@ + + + + + + + + + + Templating » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Templating + + + +

+ + +

No Web-App is complete if it doesn't spit out HTML at least some of the time. Managing that, and making sure it renders performant and can be maintained is what templating libraries focus on. Rust has many traditional templating languages, as well as macro-based libraries that enforce type safety! Some of these are listed below.

+ + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/testing/index.html b/topics/testing/index.html new file mode 100644 index 00000000..05434ef0 --- /dev/null +++ b/topics/testing/index.html @@ -0,0 +1,836 @@ + + + + + + + + + + Testing » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Testing + + + +

+ + +

Rust and Cargo have a very good system for testing. However, there are still many useful utility crates that make testing easier. Some of them are listed below:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/utils/index.html b/topics/utils/index.html new file mode 100644 index 00000000..3269d122 --- /dev/null +++ b/topics/utils/index.html @@ -0,0 +1,947 @@ + + + + + + + + + + Web Utils » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

Web Utils + + + +

+ + +

This collects a range of packages which are commonly used and needed in web development, like URL or HTTP-Body-parsers.

+ + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/wasm-runtimes/index.html b/topics/wasm-runtimes/index.html new file mode 100644 index 00000000..ffc15e5e --- /dev/null +++ b/topics/wasm-runtimes/index.html @@ -0,0 +1,291 @@ + + + + + + + + + + WebAssembly Runtimes » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

WebAssembly Runtimes + + + +

+ + +

While the main showcase of WebAssembly initially was the web browser, there is new exciting work on using it outside too. Here is a list of WebAssembly runtimes that are compatible with Rust.

+ + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/web-apis/index.html b/topics/web-apis/index.html new file mode 100644 index 00000000..3d34bb04 --- /dev/null +++ b/topics/web-apis/index.html @@ -0,0 +1,861 @@ + + + + + + + + + + External Web APIs » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

External Web APIs + + + +

+ + +

With many Web-Apps we want to reach farther than our locally hosted services and reach APIs hosted by other platforms and services outside our network. Connecting to the outside world is important, too many modern web applications are useless without an external party they connect to and interact with. There are many client libraries for most of the popular web APIs. Some of them are listed below:

+ + + + + + + + + + + + + + +

Still missing...

+ + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + + diff --git a/topics/webassembly/index.html b/topics/webassembly/index.html new file mode 100644 index 00000000..ca37cccc --- /dev/null +++ b/topics/webassembly/index.html @@ -0,0 +1,992 @@ + + + + + + + + + + WebAssembly » AWWY? + + + + + + + + + + + + + + + + + +
+ + +
+ +

WebAssembly + + + +

+ + +

Rust can even run on the browser, by compiling to WebAssembly. This means that you can take advantage of the amazing Rust ecosystem on the browser! Rust and WebAssembly integrate with existing Javascript tooling. It supports NPM, Webpack, and ECMAScript modules! Here are some of the awesome Rust and WebAssembly projects out there. For frontend WebAssembly frameworks, see: WebAssembly Frameworks

+ + + + + + + + + + + + + + + + + +
+

Do you know something we don't?

+

Did we miss an important crate? Or maybe you just recently launched something that should be listed here, too? Let us know! +

+
+ +
+ +
+ + + + +