C++ and other lectures
9.61K subscribers
50 photos
3 files
272 links
Учебный канал в Телеграм: тут будут анонсы и ссылки на лекции и стримы.

Написать автору: @Tilir

Boosty автора: https://boosty.to/cpp_lects_rus
Download Telegram
Опубликовали наше с Юлием Тарасовым выступление по корутинным оптимизациям в LLVM. Всегда интересно заглянуть как это там под капотом. Прекрасный способ провести пятничный вечер, я считаю ))

https://youtu.be/UH2Y1I2HuBE

Timeline:
01:00 Intro: Routine, Subroutine
05:36 Thread Routines and Coroutines
10:20 Stackfull and Stackless Coroutines
14:11 C++ Coroutines Flexibility And Thread Independence
17:10 What Compiler Shall Do?
20:50 Yuly Appears: Clang/LLVM Coroutines
25:40 How C++ Coroutines Transformed in LLVM
31:25 How To Help Compiler With Elide?
36:13 Wrap-up and Q&A

#conference
🔥53👍158❤‍🔥3
Выложил последнюю лекцию первой части англоязычного магистерского курса.

https://youtu.be/ME1PJmOSMYg

Эта лекция продолжает разговор о диапазонах. Мы посмотрим как устроены изнутри стандартные отображения и на какие компромиссы приходится идти при работе с ними. Также мы углубимся в pull model и разберём некоторые её неочевидные последствия. Далее нас ждёт главное преимущество диапазонов -- возможность их бесшовной адаптации и склеивания с помощью специальных функцие-подобных объектов -- Ниблоидов. И в самом конце я покажу какие ошибки могут возникать при работе с диапазонами и как выглядит борьба с этими ошибками.

00:00 Intro: Views as Projections
05:52 Inside transform_view and More Dangling
12:27 Hesitant Behavior
16:41 Inside filter_view and Caching
22:48 Quirks of the Pull Model
30:25 Range Adaptation and Niebloids
37:20 Case Study: Trimming a String
46:55 CRTP Base for Adaptors
52:42 Bug Hunt: Dealing with Ranges in Practice
01:04:45 Lessons Learned and Bibliography

#cpp_graduate
🔥5416👍9
Из докладов System Level Meetup могу также порекомендовать доклад Насти Черниковой (вы её уже видели на этом канале) про чекеры в clang-tidy.

https://www.youtube.com/watch?v=UCc2xtyMhuo

00:00 Intro: что делать с UB?
06:50 Статический анализ.
11:48 Как выглядит AST и что такое матчеры.
18:10 Пишем собственный чекер.
25:38 Ограничения статического анализа и выводы
30:05 Ответы на вопросы.

Он частично развивает и дополняет мою уже довольно древнюю лекцию про clang internals, раскрывая её с несколько более практичной стороны.

P. S. Хотя бы полистайте по таймстемпам посмотрите разных драконов. Мне кажется получилось гениально (дракон официальный маскот clang).

#conference
🔥44👍147🍌3💅2🦄2
Пост итогов 2025-го года.

Новый год уже стучится в двери. В этом посте я подведу свои итоги. Призываю всех в комментариях делиться своими ощущениями от года и нашего канала. Или просто поздравлять меня и друг друга. Особенно круто поздравлять непосредственно в новогоднюю ночь. В эту новогоднюю ночь я буду далеко от цивилизации (в лесу) и присоединюсь к вашим поздравлениям в лучшем случае утром. И, поскольку у всех жителей нашей страны от Владивостока до Калининграда новогодняя ночь наступает по разному, я выложил этот пост чуточку заранее.

К слову о нашей необъятной стране -- за этот год я основательно её объездил (благодаря вышедшей книге). Встречи с читателями были мной проведены в Санкт-Петербурге, Москве, Новосибирске, Минске, Нижнем Новгороде, Ростове на Дону, Йошкар Оле, Великом Новгороде, Екатеринбурге, Казани, и в конце года ещё разок в Москве. Суммарно на встречах со мной и на гостевых лекциях побывало человек 350-400. Для меня это был важный опыт и я наконец-то посмотрел Россию. Россия замечательная страна, если вы не знали. У меня немного не сложилось с Владивостоком, с Магасом и с Нижним Тагилом, во все три меня в общем звали но я не доехал по разным причинам. Может быть ещё сложится.

