]> git.lizzy.rs Git - rust.git/blob - src/doc/complement-project-faq.md
Auto merge of #27723 - mystor:vecdeque_drain_range, r=bluss
[rust.git] / src / doc / complement-project-faq.md
1 % The Rust Project FAQ
2
3 # What is this project's goal, in one sentence?
4
5 To design and implement a safe, concurrent, practical, static systems language.
6
7 # Why are you doing this?
8
9 Existing languages at this level of abstraction and efficiency are unsatisfactory. In particular:
10
11 * Too little attention paid to safety.
12 * Poor concurrency support.
13 * Lack of practical affordances, too dogmatic about paradigm.
14
15 # What are some non-goals?
16
17 * To employ any particularly cutting-edge technologies. Old, established techniques are better.
18 * To prize expressiveness, minimalism or elegance above other goals. These are desirable but subordinate goals.
19 * To cover the complete feature-set of C++, or any other language. It should provide majority-case features.
20 * To be 100% static, 100% safe, 100% reflective, or too dogmatic in any other sense. Trade-offs exist.
21 * To run on "every possible platform". It must eventually work without unnecessary compromises on widely-used hardware and software platforms.
22
23 # Is any part of this thing production-ready?
24
25 Yes!
26
27 # Is this a completely Mozilla-planned and orchestrated thing?
28
29 No. It started as a Graydon Hoare's part-time side project in 2006 and remained so for over 3 years. Mozilla got involved in 2009 once the language was mature enough to run some basic tests and demonstrate the idea. Though it is sponsored by Mozilla, Rust is developed by a diverse community of enthusiasts.
30
31 # What will Mozilla use Rust for?
32
33 Mozilla intends to use Rust as a platform for prototyping experimental browser architectures. Specifically, the hope is to develop a browser that is more amenable to parallelization than existing ones, while also being less prone to common C++ coding errors that result in security exploits. The name of that project is _[Servo](http://github.com/servo/servo)_.
34
35 # Why a BSD-style permissive license rather than MPL or tri-license?
36
37 * Partly due to preference of the original developer (Graydon).
38 * Partly due to the fact that languages tend to have a wider audience and more diverse set of possible embeddings and end-uses than focused, coherent products such as web browsers. We'd like to appeal to as many of those potential contributors as possible.
39
40 # Why dual MIT/ASL2 license?
41
42 The Apache license includes important protection against patent aggression, but it is not compatible with the GPL, version 2. To avoid problems using Rust with GPL2, it is alternately MIT licensed.