I want to share with you the good news: now we can influence the development of C ++! By “we” I mean all Russian programmers working with C ++.
But first things first.
C ++ Standardization Working Group
The C ++ programming language is developing spontaneously. Its development is controlled by the international organization ISO / IEC, and more precisely, the working group within this organization
ISO / IEC JTC1 / SC22 / WG21 C ++ . Her responsibilities include consideration of proposals for improving the language and the standard library, voting on proposals and writing short reviews on them (why the proposal did not pass the vote, what exactly did not like in the proposal, etc.). And most of the proposals, as a rule, are made by the members of the committee themselves.
')
Why write sentences and upgrade C ++
For the sake of fame and money :) And also for the sake of writing the code it was more convenient and faster and faster.
Let's start with the simplicity of writing code. The more great solutions there will be inside the standard library, the fewer bicycles will have to be invented for typical tasks. Previously, there was no
std :: thread - and everyone had to write their own classes for cross-platform work with threads. Previously, there was no
std :: array - and very few people knew how to return an array from a function.
std :: atomic has saved people from having to go down to the assembler code or to use compiler-specific extensions.
Now about speed. You can fix in the standard the most optimal solutions, or add new features that accelerate the code "out of the box." For example, rvalue-references allowed to speed up some applications without changing user code.
std :: string has recently acquired the ability to store small strings without dynamic memory allocations, which also had a positive effect on application performance.
And now about fame and money. Introduce the recruitment dialogue:
- Have you worked with the standard library component
std :: something-there ?
- Yes, I came up with
std :: something-there and was engaged in its promotion in the C ++ standard.
- You are accepted!
What does the Yandex
C ++ is one of the main development languages in Yandex. Recently we thought it would be good to have more control over such an important tool for us. So we started digging toward creating a C ++ working group. The goals were ambitious: to understand how everything works in the C ++ Standardization Committee, to create a working group of people who are familiar with this topic, to enable Russian developers to influence the development of the language, to get the opportunity to transfer our successful developments to the standard, etc.
So Yandex employees dug, dug, and accidentally got to the bottom of me, who by that time was already working in Yandex.
As you may know, in my free time, I develop the
Boost library, actively help people around the world with writing proposals for improving the standard, I have several of my own suggestions for improving the C ++ standard that are under consideration.
- Stop, stop, stop! - the reader will notice here. - If you can accept C ++ sentences without Yandex, why do we need Yandex?
Everything is very simple. You can write a suggestion to improve the C ++ language, but there are a few nuances.
- You need to be very “in the subject line” and know exactly what to write in the sentence, so that you do not have to rewrite it ten times.
- You will either have to be at the WG21 meeting yourself, or find a person who will go to a committee meeting in America or Europe and will defend your proposal there and answer questions.
- Some successful proposals were taken by a margin of one vote, so it's a good idea to have allies on the committee.
- At meetings, sometimes "not enough hands." If representatives of Yandex participate in the meetings, it will be possible either to consider more applications, or to describe the proposals' authors in more detail, which need to be improved.
It is with these problems that we will have to help. In addition to me, the group will be led by Alexander Fokin, who leads one of the teams developing Search, and actively helps in upgrading the code base and introducing the new C ++ standards into work practice.
How and when will it work
At the moment we are at the very beginning. We have created a working group (WG21) based on the staff of Yandex, the group is the national mirror working group of
ISO / IEC JTC1 / SC22 / WG21 C ++ .
We still need to understand bureaucratic issues, get to know the members of WG21, participate in several meetings and join the work process. In addition, on the nose C ++ 17, and all are now loaded with the preparation of the final version of the standard. But if everything goes according to plan, then in December of this year we will begin to help Russian developers with proposals for developing the C ++ language.
What would we add to the standard first
We are very interested in the standardization of flat containers, like
boost :: container :: flat_set and boost :: container :: flat_map . This is a difficult job and it should be done carefully, in consultation with leading developers of such containers.
We also have a number of components that are widely used in our code and which will be useful to many developers. The first thing that comes to mind is the class for output stack trace. To include our components in the standard, you need a lot of things: transfer the names to lower case, tear off components that are not in the standard from the class, add integration with classical I / O streams, put it in open access, get feedback, etc.
We also hope that work will begin on the proposals for Dynamic Library Load -
P0275R0 and
P0276R0 . Previously, such proposals were rejected because of their complexity, but this time it turned out to reduce the changes in the core of the language to a minimum.
There are also ideas on extremely problematic things to promote, such as
interface classes , access to the fields of structures by index, and basic reflection.
Where to write, if there are sentences
We created the cpp-proposals@yandex-team.ru newsletter - send your suggestions, ideas and suggestions to it. We will try to answer at least the most interesting and promising. As a maximum - at all.
Instead of totals
We have here prepared a small questionnaire to assess the amount of upcoming work and the interest of people.