C ++ Russia 2019 Piter program overview: asynchrony, modules, libraries ... and taxi







What do these people have in common, besides the fact that they are all known in the C ++ world?









Answer: all of them will come to C ++ Russia. Now that the summer is over and everyone is back from vacation, it's time to wait for the next big C ++ conference: C ++ Russia 2019 Piter . It will be attended not only by people from this list, but also by many other international speakers. 30 reports, 2 full days from 10 a.m. to 7 p.m., no introductory stories and reading documentation on syllables - immediately solid hardcore.







This turned out to be one of the fastest and most qualitatively organized conferences of ours, half of the program became known in the summer: speakers clearly know what things they want to say in C ++ Russia. Now the program is almost stabilized, and it is time to open the veil of secrecy.







We divide all the reports into “planning categories”, which we then fill with interesting topics. Here they are:









Categories are presented in decreasing order of the number of reports: starting with nine reports about new standard features, and ending with the only report on functionalism at the moment - “Compile-time type tagging” by Ivan Chukich. There are still a few white spots in the program that will literally fill up in the next couple of weeks. Let's see what happened as a result.







Headliners



All the speakers are well-known figures in the community; writing about them could be endless. Let's talk in detail at least about those whom we listed before the kat.







Sean Parent is one of the top researchers and architects in the Adobe mobile division. He has developed a bright career in world-famous companies. In the period from 1988-1993, he helped Apple write their famous OSes for PowerPC, since 1993 he began developing Photoshop, spent 2009 in Google, developing ChromeOS, and returned to Adobe. What can a person with such a rich history tell us? Right now you can find on YouTube a lot of videos with his participation, for example - a series of reports Better Code , which speaks for itself. This is not the first time we have been in C ++ Russia: at the dawn of the conference’s history, back in 2015, it was he who made the first opening report , and in 2017 we did a half-hour interview with him. Everything that Sean Parent says is different in depth and elaboration, it is not “look and forget” material, but something that is worth remembering and coming back again and again.







Now he flies to us with a new report from the BetterCode: Relationships series, and you definitely do not want to miss this. That is why the report was chosen by the conference keynote - all participants will be able to see it before they disperse into separate rooms.








The second keynote is led by Eric Niebler . Here it would be to end the story, because recently his name has been more than publicly known thanks to Standard Ranges , and the nibloids that have become the term (see the markup on CppReference ) are named after him. But, generally speaking, all this is just hype, and he did a lot for C ++.







Eric is an active member of the C ++ Standardization Committee, a senior developer on Facebook, and it was at this time that he began to engage in range. In pre-facebook times, he was a consultant, working both individually and with BoostPro Computing . In the boost, he not only wrote several of his libraries and acted as a release manager, but also became a member of the Boost Steering Committee, which (according to the name) deals with strategic development issues. Eric's fad is writing powerful and at the same time elegant code, developing beautiful abstractions (which, in general, you can see in ranges ... or not see, depending on preferences). Equally important, he can convey thoughts not only with code, but also in the form of intelligible intelligible reports.







Eric arrives with the talk “A unifying abstraction for async in C ++” . Briefly about the problem: asynchrony in C ++ is now at the bottom, it must be repaired. Standard tools like promises, futures, threads, locks, even std::async



- they all work either inefficiently, or just broken, or both at the same time. Horror. Even worse, there is no standard way of saying exactly where the work should be done. Nevertheless, we have a bunch of C ++ - specific tasks that need it: parallel algorithms, heterogeneous computing, network and IO, reactive streams ... all critical core technologies that have been waiting for a standard abstraction for years to reflect the idea of ​​asynchronous computing. In this report, Eric will dig with us the Committee’s research, in which they determined the basic operations behind any asynchronous calculations. We will see why futures and promises slow down so much, what is an executor, what is common between callbacks and coroutines, and how the abstraction “Task” (which is now being actively studied on Facebook by R&D) can make the same revolution in asynchronization that occurred with the advent of iterators in regular synchronous code.








If Eric is a cool engineer and researcher who rarely speaks so well, then Marshall Clow is the star of international conferences. If you go to YouTube and enter his name in the search , then YouTube becomes his personal home page. CppCon, C ++ Now, ACCU, EuroLLVM - everything you can imagine. And now here is C ++ Russia. Interestingly, with all this, he is not just another regular evangelist, but C ++ - a developer with 35 years of experience, the original author of Boost.Algorithm