Среди докладов этого года самые важные это доклад про модули на C++ Russia и доклад на SnowOne про ограничения статических компиляторов. Также много позитивных отзывов собрали моя лекция про коэволюцию языков, компиляторов и инструментов разработки в iSpring и про распределение регистров в ИТМО.

Как обычно, я продолжаю выводить в свет своих учеников и коллег. Среди тех, кого хочется отметить, конечно, Настя Черникова (со мной и без меня и ещё разок без меня), Илья Андреев, Владислав Белов, Никита Руденко, Илья Гаврилин и Юлий Тарасов.

Гигантским достижением этого года я считаю курс на Stepik по RISC-V, сделанный совместно с Марком Гончаровым и Настей Черниковой. Он взят на вооружение в пяти университетах, и на него уже более тысячи регистраций.

Своим чередом развивался мой любимый проект генератора llvm-snippy. Я прочитал пару докладов (например этот), мы выпустили опен-сорс релиз и сделали документацию на github pages. Генератор был принят в симулятор spike (он же riscv-isa-sim) для тестирования модели случайными тестами.

Главной авантюрой этого года я считаю начало выкладки англоязычного курса. Я не был уверен, что из этого вообще получится что-то хорошее. Отмечу, что влияние этой выкладки на мой Linkedin было колоссальным: моя профессиональная сеть выросла до 2.4к (+1.5к) за счёт добавляющихся в друзья разработчиков из дружественных стран. Теперь, если что, я точно найду себе работу. По крайней мере -- в Индии. По просмотрам пока не так радужно, но лиха беда начало. Громадная благодарность Владиславу Белову, Насте Черниковой и Даниилу Авдееву за постоянную поддержку. Без них я бы не справился.

В целом, мой телеграм-канал вырос до более чем 9к человек (+2.5к), а мой youtube-канал до более чем 29к (+5к). Хочется выразить огромную благодарность Владиславу Белову и Максиму Москальцу за неусыпную модерацию нашего сообщества.

Планы на следующий год пока не ясны -- у меня с ними традиционно сложно. Но, возможно, в начале года что-то расскажу насчёт книги по C++, которую от меня все так долго ждали. Концепция у меня уже есть, кое-что уже готово. Может быть, я даже попрошу вашей помощи.

Я хотел бы пожелать всем моим уважаемым друзьям на этом канале (всем более чем девяти тысячам), чтобы в наступающем году у вас было много амбициозных планов, много мотивации и сил для их претворения и чтобы не было проблем с внешними обстоятельствами.

Всех с наступающим Новым Годом!

P. S. Бонусом -- мнение микроволновки о моих итогах года. В комментариях можете пошарить мнение вашего пылесоса о вас.

#official #happynewyear
181🎄73🔥19🍾16👏53👍3🙏2
draft-26-01-11.pdf
3.2 MB
Всем привет! Хотелось бы начать новый год с какого-то большого и важного анонса.

Многие спрашивали, будет ли у меня всё-таки книга по C++. Мне бы и самому хотелось это знать. Поэтому я решил выложить драфт -- первые три главы потенциальной книги. Объём -- примерно 20 страниц на главу, плюс ещё страниц 10–15 константного оверхеда, потому что выкладываю одним куском вместе с обложкой. К слову, обложкой искренне горжусь, очень концептуальная, очень.

Подчеркну: это демо-версия потенциальной книги. Я пока даже не очень уверен в её составе на уровне крупных разделов. И уж точно у меня пока нет контракта с издательством и всего такого.

Почитайте и напишите в комментариях, что думаете. А я через некоторое время вернусь с информацией (и опросом) на тему того, как вы сможете помочь этой книге состояться — если вам её идея покажется интересной. По первым трём главам, мне кажется, уже можно сделать какие-то выводы.

