В жизни каждого программиста С++ рано или поздно возникает задача, которую кто-либо уже решил. Однако найти это решение бывает очень непросто в силу разных причин: оно недостаточно разрекламировано, либо имеет нечеткую документацию, или возникает проблема языкового барьера, ну, или поисковики просто плохо ищут).
Столкнувшись много раз подряд с тем, что найти что-то толковое довольно непросто, я решил попробовать распутать это узел и предложить для русскоязычных читателей свой справочник классных библиотек на С++. Я исходил из этого источника. Это очень многогранный и объемный список библиотек языка С++, но, скажем так, у меня были к нему вопросы. Потому я сделал перевод, затем значительно улучшил его в плане содержания (далее объясню, как, почему и зачем). На выходе получилось около 1000 библиотек. Как в сказке). Они, конечно, не покрывают все возможные задачи и предметные области, но поверьте, они затрагивают действительно многое.
Суть и смысл моей работы
Когда я в первый раз задался целью найти какой-нибудь единый, толковый справочник по открытым библиотекам языка С++, оказалось, что это не очень просто. К примеру, далеко не все поисковики (не будем показывать пальцем) корректно обрабатывали запрос «библиотеки C++» или «список библиотек C++». В общем, закономерно я всё же вышел на 3 основных источника:
-
Авторский список от Фараза Фаллахи, который он ведет с единомышленниками на github.
-
Еще один авторский список библиотек, каждая из которых состоит только из заголовочных файлов.
В общем, список от Фараза Фаллахи мне показался наиболее полным и толковым. Его я взял за базу. Я довольно быстро понял, как именно наполнялся этот список и в чем минусы такого наполнения. Раскрою их.
-
Человек (Фараз Фаллахи или кто-от еще) находил очередную библиотеку на Github, потом в большинстве случаев просто копировал секцию «About», какой бы текст в ней не находился. К примеру, там могла находиться только расшифровка акронима, и более ничего: «ETL - Embedded Template Library». Если потом разработчик библиотеки менял секцию «About», то автоматически это не отражалось в списке библиотек. Какой текст попал когда-то в первый раз, тот и остался навсегда.
-
Тот, кто писал найденную библиотеку, вполне мог не очень вкладываться в описание (англоязычное) своей библиотеки. Хотя бы потому, что он мог не знать, что она, библиотека, «выстрелит» и войдет в чей-то список. Он мог быть не англоязычным. Также человек мог невольно сделать такое описание к собственной библиотеке, которое не очень понятно тому, кто не в теме предметной области. Да и тому, кто в теме, не всегда понятно. К примеру, в этом списке я видел библиотеки от китайцев, индийцев, японцев, в описание которых я довольно долго вчитывался, пытаясь понять, что именно они сделали. Бывало, что их терминология сильно отличалась от той, к которой я привык (например, в плане математики).
-
Библиотеки из списка никогда (или почти никогда) не удалялись, не делалась подчистка сильно устаревших и неактуальных библиотек. К примеру, я встречал библиотеки 15-20 давности, которые реализовывали умные указатели.
-
Разделы списка были отсортированы по алфавитному принципу (на английском языке). В итоге близкие по смыслу библиотеки попадали в разные разделы, и они были отделены друг от друга многими десятками страниц текста. Было сложно найти похожие, альтернативные библиотеки.
Несмотря на изложенные минусы наполнения этого списка библиотек, все же уверенно можно сказать, что этот список от Фараза Фаллахи - очень достойный и толковый справочник, кстати, родом из Персии. Я загорелся желанием его улучшить и донести до русскоязычных читателей. Думаю, они имеют на это право.
В общем, моя работа заключалась в следующем.
-
Сделать черновой перевод списка. Да, я не брезговал и машинным переводом, из него 70 процентов пошло в мусорку, но все же часть работы он мне сократил.
-
Разобраться в сути библиотек и написать свой, авторский текст. Я писал его всегда, когда мне было непонятно, зачем вообще нужна библиотека, какое у нее содержание и чем она отличается от других. Не всегда возможно отличить две библиотеки, которые, скажем, писались для замены STL, но я, по крайней мере, пытался (в других случаях, не в этом). Поясняющий текст я писал, ориентируясь в основном на подробное описание библиотеки на Github, но не только.
-
Выкинуть совсем устаревшие, не способные кому-то быть полезными библиотеки. Я выкинул их не так много, старался делать это очень аккуратно, не перегибая палку. Это чужой труд в прошлом.
-
Изменить сортировку разделов. Я отказался от принципа сортировки разделов по алфавиту. Вместо этого стал сортировать по смысловому принципу: близкие по смыслу разделы располагаются рядом. Ни один из разделов я не выкинул и не добавил (хотя руки чесались, но из уважения к Фаразу…). Внутри разделов принцип сортировки по алфавиту я сохранил. Как сохранил и указание лицензии после описания библиотеки (в квадратных скобках).
Разделы
Фреймворки
Гигантские, а то и просто большие, библиотеки для создания GUI и всего на свете, а также небольшие библиотеки на замену STL.
-
abseil-cpp — аналог STL от Google, включающий алгоритмы, контейнеры, итераторы и т.д. [Apache2]
-
Apache C++ Standard Library — аналог STL от Apache, включающий алгоритмы, контейнеры, итераторы и т.д. [Apache2]
-
APR — библиотека кроссплатформенных служебных функций, то есть кроссплатформенная обертка над рядом системных API. Обеспечивает файловый ввод-вывод, работу с сокетами, потоками, памятью и др. [Apache2]
-
Boost — большая коллекция (сейчас их 189) универсальных библиотек C++ (работа с данными, алгоритмами, файлами, потоками, регулярными выражениями, линейная алгебра, генерация псевдослучайных чисел, обработка изображений, модульное тестирование и т. п.). [Boost] веб-сайт
-
BDE — набор низкоуровневых библиотек C++, включающий, среди прочего, улучшенную реализацию контейнеров STL, словарные типы для представления общих понятий (например, даты и времени), строительные блоки для разработки многопоточных приложений и сетевых приложений. [Apache2]
-
Sogou C++ Workflow — библиотека параллельных вычислений и асинхронных сетевых вычислений. [Apache2]
-
CGraph — кроссплатформенная библиотека для работы с вычислительными графами (графами вычислительных процессов), написанная на чистом C++ без каких-либо сторонних зависимостей. [MIT]
-
Cinder — бесплатная библиотека с открытым исходным кодом для программирования с эстетическим умыслом - вид разработки, который часто называют «креативным программированием» (creative coding). Сюда входят такие области, как графика, аудио, видео и вычислительная геометрия. Ближайшие аналоги этой библиотеки - Processing на Java и openFrameworks на С++ [BSD]
-
Coost — крошечная boost библиотека. [MIT]
-
Cxxomfort — небольшая библиотека, состоящая только из заголовочных файлов, которая позволяет использовать различные возможности из свежих стандартов C++ в программах, написанных на C++03 и более ранних версиях языка. [MIT]
-
Dlib — набор инструментов для машинного обучения и анализа данных на C++. [Boost] веб-сайт
-
EASTL — еще один аналог STL, включающий алгоритмы, контейнеры, итераторы и т.д. [BSD]
-
ETL — замена STL для встраиваемых систем (с сильно ограниченной памятью). [MIT]
-
ffead-cpp — веб-фреймворк, платформа для разработки корпоративных приложений. [Apache2]
-
Folly — большая коллекция C++ классов от Facebook, дополняющих STL и Boost. [Apache2]
-
FunctionalPlus — библиотека функционального программирования для C++. Пишите краткий и читаемый код на C++. [MIT]
-
GLib — низкоуровневая библиотека, расширяющая возможности, предоставляемые стандартной библиотекой libc языка C. [LGPL]
-
itlib — еще один аналог (или замена) STL. [MIT]
-
JUCE — всеохватывающая библиотека классов С++ для разработки кроссплатформенного программного обеспечения. Она содержит практически все, что может понадобиться для создания большинства приложений, особенно хорошо подходит для построения сложных GUI, обработки графики и аудио. [Основной модуль: ISC, остальные: GPL2/GPL3/собственная] веб-сайт
-
Kigs framework — модульный многоцелевой кроссплатформенный фреймворк на C++, удовлетворяющий парадигме RAD. Позволяет быстро и совершенно независимо разрабатывать различные типы приложений (игры, симуляторы, просмотрщики). сайт [MIT]
-
LibSourcey — коллекция кроссплатформенных модулей и классов C++14, которые предоставляют базу для быстрой разработки высокопроизводительных сетевых пиринговых (p2p) и видео-стриминговых приложений. [LGPL]
-
LibU — кроссплатформенная библиотека, написанная на C, решающая задачи выделения памяти, работы с сетями и разбора URI, манипулирования строками, отладки, журнализиции, и т.д. [BSD]
-
libxutils — простая и в то же время мощная кроссплатформенная библиотека на C, предоставляющая структуры данных, алгоритмы и многое другое. [MIT]
-
OpenFrameworks — кроссплатформенный набор инструментов с открытым исходным кодом для так называемого «креативного программирования». Что это такое, креативное программирование? Это не объяснить, это надо видеть. сайт [MIT]
-
Qt — полная, классная кроссплатформенная библиотека для создания современных GUI-приложений на С++. Но не только созданием GUI ограничивается функциональность Qt. С течением времени Qt вобрала внутрь себя кучу всяких-разных библиотек/функциональностей, потому значительная часть всех тех возможностей, что содержится в текущем списке библиотек, уже содержится в Qt. [GPL/LGPL/собственный] веб-сайт
-
Reason — кросс-платформенная библиотека, призванная облегчить использование Java, .Net или Python разработчикам, которым требуется производительность и мощь C++. [GPL2]
-
ROOT — пакет программ и библиотек, разработанный для использования в качестве платформы обработки экспериментальных данных физики высоких энергий, а также обработки и анализа больших объемов данных. Содержит инструменты статистического анализа, линейной алгебры, средства фитирования, средства четырёхвекторных вычислений, инструменты многовариантного анализа данных, то есть использования нейронных сетей, и многое другое. [LGPL]
-
rpp - минимальная замена STL C++20, вдохновленная языком Rust. [MIT]
-
SaneCppLibraries – кроссплатформенная библиотека для работы с файлами, сокетами, строками, сериализицией, многопоточностью, контейнерами, алгоритмами и др. Можно сказать, это Qt на минималках. [MIT] сайт
-
Seastar — событийно-ориентированный фреймворк, позволяющий писать неблокирующий, асинхронный код в относительно простой манере. [Apache-2.0 License] сайт
-
STLport — образцовая версия STL. [Free]
-
STXXL — стандартная библиотека шаблонов для очень больших массивов данных (хранящихся на жестких дисках). [Boost]
-
tbox — кроссплатформенная библиотека на C, подобная glib, включающая кучу модулей: контейнеры, алгоритмы, регулярные выражения, потоки, сериализация, сеть, криптография и др. [Apache2] веб-сайт
-
Ultimate++ — кроссплатформенная среда быстрой разработки приложений (RAD) на C++. [BSD]
-
Windows Template Library — библиотека C++ для разработки GUI-приложений под Windows. [Public]
-
Yomm2 — библиотека, реализующая на C++17 концепцию мультиметодов (множественной диспетчеризации). Заменяет Yomm11 [Boost]
Пользовательские интерфейсы (GUI)
-
Boden — кроссплатформенная среда создания GUI для мобильных приложений. [GPL/LGPL/Proprietary] веб-сайт
-
CEGUI — гибкая кроссплатформенная библиотека создания GUI.
-
Elements — легкая модульная библиотека создания GUI. [MIT]
-
FLTK — быстрая, легкая, кроссплатформенная библиотека создания GUI. [LGPL2]
-
FOX Toolkit — открытая библиотека для создания виджетов. [LGPL]
-
GacUI — библиотека создания пользовательских интерфейсов на C++, с поддержкой GPU, с инструментами разработки WYSIWYG, поддержкой XML, встроенной привязкой данных и функциями MVVM. [Мс-ПЛ]
-
GTK+ — кроссплатформенная библиотека для создания графических пользовательских интерфейсов. [LGPL]
-
gtkmm — официальный интерфейс на C++ для популярной GUI библиотеки GTK+. [LGPL]
-
imgui — нераздутая, с минимальными зависимостями, библиотека для создания графических пользовательских интерфейсов. [MIT]
-
implot — виджеты построения графиков на базе imgui, с очень быстрой отрисовкой, с поддержкой GPU. [MIT]
-
iup — мультиплатформенный набор инструментов для создания графических пользовательских интерфейсов. [MIT]
-
libui — простая и переносимая (но при этом гибкая) библиотека создания GUI на языке C, которая использует native GUI для каждой поддерживаемой платформы. [MIT]
-
MyGUI — быстрая, гибкая и простая библиотека создания GUI. [MIT]
-
nana — кроссплатформенная библиотека для создания пользовательских интерфейсов в современном стиле C++. [Boost]
-
NanoGui — минималистичная кроссплатформенная библиотека виджетов для OpenGL 3.x или выше. [BSD]
-
nuklear — библиотека создания GUI, написанная на C89 (ANSI C) и состоящая из одного заголовочного файла. [PublicDomain]
-
Qt — полная и классная кроссплатформенная библиотека для создания современных GUI-приложений на С++. Но не только созданием GUI ограничивается функциональность Qt. С течением времени Qt вобрала внутрь себя кучу всяких-разных библиотек/функциональностей, потому значительная часть всех тех возможностей, что содержится в текущем списке библиотек, уже содержится в Qt. [GPL/LGPL/собственный] веб-сайт
-
QCustomPlot — библиотека на базе Qt для отрисовки графиков, без дополнительных зависимостей (кроме Qt). [GPLv3]
-
Qwt — виджеты Qt для сложных технических приложений: графики кривых, точечные диаграммы, гистограммы, контуры, слайдеры, приборные доски и прочее. [Own based on LGPL]
-
QwtPlot3D — многофункциональная библиотека C++ на базе Qt/OpenGL, предоставляющая по сути набор 3D-виджетов. [zlib]
-
RmlUi — библиотека пользовательских интерфейсов, фактически усовершенствованные технологии HTML/CSS. Форк libRocket. [MIT]
-
Sciter —это встраиваемый движок на базе HTML/CSS, предназначенный для создания GUI современных настольных приложений. [Бесплатный/Коммерческий]
-
Slint — легковесная библиотека создания GUI для десктопных приложений и встраиваемых систем. Веб-сайт [[GPL/Free/Proprietary]
-
TGUI — кроссплатформенная библиотека создания GUI на современном C++. [zlib] сайт
-
wxWidgets — библиотека C++, которая позволяет разработчикам создавать приложения для Windows, Mac OS X, Linux и других платформ. [Собственный LGPL]
-
xtd — современная платформа C++17/20 для создания консольных приложений (CLI), GUI-приложений (наподобие WinForms) и tunit-приложений (модульные тесты, наподобие Microsoft Unit Testing Framework) на Windows, macOS, Linux, iOS и Android. [MIT]
-
Yue — кроссплатформенная библиотека для создания GUi-приложений с native-стилистикой. [LGPLv2]
Графика
-
assimp — это кроссплатформенная библиотека импорта 3D-моделей, целью которой является предоставление общего API для различных форматов файлов 3D-моделей. Веб-сайт [BSD-3-Clause]
-
bgfx — кроссплатформенная библиотека рендеринга. [BSD]
-
Blend2D — движок векторной 2D-графики на базе JIT-компилятора. [zlib] сайт
-
Cairo — библиотека 2D-графики с поддержкой нескольких устройств/форматов вывода. [LGPL2 или Mozilla MPL]
-
C-Turtle — аналог модуля Turtle для языка Python, библиотека написана на C++11 и представляет собой по сути оболочку CImg. [MIT]
-
Diligent Engine — современная кроссплатформенная низкоуровневая библиотека 3D-графики. [Apache2]
-
DirectXTK — набор вспомогательных классов для написания кода DirectX 11.x на C++. [MIT]
-
GLFW — простая кроссплатформенная библиотека для OpenGL, OpenGL ES и Vulkan. [zlib/libpng]
-
GLFWPP — тонкая оболочка над GLFW, написана на C++17, состоит только из заголовочных файлов. [MIT]
-
Harfang 3D - библиотека 3D-визуализации, используемая на C++, Python, Lua и Go. Основана на bgfx. [GPLv3/LGPLv3/Proprietary] сайт
-
herebedragons - базовая 3D-сцена, реализованная с помощью различных движков, фреймворков или API. [MIT] сайт
-
Horde3D - небольшой движок для 3D-рендеринга и анимации. [EPL]
-
Ion - небольшой и эффективный набор библиотек для создания кроссплатформенных клиентских или серверных приложений, использующих 3D-графику.. [Apache2] сайт
-
Irrlicht - высокопроизводительный 3D-движок реального времени, написанный на C++. [zlib]
-
libigl - простая библиотека обработки геометрии на C++. [MPL2]
-
LLGL - тонкий слой абстракции для современных графических API: OpenGL, Direct3D, Vulkan и Metal. [BSD-3-Clause]
-
LunaSVG - библиотека рендеринга SVG на C++. [MIT]
-
magnum - Легкая и модульная оболочка на C++11/C++14 для игр и визуализации данных. [MIT] сайт
-
micro-gl – быстрая, состоящая только из заголовочных файлов библиотека векторной графики. Не требует FPU, GPU и библиотеки STD. [CUSTOM] сайт
-
NanoVG – библиотека векторной 2D-графики на базе OpenGL. [Zlib]
-
Ogre 3D - ориентированный на сцену гибкий движок 3D-рендеринга реального времени, написанный на C++. [MIT] сайт
-
OpenSceneGraph - высокопроизводительный набор инструментов для 3D-графики с открытым исходным кодом. [OSGPL]
-
OpenSubdiv - библиотека Pixar для оценки и рендеринга поверхностей разделения на CPU и GPU. [Modified Apache2]
-
OpenVDB - библиотека и инструменты для хранения, редактирования и рендеринга наборов объемных данных. [MPL2]
-
Panda3D - фреймворк для 3D-рендеринга и разработки игр на Python и C++. [BSD]
-
Partio - библиотека для работы с системами частиц (particle), поддерживающая большинство распространенных форматов файлов (PDB, BGEO, PTC). [Modified BSD]
-
Skia - полная библиотека 2D-графики для рисования текста, геометрии и изображений. [BSD] сайт
-
ThorVG - кроссплатформенная портативная библиотека, позволяющая рисовать векторные сцены и анимацию, включая SVG и Lottie. [MIT] сайт
-
TinySpline - небольшая, но мощная библиотека, написанная на ANSI C, для интерполяции, преобразования и запроса произвольных объектов NURBS, B-сплайнов и кривых Безье. [MIT]
-
urho3d – кроссплатформенный рендеринг и игровой движок. [Много разных, в основном MIT]
-
Yocto/GL – набор крошечных библиотек C++ для реалистичной графики. [MIT]
Визуализация данных
-
matplotplusplus — графическая библиотека C++ для визуализации данных. сайт [MIT]
Обработка изображений
-
Boost.GIL – библиотека обработки изображений от Boost. [Boost] сайт
-
BitmapPlusPLus - простая и быстрая библиотека, состоящая только из заголовочных файлов, для работы с форматом BMP. [MIT]
-
CImg - компактная библиотека на C++ с открытым исходным кодом для обработки изображений. [Own LGPL or GPL]
-
CxImage - библиотека обработки и преобразования изображений (включая чтение, запись, показ, преобразование), работает с форматами BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K. [zlib]
-
Dlib - современный набор инструментов машинного обучения, компьютерного зрения, численной оптимизации и глубокого обучения на C++11. [Boost] сайт
-
FreeImage - библиотека с открытым исходным кодом, которая поддерживает популярные форматы графических изображений и любые другие, необходимые современным мультимедийным приложениям. [GPL2 or GPL3]
-
GD - графическая библиотека GD, широко используемая в PHP для загрузки/манипулирования изображениями и создания миниатюр. [кастомная лицензия, требует упоминания в документации] сайт
-
DCMTK – инструментарий работы с форматом DICOM (медицинские изображения).
-
GDCM – еще одна библиотека для работы с форматом DICOM (медицинские изображения).
-
ITK - кроссплатформенная система с открытым исходным кодом для анализа изображений. [Apache2 from ITK 4.0]
-
Leptonica – библиотека обработки и анализа изображений с открытым исходным кодом. [BSD-2-Clause] сайт
-
libavif - библиотека для кодирования и декодирования файлов .avif. [BSD-2-Clause]
-
libfacedetection - библиотека с открытым исходным кодом для распознавания лиц на изображениях. Скорость обнаружения лиц может достигать 1500 кадров в секунду. [BSD]
-
libjpeg-turbo - кодек изображений JPEG, который использует инструкции SIMD для ускорения базового кодирования и декодирования JPEG. [IJG & BSD-3-Clause & zlib] сайт
-
libjxl - эталонная реализация формата изображений JPEG XL. [BSD-3-Clause]
-
libspng - простая современная альтернатива libpng. [BSD-2] сайт
-
libvips - библиотека быстрой обработки изображений с очень малыми требованиями по памяти. [LGPL] сайт
-
LodePNG - кодер и декодер PNG на C и C++.. [Zlib]
-
Magick++ - интерфейс к ImageMagick на C++. [Apache2]
-
MagickWnd - интерфейс к ImageMagick на C. [Apache2]
-
MozJPEG - улучшенный кодер JPEG. [BSD/BSD-3-Clause/ZLIB]
-
OpenCV - объемная библиотека компьютерного зрения с открытым исходным кодом. [Apache2] сайт
-
OpenEXR - кроссплатформенная библиотека для работы с форматом EXR (растровое изображение с расширенным динамическим диапазоном). [Modified BSDF]
-
OpenImageIO - мощная библиотека обработки изображений и текстур с поддержкой большого количества распространенных форматов, как со сжатием и потерями, так и RAW. [Modified BSD]
-
SAIL - простая в использовании кроссплатформенная библиотека декодирования изображений с подключаемыми в виде плагинов кодеками изображений. [MIT]
-
Simd - C++ библиотека обработки изображений с использованием SIMD: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX-512, VMX(Altivec) и VSX(Power7), NEON для ARM. [MIT]
-
stb-image - библиотека чтения изображений формата STB, библиотека состоит из одного заголовочного файла. [Public Domain]
-
tesseract-ocr - движок оптического распознавания символов (OCR). [Apache2]
-
TinyEXIF - маленькая, легкая библиотека на C++ для разбора метаданных, содержащихся в файлах JPEG (EXIF и XMP). [MIT]
-
Video++ - высокопроизводительная библиотека обработки видео и изображений на C++14. [MIT]
-
VIGRA - универсальная библиотека компьютерного зрения на C++ для анализа изображений. [MIT X11]
-
VTK - свободно распространяемая программная система с открытым исходным кодом для компьютерной 3D-графики, обработки изображений и визуализации. [BSD]
Игровые движки
-
Acid — высокоскоростной игровой движок на Vulkan API, C++17. [MIT]
-
Allegro — кроссплатформенная библиотека, в основном заточенная под программирование видеоигр и мультимедиа. [zlib]
-
Cocos2d-x — кроссплатформенная библиотека для создания 2D-игр, интерактивных книг, демок и других графических приложений. [MIT]
-
Corange — игровой движок, написанный на чистом C, использует API: SDL и OpenGL. [BSD]
-
Crown — это игровой движок общего назначения, data-driven, написанный с нуля на «ортодоксальном» C++. [MIT]
-
delta3d — надежная платформа для моделирования. [LGPL2]
-
EnTT — небольшая и простая в использовании библиотека для программирования игр и многого другого, написанная на современном C++. [MIT]
-
GamePlay — кроссплатформенный 2D/3D игровой движок для создания как мобильных, так и десктопных приложений. [Apache2]
-
Godot — полнофункциональный игровой движок с открытым исходным кодом. [MIT]
-
Grit — бесплатный игровой движок для реализации 3D-игр с открытым миром. [MIT]
-
Halley — легкий игровой движок, написанный на C++14, с поддержкой «настоящего» ECS (Entity-Component-System). [Апач 2.0]
-
JNGL — 2D-библиотека для Linux, Windows, macOS, Android, iOS, Xbox, Nintendo Switch и веб. [zlib] сайт
-
KlayGE — кроссплатформенный игровой движок с открытым исходным кодом и модульной архитектурой. [GPLv2] веб-сайт
-
nCine — кроссплатформенный 2D-движок с упором на производительность, написанный на C++11 и опционально поддерживающий сценарии на Lua. сайт [MIT]
-
o3de — кроссплатформенный 3D-движок с real-time рендером, с открытым исходным кодом, основанный на Amazon Lumberyard. [Apache2] веб-сайт
-
OpenXRay — модифицированный X-Ray-движок, используемый в серии игр «СТАЛКЕР». [Modified BSD/non-commercial only]
-
Oxygine — кроссплатформенный 2D-движок на C++. [MIT]
-
Panda3D — игровой движок, фреймворк для 3D-рендеринга и разработки игр, с интерфейсом как на C++, так и на Python. Веб-сайт [Modified BSD]
-
PixelGameEngine — официальный дистрибутив olcPixelGameEngine, легковесного кроссплатформенного инструментария пиксельной графики, пример использования которого можно посмотреть здесь. [OLC3]
-
Polycode — кроссплатформенный движок на C++ (с привязкой Lua). сайт [MIT]
-
quakeforge — активно поддерживаемая ветвь исходного кода движка Quake с более чем 20-летней историей разработки. [GPL-2.0]
-
raylib — простая и удобная в использовании библиотека для программирования видеоигр. [zlib/libpng] веб-сайт
-
Spring — мощный бесплатный кроссплатформенный игровой движок RTS. Веб-сайт [GPLv2/GPLv3]
-
Torque2D — кроссплатформенный движок C++ с открытым исходным кодом, созданный для разработки 2D-игр. сайт [MIT]
-
Torque3D — движок C++ с открытым исходным кодом, созданный для разработки 3D-игр. сайт [MIT]
-
toy engine — это тонкий (минимальные обертки) и модульный игровой движок на C++, предлагающий простые и выразительные идиомы C++ для разработки полнофункциональных 2D- или 3D-игр.
-
Urho3D — бесплатный легкий кроссплатформенный игровой движок для 2D и 3D, реализованный на C++. Во многом вдохновлен OGRE и Horde3D. [MIT]
-
ezEngine — бесплатный игровой движок с открытым исходным кодом, написанный на C++. Его философия заключается в том, чтобы быть модульным и гибким, чтобы его можно было адаптировать к множеству различных вариантов использования. сайт [MIT]
Физические движки
Движки для моделирования физики твердого тела, симуляторы
-
Box2D — физический 2D-движок для игр. [BSD-like]
-
Chipmunk — быстрая и легкая библиотека физики 2D-игр. сайт [MIT]
-
Jolt Physics — многопоточная библиотека физики твердого тела и обнаружения столкновений. Подходит для создания игр и приложений виртуальной реальности. [MIT]
-
Kratos — библиотека для создания многопоточных, многопрофильных симуляторов, заточенная под модульность, расширяемость и высокую производительность. [BSD] сайт
-
LiquidFun — физический 2D-движок для игр. [BSD-like]
-
Newton Dynamics — интегрированное решение для моделирования физических сред в реальном времени. [zlib]
-
ODE — высокопроизводительная библиотека для моделирования физики твердого тела. [BSD&LGPL]
-
ofxBox2d — обертка над Box2D с использованием openFrameworks. [BSD-like]
-
PhysX — физический движок реального времени, разработанный Nvidia как часть программного пакета Nvidia GameWorks. [BSD-3-Clause]
-
PlayRho — интерактивный физический движок. [zlib]
-
Project Chrono — библиотека моделирования многотельных систем. Веб-сайт [BSD-3-Clause]
-
Quantum++ — библиотека квантовых вычислений на C++11. [MIT]
-
Simbody — высокопроизводительная библиотека расчета динамики многотельных систем, полезная для моделирования сочлененных биомеханических и механических систем, таких как транспортные средства, роботы и человеческие скелеты. [Apache2]
-
SOFA — платформа для моделирования в реальном времени с акцентом на медицинское применение. [LGPL] веб-сайт
Мультимедиа
-
GStreamer — мультимедийный фреймворк для построения мультимедийных приложений, таких, как видеоредакторы, потоковые серверы и медиапроигрыватели. [LGPL]
-
libass — портативный рендерер субтитров для формата субтитров ASS/SSA. [ISC]
-
libav — коллекция библиотек и инструментов для обработки мультимедийного контента, такого как аудио, видео, субтитры и связанные метаданные. Веб-сайт [LGPL v2.1+ и другие]
-
LIVE555 Streaming Media — библиотека потокового мультимедиа, работающая с протоколами открытых стандартов (RTP/RTCP, RTSP, SIP). [LGPL]
-
libVLC — кроссплатформенная библиотека для работы с аудио и видео, предоставляющая комплексный мультимедийный API, который можно использовать в мобильных, серверных и десктопных приложениях для рендеринга видео и вывода звука, а также кодирования и потоковой передачи. [GPL]
-
MediaInfoLib — Удобное унифицированное отображение наиболее актуальных технических и теговых данных для видео и аудио файлов. [BSD]
-
QtAv — платформа воспроизведения мультимедиа, основанная на Qt и FFmpeg, позволяющая легко написать проигрыватель. [LGPL] веб-сайт
-
SDL — кроссплатформенная библиотека, предназначенная для обеспечения низкоуровневого доступа к аудио, клавиатуре, мыши, джойстику и графическому оборудованию. Она используется в программах воспроизведения видео, эмуляторах и играх. [zlib] сайт
-
SFML — простая и быстрая кроссплатформенная мультимедийная библиотека, представляющая собой объектно-ориентированный аналог SDL [zlib] сайт
-
TagLib — библиотека для чтения и редактирования метаданных нескольких популярных аудиоформатов. Веб-сайт [LGPL/MPL]
Видеокодеки
-
libvpx — кодек VP8/VP9. [BSD]
-
FFmpeg — полное кроссплатформенное решение для записи, преобразования и потоковой передачи аудио и видео. [LGPL2/GPL2]
-
Theora — бесплатный и открытый формат сжатия видео. [BSD]
-
Vireo — легкая и универсальная библиотека обработки видео от Twitter. [MIT]
Аудио
Звук, музыка, голос, ЦОС.
-
Amplitude Audio SDK — кроссплатформенный звуковой движок, разработанный с учетом потребностей игр. Веб-сайт [Apache-2.0]
-
Aubio — библиотека для анализа и маркировки аудио и музыки. Она прослушивает аудиосигналы и пытается определить события. Например, когда ударяют по барабану, с какой частотой звучит нота или в каком темпе исполняется ритмичная мелодия. Веб-сайт [GPL-3.0]
-
AudioFile — простая библиотека C++ для чтения и записи аудиофайлов. [MIT]
-
audioFlux — библиотека на C для анализа аудио и музыки, извлечения признаков. Она поддерживает десятки методов преобразования временно-частотного анализа и сотни соответствующих комбинаций признаков во временной и частотной областях. Она используется для изучения различных задач в области аудио, таких как классификация, разделение, поиск музыкальной информации (MIR) и ASR и т.д. [MIT]
-
dr_libs — супер-компактная библиотека декодирования звука для C и C++. [Без лицензии]
-
FMOD — простой в использовании кроссплатформенный звуковой движок и инструмент создания аудиоконтента для игр. [Бесплатно для некоммерческой деятельности]
-
KFR — быстрая, современная платформа для ЦОС (DSP): БПФ, КИХ/БИХ-фильтры, преобразование частоты дискретизации и другое. [GPL/собственная лицензия]
-
LAME — высококачественный кодер MP3. [LGPL]
-
libsndfile — библиотека C с оболочкой C++ для чтения и записи файлов, содержащих отсчеты (сэмплы) звука. [LGPL-2.1] веб-сайт
-
libsoundio — библиотека C для кроссплатформенного ввода и вывода звука в реальном времени. сайт [MIT]
-
Maximilian — Библиотека ЦОС (DSP) для аудио и музыки. [MIT]
-
OpenAL — кроссплатформенный 3D-аудио API, подходящий для использования в игровых приложениях и многих других типах аудиоприложений. Библиотека моделирует набор источников звука, движущихся в 3D-пространстве, которые слышит один слушатель, находящийся в этом пространстве. [BSD/LGPL/собственная]
-
miniaudio — библиотека воспроизведения и захвата звука, написанная на C, в одном заголовочном файле. [Без лицензии] сайт
-
ni-media — библиотека C++ для чтения и записи аудиофайлов. [MIT]
-
Opus — полностью открытый, бесплатный и универсальный аудиокодек. [BSD]
-
PortAudio — бесплатная кроссплатформенная библиотека ввода-вывода аудио с открытым исходным кодом. [MIT]
-
rnnoise — библиотека шумоподавления на основе рекуррентной нейронной сети. [BSD-3-Clause]
-
SELA — аудиокодек без потерь, который стремится быть как можно более простым и при этом иметь достаточно хороший коэффициент сжатия. [MIT]
-
SoLoud — простой портативный звуковой движок для игр. [zlib]
-
Speex — бесплатный кодек для сжатия речевого сигнала. Заменено Опусом (Opus). [BSD]
-
Tonic — простой и эффективный синтез звука на C++. [Без лицензии]
-
Vorbis — библиотека работы с аудиоформатом Ogg Vorbis. Это полностью открытый, непатентованный, не требующий патентов и лицензионных отчислений формат сжатого аудио общего назначения. [BSD]
-
minimp3 — общедоступный декодер MP3, библиотека состоит только из заголовочных файлов. [CC0]
-
Verovio — быстрая и легкая библиотека для работы с нотами. [LGPL] веб-сайт
-
Wav2Letter++ — общедоступный набор инструментов для быстрой обработки речи с открытым исходным кодом, полностью написанный на C++ и использующий тензорную библиотеку ArrayFire и библиотеку машинного обучения flashlight для максимальной эффективности. [BSD]
ЦОС (DSP)
Цифровая обработка сигналов.
-
DSPFilters — коллекция полезных классов C++ для цифровой обработки сигналов. [MIT]
-
FFTW — библиотека на C для вычисления ДПФ, в том числе многомерного. [GPL]
-
iir1 — библиотека БИХ-фильтров (IIR) на C++. [MIT]
-
kissfft — быстрое преобразование Фурье (БПФ). [BSD-3-Clause]
-
Pocketfft — реализация БПФ на основе FFTPack, но с некоторыми улучшениями. [BSD-3-Clause]
-
wavelib — реализация одномерного и двумерного вейвлет-преобразований на языке C. [BSD-3-Clause]
Научные вычисления
-
AMGCL — библиотека C++, состоящая только из заголовочных файлов, предназначенная для решения больших разреженных систем линейных уравнений алгебраическим многоуровневым методом (AMG). [MIT]
-
Au - библиотека сопоставления физических единиц (футы в ярды, метры в километры и пр.). Веб-сайт [Apache 2.0]
-
FFTW — библиотека на C для вычисления ДПФ и БПФ в одном или нескольких измерениях. [GPL]
-
GSL — большая библиотека численных методов, содержащая более 1000 полезных функций, хорошо покрытых тестами. Решение систем линейных уравнений, дифференциальных уравнений, интерполяции, аппроксимации, нахождение корней многочленов и многое-многое другое. [GPL]
-
preCICE — библиотека моделирования механики жидкости и газов. [LGPL] веб-сайт
-
TileDB — мощный механизм для хранения и доступа к обычным и разреженным многомерным матрицам. сайт [MIT]
-
Trilinos — высокопроизводительная библиотека численных методов для решения задач из разных областей математики: обычных дифференциальных уравнений, дифференциальных уравнений в частных производных, линейной алгебры и пр. [BSD]
-
Torch — библиотека научных вычислений с широкой поддержкой GPU, для решения весомого набора математических задач: оптимизационные алгоритмы, задачи линейной алгебры, обработка изображений, нейронные сети, графы и др. Веб-сайт [BSD-3-Clause]
Математика
-
algorithms – реализация базовых, «студенческих» алгоритмов.
-
Apophenia — библиотека на C для статистических и научных вычислений. [GPL2]
-
Armadillo — быстрая библиотека C++ для линейной алгебры и научных вычислений. [Apache2] веб-сайт
-
autodiff — современная, быстрая и выразительная библиотека C++ для автоматического дифференцирования. сайт [MIT]
-
blaze — высокопроизводительная математическая библиотека C++, реализующая алгоритмы как для обычных, так и для разреженных данных (матриц, векторов). [BSD]
-
Boost.Multiprecision — библиотека больших чисел, реализующая классы чисел большего порядка или точности, чем встроенные типы C++. Библиотека состоит только для заголовочных файлов. [Boost] веб-сайт
-
ceres-solver — библиотека C++ для моделирования и решения больших и сложных оптимизационных задач, например таких, как нелинейный метод наименьших квадратов для задач с граничными значениями. [BSD]
-
CGAL — сборник эффективных и надежных геометрических алгоритмов. Веб-сайт [LGPL и GPL]
-
cml — математическая библиотека C++ для игр и графики. [Boost]
-
CNL — Библиотека числовых классов с фиксированной точностью, которая дает возможность на базе целочисленных типов С++ создавать более безопасные, простые и дешевые арифметические типы, чем float и double. Это полезно, например, для цифровой обработки сигналов (ЦОС) – см, например, библиотеку cdsp. [Boost]
-
DirectXMath —библиотека линейной алгебры на C++ для использования в играх и графических приложениях. Состоит из inline-функций с использованием векторизации (SIMD).
-
Dlib — большой набор инструментов машинного обучения, компьютерного зрения, численной оптимизации и глубокого обучения на C++11. [Boost] веб-сайт
-
Eigen — высокоуровневая шаблонная библиотека C++ для линейной алгебры, матричных и векторных операций, численных методов и прочих алгоритмов. [МПЛ2]
-
ExprTk —это простая в использовании, легко интегрируемая и чрезвычайно эффективная библиотека парсинга и вычисления математических выражений. [MIT]
-
Geometric Tools — библиотека C++ для вычислений в области математики, графики, анализа изображений и физики. [Boost] веб-сайт
-
GLM — математическая библиотека для создания приложений работы с графикой, на базе GLSL, написана на C++ и состоит только из заголовочных файлов. сайт [MIT]
-
GMP — библиотека на C для арифметики произвольной точности, работающая со знаковыми целыми числами, рациональными числами и числами с плавающей запятой. [LGPL3 и GPL2]
-
Klein — быстрая библиотека геометрических вычислений для определения проекций, пересечений, объединений, расчета движения твердого тела и многого другого. Написана на C++17, использует векторизацию (SIMD). сайт [MIT]
-
linalg.h — маленькая, состоящая из одного файла, библиотека векторных и матричных арифметических вычислений. Векторизацию (SIMD) не завезли. [Без лицензии]
-
MatX — библиотека численных вычислений на C++17, с возможностью графического ускорения (GPU) и matlab/python-подобным синтаксисом. [BSD 3-clause]
-
MIRACL — библиотека эллиптической криптографии (ECC). [AGPL]
-
NumCpp — шаблонная реализация библиотеки Python Numpy. [MIT]
-
muparser — расширяемая высокопроизводительная библиотека парсинга и вычисления математических выражений. [MIT]
-
LibTomMath — библиотека чисел произвольной точности, написанная на C. Веб- сайт [PublicDomain & WTFPL]
-
linmath.h — маленькая библиотека простых типов данных, использующихся в задачах компьютерной графики. [WTFPL]
-
lp_solve — библиотека для решения задач линейного программирования. [LGPL] веб-сайт
-
OpenBLAS — библиотека линейной алгебры [BSD 3-clause] веб-сайт
-
PCG-rand —семейство простых, быстрых и статистически эффективных алгоритмов генерации случайных чисел. [Apache]
-
QuantLib — библиотека для задач количественных финансов. Веб-сайт [Modified BSD]
-
SimSIMD — несколько часто используемых математических функций (скалярное произведения, расстояние между векторами), написанных с использованием механизмов векторизации (x86 AVX2, AVX-512, Arm NEON, SVE). [Apache2]
-
StatsLib — библиотека функций статистических распределений, состоящая только из заголовочных файлов. [Apache2] веб-сайт
-
SymEngine — быстрая библиотека символьных вычислений, переписанная версия ядра SymPy на C++. [MIT]
-
TinyExpr — библиотека парсинга и вычисления математических выражений. [zlib]
-
Vc — реализация класса вектора с поддержкой быстрых арифметических операций на базе SIMD. [BSD]
-
Versor — библиотека для решения задач из алгебры Клиффорда.
-
Wagyu - библиотека геометрических вычислений для объединения, пересечения, разности и xor. [mapbox-wagyu original].
-
Wykobi — библиотека эффективных, надежных и простых в использовании функций вычислительной геометрии для двухмерного и трехмерного пространства. [MIT]
-
xtensor — библиотека для численного анализа с использованием многомерных массивов. [BSD 3-clause] веб-сайт
-
Universal — библиотека C++14, состоящая только из заголовочных файлов, реализующая произвольную posit-арифметику. (Система счисления posit - это система с плавающей точкой, которая более эффективна, чем система с плавающей точкой IEEE). [лицензия MIT]
Графы
-
CXXGraph — бесплатная C++(17) библиотека, состоящая только из заголовочных файлов, для представления графов и алгоритмов на графах. [AGPL-3.0]
-
Graaf — легковесная библиотека работы с графами на C++20. сайт [MIT]
Биология
Биоинформатика, Геномика, Биотехнологии
-
BioC++ — вычислительные библиотеки на C++ для биоинформатики. [BSD]
-
Chaste — библиотека C++ с открытым исходным кодом для компьютерного моделирования математических моделей, разработанных для физиологии и биологии. [BSD]
-
libsequence — библиотека C++ для представления и анализа данных популяционной генетики. [GPL]
-
SeqAn — алгоритмы и структуры данных для анализа последовательностей с акцентом на биологические данные. [BSD/3-пункт]
-
Vcflib — библиотека C++ для анализа и управления файлами VCF. [MIT]
-
Wham — Структурные варианты (SV) в геномах путем прямого применения ассоциативных тестов к файлам BAM. [MIT]
Химия
Химия, Квантовая химия, Химия твердого тела/Физика, Геохимия, Биохимия
-
d-SEAMS — библиотека анализа траекторий молекулярной динамики на C++ и Lua с Nix. Отложенный структурный анализ для молекулярного моделирования. [GPL] веб-сайт
-
gromacs — реализация параллельной молекулярной динамики с передачей сообщений. [GPL] веб-сайт
-
Reaktoro — вычислительная среда на C++ и Python для моделирования химически реактивных систем. [LGPL] веб-сайт
-
LAMMPS — программа классической молекулярной динамики, ориентированная на моделирование материалов. Крупномасштабный атомно-молекулярный массово-параллельный симулятор. [GPL] веб-сайт
-
MADNESS — среда для научного моделирования. MADNESS предоставляет высокоуровневую среду для решения интегральных и дифференциальных уравнений во многих измерениях с помощью адаптивных, быстрых методов с гарантированной точностью, основанных на многоразрешающем анализе и новых разделенных представлениях. [GPL] веб-сайт
-
MPQC - Программа массово-параллельной квантовой химии, MPQC, вычисляет свойства атомов и молекул на основе первопринципов, используя независимое от времени уравнение Шредингера. [GPL] веб-сайт
-
ORCA — пакет программ по квантовой химии, содержащий современные методы электронной структуры. [Academic] сайт
Робототехника
-
MOOS-IvP — набор C++-модулей с открытым исходным кодом для обеспечения автономности роботизированных платформ, в частности автономных морских транспортных средств.
-
MRPT — набор инструментов для программирования мобильных роботов. [BSD]
-
PCL — автономный крупномасштабный открытый проект для обработки 2D/3D-изображений и моделировании по облаку точек. [BSD] сайт
-
Robotics Library (RL) — библиотека C++ для кинематики роботов, планирования движения и управления. [BSD]
-
RobWork — коллекция библиотек C++ для моделирования и управления робототехническими системами. [Apache2] веб-сайт
-
ROS — библиотеки и инструменты для создания приложений для роботов. [BSD]
-
Ruckig — библиотека генерации движений в реальном времени для роботов и машин. сайт [MIT]
-
YARP — библиотека и набор инструментов для связи и управления устройствами (от гуманоидов до встраиваемых систем). Веб-сайт [BSD-3-Clause]
Искусственный интеллект
Искусственный интеллект, нейронные сети, машинное обучение
-
ANNetGPGPU — библиотека нейронных сетей, основанная на CUDA и работающая на GPU. [LGPL]
-
btsk — Behavior Tree Starter Kit, для геймдева. [zlib]
-
Evolving Objects — основанная на шаблонах библиотека эволюционных вычислений ANSI-C++, которая помогает вам безумно быстро писать собственные алгоритмы стохастической оптимизации. [LGPL]
-
frugally-deep — библиотека, состоящая только из заголовочных файлов, для использования моделей Keras в C++. [MIT]
-
Genann — простая библиотека нейронных сетей на C. [zlib]
-
MXNet — легкое, портативное, гибкое распределенное/мобильное глубокое обучение с динамическим планировщиком потоков данных; для Python, R, Julia, Scala, Go, Javascript и других. Веб-сайт
-
PyTorch — тензоры и динамические нейронные сети с хорошей производительностью за счет GPU. Веб-сайт
-
flashlight — быстрая и гибкая библиотека машинного обучения, полностью написанная на C++. [BSD]
-
Recast/Detour — (3D) Генератор навигационной сетки и поиск пути, в основном для игр. [zlib]
-
TensorFlow — открытая библиотека для решения задач построения и тренировки нейронной сети с целью автоматического нахождения и классификации образов. [Apache]
-
oneDNN — открытая кроссплатформенная библиотека глубокого обучения. [Apache] веб-сайт
-
CNTK — Microsoft Cognitive Toolkit (CNTK), набор инструментов для глубокого обучения с открытым исходным кодом. [Boost]
-
tiny-dnn — библиотека глубокого обучения на C++11, состоящая только из заголовочных файлов. [BSD]
-
Veles — распределенная платформа для быстрой разработки приложений глубокого обучения. [Apache]
-
Kaldi — инструментарий для распознавания речи. [Apache]
Машинное обучение
-
Caffe - быстрый фреймворк глубокого обучения. [BSD]
-
catboost - быстрая, масштабируемая и высокопроизводительная библиотека машинного обучения, использующая градиентный бустинг над решающими деревьями (GBDT) в качестве основного метода обучения. Библиотека создана в недрах Яндекса и используется для ранжирования, классификации, регрессии и других задач машинного обучения. [Apache2]
-
CCV - библиотека компьютерного зрения. [BSD]
-
darknet - библиотека для создания нейронных сетей, с открытым исходным кодом, написанная на C и CUDA [PublicDomain] сайт
-
Dlib - современный набор инструментов машинного обучения, компьютерного зрения, численной оптимизации на C++11. [Boost] сайт
-
FAISS - библиотека эффективной реализации алгоритмов поиска сходства (similarity search) и кластеризации плотных векторов (dense vector). [MIT]
-
Fido - легкая библиотека машинного обучения на C++ для встраиваемой электроники и робототехники. [MIT] сайт
-
flashlight - быстрая и гибкая библиотека машинного обучения от Facebook AI Research, полностью написанная на C++ и основанная на тензорной библиотеке ArrayFire. [BSD-3-Clause] сайт
-
ggml - тензорная библиотека для машинного обучения с поддержкой 16-битного и 4-битного квантования. [MIT]
-
libsvm - простая, легкая в использовании и эффективная библиотека машинного обучения, реализующая метод опорных векторов (SVM). [BSD-3-Clause] сайт
-
m2cgen - консольная утилита для перевода обученных классических моделей машинного обучения (довольно много типов моделей поддерживается) в код на языках Java, C, Python, Go, JavaScript, Visual Basic, C#, R, PowerShell, PHP, Dart, Haskell, Ruby, F#, Rust. Библиотека написана на C, без каких-либо сторонних зависимостей. [MIT]
-
MeTA – инструментарий для работы с большими текстовыми данными. [MIT] сайт
-
Minerva – быстрая и гибкая библиотека глубокого обучения, работающая как на CPU, так и на GPU. [Apache2]
-
mlpack - масштабируемая библиотека машинного обучения на C++. [LGPLv3] сайт
-
ncnn – библиотека высокопроизводительных алгоритмов компьютерного зрения, обработки изображений и прочего, оптимизированная для мобильных платформ. [BSD]
-
OpenCV – пожалуй, самая известная из подобных библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения. [BSD] сайт
-
oneDAL - мощная библиотека машинного обучения, которая помогает ускорить анализ больших данных. [Apache]
-
ONNX runtime - библиотека для обучения и выполнения (inference) моделей ONNX. ONNX — это стандарт, в который (и из которого) можно конвертировать модели ИИ независимо от библиотеки, с помощью которой они были получены (обучены). [MIT] сайт
-
Recommender - библиотека на C для рекомендаций/предложений по продуктам с использованием совместной фильтрации (collaborative filtering). [BSD]
-
RNNLIB - библиотека рекуррентных нейронных сетей для работы с последовательностями. [GPLv3]
-
SHOGUN – давно существующая и довольно известная библиотека машинного обучения с японскими корнями)) (потому что СЁГУН). [GPLv3]
-
sofia-ml — набор быстрых пошаговых алгоритмов машинного обучения (incremental learning). [Apache2]
-
USearch — библиотека быстрого поиска и кластеризации векторов и строк. [Apache2]
-
VLFeat — библиотека алгоритмов компьютерного зрения, специализирующаяся на распознавании изображений, а также извлечении и сопоставлении локальных признаков. Веб-сайт [BSD-2-пункт]
-
xgboost — масштабируемая, портативная и распределенная библиотека машинного обучения, реализующая различные вариации метода повышения градиента (GBDT, GBRT, GBM). Может работать как на одной машине, так и на кластерах из сотен и тысяч узлов (см. Hadoop, Spark, Flink, DataFlow). [Apache2]
Параллельное программирование
Параллельное программирование и многопоточность
-
alpaka — библиотека абстракций для разработки ускорителей на C++17, состоит только из заголовочных файлов. [LGPLv3+]
-
ArrayFire — библиотека параллельных вычислений общего назначения на GPU. [BSD]
-
Async++ — легковесная библиотека параллельных вычислений для C++11, вдохновленная библиотекой Microsoft PPL и предложением стандарта C++ N3428. [MIT]
-
Boost.Compute — библиотека вычислений на GPU для OpenCL. [Boost] веб-сайт
-
Bolt — библиотека шаблонов C++, оптимизированная для графических процессоров. [Apache2]
-
Channel — потокобезопасный контейнер для обмена данными между потоками. [MIT]
-
ck — Примитивы параллелизма, механизмы безопасного освобождения памяти и неблокирующие структуры данных. [BSD]
-
concurrentqueue — быстрая параллельная очередь без блокировок для нескольких производителей и нескольких потребителей для C++11. [BSD, Boost]
-
CUB — современные программные компоненты многократного использования для каждого уровня режима программирования CUDA. [New BSD]
-
cuda-api-wrappers — легкие обертки, написанные на современном C++, для программирования на CUDA GPU. [BSD]
-
cupla — C++ API для запуска CUDA/C++ на OpenMP, Threads, TBB,... через alpaka. [LGPLv3+]
-
C++React — библиотека реактивного программирования на C++11. [Boost]
-
FiberTaskingLib — многопоточная библиотека на основе задач, поддерживающая графы задач с произвольными зависимостями. [Apache]
-
HPX — система выполнения C++ общего назначения для параллельных и распределенных приложений любого масштаба. [Boost]
-
Intel Games Task Scheduler — библиотека планирования задач, разработанная для нужд разработчиков игр. [MIT]
-
Intel Parallel STL — реализация Intel C++17 STL для C++11 и выше. [Apache2]
-
Intel TBB — гибкая библиотека C++, которая упрощает работу по добавлению параллелизма в сложные приложения, даже если Вы не являетесь экспертом по потокам. [Apache2]
-
junction — библиотека параллельных структур данных на C++. [BSD]
-
Kokkos — высокопроизводительная портативная модель программирования для параллельного выполнения и абстракции памяти. [BSD]
-
libcds — библиотека C++ параллельных структур данных. [BSD]
-
Libclsph — библиотека моделирования жидкости SPH с ускорением на базе OpenCL. [MIT]
-
libdill — представляет структурированный параллелизм в C. [MIT]
-
libdispatch — Grand Central Dispatch (GCD), разработанный Apple Inc., представляет собой технологию параллелизма задач, основанную на шаблоне пула потоков. libdispatch — это библиотека, обеспечивающая реализацию сервисов GCD. Веб-сайт [Apache-2.0]
-
libmill — представляет параллелизм в стиле Go в C. [MIT]
-
marl — гибридный планировщик параллельных задач, написанный на C++ 11. [Apache-2.0]
-
Moderngpu — библиотека повышения производительности для вычислений общего назначения на графических процессорах. Это библиотека C++, состоящая только из заголовочных файлов, написанная для CUDA. Уникальная ценность библиотеки заключается в ускорении примитивов для решения нерегулярно-параллельных задач. [FreeBSD & Copyright, Sean Baxter]
-
NCCL — оптимизированные примитивы для коллективной связи между несколькими графическими процессорами. [BSD]
-
OpenCL — открытый стандарт параллельного программирования гетерогенных систем.
-
OpenMP — API OpenMP.
-
rotor — микро-фреймворк для циклов обработки событий. [MIT]
-
SObjectizer — реализация моделей Actor, Publish-Subscribe и CSP в одной довольно небольшой платформе C++. [BSD-3-Clause]
-
Quantum — мощная платформа диспетчера сопрограмм C++, построенная на основе Boost.Coroutine2 .
-
RaftLib — параллельная потоковая передача/потоки данных с помощью операторов, подобных C++ iostream. [Apache2]
-
readwriterqueue — быстрая очередь без блокировок с одним производителем и одним потребителем для C++. [BSD]
-
stdgpu — эффективные STL-подобные структуры данных на графическом процессоре. [Apache2]
-
Taskflow — универсальная система программирования параллельных и гетерогенных задач. (переименовано из Cpp-Taskflow) [MIT]
-
Thrust — библиотека параллельных алгоритмов, напоминающая стандартную библиотеку шаблонов C++ (STL). [Apache2]
-
transwarp — библиотека C++ для параллельного выполнения задач, состоящая только из заголовочных файлов. [MIT]
-
VexCL — библиотека шаблонов векторных выражений C++ для OpenCL/CUDA. [MIT]
-
STAPL — библиотека для современного параллельного программирования, предназначенная для работы как с общей, так и с распределенной памятью. [BSD]
-
concurrencpp — общая библиотека параллелизма, содержащая задачи, исполнители, таймеры и сопрограммы C++20 для управления ими всеми.
Асинхронная обработка событий
-
Asio — кроссплатформенная библиотека C++ для сетевого и низкоуровневого программирования ввода-вывода, которая предоставляет разработчикам согласованную асинхронную модель с использованием современного C++. [Boost] веб-сайт
-
Boost.Asio — кроссплатформенная библиотека C++ для сетевого и низкоуровневого программирования ввода-вывода. [Boost] веб-сайт
-
C++ Actor Framework — реализация модели акторов на C++ с открытым исходным кодом. Веб-сайт [BSD-3-Clause]
-
Ichor — очередь событий, которая фокусируется на безопасности потоков и обеспечивает внедрение зависимостей. [MIT]
-
libev — полнофункциональный и высокопроизводительный цикл событий, в общих чертах смоделированный по образцу libevent, но без его ограничений и ошибок. [BSD и GPL]
-
libevent — библиотека уведомлений о событиях. [BSD]
-
libhv — кроссплатформенная библиотека циклов событий. [BSD]
-
libuv — кроссплатформенный асинхронный ввод-вывод. [BSD]
-
Promise-cpp — библиотека только из заголовочных файлов, реализующая стандарт Promise/A+. [Anti-996]
Межпроцессное взаимодействие
Межпроцессное взаимодействие (IPC), Удалённый вызов процедур (RPC), протоколы обмена сообщениями.
-
Apache Thrift - эффективный межъязыковой IPC/RPC, работает между C++, Java, Python, PHP, C# и многими другими языками. Первоначально библиотека разрабатывалась в Facebook. [Apache2]
-
Boost.Interprocess - библиотека от Boost, состоящая только из заголовочных файлов, которая поддерживает разделяемую память на уровне ядра и файлы, отображаемые в этой памяти, со встроенными механизмами синхронизации (семафоры, мьютексы и т. д.). [Boost] сайт
-
bRPC - фреймворк RPC промышленного уровня, который часто используется в высокопроизводительных системах, таких как системы поиска, хранения, машинного обучения, в рекламе, рекомендациях и т. д. [Apache2] сайт
-
Cap'n Proto – во-первых, это эффективный формат быстрого обмена данными, во-вторых, это RPC-система. По поводу формата – он типа JSON, только бинарный, и типа Protobuf, только намного-намного быстрее. [MIT] сайт
-
eCAL – высокопроизводительная библиотека межпроцессного взаимодействия как локального (на одной машине), так и между различными узлами в компьютерной сети. Поддерживает модели подписчик-издатель и клиент-сервер, языки C++/Python/C# и различные протоколы сообщений (protobuf, capnproto и др). [Apache2] сайт
-
gRPC - высокопроизводительная библиотека RPC общего назначения с открытым исходным кодом. [BSD] сайт
-
Ice - универсальное решение для создания сетевых приложений с функциями RPC, моделью подписчик-издатель и клиент-сервер, с поддержкой языков C++, C#, Java, JavaScript, Python и другими. [GPLv2]
-
iceoryx - библиотека межпроцессного взаимодействия с настоящей поддержкой нулевого копирования для систем, критически важных для безопасности, с привязками для C, Rust. Работает на Linux, QNX, Windows, Mac OS, FreeBSD. [Apache2] сайт
-
libjson-rpc-cpp – фреймворк для JSON-RPC. [MIT]
-
nanomsg - простая высокопроизводительная реализация нескольких протоколов сообщений на базе разных протоколов, например TCP, UNIX sockets, и даже WebSocket. [MIT] сайт
-
nng — легковесная библиотека обмена сообщениями без брокеров. сайт [MIT]
-
rpclib — библиотека RPC, простое создание сервера и клиента. [MIT]
-
simple-rpc-cpp — простой генератор RPC-оболочек для функций C/C++. [BSD]
-
SRPC — легковесная система RPC, поддерживающая множество протоколов и OpenTelemetry. [Apache2]
-
WAMP — предоставляет разные шаблоны обмена сообщениями RPC. (различные реализации, разные языки)
-
xmlrpc-c — легковесная библиотека RPC, основанная на XML и HTTP. [BSD]
Базы данных
Библиотеки баз данных, серверы SQL, драйверы ODBC и прочее
-
ClickHouse — C++ клиент для СУБД ClickHouse. [Apache2]
-
DuckDB — встраиваемая СУБД SQL OLAP. [MIT]
-
hiberlite — объектно-реляционное отображение для sqlite3. [BSD]
-
Hiredis — минималистичная клиентская библиотека C для базы данных Redis. [BSD]
-
Infinity — база данных на основе искусственного интеллекта, созданная для приложений LLM и обеспечивающая невероятно быстрый векторный и полнотекстовый поиск. [Apache2]
-
Kvrocks — распределенная база данных NoSQL с ключами и значениями, которая использует RocksDB в качестве механизма хранения и совместима с протоколом Redis. [Apache2]
-
LevelDB — быстрая библиотека хранения значений ключей, написанная в Google, которая обеспечивает упорядоченное сопоставление строковых ключей со строковыми значениями. [BSD]
-
libpqxx — официальный клиентский API C++ для PostgreSQL. [BSD-3-Clause]
-
LMDB — очень быстрое встроенное хранилище ключей/значений с полной семантикой ACID. [OpenLDAP]
-
LMDB++ — библиотека C++11 для встраиваемой базы данных LMDB. [PublicDomain]
-
MongoDB C Driver— клиентская библиотека MongoDB для C. [Apache2]
-
MongoDB C++ Driver — драйвер C++ для MongoDB. [Apache2]
-
MongoDB Libbson — утилиты для BSON. [Apache2]
-
MySQL++ — оболочка C++ для MySQL C API. [LGPL]
-
nanodbc — небольшая оболочка C++ для собственного C ODBC API. [MIT]
-
ODB — кроссплатформенная система объектно-реляционного отображения (ORM) с открытым исходным кодом для C++. [GPLv2]
-
redis3m — оболочка над Hiredis с чистым интерфейсом C++, поддерживающая Sentinel и готовые к использованию шаблоны. Требует библиотеки Hiredis и boost. [Apache2]
-
RocksDB — быстрое встраиваемое хранилище пар «ключ-значение». Библиотека родом из Facebook. [BSD]
-
SimDB — хранилище пар «ключ-значение» на C++11: высокая производительность, общая память, отсутствие блокировок, кроссплатформенность, состоит из единственного заголовочного файла, минимальные зависимости. [Apache2]
-
SOCI — единая обертка для разных типов баз данных. [Boost]
-
Speedb — высокопроизводительное масштабируемое встраиваемое хранилище пар «ключ-значение», совместимое с RocksDB. [Apache2]
-
SQLite — полностью встраиваемая полнофункциональная реляционная база данных размером в несколько сотен килобайт, которую вы можете включить прямо в свой проект. [PublicDomain]
-
SQLiteC++ — это умная и простая в использовании оболочка SQLite3. [MIT]
-
sqlitemoderncpp — оболочка C++14 над библиотекой SQLite, состоящая только из заголовочных файлов. [MIT]
-
sqlite_orm — объектно-реляционное отображение (ORM) для SQLite, библиотека состоит только из заголовочных файлов, написана на современном C++. [AGPL + платный MIT]
-
sqlpp11 — типобезопасный встроенный доменно-ориентированный язык для SQL-запросов и результатов на C++. [BSD-2-Clause]
-
TileDB — быстрая СУБД с плотными и разреженными многомерными массивами. сайт [MIT]
-
UnQLite — автономный, бессерверный, транзакционный NoSQL-движок со стартовой конфигурацией. Веб-сайт [BSD-2-пункт]
-
upscaledb — встроенное «типизированное» хранилище ключей/значений со встроенным интерфейсом запросов. [GPLv3]
-
TigerBeetleDB C++ client (Community) — база данных финансового учета, разработанная для обеспечения критически важной безопасности и производительности. [BSL-1.0]
-
UStore — мультимодальная база данных для BLOB, JSON и графиков. [Apache2]
-
Velox — векторизованная библиотека ускорения баз данных C++, предназначенная для оптимизации механизмов запросов и систем обработки данных. Веб-сайт [Apache-2.0]
Сжатие данных
Библиотеки сжатия и архивирования
-
bit7z — статическая библиотека C++, предлагающая понятный и простой интерфейс для работы с 7-zip. [МПЛ2]
-
Brotli — формат сжатия Brotli. Разработано Google. [MIT]
-
bzip2 — свободно доступный, непатентованный высококачественный компрессор данных. [BSD]
-
FiniteStateEntropy — кодеки нового поколения: Finite State Entropy и Huff0.
-
Heatshrink — библиотека сжатия данных для встраиваемых систем и систем реального времени [ISC]
-
KArchive — библиотека для создания, чтения, записи и управления файловыми архивами, такими как zip и tar. Она также обеспечивает прозрачное сжатие и распаковку данных с использованием таких форматов, как gzip, через подкласс QIODevice. [LGPL]
-
libarchive — многоформатная библиотека архивирования и сжатия. Веб-сайт [New BSD]
-
LZFSE — библиотека сжатия, разработанная Apple.
-
LZHAM — библиотека сжатия данных без потерь со степенью сжатия, аналогичной LZMA, но с гораздо более быстрой распаковкой. [BSD]
-
LZMA — стандартный и общий метод сжатия формата 7z. [PublicDomain] веб-сайт
-
LZMAT — чрезвычайно быстрая библиотека сжатия данных без потерь в реальном времени. [GPL]
-
miniz — суперкомпактная библиотека сжатия C с zlib-совместимым API, чтение/запись ZIP-архива, запись PNG. [MIT]
-
Minizip — ZLib с последними исправлениями ошибок, поддерживающий объединение дисков PKWARE, шифрование AES и буферизацию ввода-вывода. [zlib]
-
minizip-ng — форк популярной библиотеки для работы с zip-архивами, входящей в дистрибутив ZLib. [zlib]
-
PhysicsFS — библиотека для предоставления абстрактного доступа к различным архивам. Предназначена для использования в видеоиграх. [zlib]
-
Rapidgzip — декомпрессия Gzip и произвольный доступ для современных многоядерных машин. [Apache-2/MIT]
-
smaz — библиотека сжатия небольших строк. [BSD]
-
Snappy — быстрый компрессор/декомпрессор. [BSD]
-
ZLib — очень компактная библиотека сжатия потоков данных. [zlib]
-
zlib-ng — zlib для систем «следующего поколения». Замена Drop-In с некоторыми серьезными оптимизациями. [zlib]
-
zstd — алгоритм быстрого сжатия в реальном времени. Разработано Facebook. [BSD]
-
ZZIPlib — обеспечивает доступ для чтения ZIP-архивов. [MPL/LGPL]
Регулярные выражения
-
CppVerbalExpressions — библиотека для построения сложных регулярных выражений. [MIT]
-
CTRE — библиотека сопоставления регулярных выражений, совместимая (почти) с PCRE. [MIT]
-
Hyperscan — Hyperscan — это высокопроизводительная библиотека от Intel для сопоставления множества регулярных выражений. Обеспечивает одновременное сопоставление большого количества регулярных выражений (до десятков тысяч). Обычно используется в стеке библиотеки DPI. [BSD]
-
Oniguruma — современная и гибкая библиотека регулярных выражений, поддерживающая различные кодировки символов. [BSD]
-
PCRE — библиотека регулярных выражений на C с возможностями регулярных выражений как в Perl. [BSD]
-
PIRE — библиотека регулярных выражений от Яндекса. Может быть очень быстрой при сопоставлении текстов (более 400 МБ/с). [LPGL v3.0]
-
RE2 — библиотека регулярных выражений на базе конечных автоматов. [BSD-3-Clause]
-
SLRE — сверхлегкая библиотека регулярных выражений на C/C++. [GPLv2/собственная]
-
sregex — Perl-совместимая библиотека регулярных выражений на основе детерминированных и недетерминированных конечных автоматов и поиска без возврата для сопоставления больших потоков данных. [BSD]
-
SRELL – шаблонная библиотека регулярных выражений с поддержкой Юникода. [BSD].
Контейнеры
-
C++ B-tree — библиотека шаблонов, реализующая упорядоченные контейнеры в памяти на основе структуры данных B-дерева. [Apache2]
-
Dynamic_bitset — bitset, C++17, состоит только из заголовочных файлов. [MIT]
-
Hashmaps — реализация алгоритмов хеш-таблиц с открытой адресацией на C++. [MIT]
-
Hopscotch map — быстрая хэш-мапа, которая использует хеширование в классах для разрешения коллизий. Состоит только из заголовочных файлов [MIT]
-
flathashmap — очень быстрая плоская хэш-таблица с хешированием Фибоначчи.
-
LSHBOX — набор инструментов C++ для локально-зависимого хеширования (LSH), предоставляет несколько популярных алгоритмов LSH, а также поддерживает Python и MATLAB. [GPL]
-
Parallel-hashmap — семейство очень быстрых и удобных для памяти контейнеров быстрого поиска. Состоит только из заголовочных файлов. [Apache2]
-
PGM-index — структура данных, которая обеспечивает быстрый поиск, поиск предшественников, диапазонов и обновление в массивах из миллиардов элементов, используя на порядки меньше места, чем традиционные индексы. [Apache2] веб-сайт
-
plf::colony — неупорядоченный контейнер типа «мешок», который превосходит стандартные контейнеры в сценариях с высокой степенью модификации, сохраняя при этом постоянные указатели на нестираемые элементы независимо от вставки/стирания. [zLib] сайт
-
plf::list — реализация std::list, которая удаляет сращивание диапазонов, чтобы включить более удобную для кэша структуру, что дает значительный прирост производительности. [zLib] сайт
-
plf::stack — контейнер, заменяющий std::stack, с более высокой производительностью, чем любой другой стек. [zLib] сайт
-
Ring Span lite — упрощенная реализация Ring Span Артура О'Двайера, т.е. вариации кругового буфера. [MIT]
-
robin-hood-hashing — быстрая и эффективная по использованию памяти хеш-таблица, основанная на хешировании Робин Гуда, написано на C++14. [MIT]
-
robin-map — Быстрая хэш-карта и набор хешей с использованием хеширования Робин Гуда. [MIT]
-
sparsepp — быстрая и эффективная хэш-карта для C++. [BSD 3-clause]
-
svector — компактный вектор, оптимизированный для SVO, для C++17 или выше. [MIT]
-
unordered_dense — быстрая и плотно хранимая хэш-карта и хэш-набор, основанные на удалении обратного сдвига Робин Гуда. [MIT]
Сортировка
-
cpp-sort — алгоритмы сортировки и сопутствующие инструменты. [MIT]
-
pdqsort — реализация алгоритма pattern-defeating quicksort. [zlib]
-
Timsort — шаблонная стабильная функция сортировки, которая превосходит алгоритмы на основе быстрой сортировки, включая std::sort, на перевернутых или частично отсортированных данных. [MIT]
-
Indiesort — оболочка, которая позволяет использовать std::sort (и другие функции сортировки с произвольным доступом) с контейнерами без произвольного доступа, а также повышает производительность сортировки для больших/нетривиально копируемых типов в контейнерах с произвольным доступом и массивах. [zLib] сайт
Распределение памяти
-
Boehm GC — консервативный сборщик мусора для C и C++. [X11] веб-сайт
-
C Smart Pointers — интеллектуальные указатели для C. [MIT]
-
Hoard — быстрый, масштабируемый и эффективно использующий память malloc для Linux, Windows и Mac. Веб-сайт [Apache-2.0]
-
jemalloc — реализация malloc, в которой особое внимание уделяется предотвращению фрагментации и поддержке масштабируемого параллелизма. [BSD] сайт
-
Memory — совместимая с STL библиотека распределения памяти. [zlib]
-
Memory-allocators — специальные распределители памяти для повышения производительности динамического распределения памяти. [MIT]
-
mimalloc —распределитель памяти с замечательной производительностью. [MIT]
-
rpmalloc — кроссплатформенный безблокировочный распределитель памяти с кэшированием потоков, использующий выравнивание по 16 байт. [PublicDomain]
-
snmalloc — высокопроизводительный распределитель памяти. [MIT]
-
TCMalloc — быстрая многопоточная реализация malloc от Google. Веб-сайт [Apache-2.0]
-
Buddy_alloc — механизм распределения памяти, реализующий алгоритм двойников.. [0BSD]
-
tgc — крошечный (500 строк кода) сборщик мусора на C. [BSD]
Журнализация
-
Blackhole — библиотека для ведения журналов на основе атрибутов, быстрая, модульная и легко настраиваемая. [MIT]
-
Boost.Log — инструментарий для добавления журнализация в библиотеки и приложения. [Boost] веб-сайт
-
Easylogging++ — чрезвычайно легкая и высокопроизводительная библиотека журнализации для приложений на C++11 (или выше). [MIT]
-
fmtlog — производительная библиотека журнализации в стиле fmtlib с задержкой в наносекунды. [MIT]
-
G3log — асинхронный журнализатор с поддержкой разных каналов вывода, в том числе и специфических, определенных пользователем. [PublicDomain]
-
glog — C++ реализация модуля журнализации от Google.
-
haclog — Чрезвычайно быстрая библиотека журнализации на C. [MIT]
-
Log4cpp — библиотека для гибкой журнализации в файлы, syslog, IDS/A и проч. [LGPL]
-
log4cplus — простой в использовании C++ API для ведения журналов, обеспечивающий потокобезопасный, гибкий и детализированный контроль над управлением и настройкой журналов. [BSD и Apache2]
-
loguru — легковесная библиотека журнализации на C++. [PublicDomain]
-
lwlog — Очень быстрая библиотека синхронной и асинхронной журнализации на C++17. [MIT]
-
plog — портативная и простая библиотека журнализации на C++, содержащая менее 1000 строк кода. [МПЛ2]
-
reckless — библиотека асинхронной журнализации с малой задержкой и высокой пропускной способностью. [MIT]
-
spdlog — сверхбыстрая библиотека журнализации, состоящая только из заголовочных файлов.
-
templog - очень маленькая и легкая библиотека C++, с помощью которой вы можете добавлять протоколирование в свои приложения на C++. [Boost]
-
P7Baical - Кроссплатформенная библиотека с открытым исходным кодом для высокоскоростной отправки данных телеметрии и трассировки (telemetry & trace data) с минимальным использованием процессора и памяти. [LGPL]
-
Quill - Асинхронная кроссплатформенная библиотека протоколирования с низкой задержкой. [MIT]
Интернационализация
Интернационализация, Юникод, кодировки.
-
gettext - библиотека проекта GNU для интернационализации. [GPL2]
-
IBM ICU - набор библиотек C/C++ и Java, обеспечивающий поддержку Unicode и глобализации. [ICU]
-
libiconv - библиотека преобразования кодировок символов. [GPL]
-
simdutf – работа с Unicode (UTF8, UTF16, UTF32), валидация и перекодировка: миллиарды символов в секунду с использованием SSE2, AVX2, NEON, AVX-512. [Apache-2/MIT]
-
uni-algo – алгоритмы, связанные с Юникодом: валидация, конвертация, нормализация строк и пр. [Unlicense or MIT]
-
utf8.h – библиотека функций для работы со строками utf8, состоящая из одного заголовочного файла. Библиотека реализует функции, похожие на стандартные функции работы со строками C, такие как strcat, strlen и прочие. [Unlicense]
-
utf8proc - библиотека функций для работы со строками utf8: нормализация, перекодировка, декомпозиция и прочие. [MIT]
Консольные приложения
Интерфейс командной строки (CLI), создание консольных приложений с множественными ключами запуска, текстовый пользовательский интерфейс (TUI)
-
Argh! - Минималистичный, простой обработчик аргументов, содержащий только заголовок. [BSD]
-
argparse — парсер аргументов для современного C++. [MIT]
-
Taywee/args — простая библиотека парсинга аргументов, состоящая только из заголовочных файлов. [MIT]
-
Boost.Program_options — библиотека для получения параметров программы через командную строку и файлы конфигурации. [Boost] веб-сайт
-
cli — кроссплатформенная библиотека C++14, состоящая только из заголовочных файлов, для создания интерактивных интерфейсов командной строки (в стиле Cisco). [Boost]
-
CLI11 — парсер командной строки для C++11 и последующих версий, который предоставляет богатый набор функций с простым и интуитивно понятным интерфейсом. [BSD]
-
clipp — простая в использовании, мощная и выразительная обработка аргументов командной строки для C++11/14/17; библиотека помещается в одном заголовочном файле. [MIT]
-
cpp-terminal — небольшая библиотека C++, состоящая только из заголовочных файлов, для написания кроссплатформенных консольных TUI-приложений. [MIT]
-
jarro2783/cxxopts — облегченный парсер параметров командной строки C++. [MIT]
-
docopt.cpp — библиотека для создания парсера параметров из docstring. [MIT/ Boost]
-
FINAL CUT — библиотека для создания консольных приложений с виджетами на базе текста. [LGPL]
-
FTXUI — библиотека для создания консольных приложений с использованием текстового пользовательского интерфейса (TUI), с обилием псевдографики. [MIT]
-
gflags — модуль флагов командной строки для C++. [BSD]
-
imtui — библиотека для создания консольных приложений на базе текстовых пользовательских интерфейсов с высокой интерактивностью, то есть с почти полноценной поддержкой мыши, как во взрослом GUI. [MIT]
-
indicators – виджеты показателей активности (прогресс-бары) для консольных приложений на базе псевдографики. [MIT]
-
linenoise — небольшая автономная альтернатива readline и libedit. [BSD-2-Clause]
-
linenoise-ng — небольшая портативная замена readline для Linux, Windows и MacOS, способная обрабатывать символы UTF-8. [BSD]
-
Lyra — простой в использовании компонуемый парсер командной строки для C++ 11 и более поздних версий. [Boost]
-
Ncurses — хороший фреймворк для создания красивого пользовательского интерфейса в текстовом режиме. [MIT]
-
oof - удобное, высокопроизводительное управление цветом и координатами для вывода на консоль. [MIT]
-
PDCurses — открытая версия библиотеки curses, в которой доступны как исходный код, так и предварительно скомпилированные заголовки. [PublicDomain]
-
popl — компактный парсер на C++11 аргументов командной строки и ini-файлов. [MIT]
-
replxx — замена readline и libedit, которая поддерживает UTF-8, подсветку синтаксиса, подсказки, работает в Unix и Windows. [BSD]
-
tabulate — библиотека для создания таблиц на основе псевдографики и отображения в консоли. [MIT]
-
TCLAP — зрелая, стабильная и многофункциональная библиотека для определения аргументов командной строки и доступа к ним в ANSI C++. [MIT]
-
termbox — библиотека на C для написания текстовых пользовательских интерфейсов. [MIT]
-
TermOx – библиотека на C++17 для создания консольных приложений с использованием текстового пользовательского интерфейса (TUI). [MIT].
Криптография
Библиотеки криптографии и шифрования
-
Bcrypt — кроссплатформенная утилита шифрования файлов. Зашифрованные файлы переносятся на все поддерживаемые операционные системы и процессоры. [BSD]
-
BeeCrypt — портативная и быстрая библиотека шифрования. [LGPLv2.1+]
-
Botan — криптобиблиотека для C++. [BSD-2]
-
Crypto++ — бесплатная библиотека классов криптографических схем C++. [Boost] веб-сайт
-
digestpp — библиотека дайджеста (хеша) сообщений C++11, состоящая только их заголовочных файлов. [PublicDomain]
-
GnuPG — полная и бесплатная реализация стандарта OpenPGP. [GPL]
-
GnuTLS — библиотека защищенных каналов, реализующая протоколы SSL, TLS и DTLS. [LGPL2.1]
-
Libgcrypt — криптографическая библиотека общего назначения, изначально основанная на коде GnuPG. [LGPLv2.1+]
-
LibreSSL — бесплатная версия протокола SSL/TLS, ответвившаяся от OpenSSL в 2014 году. [?]
-
libsodium — криптографическая библиотека на основе NaCl, продуманная и простая в использовании. [ISC]
-
libhydrogen — легкая, безопасная и простая в использовании криптобиблиотека, подходящая для сред с ограниченными возможностями. [ISC]
-
LibTomCrypt — довольно полный, модульный и портативный набор криптографических инструментов. [WTFPL]
-
mbedTLS — портативная, простая в использовании, читаемая и гибкая библиотека SSL с открытым исходным кодом, ранее известная как PolarSSL. [Apache2] веб-сайт
-
Nettle — криптографическая библиотека низкого уровня. [LGPL]
-
OpenSSL — надежная полнофункциональная криптографическая библиотека коммерческого уровня с открытым исходным кодом. [Apache] веб-сайт
-
retter — Коллекция хеш-функций, шифров, инструментов, библиотек и материалов, связанных с криптографией.
-
s2n — реализация протоколов TLS/SSL. [Apache]
-
sha1collisiondetection — библиотека и инструмент командной строки для обнаружения коллизий SHA-1 в файле. [MIT]
-
Tink — многоязычная кроссплатформенная библиотека, предоставляющая криптографические API, которые безопасны, просты в правильном использовании, но трудны для неправильного. [Apache-2.0]
-
Tiny AES в C — небольшой портативный AES128/192/256 для C. [PublicDomain]
-
Themis — криптобиблиотека для безболезненной защиты данных, обеспечивающая симметричное и асимметричное шифрование, безопасные сокеты с прямой секретностью, для мобильных и серверных платформ. [Apache2]
-
HEhub — библиотека гомоморфного шифрования и его приложений. [Apache2]
Отладка, тестирование
Отладка, обнаружение утечек памяти и ресурсов, модульное тестирование (unit), бенчмарки.
-
backward-cpp — трассировка стека на C++, вывод просто в консоль. [MIT]
-
benchmark — небольшая библиотека микротестирования (измерения времени выполнения очень небольших фрагментов кода) от Google. [Apache2]
-
Boost.Test — библиотека тестирования от Boost. [Boost] веб-сайт
-
check — библиотека модульного тестирования на C. [LGPL-2.1]. веб-сайт
-
doctest — легчайшая многофункциональная библиотека тестирования на C++, состоящая из одного заголовочного файла. [MIT]
-
Catch2 — современная библиотека тестирования на C++ для модульных тестов, TDD и BDD. [Boost]
-
Celero — платформа эталонного тестирования (Benchmarking) на C++. [Apache2]
-
CppUTest — модульное тестирование, а также тестирование с использованием пустышек (mock-объектов), C/C++. [BSD-3-clause]
-
CUTE — модульное тестирование на C++. [LGPL3]
-
CMocka — фреймворк модульного тестирования C с поддержкой пустышек (mock-объектов). [Apache2]
-
CppBenchmark — платформа тестирования производительности с наносекундной точностью измерения, на С++. [MIT]
-
Cpptrace — простая, переносимая и автономная библиотека трассировки стека C++, поддерживающая C++11 и более поздние версии. [MIT]
-
CppUnit — перенос на C++ знаменитого фреймворка JUnit для модульного тестирования. [LGPL2]
-
CTest — программа тестирования от CMake. [BSD]
-
dbg-macro — макрос dbg(…) для C++. [MIT]
-
DebugViewPP — средство просмотра журналов отладки. [Boost]
-
Deleaker — инструмент для обнаружения утечек ресурсов, включая память, GDI и дескрипторы.
-
FakeIt — простой фреймворк тестирования с использованием пустышек (mock-объектов), на C++. [MIT]
-
fff — микрофреймворк для создания fake-функций, на C. [MIT]
-
Google Mock — библиотека для написания и использования классов-пустышек (mock), на C++. [BSD]
-
Google Test — платформа тестирования от Google, на C++. [BSD]
-
ig-debugheap — многоплатформенное средство для отслеживания ошибок памяти. [BSD]
-
libtap — Простая библиотека написания тестов на C. [GPL2]
-
microprofile — Профилировщик с веб-просмотром для нескольких платформ. [Без лицензии]
-
MinUnit — минимальная среда модульного тестирования на C, состоящая из одного заголовочного файла. [MIT]
-
Mockator — плагин Eclipse CDT на C++ для работы с seams и mock-объектами.
-
nanobench — простая, быстрая и точная библиотека микротестирования (измерения времени выполнения очень небольших фрагментов кода), на C++ 11/14/17/20, состоит из одного заголовочного файла. сайт [MIT]
-
Nanotimer — простой кроссплатформенный класс таймера. [zLib] сайт
-
Nonius — среда микротестирования (измерения времени выполнения очень небольших фрагментов кода), на C++. [КК]
-
Remotery — профилировщик с веб-просмотром, состоит из одного С файла. [Apache2]
-
snitch — легковесная среда тестирования, C++20. [Boost]
-
Touca — система регрессионного тестирования с открытым исходным кодом, с размещением на собственных серверах (self-hosting). [Apache2] веб-сайт
-
UnitTest++ — легковесная среда модульного тестирования на C++. [MIT/X Consortium license]
-
Unity — простое модульное тестирование на C. [MIT]
-
utest.h — библиотека модульного тестирования для C и C++, состоит из одного заголовочного файла. [Без лицензии]
-
µt — среда модульного тестирования, C++20, без макросов, библиотека состоит из одного заголовочного файла. [Boost]
-
VLD – бесплатная, надежная система обнаружения утечек памяти с открытым исходным кодом для Visual C++.
Работа с сетью
Сетевые протоколы, клиент-серверные приложения, межпроцессное взаимодействие (IPC), парсинг запросов/ответов, обработка потоковых данных.
-
ada — быстрый парсер URL-адресов по спецификации WHATWG. [Apache-2.0/MIT]
-
ACE — набор инструментов для сетевого программирования (параллельное выполнение, межпроцессное взаимодействие, обработка синхронных и асинхронных событий и пр.) [?MIT?]
-
Boost.Asio — кроссплатформенная библиотека C++ для сетевого и низкоуровневого программирования ввода-вывода. [Boost] веб-сайт
-
Boost.Beast — HTTP и WebSocket, построенные на основе Boost.Asio в C++11. [Boost] веб-сайт
-
Breep —высокоуровневая библиотека на C++14 для работы с пиринговыми сетями (P2P). [EUPL-1.1 (одобрено OSI)]
-
C++ REST SDK — проект от Microsoft (ранее называвшийся Casablanca), который полезен для создания клиент-серверного взаимодействия в облачной среде. [Apache2]
-
Restbed — библиотека асинхронной работы на C++11, которая позиционируется как соответствующая RESTful. [AGPL]
-
Restinio — библиотека на C++14, состоящая только из заголовочных файлов, которая позволяет создавать встроенные сервера HTTP/Websocket. [BSD]
-
c-ares — библиотека на C для работы с асинхронными DNS-запросами. [MIT]
-
cpp-httplib — библиотека на C++11 для создания клиента/cервера HTTP/HTTPS, состоящая из одного заголовочного файла. [MIT]
-
cpp-netlib — коллекция библиотек для высокоуровневого сетевого программирования. [Boost]
-
cpp-netlib/uri — библиотека работы с URI, поддерживающая RFC 3986 и RFC 3987. [Boost]
-
CppServer — библиотека для создания сверхбыстрых сокетов с низкой задержкой с поддержкой протоколов TCP, SSL, UDP, HTTP, HTTPS, WebSocket и решением проблемы C10k, и для создания на этой базе широкого спектра клиент-серверных приложений. [MIT]
-
cpr — библиотека для создания и обработки HTTP-запросов с простым, но мощным интерфейсом. Создана по образцу модуля Python Requests, и представляет собой обертку над libcurl. сайт [MIT]
-
Curlcpp — объектно-ориентированная оболочка для CURL(libcurl). [MIT]
-
DPDK — набор библиотек и драйверов сетевой карты для быстрой обработки пакетов под Linux. Веб-сайт [BSD-3-Clause и GPL-2.0]
-
Dyad.c — маленькая библиотека для создания простых клиент-серверных приложений. [MIT]
-
ENet — маленькая, но, говорят, надежная библиотека для работы с протоколом UDP. сайт [MIT]
-
evpp — библиотека на современном C++ для разработки высокопроизводительных сетевых сервисов на базе протоколов TCP/UDP/HTTP. [BSD]
-
H2O — оптимизированный самодостаточный HTTP-сервер с поддержкой HTTP/1.x, HTTP/2, HTTP/3. Его также можно использовать как библиотеку для встраивания функциональности HTTP-сервера в собственные приложения. [MIT]
-
HTTP Parser — просто парсер запросов/ответов http. [MIT]
-
KCP — быстрый и надежный протокол ARQ, который помогает приложениям снизить задержку передачи пакетов по сети. [MIT]
-
libcurl — библиотека передачи данных, поддерживающая кучу протоколов. [Производная лицензия MIT/X]
-
libhttpserver — библиотека на C++ для создания встроенного HTTP-сервера Rest (и многого другого). [LGPL2.1]
-
Libmicrohttpd — это небольшая библиотека на C для создания встроенного HTTP-сервера. [LGPL v2.1+]
-
libpcap — портативная библиотека C/C++ для захвата сетевого трафика. [BSD] сайт
-
libquic — библиотека протокола QUIC, выдранная из реализации QUIC в Chromium. [BSD]
-
librdkafka — библиотека с реализацией протокола Apache Kafka. [BSD-2-Clause]
-
libwebsockets — легковесная реализация на чистом C протоколов http/1, http/2, websockets, MQTT (и др. протоколов), полезная для создания клиент-серверных приложений. Веб-сайт [LGPL2.1 + исключение статических ссылок]
-
Lithium — еще одна библиотека на C++ для создания клиент-серверных приложений на базе протокола HTTP. [MIT]
-
lwIP — облегченный стек TCP/IP для встраиваемых систем. [Modified BSD]
-
Mongoose — Чрезвычайно легкий веб-сервер с поддержкой протоколов TCP, UDP, HTTP, WebSocket, MQTT и др. [GPL2]
-
MQTT-C — портативный MQTT-клиент для встраиваемых систем (в том числе устройств интернета вещей) и ПК. Библиотека написана на C. сайт [MIT]
-
mTCP — высокомасштабируемый стек TCP пользовательского уровня для многоядерных систем. [Modified BSD]
-
Muduo — библиотека на C++ для создания многопоточного сервера в Linux. [BSD]
-
nghttp3 — реализация HTTP/3 на C. Веб-сайт [MIT]
-
Onion — лёгкая и простая в использовании библиотека для создания HTTP-сервера. [Apache2/GPL2]
-
PF_RING™ — платформа высокоскоростной обработки пакетов. [LGPL-2.1] веб-сайт
-
PicoHTTPParser — крошечный, примитивный и быстрый парсер запросов/ответов HTTP. [MIT]
-
POCO — большая коллекция библиотек классов, которая упрощает и ускоряет разработку сетевых мультиплатформенных приложений на C++. [Boost] веб-сайт
-
Proxygen — коллекция HTTP-библиотек на C++ от Facebook, включающая в числе прочих простой в использовании HTTP-сервер. [BSD]
-
RedPanda — платформа обработки потоковых данных, присутствует совместимость с Kafka API. Утверждается, что в 10 раз быстрее, чем Apache Kafka. [БСЛ]
-
RakNet — кроссплатформенный сетевой движок на C++ для программистов игр. [BSD]
-
restclient-cpp — Простой REST-клиент на C++, обертка над libcurl для HTTP-запросов. [MIT]
-
Seasocks — простой, небольшой, встраиваемый веб-сервер на C++ с поддержкой WebSockets. [BSD]
-
tlse — реализация TLS 1.2/1.3 с использованием криптобиблиотеки tomcrypt. [BSD-2-Clause]
-
TQUIC - высокопроизводительная, легкая и кроссплатформенная реализация протокола QUIC. [Apache2]
-
Tufão — асинхронный веб-фреймворк, построенный на основе Qt. [LGPL2]
-
uriparser — парсер URI, строго совместимый с RFC 3986. [BSD-3-Clause]
-
uWebSockets — одна из самых легких, эффективных и масштабируемых реализаций серверов WebSocket и HTTP. [zlib]
-
UCall — высокопроизводительная библиотека RPC с SIMD-ускорением на базе io_uring. Утверждают, что по сравнением с FastAPI у них в 50 раз ниже задержка и в 70 раз выше пропускная способность. [Apache2]
-
WAFer — сверхлегкая программная платформа на языке C для масштабируемых веб-приложений на стороне сервера. Можно сказать, аналог node.js для программистов на C. [GPL2]
-
Wangle — библиотека для создания современных веб-сервисов на C++. [Apache-2.0]
-
wdt — встраиваемая библиотека (и утилита командной строки), нацеленная на максимально быструю передачу данных между двумя системами по нескольким TCP-путям. [BSD-3-Clause]
-
WebSocket++ — клиент/серверная библиотека на основе C++/Boost Asio, реализующая протокол WebSocket по спецификации RFC6455. [BSD]
-
PcapPlusPlus — мультиплатформенная библиотека на C++ создания анализаторов траффика: сниффинг, парсинг пакетов, создание пакетов (packet crafting). [Без лицензии]
-
ZeroMQ — высокоскоростная модульная библиотека асинхронных коммуникаций. Веб-сайт [LGPL3/MPL2]
БитТоррент
-
jech/dht — библиотека BitTorrent DHT на C. [MIT]
-
libtorrent (он же libtorrent-rasterbar) — эффективная, полная реализация BitTorrent на C++. [BSD]
-
LibTorrent (он же libtorrent-rakshasa) — библиотека BitTorrent. [GPL]
-
libutp — библиотека транспортного протокола uTorrent. [MIT]
Сериализация
-
Bitsery — библиотека для бинарной сериализации, состоит только из заголовочных файлов. [MIT]
-
Bond — кроссплатформенная библиотека для работы со схематизированными данными. [MIT]
-
Boost.Serialization — библиотека сериализации от Boost. [Boost] веб-сайт
-
Cap'n Proto - формат быстрого обмена данными и система RPC. сайт [MIT]
-
cereal — библиотека на C++11 для сериализации. [BSD]
-
cista — библиотека на C++17 для высокопроизводительной (де)сериализации с нулевым копированием. [MIT]
-
cppcodec — библиотека C++11, состоящая только из заголовочных файлов, для кодирования/декодирования base64, base32 и шестнадцатеричных данных. [MIT]
-
FastBinaryEncoding — сверхбыстрое и универсальное решение для сериализации данных для программ на C++, C#, Go, Java, JavaScript, Kotlin, Python, Ruby, Swift. [MIT]
-
FlatBuffers — библиотека сериализации с эффективным использованием памяти. [Apache2]
-
Kaitai Struct — декларативный язык для описания различных структур двоичных данных и компилятор для генерации кода парсера на C++. [GPLv3+][MIT][Apache2]
-
iguana — современный, универсальный и простой в использовании механизм сериализации, разработанный на C++20 и C++17. [Apache2]
-
MessagePack — эффективный формат двоичной сериализации, подобный JSON, для C и C++. [Apache2] веб-сайт
-
mrpt-serialization — сериализация в двоичный или текстовый форматы, с поддержкой версионности. [BSD] сайт
-
nanopb — реализация протокола Protocol Buffers с блоками небольшого размера, удобно для встраиваемых устройств (или для любой системы с ограниченным объемом памяти). [Zlib]
-
protobuf — формат (протокол) обмена данными (сериализации) от Google. [BSD]
-
protobuf-c — реализация Protocol Buffers на C. [BSD]
-
SimpleBinaryEncoding — кодирование и декодирование сообщений в двоичном формате для приложений с малой временной задержкой (в том числе финансовых). [Apache2]
-
upb — компактная реализация Protocol Buffers на C. [BSD]
-
YAS — еще одна библиотека сериализации с поддержкой текстовых, бинарных и json форматов. [Boost]
-
zpp_bits — говорят, самая быстрая библиотека сериализации. Один-единственный заголовочный файл.
Рефлексия
Рефлексия, сериализация, обратные вызовы, генерация кода.
-
config-loader — библиотека статической рефлексии, отображение файла конфигурации на структуры данных C++. [MIT]
-
Better Enums — рефлексивные перечисления (enum). [BSD] сайт
-
clReflect — рефлексия с использованием clang. [MIT]
-
CPFG — библиотека для рефлексий, обратных вызовов и привязки сценариев. [Apache2]
-
CPP-Reflection — рефлексия C++ с использованием clang. [MIT]
-
Easy Reflection — простое и быстрое решение для рефлексии + сериализации, как в Rust, Java или Go. [Apache]
-
Magic Enum — библиотека рефлексии, состоящая только из заголовочных файлов, обеспечивающая статическую рефлексию перечислений (в строку, из строки, поддержка итераторов), работает с любым типом перечисления без какого-либо макроса или шаблонного кода. [MIT]
-
Magic_get — библиотека функций как для работы с кортежами (std::tuple), но только для любых пользовательских типов. В библиотеке обошлись без макросов и шаблонов. [Boost]
-
Meta — ненавязчивая и не содержащая макросов библиотека рефлексии времени выполнения на C++, состоящая только из заголовочных файлов. [MIT]
-
Nameof — библиотека на C++17, состоящая только из заголовочных файлов, предоставляет макросы и функции для получения имени переменной, типа, функции, макроса и перечисления. [MIT]
-
Ponder — библиотека на C++11 для рефлексии. [MIT]
-
reflect-cpp — библиотека, позволяющая проводить сериализацию посредством рефлексии, включая автоматическое получение имен полей из структур. [MIT]
-
TSMP — библиотека на C++20 для статической рефлексии. Он использует libclang для извлечения данных из исходного кода и делает их пригодными для использования посредством специализации шаблона. [MIT]
-
visit_struct — миниатюрная библиотека для отражения полей структур C++. [Boost]
-
Refureku — библиотека рефлексии и генерации кода C++17 во время выполнения. [MIT]
Языки сценариев
Интерфейсы внешних функций (FFI), импорт кода на С++ в другие языки, скриптовые языки программирования над C++, интерпретаторы.
-
AngelScript — интерпретируемый/компилируемый язык сценариев, ориентированный на игры. [zlib]
-
Boost.Python — библиотека C++, обеспечивающая плавное взаимодействие между C++ и Python. [Boost] веб-сайт
-
cppimport — библиотека, позволяющая писать код на быстром С++, а запускать этот код на медленном, скриптовом Python. [MIT]
-
CppSharp — набор библиотек, которые облегчают использование native C/C++ в экосистеме .NET. [MIT]
-
ChaiScript — простой в использовании встроенный язык сценариев для C++. [BSD] сайт
-
ctypes.sh — библиотека, позволяющая из-под bash вызывать функции динамических библиотек на С++. [MIT]
-
Cython — это оптимизирующий статический компилятор как для языка программирования Python, так и для расширенного языка программирования Cython (на основе Pyrex). Это делает написание расширений на C для Python таким же простым, как и сам Python. [Apache] веб-сайт
-
djinni — инструмент для создания межъязыковых объявлений типов и привязок интерфейсов. [Apache2]
-
Duktape — встраиваемый Javascript-движок с компактным размером. сайт [MIT]
-
JavaCpp — мост между Java и C++. [Apache2]
-
libffi — портативная библиотека с реализацией FFI. сайт [MIT]
-
Lua — мощный, эффективный, легкий, встраиваемый язык сценариев. [MIT]
-
LuaBridge — легковесная библиотека для привязки Lua к C++. [MIT]
-
LuaBridge3 — легковесная библиотека для привязки Lua, LuaJIT, Luau и Ravi к C++. [MIT]
-
luacxx — библиотека на С++ для создания привязок Lua. [MIT]
-
MiniScript - современный, элегантный, простой в изучении и легко внедряемый в ваши собственные проекты на C# или C++ язык сценариев. [MIT].
-
nbind — механизмы, которые делают вашу библиотеку C++ доступной из JavaScript. [MIT]
-
PHP-CPP — библиотека для создания расширений PHP с помощью C++. [Apache2] веб-сайт
-
Pocketpy — интерпретатор Python для написания игровых сценариев. Библиотека написана на С++17, состоит только из заголовочных файлов. сайт [MIT]
-
pybind11 — библиотека для бесшовной работа между C++11 и Python. [BSD]
-
QuickJS — небольшой встраиваемый движок Javascript. [MIT]
-
SIP — генератор привязок C или C++ для Python v2 и v3. [GPL]
-
sol2 — оболочка API C++ <-> Lua с расширенными функциями и высочайшей производительностью. [MIT]
-
SWIG — генератор оболочек/интерфейсов, который позволяет связать ваш код C++ с Javascript, Perl, PHP, Python, Tcl и Ruby. Веб-сайт [GPL]
-
V7 — встроенный движок JavaScript. [GPL2]
-
V8 — быстрый движок JavaScript от Google, который можно встроить в любое приложение C++. [BSD]
-
v8pp — библиотека, состоящая только из заголовочных файлов, позволяющая предоставлять классы и функции C++ в V8 для использования их в коде JavaScript. [Boost] веб-сайт
-
ChakraCore — движок JavaScript от Microsoft с интерфейсом на C. [MIT]
Веб-фреймворки
-
Civetweb — простой в использовании, мощный встраиваемый веб-сервер C/C++ с опциональной поддержкой CGI, SSL и Lua. [MIT]
-
C++ REST SDK — проект от Microsoft для написания клиент-серверных приложений в облачной среде с использованием современного асинхронного API C++. [MIT]
-
CppCMS — веб-фреймворк (не CMS), предназначенный для быстрой разработки веб-приложений). Он спроектирован и настроен для поддержки экстремально высоких нагрузок. [LGPLv3]
-
Crow — микрофреймворк на C++ для запуска веб-сервисов. Он использует маршрутизацию, аналогичную Python Flask. [BSD] сайт
-
Cutelyst — веб-фреймворк C++, построенный на основе Qt с использованием такого простого и элегантного подхода, как у платформы Catalyst (Perl). [LGPLv2.1+] веб-сайт
-
Drogon — высокопроизводительная среда создания HTTP-приложений на базе C++14/17. [MIT]
-
C++ wfrest — веб-фреймворк REST API на C++. [Apache2]
-
facil.io — высокопроизводительный веб-фреймворк на C, поддерживающий HTTP, WebSockets, SSE и многое другое. сайт [MIT]
-
Kore — сверхбыстрый и гибкий веб-сервер/веб-фреймворк, разработанный на C. [ISC]
-
libOnion — легковесная библиотека, которая поможет вам создавать веб-серверы на языке программирования C. [LGPLv3]
-
lwan — масштабируемый, высокопроизводительный HTTP-сервер. [GPL2]
-
oat++ — Легкая библиотека без сторонних зависимостей для создания высокопроизводительных веб-сервисов. Веб-сайт [Apache-2.0]
-
Pistache — веб-фреймворк C++ REST API, написанный на чистом C++17 без внешних зависимостей. [Apache2]
-
QDjango — веб-фреймворк, написанный на C++ на основе библиотеки Qt. Там, где это возможно, он пытается следовать API Django, отсюда и название. [LGPL]
-
TreeFrog Framework — высокоскоростной полнофункциональный веб-фреймворк на основе C++ и Qt, поддерживающий протоколы HTTP и WebSocket (с реализацией объектно-реляционного отображения - ORM). [BSD] сайт
-
userver — асинхронный веб-фреймворк на C++17 с богатым набором абстракций и драйверов баз данных для быстрого и удобного создания эффективных микросервисов, сервисов и всяких утилит. Веб-сайт [Apache-2.0]
-
Wt — библиотека C++ для разработки веб-приложений. [GPL/Proprietary]
INI-файлы
Библиотеки для работы с файлами конфигурации, INI-файлами
-
inifile-cpp — простой в использовании парсер Ini-файлов. Библиотека состоит только из заголовочных файлов. [MIT]
-
inih — Простой парсер файлов .INI на языке C, подходящий для встроенных систем. [BSD-3-Clause]
-
inih — версия inih для C++, состоящая из одного заголовочного файла. [BSD-3-Clause]
-
ini-cpp — еще одна версия inih для C++, состоящая из одного заголовочного файла. Веб-сайт [BSD-3-Clause]
-
iniparser — еще один парсер INI-файлов. [MIT]
-
inipp — простой парсер и генератор ini C++, состоит только из заголовочных файлов. [MIT]
-
libconfig — библиотека C, C++ для обработки структурированных файлов конфигурации. [LGPL-2.1] веб-сайт
-
libconfuse — небольшая библиотека парсера конфигурационных файлов для C. [ISC]
-
simpleini — кроссплатформенная библиотека C++, предоставляющая простой API для чтения и записи файлов конфигурации в стиле INI. [MIT]
-
toml++ — парсер и сериализатор TOML, состоит только из заголовочных файлов, написан на C++17. сайт [MIT]
-
toml11 — парсер и сериализатор TOML, состоит только из заголовочных файлов, написан на C++11, зависит только от стандартной библиотеки C++. [MIT]
Библиотеки для парсинга и работы с PDF-документами.
-
libharu — кроссплатформенная библиотека для создания PDF-файлов. [zlib]
-
litePDF — библиотека для создания и редактирования PDF-документов. [LGPL v3 и zlib]
-
MuPDF — легковесная библиотека для просмотра PDF, XPS и электронных книг. [AGPL/собственн.]
-
PDF-Writer — высокопроизводительная библиотека для создания, изменения и чтения PDF-файлов на С++. [Apache-2.0]. веб-сайт
-
pdfio — простая библиотека C для чтения и записи PDF-файлов. Веб-сайт [Apache-2]
-
PDFium — библиотека создания и рендеринга PDF-файлов. [BSD-3-Clause]
-
PoDoFo — библиотека для работы с файлами формата PDF. [LGPL]
-
Poppler — библиотека рендеринга PDF, основанная на кодовой базе xpdf-3.0. Эта библиотека в качестве фронтенда может использовать glib, Qt5, Qt6 или чистый С++. [GPLv2/GPLv3]
-
Xpdf — библиотека для просмотра PDF-файлов и набор инструментов, включающий экстрактор текста, конвертер изображений, конвертер HTML и многое другое. [GPL v2/GPL v3]
-
DynaPDF — простая в использовании библиотека для создания PDF-файлов.
Документы от Microsoft
Библиотеки для парсинга и работы с документами офисных приложений от Microsoft: файлы Office Open XML форматов xlsx, xls, docx и т. д.
-
DuckX — библиотека на C++ для создания и изменения файлов Microsoft Word (.docx). [MIT]
-
FreeXL — библиотека для извлечения данных из электронных таблиц (.xls, .xlsx, .ods). [MPL/GPL-2/LGPL-2]
-
libxls — библиотека для чтения двоичных файлов Microsoft Excel (старый формат - .xls). [BSD-2-Clause]
-
libxlsxwriter — библиотека для создания файлов Microsoft Excel в формате .xlsx. Веб-сайт [BSD-2-Clause]
-
OpenXLSX — библиотека для чтения, записи, создания и изменения файлов Microsoft Excel в формате .xlsx. [BSD-3-Clause]
-
SimpleXlsxWriter — библиотека для записи файлов Microsoft Excel в формате .xlsx. [zlib]
-
XLSX I/O — библиотека для чтения и записи файлов файлов Microsoft Excel в формате .xlsx. [MIT]
CSV
Библиотеки для парсинга CSV-файлов
-
commata — парсер CSV, написан на C++17, состоит только из заголовочных файлов. [Без лицензии]
-
csv2 — быстрый парсер CSV на современном C++. [MIT]
-
Csv::Parser — парсер CSV, написан на C++17, состоит только из заголовочных файлов. [zlib]
-
Fast C++ CSV Parser — небольшая, простая в использовании и быстрая библиотека, состоящая только из заголовочных файлов, для чтения файлов CSV. [BSD-3-Clause]
-
Glaze — библиотека CSV с чемпионской производительностью, состоит только из заголовочных файлов, поддержка compile-time reflection. [MIT]
-
lazycsv — быстрый, легкий парсер csv, написан на современном C++, состоит из единственного заголовочного файла. [MIT]
-
ssp — быстрый и универсальный парсер csv, написан на современном C++, состоит только из заголовочных файлов. [MIT]
-
Vince's CSV Parser — быстрый, самодостаточный, потоковый анализатор CSV C++17 с дополнительным приведением типов и статистикой. [MIT]
JSON
-
Boost.PropertyTree — парсер и генератор файлов XML/JSON/INI/Info. [Boost] веб-сайт
-
cJSON — сверхлегкий парсер JSON на ANSI C. [MIT]
-
DAW JSON Link — быстрый и удобный парсер и сериализатор JSON на C++. [BSL-1.0]
-
frozen — парсер и генератор JSON на C/C++. [GPL и GPL2]
-
Glaze — Чрезвычайно быстрая библиотека для работы с форматом JSON, написанная на современном C++. [MIT]
-
Jansson — библиотека на C для кодирования, декодирования и управления данными JSON. [MIT]
-
jbson — парсер и генератор JSON и BSON на C++14. [Boost]
-
JeayeSON — очень толковая библиотека работы с JSON. [BSD]
-
Jsmn — минималистичный парсер JSON на C. [MIT]
-
json – пожалуй, самая известная и популярная библиотека для работы с JSON. сайт [MIT]
-
JSON++ — парсер JSON на C++. [MIT]
-
json.h — простая библиотека, состоящая из одного заголовочного файла, для парсинга JSON на C и C++. [Без лицензии]
-
json-build — крошечный сериализатор JSON C89 с нулевым расходом памяти (без динамического выделения памяти). [MIT]
-
json-c — работа с JSON на C. [MIT]
-
jsoncons — библиотека C++, состоящая только из заголовочных файлов, предназначенная для работы с JSON и JSON-подобными двоичными форматами, а также поддерживающая JSONPointer, JSONPatch, JSONPath и JMESPath. [Boost]
-
JsonCpp — библиотека C++ для работы с JSON. [MIT]
-
Jsonifier — несколько классов для очень быстрого парсинга и сериализации объектов из/в JSON. [MIT]
-
jsonParse — простой парсер JSON на ANSI C. [MIT]
-
json-parser — очень компактный парсер JSON, написанный на переносимом ANSI C. [BSD]
-
json11 — крошечная библиотека JSON на C++11. [MIT]
-
json-struct — высокопроизводительная библиотека для работы с JSON, состоящая из одного заголовочного файла, осуществляющая парсинг объектов из/в JSON. [MIT]
-
json-voorhees — библиотека C++ для работы с JSON. Поддержка С++11, никаких зависимостей, быстрая и удобная для разработчиков. [Apache2]
-
jute — очень простой парсер C++ JSON. [PublicDomain]
-
libjson — парсер и генератор JSON на C. Легко интегрируется с любой моделью. [LGPL]
-
libjson — легковесная библиотека JSON, еще одна [?]
-
LIBUCL — библиотека на языке C для написания JSON-подобных структур на языке UCL (универсальный язык конфигураций). Также эта библиотека предоставляет функции для работы с другими форматами: JSON, Messagepack, S-Expressions. Yaml. [BSD-2-Clause]
-
parson —легковесная библиотека для работы с JSON, написанная на C. [MIT]
-
PicoJSON — парсер и сериализатор JSON на C++, библиотека состоит только из заголовочных файлов. [BSD]
-
RapidJSON — быстрый анализатор/генератор JSON на C++ с интерфейсами в стиле SAX и DOM. сайт [MIT]
-
sajson — легкий, чрезвычайно высокопроизводительный парсер JSON на C++11. [MIT]
-
simdjson — чрезвычайно быстрая библиотека JSON, которая может парсить гигабайты JSON`а в секунду. [Apache-2.0]
-
Sonic-Cpp — быстрая библиотека сериализации и десериализации JSON, ускоренная SIMD. [Apache-2.0]
-
taoJSON — библиотека работы с JSON на C++, состоящая только из заголовочных файлов. [MIT]
-
ujson — небольшая библиотека для работы с JSON на C++11. [MIT]
-
UltraJSON — сверхбыстрый декодер и кодер JSON, написанный на C. [BSD-3-Clause]
-
YAJL — библиотека быстрого потокового анализа JSON на C. [ISC]
-
yyjson — высокопроизводительная библиотека для работы с JSON, написанная на ANSI C. [MIT]
JAML
-
mini-yaml — библиотека сериализации/десериализации YAML 1.0 на C++11, состоящая из одного заголовочного файла. [MIT]
-
yaml-cpp — парсер и генератор YAML на C++. [MIT]
-
Rapidyaml — библиотека C++ для парсинга и создания YAML. [MIT]
XML
-
Boost.PropertyTree — парсер/генератор дерева свойств, который можно использовать для файлов XML/JSON/INI/Info. [Boost] веб-сайт
-
Expat — парсер XML, написанный на C. [MIT]
-
Libxml2 — парсер XML на C, изначально создававшийся для проекта Gnome. [MIT]
-
libxml++ — парсер XML на C++. [LGPL2]
-
Mini-XML — небольшая парсер XML, написанный на ANSI C. [LGPL2 с исключениями]
-
PugiXML — легкий, простой и быстрый парсер XML на C++ с поддержкой XPath. [MIT]
-
RapidXml — попытка создать максимально быстрый парсер XML, сохранив при этом удобство использования, переносимость и разумную совместимость с W3C. [Boost]
-
TinyXML — простой, небольшой, минималистичный парсер XML на C++, который можно легко интегрировать в другие программы. [zlib]
-
TinyXML2 — простой, небольшой и эффективный парсер XML на C++, который можно легко интегрировать в другие программы. [zlib]
-
TinyXML++ — совершенно новый интерфейс TinyXML, использующий многие сильные стороны C++: шаблоны, исключения и гораздо лучшая обработка ошибок. [MIT]
-
Xalan C - библиотека (и утилита командной строки) для преобразования XML-документов с помощью таблицы стилей по стандарту XSLT 1.0. [Apache-2.0].
-
Xerces-C++ — валидирующий XML-парсер, написанный на переносимом подмножестве C++. [Apache2]
Виртуальные машины
-
MicroPython — экономичная и эффективная реализация Python для микроконтроллеров и систем с ограничениями. [MIT]
-
TinyVM — небольшая, быстрая и легковесная виртуальная машина, написанная на чистом ANSI C. [MIT]
Генераторы документации
-
Doxide — современный генератор документации, написанный на современном C++, настройка с помощью YAML, вывод в Markdown. Веб-сайт [Apache 2.0]
-
doxygen — инструмент для создания документации из аннотированных исходников C++, сейчас это де-факто стандарт для порождения документации. [GPL2] веб-сайт
-
doxyrest — транслятор из Doxygen XML в reStructuredText (ReST) - отсюда и название. Он переводит XML-файлы, сгенерированные Doxygen, в формат reStructuredText, который, в свою очередь, можно «скормить» генератору документации Sphinx на Python. [MIT]
-
hdoc — современный генератор документации для C++. [AGPL/Proprietary] веб-сайт
-
Natural Docs — генератор документации с открытым исходным кодом для нескольких языков программирования. [AGPL/Proprietary] веб-сайт
-
Sphinx — инструментарий для простого создания классной документации. Веб-сайт [BSD-2-пункт]
Шрифты
Библиотеки для работы с файлами шрифтов.
-
Fontconfig — библиотека конфигурации и настройки шрифтов. сайт [MIT]
-
FreeType — свободно доступная библиотека для рендеринга шрифтов. [FTL и GPLv2]
-
otfcc — библиотека на C и утилита, используемая для работы с форматом OpenType. [Apache-2.0]
-
harfbuzz — движок формирования глифов (glyphs). [Old MIT]
-
libschrift — легковесная библиотека рендеринга шрифтов TrueType. [ISC]
Последовательный порт (com-порт)
-
Asio — классы для создания и управления последовательными портами. [Boost] веб-сайт
-
Boost.Asio — классы для создания и управления последовательными портами. [Boost] веб-сайт
-
CSerialPort — легковесная кроссплатформенная библиотека для работы с последовательным портом. [LGPL3]
-
Libserial — библиотека для работы с последовательным портом на C++. [BSD-3-Clause]
-
Serial Communication Library — кроссплатформенная библиотека для работы с последовательным портом на C++. сайт [MIT]
Разное
Полезные библиотеки или инструменты, которые не попадают в категории выше или, возможно, просто еще не классифицированы.
-
access_profiler — инструмент для подсчета обращений к переменным-членам в программах на C++. [GPL3]
-
American fuzzy lop aka afl-fuzz — инструмент для фаззинга. [Apache2]
-
Argon2 — KDF-алгоритм Argon2. [CC0/Apache2]
-
Better String — альтернатива строковой библиотеке для C, которая более функциональна и не имеет проблем с переполнением буфера. Также включает оболочку C++. [BSD, GPL2]
-
Boost.Signals2 — реализация управляемой системы сигналов и слотов. [Boost] веб-сайт
-
casacore - набор библиотек C++ для обработки радиоастрономических данных. [LGPL]
-
CCTZ - библиотека C++ для перевода между абсолютным и местным временем. [Apache-2.0].
-
Concord — оболочка Discord API, написанная на C. Веб-сайт [MIT]
-
CPPItertools — библиотека, позволяющая создавать высокоуровневые надстройки над циклом for. Фактически, это реализация питоновской библиотеки itertools и механизма встроенных объектов (builtin) . [BSD-2-Clause]
-
date — библиотека работы с датами и временем (в том числе поддержка разных календарей – Юлианского, мусульманского). сайт [MIT]
-
D++ (DPP) — легкая, высокопроизводительная и масштабируемая библиотека C++ для создания ботов в Discord. [Apache2] веб-сайт
-
DynaMix — библиотека, которая позволяет создавать и изменять объекты во время выполнения. Эдакий новый взгляд на полиморфизм. [MIT]
-
emio — безопасная и быстрая библиотека ввода/вывода символов (библиотека форматирования), с API как высокого, так и низкого уровня. Полезна для использования в операционных системах реального времени (RTOS) и физических серверах (bare metal). [MIT]
-
faker-cxx — библиотека на C++20 для генерации поддельных (но реалистичных) данных для тестирования и разработки. Поддерживает кучу категорий данных – телефоны, имена, цвета, адреса улиц и пр., [MIT]
-
FastFormat — быстрое и безопасное форматирование C++, созданное на основе log4j и Pantheios. [Simplified BSD]
-
fast_io – исключительно быстрая замена библиотекам <iostream> и <cstdio>, требующая C++20. [MIT].
-
fccf — инструмент командной строки, который рекурсивно ищет в каталоге исходный код C/C++, соответствующий строке поиска. [MIT]
-
{fmt} — небольшая, безопасная и быстрая библиотека форматирования для C++. Веб-сайт [Simplified BSD]
-
gcc-poison - простой подключаемый заголовочный файл, позволяющий на уровне компиляции запрещать использование небезопасных функций C/C++ в приложениях.
-
happly – библиотека для работы с файлами формата PLY. Библиотека состоит только из заголовочных файлов. [MIT]
-
hedley — один-единственный заголовочный файл, который можно добавить в свой проект, чтобы включить специфические для компилятора функции, сохранив при этом совместимость со всеми компиляторами. Он содержит десятки макросов, которые помогут сделать ваш код проще в правильном использовании, сложнее в неправильном, а также безопаснее, быстрее и более переносимым. Веб-сайт
-
cxx-prettyprint — красивая библиотека печати для контейнеров C++. [Boost]
-
Icecream-cpp — небольшая библиотека отладочной печати, вдохновленная библиотекой Python IceCream. [MIT]
-
inja — шаблонизатор C++, водхновленный библиотекой Python jinja. [MIT]
-
Jinja2С++ - практически полный аналог шаблонизатора Jinja2, только не для Python, а для С++. Веб-сайт
-
jwt-cpp — библиотека, состоящая только из заголовочных файлов, предназначенная для создания и проверки JSON Web Token на C++. [MIT]
-
Kangaru — класс контейнера с поддержкой парадигмы внедрения зависимостей (Dependency Injection). [MIT]
-
Klib — небольшие и легкие реализации общих алгоритмов и структур данных, например: сортировки, деревья, строки, генераторы случайных чисел. [MIT]
-
libcpuid — небольшая библиотека C для идентификации процессоров x86 и ARM и получения их свойств. [BSD]
-
libenvpp — библиотека для получения переменных среды. [Apache-2.0]
-
libevil — менеджер лицензий. [GPLv3]
-
libnih — легковесная библиотека стандартных функций языка C. [GPL2.1]
-
libsigc++ — типобезопасная библиотека функций обратного вызова. [LGPL] веб-сайт
-
libusb — универсальная USB-библиотека, обеспечивающая доступ к USB-устройствам. [LGPL2]
-
Mach7 — реализация метода сопоставления с образцом (pattern matching) для C++. [BSD]
-
mio — кроссплатформенная библиотека на C++11, состоящая только из заголовочных файлов, для отображения файлов в память (memory mapping). [MIT]
-
PEGTL — библиотека для написания PEG-парсеров. [MIT]
-
pprint — замена pfintf, std::out. [MIT]
-
pspsdk — SDK для разработки для Sony Play Station. [BSD/GNU GPL3]
-
QtVerbalExpressions — эта библиотека регулярных выражений на базе Qt. [MIT]
-
RapidFuzz – алгоритм быстрого нечеткого сравнения строк с использованием метрики Левенштейна. [MIT] веб-сайт
-
Remote Call Framework - библиотека межпроцессного взаимодействия для C++. [GPL2/Proprietary].
-
scnlib - библиотека на современном C++ для замены scanf и std::istream. Веб-сайт [Apache-2.0]
-
Scintilla — компонент для редактирования исходного кода. [MIT]
-
SDS — библиотека работы со строками. [BSD]
-
semver.c — библиотека семантического версионирования. [MIT]
-
sigslot — библиотека сигналов/слотов на C++. [PublicDomain]
-
SimpleSignal — высокопроизводительные сигналы/слоты на C++11. [PublicDomain]
-
Stage – симулятор мобильных роботов. [GPL2]
-
stdman — инструмент, который анализирует архивированные HTML-файлы из cppreference и генерирует страницы руководства в формате groff для систем на базе Unix. [MIT]
-
stb — набор однофайловых библиотек для C/C++, представляющих разные категории: аудио, графика, математика и др. [PublicDomain]
-
stdman - инструмент, который разбирает архивные HTML-файлы из cppreference и генерирует groff-форматированные страницы руководства для систем на базе Unix. [MIT].
-
StringZilla — строковая библиотека, предназначенная для быстрого разделения, сортировки и перемешивания больших наборов текстовых данных. [Apache-2.0]
-
StrTk — библиотека C++, состоящая из высокопроизводительных процедур обработки строк. [MIT]
-
tgbotxx —библиотека для создания телеграм-ботов на C++. [MIT]
-
Tulip Indicators — библиотека на C, содержащая более 100 индикаторов финансового технического анализа. [LGPL]
-
ub-canaries — коллекция программ на C/C++ для обнаружения неопределенного поведения, заложенного компилятором.
-
Wildcards - Простая библиотека, реализующая алгоритм поиска сопоставлений с использованием подстановочных символов (wildcards). [BSL-1.0]
-
ZBar — библиотека сканера штрих-кодов, которая позволяет сканировать фотографии/изображения/видеопотоки на наличие штрих-кодов и возвращать их значение. [LGPL2]
-
ZXing — библиотека обработки изображений штрих-кодов 1D/2D, реализованная на Java, но портированная на другие языки. [Apache]
Автор: rapiq