Библиотека C/C++ разработчика | cpp, boost, qt
19.3K subscribers
2.06K photos
67 videos
16 files
4.35K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17

#WXSSA
Download Telegram
📌 Хранение float в std::map: правильный способ

std::map требует strict weak ordering. float нарушает его при наличии NaN. std::strong_order спасает.

#include <compare>
#include <map>
#include <iostream>

struct FloatCompare {
bool operator()(double a, double b) const {
// strong_order — total order, строго соответствует требованиям map
return std::strong_order(a, b) == std::strong_ordering::less;
}
};

int main() {
std::map<double, std::string, FloatCompare> m;

m[1.0] = "one";
m[-0.0] = "negative zero";
m[+0.0] = "positive zero"; // отдельный ключ! (strong_order различает)
m[std::numeric_limits<double>::quiet_NaN()] = "nan";
m[std::numeric_limits<double>::infinity()] = "inf";

// Все 5 ключей уникальны и упорядочены детерминированно
std::cout << m.size(); // 5
}


📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#константная_правильность
👍13
📄 Для тех, кто остался на Windows

Winslop — утилита с одной задачей: убрать из Windows 11 всё лишнее.

Никакого Copilot в трее, никакой телеметрии, никаких виджетов и рекламы в меню Пуск. Только то, что вы сами разрешили оставить.

• показывает, что именно будет изменено
• ничего не запускает автоматически
• всё обратимо
• никакого облака — всё локально

👉 Чистим винду

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека Go-разработчика

#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
🛠 Clang 22.1.0: что сломали, что починили и зачем обновляться

Вышел Clang 22.1.0 — и там не только фиксы, но и несколько изменений, которые могут сломать существующие сборки.

⚡️ Reduced BMI по умолчанию (C++20 modules): режим Reduced Binary Module Interface теперь включён по умолчанию. Если ваша билд-система не поддерживает двухфазную компиляцию с Reduced BMI — ждите регрессий.

⚡️ ABI-изменение для MSVC: scalar deleting destructor: Clang 22 теперь корректно вызывает scalar deleting destructor вместо complete object destructor + global delete. Если у вас смешаны бинарники, собранные Clang 21 и Clang 22, — возможна порча памяти. Откат через -fclang-abi-compat=21.

⚡️ -Wincompatible-pointer-types стал ошибкой: раньше это было предупреждение, теперь — ошибка по умолчанию. Понижается обратно через -Wno-error=incompatible-pointer-types.

⚡️ __builtin_dedup_pack: новый builtin для дедупликации типов в parameter pack. Удобно при нормализации type lists в метапрограммировании — TypeList<__builtin_dedup_pack<int, double, int, char>...> вернёт TypeList<int, double, char>.

⚡️ UBSan trap-reasons в debug info: трапы UBSan теперь пишут причину прямо в DWARF — LLDB сможет показать «signed integer addition overflow in 'a + b'» вместо немого падения. Отключается через -fno-sanitize-debug-trap-reasons.

⚡️ Thread Safety Analysis вышел из беты: ACQUIRED_BEFORE и ACQUIRED_AFTER больше не требуют -Wthread-safety-beta.


🔗 Читать Release Notes

✏️ А вы уже обожглись на ABI-изменениях между версиями Clang?

📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3🥱1
😎 Топ-вакансий для C++ разработчиков за неделю

Developer C++ (macOS) — Удалёнка

Разработчик C++ / Senior Security Engineer — от 400 000 ₽ Удалёнка

Senior C Developer — от 350 000 ₽ Удалёнка

✍️ Еще больше топовых вакансий — в нашем канале C++ jobs

📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#буст
👍2😁1
За год мы провели три потока курса по ИИ-агентам, а теперь запускаем масштабное обновление!

В новом, четвёртом потоке мы учли все пожелания студентов, добавили большой блок про AgentOps и сместили фокус с базовых концепций на суровый инжиниринг. Собрать простую цепочку вызовов легко, а вот выжать перфоманс, заставить всё работать локально и без утечек бюджета в проде — задача со звёздочкой.

В программе:

— изоляция выполнения агентов и интеграции по стандарту MCP;
— профессиональная оркестрация и механизмы time-travel;
— продвинутый RAG для промышленной эксплуатации;
— контроль экономики: оптимизация вычислительных ресурсов и токенов;
— развёртывание локальных опенсорс-моделей в закрытых контурах (152-ФЗ).