#official #cpp_graduate #cpp_postgraduate
🔥32245👍30👏7❤‍🔥3🙏3🤔2
Всем привет. Немного дружеского пиара.

Открыт набор на бесплатные курсы от компании Yadro. Подходит для студентов 2 курса и старше. Можно проходить онлайн, можно ходить в офис Yadro и проходить очно.

Направления:
* Программирование микроконтроллеров
* Верификация систем на кристалле
* DevOps

И всякое другое.

https://edu.yadro.com/practical-courses/#admission

Заявки принимаются до 2 февраля.

#official
🔥7916👍72
Всем привет. Хочется попросить совета у моих добрых подписчиков. Ниже будет небольшой опрос, который может что-то поменять в формате канала. Но сначала небольшое введение.

Как многие из вас знают я недавно написал книжку по компиляторам, которая неплохо продалась. Собственно тираж 5000 почти улетел, что для такого рода литературы -- массовый успех на уровне чего-то невероятного. В целом опыт был интересный. И я ещё и поездил посмотрел Россию, чего вряд ли бы сделал без такого повода как встречи с читателями.

Но с коммерческой точки зрения... в общем это было худшее в моей жизни вложение усилий. Автор получает процент от отпускной цены издательства (а не от цены в магазине). И эта цена не слишком высока. И этот процент не очень велик. В моём случае каждая книга принесла мне невероятные 36 рублей до уплаты налогов. Можете умножить и получить что итог был куда меньше чем обычная месячная зарплата. Я бы сказал ближе к недельной.

Конечно, чтобы писать книгу по C++ я бы хотел продумать как именно мои усилия отобьются. И вот тут мне и нужна ваша помощь.

Я вижу три основных варианта.

Первый вариант -- чистый опен-сорс. Открытый гитхаб, бесплатная выкачка и т.д. Я так писал первый вариант этой книги. Как вы можете видеть -- я его с 2010-го не дописал, увы. Кроме того это (почти) исключает появление артефакта на бумаге. Ну кроме случаев когда кто-то сам себе распечатает на офисном принтере, что ностальгически, но.

Второй вариант -- поискать издательство побогаче или получше договориться с этим. Вариант мало реальный. Ценник такой скромный потому что бумажная книга, логистика и всё остальное стоят денег и потому что издательство несёт риски. Например, в случае с моей книгой они за свой счёт перепечатали бракованный тираж и всё такое.

Третий вариант -- разный приятный краудфандинг. Условные бусти, спонср, патреон и платник в тг. Возможны разные модели: от разового сбора средств и до регулярного подписного с разными уровнями. Мне нравится журнальный формат -- подписка и поглавная выкладка. Я мог бы даже использовать его не только для выкладки книги. Если всё хорошо пойдёт туда можно размещать всякое (премиальные лекции, стримы, реакты на чужие видео, ну вы понимаете -- подзамок многое стерпит). Вариант тоже не идеальный -- бумажная версия при нём будет прямо очень затруднена. Но, возможно, отобьётся всё очень быстро.

Мне очень интересно что думают мои уважаемые подписчики на эту тему. Собственно в комментариях к этому посту вы можете предложить свой вариант. И я сейчас запилю опрос, там можно будет проголосовать.

#official
🔥5713👍76😁2
Немного подзамочного контента для моих уважаемых подписчиков.

Ни для кого не секрет, что мой магистерский курс этого года я записывал на английском языке. Меньше людей знает, что исходно он читался на русском языке, на английский я (нейронкой) до лекции переводил только слайды. Далее я брал другую нейронку, распознавал свой голос с записи лекции, грузил вместе со слайдами в третью нейронку и просил сделать мне подстрочник на английском и с этого подстрочника на английском уже и читал.

И конечно я просил убрать из этого подстрочника все шутейки, хиханьки, хаханьки, общение с аудиторией и всё остальное. В процессе ещё и правил все ошибки, которые находили на лекциях. Поэтому мой магистерский на английском немного высушен.

