{"id":51395759,"url":"https://github.com/ntoskrnl7/ext","last_synced_at":"2026-07-04T02:06:56.768Z","repository":{"id":39802954,"uuid":"288074162","full_name":"ntoskrnl7/ext","owner":"ntoskrnl7","description":"C++ Extended Template Library","archived":false,"fork":false,"pushed_at":"2026-06-14T03:01:18.000Z","size":445,"stargazers_count":16,"open_issues_count":1,"forks_count":4,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-06-14T04:13:44.141Z","etag":null,"topics":["boost","clang","cmake","cpp","cross-platform","easy-to-use","feature","gcc","linux","macos","morden-cpp","msvc","process","std","stl","util","windows"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ntoskrnl7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-08-17T03:25:04.000Z","updated_at":"2026-02-26T15:23:43.000Z","dependencies_parsed_at":"2022-09-13T21:13:29.954Z","dependency_job_id":null,"html_url":"https://github.com/ntoskrnl7/ext","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/ntoskrnl7/ext","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntoskrnl7%2Fext","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntoskrnl7%2Fext/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntoskrnl7%2Fext/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntoskrnl7%2Fext/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ntoskrnl7","download_url":"https://codeload.github.com/ntoskrnl7/ext/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntoskrnl7%2Fext/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35107508,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-04T02:00:05.987Z","response_time":113,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["boost","clang","cmake","cpp","cross-platform","easy-to-use","feature","gcc","linux","macos","morden-cpp","msvc","process","std","stl","util","windows"],"created_at":"2026-07-04T02:06:55.240Z","updated_at":"2026-07-04T02:06:56.751Z","avatar_url":"https://github.com/ntoskrnl7.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ext\n\nC++ **EX**tended **T**emplate Library\n\n**ext** is a small, header-oriented C++ utility library for projects that need\nportable building blocks across old and modern toolchains. It focuses on\nindependent helpers around compatibility, strings, parsing, process I/O,\nthreading, and small application patterns rather than trying to be a framework.\n\nThe library intentionally carries compatibility code for older compilers such\nas Visual Studio 2008 SP1 while also exposing cleaner APIs on newer C++\nstandards. Some features therefore have different availability and guarantees\ndepending on compiler, standard library, and platform support.\n\n[![CMake](https://github.com/ntoskrnl7/ext/actions/workflows/cmake.yml/badge.svg?branch=master\u0026event=push)](https://github.com/ntoskrnl7/ext/actions/workflows/cmake.yml?query=branch%3Amaster)\n[![MSYS2](https://github.com/ntoskrnl7/ext/actions/workflows/msys2.yml/badge.svg?branch=master\u0026event=push)](https://github.com/ntoskrnl7/ext/actions/workflows/msys2.yml?query=branch%3Amaster)\n[![License: BSD-3-Clause](https://img.shields.io/badge/license-BSD--3--Clause-green.svg)](LICENSE)\n![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/ntoskrnl7/ext)\n![CMake 3.14+](https://img.shields.io/badge/CMake-3.14+-yellow.svg?logo=cmake\u0026logoColor=white)\n![C++ 03+](https://img.shields.io/badge/C++-03+-white.svg?logo=cplusplus\u0026logoColor=blue)\n\n## Requirements\n\n- GCC 8.3.0+\n- Clang 10.0+\n- Visual Studio 2008 SP1+\n- Boost 1.69.0+ (optional)\n- Git 2.0+\n- CMake 3.14+\n\nSee [Build and Test](docs/build-and-test.md) for tested platforms, MSYS2 setup, and local test commands.\n\n## Quick Start\n\n```cmake\ncmake_minimum_required(VERSION 3.14 FATAL_ERROR)\nproject(MyProject)\n\nadd_executable(tests tests.cpp)\n\ninclude(cmake/CPM.cmake)\nCPMAddPackage(\"gh:ntoskrnl7/ext@0.5.17\")\n\ntarget_link_libraries(tests ext)\n```\n\n## Documentation\n\n- [API reference](docs/api/README.md)\n- [Build and test](docs/build-and-test.md)\n- [Portability and API contracts](docs/portability-and-contracts.md)\n\n## Project Scope\n\next is best used as a collection of opt-in headers:\n\n- Use one feature at a time; most headers are independent utility components.\n- Prefer the standard library first when it already provides the exact behavior\n  you need on every supported toolchain.\n- Treat concurrency, cancellation, process, and shared-memory APIs as thin\n  wrappers over platform behavior. Their exact guarantees are documented per API\n  and summarized in [Portability and API contracts](docs/portability-and-contracts.md).\n- Compatibility shims live behind feature checks and `CXX_USE_*` macros. New\n  code should avoid depending on those internal macros unless it is extending\n  ext itself.\n\n## Features\n\n| Feature | Header | Description |\n| --- | --- | --- |\n| [any_function](docs/api/any_function.md) | `\u003cext/any_function\u003e` | Type-erased function wrapper that accepts arguments as `std::any` values and reports argument count/type errors explicitly. |\n| [async_result](docs/api/async_result.md) | `\u003cext/async_result\u003e` | Asynchronous producer/result container with iterator-style consumption and cooperative cancellation flag support. |\n| [base64](docs/api/base64.md) | `\u003cext/base64\u003e` | Base64 encoder/decoder for strings, wide strings, byte vectors, and trivially copyable objects. |\n| [callback](docs/api/callback.md) | `\u003cext/callback\u003e` | Multicast callback list with add/remove operators and argument forwarding. |\n| [c_object](docs/api/c_object.md) | `\u003cext/c_object.h\u003e` | C-compatible scoped object lifetime helpers with initializer/finalizer macros and custom allocation hooks. |\n| [cancelable_thread](docs/api/cancelable_thread.md) | `\u003cext/cancelable_thread\u003e` | Thread wrapper with deferred and immediate cancellation paths over pthread or Windows primitives. |\n| [cdbg](docs/api/cdbg.md) | `\u003cext/cdbg\u003e` | Debug stream objects that write through platform debug sinks or console fallback streams. |\n| [chain](docs/api/chain.md) | `\u003cext/chain\u003e` | Composable chain-of-responsibility helper with typed results, continuation links, and exception-aware result state. |\n| [debug_utils](docs/api/debug_utils.md) | `\u003cext/debug_utils.h\u003e` | Debugger detection and wait helpers for POSIX-style debug workflows. |\n| [collection](docs/api/collection.md) | `\u003cext/collection\u003e` | Self-registering object collection with shared or exclusive locking around global per-type item lists. |\n| [ini](docs/api/ini.md) | `\u003cext/ini\u003e` | INI parser and writer backed by nested string maps. |\n| [lang](docs/api/lang.md) | `\u003cext/lang\u003e` | Korean language helpers for Hangul syllables, postpositions, and native/Sino-Korean number words. |\n| [named_mutex](docs/api/named_mutex.md) | `\u003cext/named_mutex\u003e` | Cross-process named mutex wrapper for coordinating shared resources and shared-memory payloads. |\n| [observable](docs/api/observable.md) | `\u003cext/observable\u003e` | Observer pattern base template with automatic unsubscribe on observer or observable destruction. |\n| [path](docs/api/path.md) | `\u003cext/path\u003e` | Path helpers for existence checks, relative path detection, and path joining. |\n| [pipe](docs/api/pipe.md) | `\u003cext/pipe\u003e` | Cross-platform anonymous pipe wrapper for narrow and wide byte streams. |\n| [process](docs/api/process.md) | `\u003cext/process\u003e` | Cross-platform child process launcher with stdin/stdout/stderr pipe streams and process lifetime management. |\n| [property](docs/api/property.md) | `\u003cext/property\u003e` | Observable value wrapper with assignment validation and property-to-property propagation. |\n| [pstream](docs/api/pstream.md) | `\u003cext/pstream\u003e` | Native-handle-backed stream wrappers used to read from and write to process pipes. |\n| [result](docs/api/result.md) | `\u003cext/result\u003e` | Small `ok`/`err` result type for explicit value-or-error returns. |\n| [safe_object](docs/api/safe_object.md) | `\u003cext/safe_object\u003e` | RAII lock proxy for globally named objects and mutexes selected at compile time. |\n| [shared_recursive_mutex](docs/api/shared_recursive_mutex.md) | `\u003cext/shared_recursive_mutex\u003e` | Shared mutex variant that permits recursive locking by the owning thread. |\n| [shared_mem](docs/api/shared_mem.md) | `\u003cext/shared_mem\u003e` | Named shared memory creation, opening, mapping, unmapping, and destruction helpers. |\n| [singleton](docs/api/singleton.md) | `\u003cext/singleton\u003e` | CRTP singleton base that exposes one static instance per derived type. |\n| [string](docs/api/string.md) | `\u003cext/string\u003e` | String utility namespace for trimming, printable filtering, searching, splitting, replacement, numeric conversion, and UTF-8 helpers. |\n| [stl_compat](docs/api/stl_compat.md) | `\u003cext/stl_compat\u003e` | Compatibility macros, aliases, and fallback implementations for older C++ standards and compilers. |\n| [thread_pool](docs/api/thread_pool.md) | `\u003cext/thread_pool\u003e` | Fixed-size worker pool with future-returning task submission and explicit start/stop state. |\n| [type_traits](docs/api/type_traits.md) | `\u003cext/type_traits\u003e` | Type-trait helpers for removing class qualifiers from member functions and deducing member-function signatures. |\n| [typeinfo](docs/api/typeinfo.md) | `\u003cext/typeinfo\u003e` | Portable type-name helper around C++ RTTI type information. |\n| [units](docs/api/units.md) | `\u003cext/units\u003e` | Strongly typed SI and IEC byte-size units with arithmetic and conversion helpers. |\n| [uri](docs/api/uri.md) | `\u003cext/uri\u003e` | RFC 3986-oriented URI parser and percent-encoding helpers for narrow, wide, and UTF-8 input. |\n| [version](docs/api/version.md) | `\u003cext/version\u003e` | Semantic version parser, formatter, hashing, comparison, and mutation helper. |\n| [wordexp](docs/api/wordexp.md) | `\u003cext/wordexp\u003e` | Environment or shell-style string expansion wrapper with platform-specific behavior. |\n\n## License\n\nThis project is distributed under the [BSD-3-Clause license](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fntoskrnl7%2Fext","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fntoskrnl7%2Fext","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fntoskrnl7%2Fext/lists"}