{"id":29253520,"url":"https://github.com/dmitribogdanov/utl","last_synced_at":"2025-07-04T02:06:46.815Z","repository":{"id":210255750,"uuid":"726122377","full_name":"DmitriBogdanov/UTL","owner":"DmitriBogdanov","description":"Collection of self-contained header-only libraries for C++17","archived":false,"fork":false,"pushed_at":"2025-06-29T22:51:04.000Z","size":21784,"stargazers_count":289,"open_issues_count":2,"forks_count":11,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-06-29T23:29:27.597Z","etag":null,"topics":["async","cpp","cpp17","formatting","header-only","json","logger","math","matrix","no-dependencies","parallel","prng","profiling","random","reflection","timing"],"latest_commit_sha":null,"homepage":"https://dmitribogdanov.github.io/UTL/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DmitriBogdanov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-12-01T15:25:04.000Z","updated_at":"2025-06-29T22:51:07.000Z","dependencies_parsed_at":"2024-05-08T01:36:35.467Z","dependency_job_id":"7b362a8f-7388-472f-b958-23059c563380","html_url":"https://github.com/DmitriBogdanov/UTL","commit_stats":null,"previous_names":["dmitribogdanov/prototyping_utils","dmitribogdanov/utl"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/DmitriBogdanov/UTL","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DmitriBogdanov%2FUTL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DmitriBogdanov%2FUTL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DmitriBogdanov%2FUTL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DmitriBogdanov%2FUTL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DmitriBogdanov","download_url":"https://codeload.github.com/DmitriBogdanov/UTL/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DmitriBogdanov%2FUTL/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263282143,"owners_count":23442101,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","cpp","cpp17","formatting","header-only","json","logger","math","matrix","no-dependencies","parallel","prng","profiling","random","reflection","timing"],"created_at":"2025-07-04T02:04:28.865Z","updated_at":"2025-07-04T02:06:46.806Z","avatar_url":"https://github.com/DmitriBogdanov.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"[\u003cimg src =\"docs/images/icon_cpp_std_17.svg\"\u003e](https://en.cppreference.com/w/cpp/17.html)\n[\u003cimg src =\"docs/images/icon_license_mit.svg\"\u003e](https://github.com/DmitriBogdanov/UTL/blob/master/LICENSE.md)\n[\u003cimg src =\"docs/images/icon_semver.svg\"\u003e](./docs/guide_versioning.md)\n[\u003cimg src =\"docs/images/icon_header_only.svg\"\u003e](https://en.wikipedia.org/wiki/Header-only)\n[\u003cimg src =\"docs/images/icon_no_dependencies.svg\"\u003e](https://github.com/DmitriBogdanov/UTL/tree/master/include/UTL)\n\n[\u003cimg src =\"https://img.shields.io/github/actions/workflow/status/DmitriBogdanov/UTL/windows.yml?logo=github\u0026label=Windows\"\u003e](https://github.com/DmitriBogdanov/UTL/actions/workflows/windows.yml)\n[\u003cimg src =\"https://img.shields.io/github/actions/workflow/status/DmitriBogdanov/UTL/ubuntu.yml?logo=github\u0026label=Ubuntu\"\u003e](https://github.com/DmitriBogdanov/UTL/actions/workflows/ubuntu.yml)\n[\u003cimg src =\"https://img.shields.io/github/actions/workflow/status/DmitriBogdanov/UTL/macos.yml?logo=github\u0026label=MacOS\"\u003e](https://github.com/DmitriBogdanov/UTL/actions/workflows/macos.yml)\n\n# UTL\n\n**UTL** is a collection of small self-contained libraries aimed at prototyping with minimal boilerplate. Most of the modules were created during my work in gamedev and math research projects.\n\nFor the ease of integration, all libraries are distributed as **individual headers**, which can be found [**here**](https://github.com/DmitriBogdanov/UTL/blob/master/include/UTL).\n\nThe entire collection can also be downloaded as an [**amalgamated single-header**](./single_include/UTL.hpp).\n\n## Design goals\n\nImplementation of this library sets following design goals:\n\n* **Easy integration**. Adding libraries to the project should be as simple as including their corresponding headers.\n* **Concise syntax**. Library usage should require minimal boilerplate on user side.\n* **Platform agnostic.** Implementation should be based around the C++ standard. Platform-specific features might be provided as optional addons.\n* **Non-intrusive.** Every library should reside in its own namespace, use its own macro prefix and not introduce any invasive identifiers.\n\nQuality goals include:\n\n* **Modern C++ style**. Usage of modern C++ idioms is heavily preferred.\n* **Usage examples**. Documentation should include  practical usage examples for all major methods.\n* **Test \u0026 benchmark coverage.** All modules should have appropriate unit test coverage, performance-focused implementations should be benchmarked against alternative approaches.\n\n## Modules \u0026 documentation\n\n| Module                                                     | Short description                                            |\n| ---------------------------------------------------------- | ------------------------------------------------------------ |\n| [**utl::bit**](./docs/module_bit.md)                       | Bit-twiddling, enum bitflags                                 |\n| [**utl::enum_reflect**](./docs/module_enum_reflect.md)     | Enum reflection                                              |\n| [**utl::integral**](./docs/module_integral.md)             | Saturated math, safe integer casts, literals, rounding and etc. |\n| [**utl::json**](./docs/module_json.md)                     | JSON parsing, serializing \u0026 reflection                       |\n| [**utl::log**](./docs/module_log.md)                       | Logging library                                              |\n| [**utl::math**](./docs/module_math.md)                     | Additional math functions                                    |\n| [**utl::mvl**](./docs/module_mvl.md)                       | Generalized matrix \u0026 vector containers                       |\n| [**utl::parallel**](./docs/module_parallel.md)             | Thread pool, async tasks, parallel for, parallel reductions and etc. |\n| [**utl::predef**](./docs/module_predef.md)                 | Detection of architectures, compilers, platforms and etc.    |\n| [**utl::profiler**](./docs/module_profiler.md)             | Call graph \u0026 thread profiling                                |\n| [**utl::progressbar**](./docs/module_progressbar.md)       | Progress bars for CLI apps                                   |\n| [**utl::random**](./docs/module_random.md)                 | PRNGs \u0026 random number generation                             |\n| [**utl::shell**](./docs/module_shell.md)                   | Shell commands and temporary files                           |\n| [**utl::sleep**](./docs/module_sleep.md)                   | Precise sleep implementations                                |\n| [**utl::stre**](./docs/module_stre.md)                     | Efficient implementations of common string utils             |\n| [**utl::struct_reflect**](./docs/module_struct_reflect.md) | Struct reflection                                            |\n| [**utl::table**](./docs/module_table.md)                   | Drawing of LaTeX and ASCII tables                            |\n| [**utl::time**](./docs/module_time.md)                     | Floating-point time, timers, stopwatches, datetime           |\n\n## See also\n\n* [How to include only specific modules when using amalgamated header](./docs/guide_selecting_modules.md)\n* [Fetching the library with CMake `FetchContent()`](./docs/guide_fetching_library.md)\n* [Names reserved for implementation](./docs/guide_reserved_names.md)\n* [Building tests \u0026 benchmarks](./docs/guide_building_project.md)\n* [Semantic versioning](./docs/guide_versioning.md)\n\n## Requirements\n\n* Requires **C++17** support\n\n## Developer toolchain\n\nWhile the library itself consists of a single header with no embedded dependencies, it was built and tested using a number of third-party tools and libraries, some of which are embedded in the repo.\n\n| Tool                                                         | Version      | Used for                                                     |\n| ------------------------------------------------------------ | ------------ | ------------------------------------------------------------ |\n| [clang-format](https://clang.llvm.org/docs/ClangFormat.html) | **v.14.0.0** | Automatic code formatting                                    |\n| [clangd](https://clangd.llvm.org)                            | **v.15.0.7** | Language server functionality                                |\n| [CMake](https://cmake.org)                                   | **v.3.2.11** | Build system, [CTest](https://cmake.org/cmake/help/latest/manual/ctest.1.html) testing facilities |\n| [GCC](https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html) | **v.11.4.0** | [ASan](https://github.com/google/sanitizers/wiki/AddressSanitizer) and [UBSan](https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html) test instrumentation |\n| [cppcheck](https://github.com/danmar/cppcheck)               | **v.2.7**    | Static analysis                                              |\n| [GitHub Actions](https://docs.github.com/en/actions/about-github-actions/understanding-github-actions) | **latest**   | Multi-platform [CI testing](https://docs.github.com/en/actions/about-github-actions/about-continuous-integration-with-github-actions) |\n\n| Library                                                | Version            | License                                                                        | Used for                   | Embedded in repo |\n| ------------------------------------------------------ | ------------------ | ------------------------------------------------------------------------------ | -------------------------- | ---------------- |\n| [doctest](https://github.com/doctest/doctest)          | **v.2.4.11**       | [MIT](https://github.com/doctest/doctest/blob/master/LICENSE.txt)              | Unit testing               | ✔                |\n| [nanobench](https://github.com/martinus/nanobench)     | **v.4.3.11**       | [MIT](https://github.com/martinus/nanobench/blob/master/LICENSE)               | Benchmarking               | ✔                |\n| [nlohmann json](https://github.com/nlohmann/json)      | **v.3.11.3**       | [MIT](https://github.com/nlohmann/json/blob/develop/LICENSE.MIT)               | Benchmark comparison       | ✔                |\n| [PicoJSON](https://github.com/kazuho/picojson)         | **v.1.3.0**        | [BSD-2](https://github.com/kazuho/picojson/blob/master/LICENSE)                | Benchmark comparison       | ✔                |\n| [RapidJSON](https://github.com/Tencent/rapidjson)      | **v.1.1.0**        | [MIT, BSD, JSON](https://github.com/Tencent/rapidjson/blob/master/license.txt) | Benchmark comparison       | ✔                |\n| [JSONTestSuite](https://github.com/nst/JSONTestSuite/) | **commit 1ef36fa** | [MIT](https://github.com/nst/JSONTestSuite/blob/master/LICENSE)                | JSON Validation test suite | ✔                |\n\n## Work in progress\n\n* `utl::table` rewrite\n* `utl::log` formatting rework\n* `utl::mvl` large scale refactor and v1.0.0 release\n* `utl::random` CBPRNGs and fixed-entropy seeding sequence\n* Test coverage statistics\n* Build verification for examples\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE.md](./LICENSE.md) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmitribogdanov%2Futl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmitribogdanov%2Futl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmitribogdanov%2Futl/lists"}