Чисто для моей аудитории, готовой, прямо скажем, на многое, я решил выложить ссылки на магистерский курс этого года на русском. Предупреждаю: это очень фанатский контент. Не надо даже пробовать его потреблять, если вы привыкли к той лакированной подаче, которую я считаю нормой для своего ютуба.

Have fun.

Лекция 1. Душа C++
Лекция 2. Строки
Лекция 3. Строительные блоки обобщённого программирования
Лекция 4. Разрешение имён
Лекция 5. Вывод типов
Лекция 6. Инстанцирование шаблонов
Лекция 7. Модули часть 1. История и ODR
Лекция 8. Модули часть 2. Собственно модули
Лекция 9. SFINAE
Лекция 10. Constexpr часть 1. Основы и пещера джина
Лекция 11. Constexpr часть 2. Кошкодевочки в пещере джина
Лекция 12. Лямбды: функциональная подсистема
Лекция 13. Ranges часть 1. Основные концепции
Лекция 14. Ranges часть 2. Проблемы и ловля багов

Да, все ссылки на rutube, я стримил туда.

#cpp_postgraduate
🔥33180👍35🥰7❤‍🔥5😁4🥴4🙏3🕊1🍓1🤓1
Итак, в опросе содержательно проголосовали более 1800 человек (и ещё почти 400 просто сделали тыц). Из содержательно проголосовавших большинство (почти 900 человек) проголосовало за бусти.

Спасибо за такую поддержку, я сделал.

https://boosty.to/cpp_lects_rus

Посты с выкладкой книжки можно купить без подписки, выкладка по несколько глав, цена 50 рублей за главу. То есть первые три за 150. Имеет смысл купить даже первые три т.к. я буду по мере написания книги модифицировать посты, внося туда изменения и фиксы, а доступ у вас останется, я проверил.

Конечно подписчикам даже минимального тира все эти посты будут доступны бесплатно. Вряд ли вы сильно сэкономите, минимальный тир стоит примерно как две главы в месяц а я вряд ли буду столько писать. Так что будем считать что подписки -- просто для поддержки канала.

Ну и теперь у всех есть возможность поддержать канал.

По мере набора подписчиков, буду дополнять контент. Например устраивать на бусти стримы с такими своего рода онлайн встречами с читателями. Ну и вообще что-нибудь придумаю.

UPD: ещё ссылочку для донатов сделал: https://boosty.to/cpp_lects_rus/donate

#official #boosty
165🔥65👏19👍13👎5🙏4🏆3💩2🤔1
Немного о текущих событиях.

Прочитал гостевую лекцию в ГУП Мосгортранс по новым механизмам рекламации памяти в C++26 (rcu и hazard pointers).

Ребята делают многопоточный беспилотный трамвай на C++. Уже страшно? Я вам больше скажу -- такие трамваи уже вышли на улицы Москвы.

Было классно, спасибо всем кто пришёл. Не знаю велась ли запись, но если нет, то к лучшему, так как лекция была очень черновая. Я её ещё раза два-три прочитаю, а потом выложу для своего канала (ну и часть материала пойдёт в новый магистерский курс).

Это была первая моя лекция, где присутствующим официально принесли попкорн -- на каждом столе стоит ваза с сухофруктами и орешками. Офис Мосгортранса -- в целом моё почтение, широко живут люди.

P. S. Меня можно пригласить в вашу компанию с гостевой лекцией или на встречу с читателями или на то и другое.

#author_event
👍125🔥5024🤗14😱7
Неделя на бусти: итоги.

Прошла неделя с тех пор как я создал аккаунт https://boosty.to/cpp_lects_rus для поддержки моей деятельности.

1. Спасибо всем кто на меня подписался, особенно за подписки старших уровней. По итогам недели у меня 61 платный подписчик (из них 44 -- младших уровней, студенты и джуны) и 48 покупок поста с первыми тремя главами без подписки. Немного, но лиха беда начало.

2. Обновил (мелкий багфикс и вёрстка плюс индекс и литература) пост с первыми тремя главами: https://boosty.to/cpp_lects_rus/posts/5029d95f-831c-4262-9002-19ce8ea5208a кто купил пост или у кого есть подписка можете перескачать.

