Start of main content

Settings

The time in the program is for your time zone ().

  • Практичный C++

    • Talk

      C++ lambda idioms

      Language -RU

      This talk covers a number of interesting programming patterns using lambdas, from features that became available in C++11 all the way to techniques that will become possible in the upcoming C++23 standard.

    • Talk

      Running Almost Random Code via WebAssembly on the Backend-end

      Language -RU

      Many people think that wasm is only for the browser. It is not — it can be run on the backend as well. Wasm allows you to run random code in different scripting languages, like JS, Python or Lua, in a single environment and at the same time.

      The talk describes all the limitations of wasm virtual machine based server applications and the related features.

    • Talk

      A Practical Approach to Error Handling

      Language -EN

      Every program may encounter errors, some originating from internal bugs in the program, others coming from the environment the program is operating in. Ignoring all errors will make the program utterly unreliable, while treating every conceivable one introduces lots of extra complexity with little benefit. At think-cell, we have been using and refining our own principled approach to error handling, which we have not seen elsewhere. This talk describes our method, so that in your next project you can write more reliable software with less effort.

    • Talk

      How to make your life easier when developing a client application in modern C++: an example of VK Calls

      Room 1
      Language -RU

      Developing the VK Calls desktop application was a real challenge. The team set several goals at once: to provide native builds for Windows, macOS, and Linux, to achieve maximum performance and quality, while removing the limit on the number of participants in the call. And to do all this in the shortest possible time. To do this, we had to think in advance how to cut some of the sharp corners that inevitably arise during the development in C++.

  • Производительность

    • Talk

      Practices for performance optimization with ClickHouse as an example

      Language -RU

      Maxim will talk about how performance is optimized in ClickHouse: performance tests and practices. He will talk about the infrastructure used to analyze query performance and find places that should be optimized. Discusses the choice of data structure, libraries, writing specializations.

    • Talk

      GPGPU decompiler talk

      Language -RU

      Mikhail and Kristina will tell you what to do after the developer has applied all the classical optimizations, which are described in the GPGPU courses. The talk also describes several algorithms used in decompilers and their adaptation to the graphic card architecture.

    • Talk

      File system and network stacks in Userland: why we must use them in 2022

      Room 1
      Language -RU

      IO-performance becomes increasingly important:

      • we have more and more cores,
      • PCIe Gen3 is finally turning into PCIe Gen5 and for now it stops being the bottleneck,
      • NVMe drives and 200G NICs means the network is faster and fast.

      Stacks that were OK-ish in the past are not OK now. You can't saturate the HW IO capacity while doing context switches, wakeups in the kernel etc. So what before was an "option" is actually a MUST HAVE for most of the high performance applications.

    • Talk

      What a C++ developer should keep in mind about processor architecture

      Room 1
      Language -RU

      At high loads, code efficiency may be a much better investment than buying new resources. Let's look into the "under the hood" of the processor. We will see what the cache, the pipeline, the vector instructions are for, and also see what else is there. We will look at the differences between x86 and ARM. We will discuss what code should be able to get the most out of the processor and not wait for hundreds of cycles for that byte to be loaded.

  • Tooling

    • Talk

      Intermodule analysis of C++ projects

      Language -RU

      In the first part of the talk, the speaker will discuss the use of cross-module analysis in well-known compilers and how it relates to Linkage Time Optimizations (LTO). The second part will cover the technical details of the system implementation. The speaker will talk about the problems and solutions his team has encountered and share ideas about some of the optimizations that can be made.

    • Talk

      Nobody Can Program Correctly: Lessons from 20 Years of Debugging C++ Code

      Language -EN

      In this talk, the speaker would like to take you through the entire debugging process, starting with a program that crashes. What do we do next? Which questions do we have to ask? What information do we need? What can we do to find the cause of the crash? Which tools can help us in this quest? And last but not least, what can we do to make sure this bug never happens again? 

    • Talk

      Decorating the hammer: how to automate problem parsing in the debugger

      Language -RU

      We show approaches to automating the analysis of problems on the example of the script library, published by the speaker in Open Source. It is intended to be used with WinDBG and GDB and helps in automating a number of routine tasks that appear when analyzing the causes of program crash both during live debugging and working with memory dumps.

    • Talk

      C++ compiler and optimizations for open RISC-V instruction set architecture

      Room 3
      Language -RU

      Sergey will talk about C/C++ compiler and application optimization for the open and free RISC-V architecture, the new standard changing the microprocessor world. You will learn about the history of the architecture, current state and plans in the international RISC-V community, architecture support in development tools, source code and compiler optimizations and transformations, performance hints and command system extensions.

  • Software Design

  • Системное программирование

    • Talk

      Go and the world of system programming

      Language -RU

      The talk discusses whether Go can be considered a "system PL" and what this means in general. There will be a chance to write a couple of simple applications and libraries which are usually written in "system PLs" and see how much you have to pay for that.

    • Talk

      Naked Rust

      Language -RU

      Roman will show the inner workings of the std/core language Rust, primitives and approaches that can be applied both to low-level programming (Linux kernel module, for microcontrollers) and high-level programming, including multithreading. 

  • Возможности новых стандартов

    • Talk

      Understanding C++ coroutines by example, part 2: generators

      Language -RU

      Coroutines are a powerful tool added to C++20. This time we will concentrate on the generators part of the coroutines. We'll get up to speed with how coroutines work under the hood, and then learn about the co_yield keyword, and how simple generators and asynchronous generators conceptually work.

    • Talk

      Reflection TS: The Future of Reflection in C++

      Language -RU

      The talk introduces the changes that have occurred with Reflection TS: the new features and limitations that this specification brings. There will also be an opportunity to try out the new features and discuss what is still missing.

  • Security

    • Talk

      Secure By Design in C++

      Language -RU

      An overview of the "secure by design" approach in which security is achieved by initially designing correctly. Secure by design patterns and examples of their use in C++ will be discussed.

    • Talk

      Decorating the hammer: how to automate problem parsing in the debugger

      Language -RU

      We show approaches to automating the analysis of problems on the example of the script library, published by the speaker in Open Source. It is intended to be used with WinDBG and GDB and helps in automating a number of routine tasks that appear when analyzing the causes of program crash both during live debugging and working with memory dumps.

  • ML

    • Main studio

      Conversation in the studio about C++ in ML

      Language -RU

      C++ is written in very different fields - with different requirements, peculiarities, and complexities. And if you're not involved in ML, you may have a rather vague idea of how the developers' work there is different from yours. Maybe you should drop everything and go there. Or on the contrary, it's not your thing at all, and in general, C++ in this area is not long left?

      Experienced people can help you figure this out. Therefore, at the conference we will talk about the peculiarities of this sphere with those who have spent more than a year in it: Ashot Vardanian, Stanislov Kirillov. And Pavel Filonov will help to lead this conversation.

      • Ashot Vardanian
      • Stanislav Kirillov
      • Yulia Golovchanskaya
      • Pavel Filonov
  • ILP

    • Talk

      What a C++ developer should keep in mind about processor architecture

      Room 1
      Language -RU

      At high loads, code efficiency may be a much better investment than buying new resources. Let's look into the "under the hood" of the processor. We will see what the cache, the pipeline, the vector instructions are for, and also see what else is there. We will look at the differences between x86 and ARM. We will discuss what code should be able to get the most out of the processor and not wait for hundreds of cycles for that byte to be loaded.

  • Метапрограммирование

    • Talk

      Declarative metaprogramming: processing lists at compilation time

      Language -RU

      The template mechanism in C++ allows you to build a library of rather complex algorithms for list processing, including element-by-element transformation, filtering, searching and sorting. The declarative style is suitable for implementing such algorithms. The method of declarative metaprogramming is demonstrated on the example of list processing.