В честь старта продаж действует спецпредложение: 3 курса по цене 1 (два дополнительных курса в подарок).

Доступ к материалам для предварительной подготовки откроется сразу после оплаты.

По промокоду Agent забирайте скидку 10 000 ₽ (89 000 ₽ вместо 99 000 ₽). Успейте занять место до 28 февраля!

👉 Присоединиться к четвёртому потоку и вывести агентов в прод
😁2
🎯 std::move_only_function: зачем нам ещё один тип функций?

std::function — хороший инструмент. Но есть одна проблема: он требует копируемости. А что, если твой callable некопируемый? В C++23 есть решение — std::move_only_function.

Представь: ты хочешь передать лямбду, которая захватывает std::unique_ptr. С std::function — UB или не скомпилируется. С std::move_only_function — просто работает.

// C++23
#include <functional>
#include <memory>

auto make_task(std::unique_ptr<int> data) {
// Работает! std::function здесь не справится
return std::move_only_function<void()>{
[d = std::move(data)]() {
std::println("Value: {}", *d);
}
};
}


📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#константная_правильность
👍61👾1
🐸 Подборка вакансий для C++-разработчиков за неделю

Разработчик C++ / Senior Security Engineer — от 400 000 ₽ Удалёнка

Developer C++ (macOS) — Удалёнка

Senior C Developer — от 350 000 ₽ Удалёнка

Senior C++ Developer — от 280 000 ₽ Офис/гибрид (Москва, Краснодар, Нижний Новгород, Новосибирск)

C++ разработчик/CV-инженер — Удалёнка

📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#вакансии
👍1😁1
Последний шанс: 3 курса по цене 1 и запуск AI-агентов в продакшн

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

В обновлённой программе фокус смещён на жёсткий инжиниринг и вывод LLM-решений в прод. Вы изучите механизмы ReAct-циклов, работу с LangGraph и AutoGen, архитектуру продвинутого RAG, протоколы MCP и AgentOps. Все ключевые навыки в одном месте: контроль затрат, time-travel дебаггинг, системная маршрутизация, human-in-the-loop и интеграция с высоконагруженными бэкендами.

Почему нельзя откладывать:

— масштабная акция «3 курса по цене 1» сгорит уже завтра;
— промокод Agent на скидку 10 000 рублей действует последние часы;
— сразу после оформления открываются материалы для подготовки — начать учиться можно прямо сейчас.

Забронировать место на курсе и забрать бонусы до 28 февраля
2😁2
📰 Свеженькое из мира C++

Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++.

😎 Интересное:

Хранение float в std::map: правильный способ — способ упаковки float в std::map
Clang 22.1.0: что сломали, что починили и зачем обновляться — описание большого обновления Clang
std::move_only_function — обёртка для вызываемых объектов

👺 Софт:

Winslop — утилита убирающая лишний функционал в Windows 11
zvec — библиотека от Alibaba для сжатия и ускорения векторных поисков
pyrite64 — это визуальный редактор и среда выполнения для создания 3D-игр, которые могут запускаться на консоли N64
ggml — тензорная библиотека для машинного обучения с поддержкой квантования и ускорения на CPU/GPU
dragonfly — высокопроизводительная альтернатива Redis, совместимая с его протоколом

🔹📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#свежак
👍3
Последний шанс: 3 курса по цене 1 и запуск AI-агентов в продакшн

В 2026 году фраза «опыт работы с LLM» стала обязательной в вакансиях для разработчиков, лидов и DS. Но просто дёргать API недостаточно — компании ищут тех, кто умеет строить автономные системы, контролировать расходы и выводить ИИ-агентов в реальный продакшн.

Обновлённая программа делает упор на инженерные навыки, которые выделят ваше резюме среди сотен других. Вы научитесь работать с LangGraph и AutoGen, внедрять продвинутый RAG и настраивать AgentOps. Все ключевые скиллы для современного рынка: измеримость систем, безопасная работа по 152-ФЗ, human-in-the-loop и развёртывание в закрытых контурах.

Почему нельзя откладывать:

— масштабная акция «3 курса по цене 1» сгорает уже сегодня;
— промокод Agent на скидку 10 000 рублей действует последние часы;
— сразу после оформления открываются материалы для подготовки — начать прокачивать резюме можно прямо сейчас.