3. Завёл принципальский чатик (для людей с уровнем подписки principal и выше) где уже обсуждаем главу 4. Главы 5 и 6 продвигаются своим чередом.

Ну и я теперь официально могу сказать, что мотивации писать книгу у меня резко прибавилось.

В следующую субботу 7 февраля, в 21-00 по Москве, я сделаю виртуальную встречу с подписчиками в виде классического стрима на boosty с вопросами из donationalerts. Стрим будет открыт подпиcчикам от студента и выше. Заодно разберусь как это делается. Обычные оффлайн-встречи проходили отлично и беседа всегда была интересной. Может быть формат стрима также всем зайдёт (и к тому же его можно будет пересматривать). Ну и 128 рублей за билет -- недорого. Минимум за платный вопрос сделаю 512, но если платных вопросов не будет, просто поотвечаю на вопросы из чата трансляции. Сразу предупрежу -- никакой голосовой озвучки донатов не будет.

Можете кстати заранее накидать вопросов: https://www.donationalerts.com/r/cpp_lects_rus

#official #boosty
👍85🔥3615❤‍🔥4🤨4🙏3
Провёл стрим для подписчиков на boosty.

Мне понравилось, в целом получилась полноценная виртуальная встреча с читателями. Людям вроде бы тоже зашло, даже какие-то донаты были.

Сервис разрешил после завершения открыть запись для всех желающих. Какое-то время побудет открытой, потом спрячу под минимальный (студенческий) доступ.

https://boosty.to/cpp_lects_rus/posts/ce8d4c28-d88f-4054-bce2-d652893a7670

Have fun.

#official #author_event
67🔥41😎14👍5
Продолжаю хвастаться своими студентами и коллегами.

https://www.youtube.com/watch?v=XrnHwLWmrWQ

Выложили доклад Юлия Тарасова на sysconf. Юлия вы его уже видели у меня на канале -- мы с ним докладывали про корутинные оптимизации в компиляторах. Здесь он выступает с докладом про поддержку аппаратных точек останова в отладчиках. К слову, Юлий является автором первого прототипа реализации debug spec 1.0 для RISC-V то есть тема для него знакомая. Ну и доклад интересный.

00:50 Начало
02:07 Типичные подходы к отладке: break и step
07:02 Watchpoints, устройство и ограничения software watchpoints
13:45 Аппаратные watchpoints: идея и бенчмарк-мотивация
20:04 Реализация аппаратных watchpoints в отладчиках и операционных системах: ptrace API
27:30 Что скрывается за ptrace?
33:20 Интегрируем всё это в отладчик (gdb native)
35:20 Вопросы

Очень рекомендую особенно тем кто хотел больше информации о том как вообще работают отладчики.

#conference
👍5623🔥10
Всем привет. Завел приватный канал в мессенджере Max. Буду его использовать как дубль дискорда для выкладки ссылок на лекционные стримы.

Можно присоединяться: https://max.ru/join/tUgCa6XnmjppjHzWO1ufz59pOE7wlIkYpqHnxtuPrHs

Те, кто пишет, что наличие моего канала в Max -- это поддержка усилий властей РФ по блокированию Telegram, на мой взгляд, открывают простор для обвинений такого рода по любым поводам. Такую логику при желании можно распространить на что угодно. Например, сказать, что наличие у меня канала на YouTube -- это поддержка усилий этой платформы по блокированию русскоязычных военблогеров. Или что наличие у меня канала в Discord -- это поддержка политики руководства Discord по продвижению diversity.

Наличие нейтрального образовательного канала на любой платформе не является автоматически согласием со всеми решениями администрации этой платформы и аффилированных с ней инстанций. Людей, которые приходят с подобными предъявами (с какой бы стороны политического спектра они ни находились), просто не стоит слушать. И уж конечно, в своих решениях о развитии своих соцсетей я не собираюсь учитывать мнение крикливых меньшинств.