(and generally the contributor of boost for over 15 years), the head of the working group on libraries in the Committee C ++ standardization and lead developer of libc ++ (standard library for LLVM). A living legend and a person who masterfully wrote in C ++ when half of those reading this text have not yet been born.







Marshall will come with the report “Hardening the C ++ Standard Template Library” , the essence is this: since the standard library is used by everyone in a row, it should be very well written and not break anywhere. The report is devoted to a discussion of techniques and tools that make libc ++ from LLVM satisfy these requirements: debugging, test suites and coverage, static and dynamic analysis, fuzzing. Of course, this report is not only for LLVM developers, everyone can draw their own ideas from it and draw their own conclusions.








Bryce Adelstein Lelbach studied C ++ a little less than Marshall, but he has something to surprise. He is one of the global leaders in the C ++ community. His social activities include the fact that Bryce is now the program director of the main C ++ conferences - CppCon and C ++ Now, the head of the C ++ User Group in San Francisco and Silicon Valley. In the Standardization Committee, he participates in JTC1 / SC22 / WG21, is the chairman of the Tooling Study Group (SG15) and the Library Evolution Incubator (SG18), and in C ++ 17 he worked on a long list of things (parallel algorithms, executors, futures, senders / receivers, multidimensional arrays, modules). Among other things, Bryce leads the CUDA development team at NVIDIA, at times helping LLVMLinux and committing to Boost.







Bryce arrives with a lecture on The C ++ 20 synchronization library . Since C ++ 11 came out, more than a dozen years have passed, the world has changed! In the days of C ++ 11, multi-core processors were already well established, but the normal number of cores was two or four. All that is more than ten, like the ancient people, was indicated by the word "many." “Two,” “four,” and “many.” Now it’s normal to have dozens of goals and put up with synchronization delays of a whole millisecond. It has become commonplace to have tens and hundreds of threads, and the word "many" now means "hundreds of thousands." Ten years ago, it was unlikely that anyone could clearly imagine the current problems of multithreading. Using traditional tools today, we are faced with either unacceptably high latency, or with unacceptable flow synchronization content. The C ++ 20 library offers new solutions - lightweight primitives that can work with hundreds of thousands of threads. std::atomic::wait



, std::atomic::notify_*



, std::atomic_ref



, std::counting_semaphore



, std::latch



, std::barrier



... This report is built as a sequence of examples on which we will learn how to use all these tools in order to build a modern application that can be executed in parallel on almost any hardware, from embedded and server CPUs to new GPUs.








The next speaker is the famous Russian developer Anton Polukhin . Known for reports on areas where C ++ is considered indispensable and additional things that would be nice to have in C ++. Representative of Russia in ISO at international meetings of the working group on standardization C ++, the author of several accepted proposals for the standard of the C ++ language. In preparation for the previous conference, we published an interview with him on Habré . In general, the topic of Russian participation in the Committee has already been quite widely discussed both on Habré and everywhere (look, Yandex even wrote a post about this in VK), and now let's not open this topic. You can go to stdcpp.ru and see a list of representatives, now it is: Anton Polukhin, Anton Bikineev and Alexander Fokin. Anton is also the author of several Boost libraries: TypeIndex, DLL, Stacktrace, is actively engaged in supporting Any, Conversion, LexicalCast, Variant. He has written the Boost C ++ Application Development Cookbook and Second Edition.







This time Anton arrives with the report “C ++ Taxi Tricks” (the report is called that way, obviously, because Anton works in Yandex.Taxi). The essence of the tricks is how to write seemingly well-known solutions beautifully and more effectively - for example, from Pimpl you can throw out dynamic allocation and fasten the cache.








Let's dilute our list with someone who does not work on the Committee. Greet Andrei Davydov from JetBrains - he has been working in the ReSharper C ++ team for three years now, and many of us use the results of his work every day. In the report, Andrei is going to talk about how the appearance of modules will affect the core of the C ++ language: if the compiler used to work with translation units one at a time, then with the advent of modules the rules of the game changed. The following topics will be discussed:









Note that this is not an introductory report to the modules for beginners. Students are expected to become familiar with the principles of the modules and understand why modules are needed at all. The good news is that, firstly, sorting it out is quite simple (just google some good article), and secondly, this C ++ Russia will have another paired introduction report on modules from Dmitry Kozhevnikov (it also works at JetBrains).








The rest of the program



It is absolutely clear that it is impossible to tell about 30 people and their 30 reports in a short post-announcement on Habré. Therefore, all this is described in more detail on the official website of the conference . It is important to note that the program continues to change: for example, as the rapporteurs, with the help of the Program Committee, continue to improve their reports, their descriptions are also updated. So closer to October 31, everything will look a little different, but the general meaning will remain the same.







Reports are not everything!



Of course, a conference is not only reports, but also a sea of ​​communication. This is where the live presence differs from the online broadcast, which we also plan to do. Take a look at the list above - with most of these people I would like to meet and discuss something important. We have such an opportunity: after the end of the report, everyone goes to the discussion area and talks there for as long as enough time. At the end of the day, so-called BOF sessions are organized (something like a round table, but only everyone is participating).







You can just meet interesting people from the community who also came, but without a report. You can find companies of interest, find out something from their representatives and participate in contests. There will be different side activities that we are now thinking through. In a word, everything you can imagine about a big conference.







Master classes



In addition to the main conference program, there will also be master classes (participation in them is drawn up and paid separately). They will be held the day before the conference and, unlike reports, will take at least several hours each. Detailed descriptions and conditions for participation in master classes can be found on the official website .







Anton Polukhin - “Nimble and Modern C ++”



Anton is a well-known Russian developer, about whom we spoke a little higher in this article. His experience as the author of Boost libraries, a participant and the Committee for Standardization, as well as extensive practice, allow him to write competent smart C ++ code and teach others to do it.







In any large code base you can find pieces of absolutely incomprehensible code. As a rule, such code is written to win a little in application performance ... and, as a rule, such code is not needed in principle, since it optimizes not what is needed, not in the place where it is needed, and not as it should .







The workshop begins with a small example where all the common mistakes of premature optimization will be encountered. After that, she will go from the basics and consider such things as algorithms and containers of the standard library (and not only the standard one), move-semantics and its unexpected behavior, multithreading. This is a completely practical workshop using Google Benchmark and tasks that look like tasks to optimize specific code.







Rainer Grimm - “Embedded Programming with Modern C ++”



Rainer Grimm is an experienced C ++, Python programming trainer and software developer from Germany. Embedded is one of the main areas of application of modern C ++. C ++ allows you to communicate directly with hardware and provides abstractions for building complex systems. In modern C ++, there are a lot of things that help with embedded. These are things like move-semantics and constexpr-functions (to improve performance), user-defined literals and type-traits (for systems for which maximum security is critical), smart pointers and std::array



(to less mess with resources )







This master class teaches you how to better use the features of C ++ in relation to embedded. In particular, it provides answers to a wide range of questions about the unique limitations of such systems. This workshop is taught in English.







Pavel Filonov - “Continuous Integration for C ++ - Developer”



Pavel Filonov believes that the development process should not end after a commit, therefore, he will present a master class on Continuous Integration. The goal of the workshop is to take the next step towards continuous integration (CI, Eng. Continuous Integration) and automate dependency resolution, assembly and unit testing for all target platforms. As a result, participants will be able to fully independently deploy all the infrastructure necessary for CI and prepare a C ++ project for automatic assembly and unit testing.







What's next?



And then you need to come to C ++ Russia 2019 Piter! The conference will be held October 31 - November 1 in St. Petersburg. Tickets can be purchased on the official website . There you can find in detail the current version of the program (I remind you that it continues to change).







An important note about prices and discounts. The ticketing system can issue tickets of four types: Academic, Personal, Standard and Online. Why it is important: if you buy tickets yourself, it will cost much cheaper than a ticket for the company. And if you are a student, graduate student or teacher (and there is an appropriate document for confirmation), then the discount is especially impressive. Detailed conditions, of course, need to be read on the site - everything written above was for reference only.







In anticipation of C ++ Russia 2019 Piter, you can watch recordings from two previous conferences that took place this spring in Moscow and Novosibirsk. In general, all the recordings for the past years are neatly on our YouTube channel . Thus, you can visually assess the quality of reports.







Meet me at C ++ Russia 2019 Piter!








All Articles