cpluspluc | Unsorted

Telegram-канал cpluspluc - C++ Academy

17388

По всем вопросам- @haarrp № 4918280484

Subscribe to a channel

C++ Academy

🔧 OpenXRay движок STALKER с открытым исходным кодом получает вторую жизнь.

Сообщество энтузиастов серии STALKER продолжает развивать OpenXRay — улучшенную версию оригинального движка X-Ray Engine. Проект не просто исправляет баги и добавляет 64-битную поддержку, но и открывает новые возможности для модификации игр.

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

🤖 GitHub

@cpluspluc

Читать полностью…

C++ Academy

Лайфхаки визуального сторителлинга 😉

Рассказываем, почему это полезно и как его построить, чтобы было понятно всем: и менеджерам, и разработчикам, и дизайнерам

И да, вы справитесь, даже если не умеете рисовать! Александр Зинченко, СТО Яндекс 360, поделился инструментами для быстрых и удобных скетчей. А ещё рассказал про сложности передачи идей в проектных командах, которые можно решить с помощью визуального сторителлинга 😎

Больше интересной и полезной информации в канале от команды Яндекс 360

Читать полностью…

C++ Academy

🧑🏻‍💻Хотите научиться писать нейросети на одном из самых быстрых и безопасных языков программирования? 

На открытом уроке 6 мая в 20:00 МСК мы научим вас создавать простейшую нейросеть с нуля, используя минимальные библиотеки. Вы не только познакомитесь с Rust, но и узнаете, как оптимизировать вычисления для работы с нейронными сетями.

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

👉Присоединяйтесь к открытому уроку и получите скидку на программу обучения «Rust Developer. Basic»: https://otus.pw/417k/?erid=2W5zFFxssur 

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Читать полностью…

C++ Academy

⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:

Python: t.me/pythonl
Linux: t.me/linuxacademiya
Собеседования DS: t.me/machinelearning_interview
Нерйросети t.me/ai_machinelearning_big_data
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Devops: t.me/DevOPSitsec
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_ci
Java: t.me/javatg
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: /channel/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat

💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: /channel/addlist/mzMMG3RPZhY2M2Iy

😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno

🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: /channel/addlist/BkskQciUW_FhNjEy

Читать полностью…

C++ Academy

🧑‍💻 frugally-deep — легковесная библиотека, позволяющая использовать обученные модели без зависимости от TensorFlow, что особенно ценно для embedded-систем и проектов с ограниченными ресурсами.

Рабочий процесс выглядит просто: после обучения модели в Keras её можно конвертировать в специальный JSON-формат и загрузить в C++-приложение. При этом frugally-deep автоматически проверяет корректность конвертации, сравнивая результаты предсказаний с оригиналом.
Библиотека поддерживает даже сложные графы вычислений, созданные через functional API.

🤖 GitHub

@cpluspluc

Читать полностью…

C++ Academy

Примите участие в исследовании и выиграйте iPhone 16 Pro Max

Online Market Intelligence (OMI) проводит опрос среди IT-специалистов и студентов о текущем использовании платформ разработки и ИИ-ассистентов.

Исследование направлено на выяснение влияния ИИ на рынок труда и его роль в процессах разработки. Участвуя, вы можете помочь нам в этих вопросах и получить шанс выиграть iPhone 16 Pro Max.

Ссылка на опрос — здесь*

*Принимая участие в опросе Вы становитесь участником розыгрыша под наименованием «Если ты работаешь в IT, пройди опрос и выиграй iPhone 16 Рro Мax». Информация об организаторе розыгрыша, сроках проведения, правилах проведения розыгрыша, количестве призов, сроках, месте, порядке получения призов размещена по ссылке

Читать полностью…

C++ Academy

🧑🏻‍💻Как эффективно управлять ошибками в коде и избегать багов?

На открытом вебинаре 23 апреля в 20:00 МСК вы познакомитесь с мощной системой обработки ошибок в Rust и узнаете, почему этот подход считается одним из самых безопасных и надёжных. Вместе с экспертом вы освоите оператор «?» и работу с типами Result и Option.

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

👉Регистрируйтесь на вебинар и получите специальную скидку на полный курс «Rust Developer. Basic»: https://otus.pw/stgNn/?erid=2W5zFJ7QW6t 

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Читать полностью…

C++ Academy

🖥 less_slow.cpp — это образовательный репозиторий, который демонстрирует практики написания высокоэффективного кода на C++, C, CUDA, PTX и ассемблере.

Цель проекта — помочь разработчикам развить интуицию и мышление, ориентированные на производительность.​

🔍 Основные темы проекта:
- Микробенчмарки: Измерение производительности базовых операций, таких как сложение целых чисел, с использованием различных подходов, включая inline-ассемблер.

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

- Рекурсия: Сравнение рекурсивных и итеративных реализаций алгоритмов, таких как QuickSort, с акцентом на производительность и использование стека.

- Оптимизация стандартных функций: Примеры ускорения стандартных функций, таких как std::sin, с использованием приближений и SIMD-инструкций.

- Работа с JSON: Эффективный парсинг JSON без лишних аллокаций памяти, использование альтернатив стандартным библиотекам.​
GitHub
Hacker News

🛠️ Инструменты и технологии:
- Использование C++20 и современных компиляторов (GCC, Clang) для демонстрации новых возможностей языка.

- Интеграция с Google Benchmark для проведения точных измерений производительности.

- Примеры кода на CUDA, PTX и ассемблере для демонстрации низкоуровневой оптимизации.

- Использование сторонних библиотек, таких как fmt, range-v3, libunifex, cppcoro, liburing, oneTBB, ASIO, CUTLASS, CTRE, yyjson, Abseil, StringZilla и другие, для расширения функциональности и повышения производительности.​

📚 Дополнительные ресурсы:
Проект является частью серии "Less Slow", которая также включает реализации на Rust и Python.

Блог автора содержит подробные статьи по темам, затронутым в проекте: ashvardanian.com/tags/less-slow.​

Если вы хотите глубже понять, как писать эффективный код и избегать распространённых ошибок, less_slow.cpp станет отличным практическим пособием.

Github
Rust
Python.


@cpluspluc

Читать полностью…

C++ Academy

⚡️Хотите стать востребованным разработчиком и освоить один из самых перспективных языков программирования?

Курс «Rust Developer. Basic» от OTUS создан для тех, кто уже знаком с программированием и хочет уверенно развиваться в современной разработке. Rust гарантирует безопасность, высокую производительность и востребован в веб-разработке, блокчейне, анализе данных и даже в создании встроенных систем.

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

👉Оставьте заявку прямо сейчас и получите скидку на обучение: https://otus.pw/5MYd/?erid=2W5zFGhrBA8 

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Читать полностью…

C++ Academy

🔓Что выведет следующий код?


#include <iostream>
using namespace std;

class Base {
public:
Base() {
cout << "Base constructor: ";
call();
}
virtual void call() { cout << "Base::call\n"; }
};

class Derived : public Base {
int x = init();

int init() {
cout << "Derived::init\n";
return 42;
}

public:
Derived() {
cout << "Derived constructor\n";
}

void call() override {
cout << "Derived::call, x = " << x << "\n";
}
};

int main() {
Derived d;
return 0;
}


🔢Варианты ответа:

A)

Derived::init
Derived constructor


B)

Derived::init
Derived constructor


C)

Base constructor: Derived::call, x = 42
Derived constructor


D)

Derived::call, x = <undefined>
Derived::init
Derived constructor


Правильный ответ: B

💡Почему?
В момент вызова конструктора Base, объект ещё не стал Derived. Виртуальная функция вызывается в контексте Base.

Читать полностью…

C++ Academy

📖 asmbook — мягкое введение в программирование на ассемблере для ARM. Для разработчиков, пишущих на C/C++, но желающих разобраться в низкоуровневых особенностях процессоров, проект предлагает практическое руководство по ассемблеру ARMv8.

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

🔗 GitHub

@cpluspluc

Читать полностью…

C++ Academy

❓ Что выведет этот код? (C++23)


import std;

constexpr auto make_checker() {
return [](int x) consteval {
return x % 3 == 0 || x % 5 == 0;
};
}

int main() {
auto checker = make_checker();

std::vector numbers{1, 3, 5, 9, 10, 14, 15};

auto filtered = numbers | std::views::filter([&](int x) {
if (std::is_constant_evaluated()) {
std::print("constexpr\n");
}
return checker(x);
});

std::print("Filtered numbers: ");
for (int x : filtered) {
std::print("{} ", x);
}

std::println("");
}


🧠 Подсказка:
consteval делает checker доступным только в compile-time, но мы вызываем его в runtime через лямбду — что произойдёт?

std::is_constant_evaluated() — интересный механизм проверки, вызывается ли код во время компиляции.

Как отреагирует компилятор на попытку вызвать consteval функцию в runtime?


📌 Ответ
Этот код на C++23 не скомпилируется, и что именно здесь происходит.

🔍 Напоминаем ключевой фрагмент кода:

```cpp
constexpr auto make_checker() {
return [](int x) consteval {
return x % 3 == 0 || x % 5 == 0;
};
} ```

- Здесь создаётся лямбда-функция, помеченная как consteval.

- Ключевое слово consteval означает: функция обязана быть вызвана во время компиляции.

🧨 Где ошибка?


auto filtered = numbers | std::views::filter([&](int x) {
return checker(x); // ← ошибка тут
});


checker — это consteval-лямбда.

Но ты вызываешь её внутри лямбды, которая будет работать во время выполнения программы — т.е. в runtime.

Это нарушение правила consteval → нельзя вызывать такие функции в runtime-коде.

❌ Что скажет компилятор?
Компилятор выдаст ошибку компиляции, такую или похожую:

error: call to consteval function '<lambda>(int)' is not a constant expression



📘 Объяснение
consteval ≠ constexpr

constexpr — это могут быть вызваны в runtime, если нужно.

consteval — это всегда и только compile-time.

Когда ты вызываешь checker(x) в main(), ты нарушаешь это правило.

✅ Как можно исправить?
Если ты заменишь consteval на constexpr, код скомпилируется и выполнится:


constexpr auto make_checker() {
return [](int x) constexpr {
return x % 3 == 0 || x % 5 == 0;
};
}

И тогда результат будет:

Filtered numbers: 3 5 9 10 15

Потому что:
- 3 делится на 3
- 5 делится на 5
- 9 делится на 3
- 10 делится на 5
- 15 делится на 3 и 5

Читать полностью…

C++ Academy

Менеджер, который получает зарплату в 10 раз больше твоей 😂

@cpluspluc

Читать полностью…

C++ Academy

☕️ Научись разрабатывать приложения и сервисы на SafeBoard от «Лаборатории Касперского»

Каждое решение, каждая строка кода — это новое движение вперед. Возможно, именно стажировка SafeBoard станет решающим шагом к твоему старту в IT! Если ты учишься в вузе в Москве/МО или в Школе 21 и готов(а) работать от 20 часов в неделю — присоединяйся к нам и начинай карьеру еще до окончания учебы 😎

Чему ты научишься:


Проектировать, разрабатывать и портировать приложения и сервисы на базе KasperskyOS;
Дорабатывать сетевой стек и файловые системы;
Писать эффективный и современный код на с++;
Выполнять рефакторинг кода.

Что ты получишь:

Реальный опыт работы в крупной IT-компании;
Возможность развить свои навыки программирования и работы с современными технологиями;
Зарплату, доступ к спортзалу, сауне и игровым комнатам в нашем офисе ☕️

Расти и становись круче — подавай заявку сегодня https://kas.pr/d6b8?erid=2W5zFGAUfC4

Реклама. Рекламодатель АО «Лаборатория Касперского» ИНН 7713140469

Читать полностью…

C++ Academy

Как получилась онлайн-магистратура «Фронтенд- и бэкенд-разработчик»
от Яндекс Практикума и ИТМО?

Мы взяли всё лучшее от классического образования, перевели в онлайн, добавили практики и выкрутили актуальность на максимум.

Приходите на день открытых дверей, чтобы узнать больше:

— Расскажем про разные траектории обучения на программе: как после выпуска стать фронтенд- или бэкенд-разработчиком.

— Обсудим уровни программы — базовый и продвинутый: чему научится студент без опыта в IT и зачем магистратура разработчику с опытом.

— Поделимся, как устроено обучение на очной онлайн-программе Яндекса и ИТМО.

— Поговорим про поступление: сроки, экзамены, документы, оплата.

Ждём вас 16 апреля в 19:00 мск.

→ Зарегистрироваться на событие

Читать полностью…

C++ Academy

👾 Vita3K — экспериментальный эмулятор PlayStation Vita для Windows, Linux, macOS и Android. Проект уже демонстрирует впечатляющие результаты: часть коммерческих игр и множество homebrew-приложений запускаются, хотя разработчики предупреждают о возможных багах. Среди поддерживаемых игр — Persona 4 Golden, VA-11 HALL-A и другие культовые проекты.

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

🤖 GitHub

@cpluspluc

Читать полностью…

C++ Academy

🔒 Microsoft ограничила работу своего C/C++ расширения в форках VS Code

Пользователи альтернативных редакторов на базе VS Code столкнулись с блокировкой проприетарного расширения для C/C++ от Microsoft. После обновления до версии 1.24.5 плагин начал выдавать ошибку, сообщая о возможности работы только в официальных продуктах Microsoft — VS Code, Visual Studio и связанных сервисах.

Ситуация вновь поднимает вопрос о зависимости open-source проектов от проприетарных дополнений. Пока единственное решение для тех, кому критично расширение от Microsoft — откат на старую версию и отключение автообновлений.

🔗 Ссылка - *клик*

@cpluspluc

Читать полностью…

C++ Academy

🖥 Задача для собеседования: "Быстрая очередь с удалением элемента за O(1)"

🔖 Условие:

Реализуйте структуру данных — очередь (`queue`), поддерживающую три операции:

- enqueue(x) — добавить элемент в конец очереди (должно работать за O(1));
- dequeue() — удалить элемент из начала очереди и вернуть его (должно работать за O(1));
- remove(x) — удалить первое вхождение элемента x из очереди за O(1).

Ограничения:
- Элементы могут повторяться.
- Если элемент отсутствует, remove(x) не делает ничего.
- Операции должны оставаться эффективными на больших объемах данных (миллионы элементов).
- Можно использовать стандартные структуры данных STL (`list`, unordered_map, unordered_set и т.д.).

▪️ Дополнительные вопросы к кандидату:

- Как обеспечить O(1) удаление произвольного элемента из очереди?
- Как избежать утечек памяти или "битых" итераторов после удаления элементов?
- Что будет, если очередь будет содержать множество одинаковых элементов?
- Как бы вы изменили решение, если бы нужно было удалять все вхождения элемента, а не только первое?

---

▪️ Разбор возможного решения:


Основная архитектура:

- Используем std::list<int> data для хранения реальной очереди.
- Почему list? Потому что позволяет за O(1) удалять элементы по итератору.
- Используем std::unordered_map<int, std::list<std::list<int>::iterator>> index.
- Для каждого значения храним список итераторов на его вхождения в data.

Операции:

- enqueue(x):
- Добавляем x в конец data.
- Сохраняем итератор на него в index[x].
- Все действия — за O(1).

- dequeue():
- Удаляем элемент из начала data.
- Находим соответствующий итератор в index, удаляем его.
- Если в списке итераторов для этого значения больше нет элементов, удаляем ключ из index.

- remove(x):
- Если в index[x] есть итераторы:
- Берем первый итератор.
- Удаляем его из data и из списка итераторов.
- Если список стал пустым — удаляем запись x из index.
- Все действия — за O(1).

---

▪️ Возможные подводные камни:

- ❗ Не проверять, пустой ли index[x], перед удалением итератора.
- ❗ Не удалять ключи из unordered_map, что приводит к накоплению "пустых" списков в памяти.
- ❗ Использовать vector вместо list — тогда удаление из середины будет занимать O(n).

---

▪️ Мини-пример интерфейса класса:


#include <list>
#include <unordered_map>

class FastQueue {
private:
std::list<int> data;
std::unordered_map<int, std::list<std::list<int>::iterator>> index;

public:
void enqueue(int x) {
auto it = data.insert(data.end(), x);
index[x].push_back(it);
}

int dequeue() {
if (data.empty()) throw std::out_of_range("Queue is empty");
int val = data.front();
auto it = index[val].front();
index[val].pop_front();
if (index[val].empty()) {
index.erase(val);
}
data.pop_front();
return val;
}

void remove(int x) {
if (index.count(x) == 0) return;
auto it = index[x].front();
data.erase(it);
index[x].pop_front();
if (index[x].empty()) {
index.erase(x);
}
}
};


▪️ Дополнительные вопросы на усложнение:


- Что если нужно сделать removeAll(x) — удаление всех вхождений элемента?
- Как изменится решение, если в очереди будут сложные объекты вместо int?
- Как минимизировать использование памяти, если очередь очень большая?
- Как обеспечить безопасность потоков (thread-safety) для многопоточного варианта очереди?

@cpluspluc

Читать полностью…

C++ Academy

🌀 ZENO — node система для сложных 3D-симуляций. Этот фреймворк превращает алгоритмический код в визуальные ноды, позволяя создавать кинематографичные физические эффекты.

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

🤖 GitHub

@cpluspluc

Читать полностью…

C++ Academy

🖥 В этой статье обсуждается ситуация, когда применение оптимизаций компилятора приводит к изменению поведения программы! Автор подчеркивает, что если поведение программы меняется при использовании определенного уровня оптимизации, это часто указывает на наличие неопределенного поведения в коде.

💡 Автор объясняет, что компиляторы, следуя правилу "as-if" (как если бы), могут применять любые преобразования кода, при условии, что они не изменяют его наблюдаемое поведение. Однако, если в программе присутствует неопределенное поведение, компилятор может производить оптимизации, которые изменяют поведение программы, поскольку исходное поведение не было строго определено

🔗 Ссылка: *клик*

@cpluspluc

Читать полностью…

C++ Academy

🐍 PocketPy — легковесный интерпретатор Python для встраивания в C++ проекты. Разработчики позиционируют его как альтернативу Lua для игровых движков, где важны простота интеграции и отсутствие зависимостей.

Проект поддерживает совместимость с pybind11 и мобильными платформами. При этом интерпретатор демонстрирует производительность на уровне CPython 3.9 в базовых тестах.

🤖 GitHub

@cpluspluc

Читать полностью…

C++ Academy

🖥 Dear ImGui — библиотека GUI на C++ для быстрого создания интерфейсов без внешних зависимостей.

Оптимизирована для экономии памяти и легкой интеграции в проекты.

Позволяет быстро настраивать UI, избегая проблем с синхронизацией, и поддерживает разные графические API и платформы.

🔗 https://github.com/ocornut/imgui

@cpluspluc

Читать полностью…

C++ Academy

✔️ ЗАДАЧА: Что выведет код?



#include <iostream>
#include <vector>

struct Tracer {
Tracer(const char* name) : name(name) {
std::cout << "Constructing " << name << "\n";
}
~Tracer() {
std::cout << "Destructing " << name << "\n";
}
const char* name;
};

struct Example {
Tracer t1{"t1"};
std::vector<Tracer> list;
Tracer t2{"t2"};

Example() : list{Tracer("temp1"), Tracer("temp2")} {
std::cout << "Inside constructor\n";
}
};

int main() {
Example e;
std::cout << "End of main\n";
return 0;
}


---

ОТВЕТ:

Constructing t1
Constructing temp1
Constructing temp2
Inside constructor
Constructing t2
End of main
Destructing t2
Destructing temp2
Destructing temp1
Destructing t1

---

Почему так:

• Поля инициализируются в порядке объявления в структуре, а не в списке инициализации
• std::initializer_list создаёт временные объекты, которые копируются в вектор
• t2 создаётся после строки Inside constructor
• Деструкторы вызываются в обратном порядке: t2 → temp2 → temp1 → t1

Хитрость — в порядке инициализации, временных объектах и destructuring-порядке!


@cpluspluc

Читать полностью…

C++ Academy

🖥 Gooey — нативный кроссплатформенный GUI-фреймворк на C

Если ты разрабатываешь под Windows или Linux и хочешь лёгкий и настраиваемый UI, присмотрись к Gooey — фреймворку с нативной производительностью и открытым кодом.

Почему стоит:
• 🔥 На C, без библиотек-монстров
• 🔴 Работает везде
• 🧩 Кастомный UI
• 💥 Лёгкий и быстрый
• 🧪 С GPL v2 и сообществом

🚀 GitHub

@cpluspluc

Читать полностью…

C++ Academy

👩‍💻 Docker - лучший обучающий канал по Devops.

С помощью картинок и коротких видео даже новички с легкостью смогут применять продвинутые инструменты разработки и использовать Docker.

Стоит подписаться: t.me/DevopsDocker

Читать полностью…

C++ Academy

📄 toml++ — библиотека, предлагающий удобный и производительный способ обработки TOML файлов в C++-проектах. Этот парсер полностью соответствует спецификации TOML 1.0.0, поддерживает UTF-8 и может преобразовывать данные в JSON/YAML. При этом он не требует RTTI и может работать без исключений.

Интеграция системы проста: можно использовать как single версию или подключить через CMake/Conan/Vcpkg. Поддерживаются все основные компиляторы и архитектуры (x64, x86, ARM).

🤖 GitHub

@cpluspluc

Читать полностью…

C++ Academy

📊 Bebop — свежий взгляд на бинарную сериализацию. Этот проект сочетает читаемость JSON с производительностью бинарных протоколов, обещая в 10-100 раз большую скорость работы по сравнению с традиционными решениями.

Собственный язык схем позволяет генерировать типобезопасный код для C++, С#, TypeScript, Rust и других языков, сохраняя при этом кросс-платформенную совместимость. При этом проект уже сейчас демонстрирует высокую производительность в бенчмарках, особенно в сценариях, критичных к задержкам.

🤖 GitHub

@cpluscpluc

Читать полностью…

C++ Academy

🔎 rwkv.cpp — проект, адаптирующий архитектуру RWKV для эффективной работы на обычных процессорах.

В отличие от традиционных LLM, RWKV требует лишь немного памяти на токен — это позволяет запускать модели с большими контекстами даже на слабом железе.

Инструмент реализован на C/C++ с поддержкой квантования и CUDA через cuBLAS.

Особенно интересна совместимость с LoRA-адаптерами, что позволяет дообучать модели без полного экспорта весов. Тесты показывают стабильную работу даже на 4-ядерных CPU с контекстом в 8K токенов.

🤖 GitHub

@cpluspluc

Читать полностью…

C++ Academy

👽 bdwgc — сборщик мусора для C/C++ с 30-летней историей

Проект представляет собой консервативный мусорный сборщик, разработанный еще в 1988 году, но до сих пор востребованный в системном программировании. Вdwgc может работать в "враждебной среде", сканируя стек и память, пытаясь угадать, какие данные являются указателями.

Проект может быть полезен для:
▪️ Долгоживущих сервисов, где утечки памяти критичны
▪️Встраиваемых систем с ограниченными ресурсами
▪️Научных вычислений на C/C++

🤖GitHub

@cplucplus

Читать полностью…

C++ Academy

👴 Возрождение старичка — Clipper2

💎 Проект представляет собой переработку классической библиотеки Clipper, которая долгое время оставалась стандартом для операций с многоугольниками.

📈 В отличие от предшественника, Clipper2 предлагает не только базовые логические операции, но и поддержку сложных сценариев работы с полигональными сетками. Из приятного: ядро работает на C++ 17, с интерфейсами для С# и Delphi. Также есть возможность интеграции в другие языки с помощью динамических библиотек.

🤖 GitHub

@cpluspluc

Читать полностью…
Subscribe to a channel