Как только у меня будет возможность завести публичный канал в Max с комментариями и прочим, я, разумеется, сделаю это.

#official
👎281👍265💩79🤡7636🫡25🥴11🤔8🗿8😁7😭5
Я забыл написать на прошлой неделе, что всё-таки успел подать заявку на C++Russia этого года с увлекательным докладом о семантических процессах, уже третьим в серии. На этот раз будем говорить про вывод типов (в сочетании с перегрузкой).

В связи с этим могу предложить аудитории небольшую проблемку. Да я знаю что не пятница, но в пятницу я буду в самолёте в Йошкар-Олу, где я буду в субботу читать лекцию по современным методам рекламации памяти в iSpring.

Так что давайте скажем, что среда это маленькая пятница.

template <auto f = []{}> 
struct S {};
S x, y;

static_assert(std::is_same_v<decltype(x), decltype(y)>);

https://godbolt.org/z/qEehP4aMv

Clang отказывается компилировать declaration.
GCC компилирует, но проваливает static_assert.

На чьей вы стороне?

UPD: ожидаются ссылки на стандарт.

#questions
42👍17😁11🔥5❤‍🔥1🤮1🙏1
Несколько объявлений.

(1)

Поскольку на прошлом стриме был запрос на обзор последнего CppCon, начну потихоньку публиковать на boosty по три доклада.

Первый пост (всего будет 5-6).

https://boosty.to/cpp_lects_rus/posts/23221965-bb69-423e-85e8-f01156805405?share=post_link

Внутри скриншоты, таймлайны и какие-то мои мысли насчёт того почему доклад удачный или почему нет.

Первая тройка -- абсолютный, но при этом и очевидный must see в моём понимании. Своего рода консервативная инвестиция вашего времени. Следующая тройка будет более внезапной.

Доступ решил выставить джуновый т.к. студенты должны смотреть скорее лекции чем доклады ))

(2)

Очередной стрим для подписчиков проведу 1-го марта в 21 час по Москве. Прошлый стрим можно посмотреть тут: https://t.me/cpp_lects_rus/338

Первые минут двадцать поболтаю про то как движется прогресс по книге по C++ (главы 4, 5 и 6) и про внезапный соевый протест, который тут недавно случился у меня на канале. Также расскажу про свои планы на конференции этого года: C++Russia, PHDays, Zero Cost. Дальше буду отвечать на вопросы.

Ссылку на стрим заброшу в чат в воскресенье днём. Стрим будет по студенческому доступу. Вопросы можно накидывать уже сейчас: https://www.donationalerts.com/r/cpp_lects_rus

(3)

Выкладку лекций магистерского курса на английском начну в эту субботу 28 февраля. Первая появится онлайн в 7 вечера по Москве.

#official #boosty
🔥4424👍14👎3❤‍🔥2💩2😁1🤮1🙏1
Всем привет. Сегодняшний пятничный чилаут будет посвящён выводу типов для множеств перегрузок (да, продолжаю готовиться к C++ Russia).

В принципе с этим нет проблем, особенно если мы подсказываем что делать.

int bar(int) { return 0; }
int bar(double) { return 1; }

template <typename T>
int foo(T t, int (*)(T)) { return bar(t); }

foo(42, &bar); // OK, T -> int


https://godbolt.org/z/fT1oondqs

Но это в принципе, а в общем случае, что будет, если мы подскажем не всё?

int bar(int, char) { return 0; }
int bar(double, long) { return 1; }

template <typename T, typename U>
int foo(T t, int (*)(T, U)) { return bar(t, 0); }

foo(42, &bar); // OK?


https://godbolt.org/z/K5qjYW4d1

Тут мнения gcc и clang расходятся. Один компилятор (gcc) считает, что ему подсказали достаточно. Другой (clang) говорит "candidate template ignored: couldn't infer template argument 'U'".

А вы что скажете? Как обычно ожидаются ссылки на стандарт.

#questions
🤔3010👍5❤‍🔥1🤮1
Первая лекция второй части моего англоязычного курса по С++ доступна на Youtube.

https://www.youtube.com/watch?v=Q3ytjLP5NyA

Эта лекция начинает глубокое погружение в аллокаторы C++. Мы начнём с глобального (C-style) выделения памяти и исторической мотивации появления пользовательских аллокаторов в раннем C++. Затем разберём две фундаментальные проблемы их дизайна -- взаимозаменяемость и переход между разными типами аллокаторов. Через серию практических примеров -- включая freelist allocator -- мы исследуем, что именно идет не так на практике, почему дизайн аллокаторов оказывается неожиданно тонким и сложным, и как разделяемое состояние и правила продвижения аллокаторов усложняют реализацию контейнеров. Далее мы рассмотрим идею отделения стратегии выделения памяти от самих контейнеров, закладывая основу arena-based подхода, и проанализируем проблемы управления локальными аллокаторами внутри контейнеров. Эти проблемы впоследствии мотивировали изменения стандарта, но это мы оставим на следующую лекцию.

Timeline:
00:00 Начало. Пара слов про глобальные (C-style) аллокаторы.
04:51 Мотивация аллокаторов в раннем C++
09:49 Две важные проблемы: Interchangability и Rebinding
14:43 Logging Allocator Case Study
19:25 Weasel Words and C++11 Allocators Motivation
28:10 Case Study: Freelist Allocator и его проблемы
40:04 Разбор и починка причин проблем: Shared Freelist
52:10 Separating Resource: основы Arena-Based подхода
55:00 Case Study: Small Vector
01:01:38 Allocator Instances Hell: Halpern's Case and Scoped Allocators
01:08:26 Проблемы классических аллокаторов, тизер на следующую лекцию и список литературы.

#cpp_postgraduate
🔥35👍2114🤮1
Провёл вторую встречу с подписчиками.

https://boosty.to/cpp_lects_rus/posts/949347c9-27ef-405a-8452-205954a7e25a

Получилось всё так же тепло и лампово, как мне кажется. Что логично, учитывая лимитированность аудитории платными подписчиками. Решил также оставить запись пока в открытом доступе.

Notable timesteps:
12:15 Одна забавная деталь в примере на вывод типов из этого поста: https://t.me/cpp_lects_rus/343
48:22 Новый алерт в виде поняши.
01:18:35 Пара официальных заявлений насчёт Max и всего такого.
01:51:13 Разбор доклада Сергея Чеботарёва про модули. Кстати вот сам доклад: https://www.youtube.com/watch?v=09jrHMzFjCw

#official #author_event
👍3014🔥9🙏2🤮1
Выложил вторую часть лекции по аллокаторам на английском языке.

https://youtu.be/naiLRcS3chU

Эта лекция продолжает наше обсуждение аллокаторов в C++. Мы начнём с идеи memory_resource и внезапно выясним, что полиморфизм времени выполнения оказывается неожиданно удобным инструментом для его реализации. Затем мы разбираем стандартные ресурсы, поставляемые библиотекой — такие как monotonic и multipool resources — и посмотрим, как они используются через polymorphic_allocator и контейнеры семейства PMR. Далее мы реализуем простой тестовый memory resource, чтобы посмотреть, как именно проходят выделения памяти через PMR и что такое стандартный ресурс по умолчанию. После этого, на примере известного примера Пабло Халперна с односвязным списком, мы разберём, как аллокаторы взаимодействуют с дизайном контейнеров, включая вопросы big-five и правила распространения аллокаторов. В конце мы проведём сравнение стоимости разработки при различных подходах к абстракции аллокатора.

00:00 Introduction: runtime polymorphism for memory_resource
06:15 Standard resources: monotonic and multipool
12:15 Polymorphic allocator and PMR containers
19:16 Test memory_resource: PMR and the default resource
25:52 Halpern example: slist and its design details
31:40 Allocators and the Big Five for slist
40:22 Exception safety strikes back
46:00 Preserving noexcept in the move constructor
53:06 Why are we not afraid of virtual calls?
56:53 Halpern's table, final thoughts, and bibliography

#cpp_postgraduate
🔥3310👍6🥰2🤮2