Before we talk about the future, here several digits for last year:
In 2015 by forces of community Rust:
- 331 suggestions for improvement of language (RFC) are created
- from which 161 were accepted and poured in the main repository
- only 120 people gave RFC, from them 6 people created 10 and more, Alex Crichton created 23 RFC
- 559 tasks of improvement of RFC are created
- It is sent and poured in a repository of Rust 4630 of Pull-requests
- which authors are 831 persons, from them 91 created more than 10 requests, 446 people created only one, and Steve Klabnik was the author of 551 pull-requests
- 4710 tasks are created
- from which 1611 are still open
- which authors are 1319 people from whom 79 created more than 10, and Alex Crichton opened only 159 tasks
- Six stable releases of Rust (1.0 - 1.5) are let out
- Stability of Rust – 96% of packets which were compiled on 1.0 is maintained, are still compiled with use of version 1.5
As well as in the second half of 2015, I expect to see many gradual improvements in 2016: polish of libraries, correction of errors of the compiler, improvement of tools and increase in number of happy users. Also on the horizon there are very many large changes – the last months we spent much time being engaged in planning, refaktorigy and consolidation of the project, and I expect that it will bear fruit.
Specialization of implementations (impl specialization) is an opportunity to have several implementations of a type for one type when there is an opportunity to define the most private of them. It opens opportunities for optimization and resolves some irritating issues. The existing RFC is almost accepted and work is well under way. The good choice to start 2016.
Lately we also discuss effective implementation of inheritance (a la virtual structures). There is a certain beautiful interrelation between specialization and inheritance so the most part of the plan is already made. So far still there are some important spaces, but I hope that they will be filled.
One more new possibility of type system discussed lately are abstract types of return (abstract return types which sometimes are also called by "impl trait"). She allows to use a type (instead of type) as a returned value of function. The idea is simple, but there are several sore points which will need to be solved. But as the community has a need for this opportunity, I think that it will be implemented in 2016.
The new system of memory allocation and syntax of placement (placement box syntax) will allow Rust to satisfy a heap of requirements of system programming (for example, having allowed to select an allokator for some collection). Also it is a door to return of garbage collection to Rust. Felix Klock works hard on design and implementation that these opportunities appeared this year.
Reconstruction of system of macroes, in particulars, emergence of procedural macroes which as a result have to become full-fledged part of stable Rust will be my greatest task of language. I wrote about it in detail in the blog.
One of not the strengths of Rust is error handling. We discussed different options to make it more convenient, and is similar that shortly the favourite option will be accepted as RFC. This sentence is added by the operator
?, which works similar to a macro
try!(for example, it will be possible to write
foo()?where today you write
try!(foo())), and also enters new expression
try ... catch, which allows to intercept and process exceptions. I expect that this sentence (or in any case very similar) will be accepted and implemented soon.
We could tell, at last, good-bye to drop-flags. Anyway, we dream of it.
I expect that 2016 will become year of libraries. The standard library looks good, and I think that in it only marginal improvements will appear. I also think that we will include some external packets in standard library, but most likely it will occur slowly and gradually, towards the end of a year. On the other hand, will occur a lot of interesting outside Rust repository, both in an incubator, and in other places.
Libc library substantially an ustakanena so I think that this year it will be polished and move in the direction of stabilization.
rand – one more crate from an incubator which stabization it is possible to expect and I do not think that there will be any large changes of API in the future.
One of the most concerning packets is mio which provides very low-level support of asynchronous IO. I expect to see considerable development and the movement towards receipt of the official status this year.
Also is a little really the interesting packets connected with parallelism: crossbeam, rayon, simple_parallel, and others. I do not know to what finally we will come in this area, and it will be very interesting to me to see it.
I think that 2016 will be fascinating from the point of view of building tools for Rust. For us this direction has high priority, and I would like to emphasize some things on which we work now:
- incremental compilation
- development environments (IDE)
- rewriting and consolidation of the multirust and rustup tools
- improvement of support of a krosskompilyation
- improvement of support of Windows
- packets for the Linux distribution kits
- tools for refactoring
- improvement of work of rustfmt
- use of Cargo for assembly of rustc?
It was exciting to observe as the community in 2015 grows, and I hope that it will grow even more in 2016. I with impatience expect acquaintance to new tremendous people and new interesting projects, I expect to see new articles and new views on language from the point of view of people with different previous experience, I expect more meetings and most of all!
Also at least one book about Rust will be published this year, and we hope that it will be more of them. Along with improvements documentation online, I think that it real incentive for beginners will study Rust.
I do not know about official plans, but I hope and I expect carrying out the next Rust Camp this year. On last year's action it was cheerful, and I am sure that would be exciting to see continuation.
I also expect to see as Rust to become more and more "serious" – its use in the prodakshena and important projects open source. I expect to see as the existing projects on Rust become more significant in itself and not just as "projects the using Rust".
Some things which, I think will not occur
Types of the higher order – I think, all of us want them in this or that form, but it is a huge challenge from the point of view of architecture and a large number of questions over which it will be necessary to work. I will be very surprised, having seen solid RFC on implementation of types of the higher order this year, not to mention implementation.
The return incompatibility – after 1.0 we were quite good in saving of stability and did not break already working things, and I am sure that we will be able to continue this tendency.
2.0 – there is a discussion concerning release of back incompatible Rust version, but it looks less realistic for 2016. So far we manage to move within backward compatible releases rather well, and there is nothing of that kind that would demand from us release of back incompatible version. I do not think that we will always manage to do without release 2.0, but I think that it will occur definitely not in 2016.
I believe in independence of what exactly to happen that 2016 will be fine year for all community. Happy New Year!
This article is a translation of the original post at habrahabr.ru/post/274757/
If you have any questions regarding the material covered in the article above, please, contact the original author of the post.
If you have any complaints about this article or you want this article to be deleted, please, drop an email here: firstname.lastname@example.org.
We believe that the knowledge, which is available at the most popular Russian IT blog habrahabr.ru, should be accessed by everyone, even though it is poorly translated.
Shared knowledge makes the world better.