Забронировать место на курсе и забрать бонусы до конца дня
😁2🥱1
Стек — это только инструмент. Готов ли ты стать кофаундером продукта? 🚀

Энтерпрайз даёт стабильность, но часто забирает драйв. Proglib App предлагает другое: роль технического лидера в EdTech-платформе. Мы обучаем разработчиков через курсы, квизы и ИИ-агентов. MVP готов, юзеры учатся.

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

🛠️ Стек (современный Fullstack):

TypeScript, React 18, Express 5, PostgreSQL, Drizzle ORM.

Почему это вызов для тебя:

Никакой бюрократии: ты и основатель (он тоже кодит) решаете всё сами. • Инструменты будущего: активное использование Claude Code и Cursor. • Масштаб: путь от MVP до лидера рынка образовательных платформ.

Ожидания:

• Крепкий бэкграунд в разработке и проектировании БД. • Готовность быстро включиться в работу с TS/React/Node.js. • Автономность и продуктовое мышление.

Удалёнка, гибкий график, отсутствие «стеклянного потолка».

Готов сменить привычный цикл обновлений на драйв кофаундера? Пиши в бота 👇

@proglibrary_feedback_bot
1😁1
😎 7 грязных, но рабочих способов найти IT-работу в 2026 году

Рынок найма сломан, и честные кандидаты остаются за бортом. Рассказываю, почему спам тимлидам, автоотклики и выдуманные офферы — это ваша новая реальность, если вы хотите получить нормальное место в 2026 году.

👉 Статья

📍Навигация:
ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#свежак
😁51
🍬 Статья: Почему функции rand и lrand48 из glibc годятся только для Тетриса

Автор статьи разбирает, почему rand, lrand48 и random из glibc — это не просто «не очень хорошие» генераторы, а полностью непригодные для любых вычислений алгоритмы, и что с этим делать.

🍿 Ключевые моменты статьи:

rand и lrand48 из glibc проваливают специализированные статистические тесты (TestU01, PractRand)
• классические критерии Пирсона и Колмогорова-Смирнова не выявляют скрытые решётчатые структуры и битовые зависимости в генераторах
• поточные шифры (ChaCha, AES) обгоняют minstd и LCG 80-х не только по качеству, но и по производительности

Основной фокус — наглядные самописные статистические тесты (gap test, birthday spacings), которые показывают дефекты glibc-генераторов без «чёрного ящика». Плюс практические рекомендации: какие ГПСЧ брать в C++11 и выше, чего ждать от C++26, и почему random_device работает не так, как вы думаете.

😸 Главный инсайт: если ваш генератор не прошёл BigCrush и PractRand на 32 ТиБ — выбрасывайте без раздумий.

📖 Читать статью...


📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2🌚1
🍺 Coroutine и scope: как co_await разрывает привычную модель блочной видимости

Корутины в C++20 нарушают базовую интуицию о scope: локальные переменные могут пережить } функции. Разбираем, как это реализовано.


🍪 Проблема стека

Обычная функция: локальные переменные в стеке, уничтожаются при return. Корутина может быть приостановлена (co_await) и возобновлена позже — стека уже нет. Куда деваются локальные переменные?

Task example() {
int x = 10; // где живёт x после co_await?
co_await someAwaitable();
std::cout << x; // x должен быть доступен!
}


⚡️ Coroutine frame в heap

Компилятор переписывает корутину в конечный автомат. Все локальные переменные, которые живут через точку приостановки, переносятся в coroutine frame — объект в куче:

// Псевдокод того, что генерирует компилятор:
struct __example_frame {
int x; // из стека → в heap
int __state; // текущая точка возобновления
promise_type __promise;
};


‼️ Scope остаётся лексическим

Видимость имён не меняется — x виден только внутри функции. Меняется место хранения: не стек, а heap. Деструкторы по-прежнему вызываются при выходе из scope — но «выход» теперь может произойти через co_return или уничтожение корутины.

💡 Корутины не нарушают лексическую область видимости — они нарушают связь между scope и стеком. Локальные переменные остаются «локальными» по видимости, но физически мигрируют в heap.


📍Навигация: ВакансииЗадачиСобесы

Библиотека C/C++ разработчика

#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔1