@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍4❤2💊2😴1
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10🔥4👍2
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🤔5❤4😁4🙈3🔥2🤬1🖕1🤪1
И эти нестандартные проблемы требуют нестандартных решений.
Вот о таких решениях мы сегодня и поговорим.
А именно:
▪Посмотрим, как работают исключения на платформе Linux x86, и сделаем с ними что‑то интересное.
▪Залезем ещё глубже под капот исключений и сделаем их ещё быстрее.
▪Сделаем висячую ссылку на невалидный объект, и всё будет хорошо.
▪А под конец то, что все любим, — погрузимся в шаблонное метапрограммирование.
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍8🔥4
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥8❤5🌚3🤨3
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20🔥7👍5🤨4
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤4🔥4
На конференции SPLASH'24 Филипп Пизло (Filip Pizlo) презентовал новый открытый C/C++ компилятор Fil-C, который обеспечивает защиту от ошибок, связанных с работой с памятью. Основная цель проекта – полная совместимость с существующими программами на C и C++, чтобы обеспечить безопасную работу с памятью путем простой пересборки кода. Компилятор основан на компонентах проекта LLVM и распространяется под лицензией Apache 2.0, тогда как runtime доступен под лицензией BSD. В отличие от TrapC, который находится на стадии разработки, Fil-C уже готов к сборке существующего кода.
В рамках проекта предлагаются безопасные версии стандартных библиотек C (libc) и C++ (libc++), созданные на основе Musl и LLVM libc++.
Эти библиотеки поддерживают многопоточность, обработку сигналов, маппинг файлов в память (mmap), longjmp/setjmp и обработку исключений в C++. Без изменения исходного кода можно собирать такие проекты, как bzip2, zip, pcre и ncurses. Для сборки OpenSSH, OpenSSL, CPython, SQLite, Lua, Curl, Lynx, jpeg6b, zsh, xzutils и simdutf требуются минимальные модификации.
Защита от проблем с памятью достигается за счет применения 128-разрядных указателей MonoCaps с метаданными для контроля типов и отслеживания границ буферов, а также использования сборщика мусора FUGC, управляющего всеми операциями выделения и освобождения памяти. В случае возникновения ошибок программа немедленно завершает свою работу, предотвращая эксплуатацию возможных уязвимостей.
Комбинация MonoCaps и FUGC позволяет выявлять и устранять все виды ошибок, включая выход за пределы буфера в стеке и куче, обращение к освобожденной памяти, состояния гонок при работе с указателями, проблемы с типом данных (Type Confusion) и некорректное использование va_lists. Также Fil-C дополнительно проверяет границы и типы в буферах, переданных в системные вызовы.
Основной недостаток Fil-C заключается в снижении производительности: на данный момент программы, собранные с помощью этого компилятора, работают медленнее в 1.5–5 раз по сравнению с теми же программами, собранными стандартным способом. Однако разработчики планируют оптимизировать производительность, чтобы замедление составляло максимум 1.5 раза в худшем сценарии и около 1.2 раза в среднем.
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
[SPLASH'24] Pasadena - REBASE (Oct 23th)
Full Program: https://2024.splashcon.org/program/program-splash-2024/
👍25🔥8❤4🌭3💊2🥱1
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥7❤6
Иерархия объемов (англ. Bounding Volume Hierarchy, BVH) в классическом исполнении представляет собой дерево выровненных параллелепипедов, заключающих некоторый объект, подлежащий трассировке. Мы используем термин «трассируемый объект» условно, поскольку в действительности применение BVH в задачах геометрического моделирования далеко не ограничивается лучевыми методами визуализации.
BVH — это универсальный инструмент вычислительной геометрии, эффективный для решения разнообразных алгоритмических задач. Ниже мы поговорим о реализации и применении структур BVH в составе библиотеки геометрического моделирования OpenCascade.
Эта структура данных используется для быстрого определения пересечений в 3D-сценах, особенно для рендеринга лучей.
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍5❤4🖕1
This media is not supported in your browser
VIEW IN TELEGRAM
Разработчики на C: Не волнуйтесь. Если вы включите оптимизатор, все пойдет как по маслу.
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
😁47👍14🤣6❤5🔥3🐳2🌭2💊2
#курс #c
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25❤5🔥4😨2
#курс #dsa
freecourses
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤5🔥4🥴1
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤3🥰3
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍11🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Полный проект всего <400 строк кода на C++.
Несколько пользователей могут регистрироваться, входить в систему с авторизацией, отправлять сообщения и выходить из системы.
Управление статусом осуществлялось с помощью контекстов подключения.
Без использования протокола TCP.
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥30👍9❤5🤣4🥴2🖕1
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤7🔥4🥰1