Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 142 additions & 0 deletions src/opencl/Compare.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
# Сравнение библиотек для создания механизма конфигурирования
Вся информация взята из репозиториев соответствующих проектов. Дата обращения: 21.04.26.

## Критерии сравнения

| Критерий | Метрика | Единицы измерения |
|:---|:---|:---|
| **Зависимости** | наличие | +/- |
| **Источники** | CLI (argv) / env / файлы | +/-, форматы |
| **Стандарт C++** | минимальная версия | C++хх |
| **Поддерживает стандарт иерархии** | Linux/Windows/MacOS | +/- |
| **Пакетные менеджеры** | vcpkg / Conan / Conda / apt / brew / pacman | +/- |
| **Способ распространения** | header-only / статическая / динамическая | — |
| **ОС** | Linux / Windows / macOS | +/-, компиляторы |
| **Активность** | среднее число коммитов | коммитов/мес (за последний мес) |
| **Issues** | open, closed/open | n, коэффициент |
| **Сообщество** | GitHub Stars | n |
| **Проходит ли CI** | CI | +/- |



## Сравнение парсеров командной строки (CLI)

| Критерий | CLI11 | cxxopts |
|:---|:---:|:---:|
| Зависимости | - | - |
| **Источники** | | |
|  CLI (argv) | + | + |
|  env | + | - |
|  Файлы | - | - |
| Стандарт C++ | ≥ C++11 | ≥ C++11 |
| **Поддерживает стандарт иерархии** | | |
|  Linux | + | + |
|  Windows | + | + |
|  MacOS | + | + |
| **Пакетные менеджеры** | | |
|  vcpkg | + | + |
|  Conan | + | + |
|  Conda | + | ? |
|  apt | ? | ? |
|  brew | ? | + |
|  pacman | ? | ? |
| Способ распространения | header-only | header-only
| **ОС** | | |
|  Linux | + (GCC 4.8+, Clang 3.5+) | + (GCC ≥ 4.9, Clang ≥ 3.1) |
|  Windows | + (MSVC ≥ 2015) | + (MSVC ≥ 2015) |
|  macOS | + (AppleClang 7+) | + (Clang ≥ 3.1 с libc++) |
| **Сообщество** | | |
|  Активность (коммитов/мес) | 4 | 1 |
|  Issues всего | 506 | 307 |
|  Issues closed/open | 9 | 6 |
|  Stars | 4.3k | 4.7k |
| **Проходит ли CI** | + | + | + |


## Парсеры файлов

| Критерий | nlohmann/json | yaml-cpp | toml++ | toml11 |
|:---|:---:|:---:|:---:|:---:|
| Зависимости | - | - | - | -
| **Источники** | | |
|  CLI (argv) | - | - | - | -
|  env | - | - | - | -
|  Файлы | JSON | YAML | TOML | TOML
| Стандарт C++ | ≥ C++11 | ≥ C++11 | ≥ C++17 | ≥ C++11
| **Поддерживает стандарт иерархии** | | |
|  Linux | + | + | + | + |
|  Windows | + | + | + | + |
|  MacOS | + | + | + | + |
| **Пакетные менеджеры** | | |
|  vcpkg | + | + | + | +
|  Conan | + | + | + | ?
|  Conda | + | + | ? | ?
|  apt | + | + | ? | ?
|  brew | + | + | ? | ?
|  pacman | + | + | ? | ? |
| Способ распространения | header-only | статическая/динамическая¹ | header-only/статическая/динамическая¹ | header-only/статическая/динамическая¹
| **ОС** | | |
|  Linux | + (GCC 4.8–14.2, Clang 3.4–21.0) | + (GCC, Clang) | + (Clang 8+, GCC 8+) | + (GCC, Clang)
|  Windows | + (MSVC 2015–2022) | + (MSVC) | + (MSVC VS2019+) | + (MSVC, MinGW)
|  macOS | + (AppleClang 9.1–16.0) | + (Xcode, AppleClang) | + (AppleClang) | + (AppleClang)
| **Сообщество** | | |
|  Активность (коммитов/мес) | 2 | 9 | 2 | 4
|  Issues всего | 3271 | 905 | 193 | 194
|  Issues closed/open | 68 | 3 | 8 | 5
|  Stars | 49.4k | 15k | 2k | 1.3k
| **Проходит ли CI** | + | + | + | - | + |

> ¹ Опционально.

## Сравнение универсальных инструментов

| Критерий | Boost.Program_options
|:---|:---:|
| Зависимости | +¹ |
| **Источники** | | |
|  CLI (argv) | + | + |
|  env | + | + |
|  Файлы | INI |
| Стандарт C++ | ≥ C++3 |
| **Поддерживает стандарт иерархии** | | |
|  Linux | + |
|  Windows | + |
|  MacOS | + |
| **Пакетные менеджеры** | | |
|  vcpkg | + |
|  Conan | + |
|  Conda | + |
|  apt | + |
|  brew | + |
|  pacman | + |
| Способ распространения | статическая/динамическая² |
| **ОС** | | |
|  Linux | + (GCC 5+, Clang 3.6+) |
|  Windows | + (MSVC 2015 (vc140)+) |
|  macOS | + (AppleClang) |
| **Сообщество** | | |
|  Активность (коммитов/мес) | 12 |
|  Issues всего | 400 |
|  Issues closed/open | 1 |
|  Stars | 9.4k |
| **Проходит ли CI** | + | + |

> ¹ Список зависимостей:
> 1. Boost.Any
> 2. Boost.Bind
> 3. Boost.Config
> 4. Boost.Core
> 5. Boost.Detail
> 6. Boost.Function
> 7. Boost.Iterator
> 8. Boost.Lexical Cast
> 9. Boost.Smart Ptr
> 10. Boost.ThrowException
> 11. Boost.Tokenizer
> 12. Boost.Type Traits

> ² Опционально.


## Итог:
По результатам сравнения, вероятно, лучшим вариантом будет использование `CLI11` и `nlohmann/json`, так как они, в отличие от `Boost.program_options`, не требуют зависимостей и являются header-only.
Loading