@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
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
❤24👍10🔥8🤣3🐳2🖕1
RLtools - библиотека глубокого обучения с подкреплением (Deep Reinforcement Learning, DRL) с высокой скоростью работы для разработки и исследования алгоритмов DL.
RLtools написана на C++ и позволяет проводить обучение и вывод моделей DRL на РС, мобильных устройствах и embedded-системах. В экспериментальном тестировании, библиотека обучила алгоритм RL непосредственно на микроконтроллере.
Библиотека поддерживает алгоритмы DRL: TD3, PPO, Multi-Agent PPO и SAC и предлагает набор примеров, демонстрирующих использование этих алгоритмов для решения задач управления на примерах управления маятником, гоночным автомобилем и роботом-муравьем MuJoCo.
Код реализации алгоритмов:
Благодаря оптимизации и использования аппаратного ускорения RLtools в 76 раз быстрее других библиотек. Например, на MacBook Pro с M1 RLtools может обучить модель SAC (управление маятником) за 4 секунды.
Библиотеку можно использовать на Linux, macOS, Windows, iOS, Teensy, Crazyflie, ESP32 и PX4.
RLtools предоставляет Python API, с которым можно использовать библиотеку из Python-кода. API RLtools совместим с библиотекой симуляции сред Gym.
Проекты, использующие RLtools:
# Clone and checkout
git clone https://github.com/rl-tools/example
cd example
git submodule update --init external/rl_tools
# Build and run
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
./my_pendulum
⚡️Лицензирование: MIT License.
🔗Документация
🔗Arxiv
🔗RLTools Design Studio
🔗Demo
🔗Zoo Experiment Tracking
🔗Google Collab (Python Interface)
🔗Сообщество в Discord
🔗GitHub
@cpluspluc
#AI #ML #DL #RTools #Github
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤2🥰2