{"id":39132098,"url":"https://github.com/y-scope/ystdlib-cpp","last_synced_at":"2026-01-17T21:19:03.612Z","repository":{"id":268512320,"uuid":"904581724","full_name":"y-scope/ystdlib-cpp","owner":"y-scope","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-24T21:39:29.000Z","size":77,"stargazers_count":2,"open_issues_count":13,"forks_count":7,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-07-25T03:22:45.518Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/y-scope.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-17T07:04:11.000Z","updated_at":"2025-07-24T21:39:33.000Z","dependencies_parsed_at":"2024-12-17T08:34:14.560Z","dependency_job_id":"2d6a51eb-0103-41d1-aac3-ad3badc9ce9c","html_url":"https://github.com/y-scope/ystdlib-cpp","commit_stats":null,"previous_names":["y-scope/ystdlib-cpp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/y-scope/ystdlib-cpp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-scope%2Fystdlib-cpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-scope%2Fystdlib-cpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-scope%2Fystdlib-cpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-scope%2Fystdlib-cpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/y-scope","download_url":"https://codeload.github.com/y-scope/ystdlib-cpp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/y-scope%2Fystdlib-cpp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28518618,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T18:55:29.170Z","status":"ssl_error","status_checked_at":"2026-01-17T18:55:03.375Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-01-17T21:19:01.557Z","updated_at":"2026-01-17T21:19:03.602Z","avatar_url":"https://github.com/y-scope.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ystdlib\n\nAn open-source C++ library developed and used at YScope.\n\n# Usage\n\nFirst, [build](#building) and [install](#installing) `ystdlib` onto your system. Then, in your\nproject's `CMakeLists.txt`, add the following:\n\n```cmake\nfind_package(ystdlib REQUIRED)\ntarget_link_libraries(\u003ctarget_name\u003e\n    [\u003clink-options\u003e]\n    ystdlib::\u003clib_1\u003e\n    [ystdlib::\u003clib_2\u003e ... ystdlib::\u003clib_N\u003e]\n)\n```\n\nWhere\n\n* `\u003ctarget_name\u003e` is the name of your target.\n* `\u003clink-options\u003e` are the link options for your target.\n* `lib_1`, `lib_2`, ..., `lib_N` are the names of the ystdlib libraries you wish to link with your\n  target.\n\n\u003e [!NOTE]\n\u003e If `BUILD_TESTING` is `ON`, set `ystdlib_BUILD_TESTING` to `OFF` to skip building ystdlib's unit\n\u003e tests.\n\n\u003e [!TIP]\n\u003e If ystdlib is not installed to a path that is searched by default, set `ystdlib_ROOT` to manually\n\u003e specify the location:\n\u003e \n\u003e ```cmake\n\u003e set(ystdlib_ROOT \"\u003cPATH_TO_INSTALLATION\u003e\")\n\u003e ```\n\n# Contributing\nFollow the steps below to develop and contribute to the project.\n\n## Requirements\n\n* CMake 3.23 or higher\n* Python 3.10 or higher\n* [Task] 3.40.0 or higher\n* [uv] 0.7.10 or higher\n\n## Set up\nInitialize and update submodules:\n```shell\ngit submodule update --init --recursive\n```\n\nIf you want to open the project in an IDE, run the following command to install any necessary\ndependencies from source:\n\n```shell\ntask deps:install-all\n```\n\n## Building\n\nThe library can be built via [Task](#building-using-task) or directly with\n[CMake](#building-using-cmake).\n\n### \u003ca id=\"building-using-task\" /\u003eUsing Task\n\nTo build all libraries:\n\n```shell\ntask ystdlib:build-release\n```\n\nTo build a subset of libraries, set the [`ystdlib_LIBRARIES` parameter](#ystdlib_libraries). For\nexample:\n\n```shell\ntask ystdlib:build-release ystdlib_LIBRARIES=\"containers;io_interface\"\n```\n\n### \u003ca id=\"building-using-cmake\" /\u003eUsing CMake\n\nTo build all libraries, run:\n\n```shell\ncmake -S . -B ./build\ncmake --build ./build\n```\n\nTo build a subset of libraries, set the [`ystdlib_LIBRARIES` parameter](#ystdlib_libraries). For\nexample:\n\n```shell\ncmake -S . -B ./build -Dystdlib_LIBRARIES=\"containers;io_interface\"\ncmake --build ./build\n```\n\n## Installing\n\nThe library can be installed via [Task](#installing-using-task) or directly with\n[CMake](#installing-using-cmake).\n\n### \u003ca id=\"installing-using-task\" /\u003eUsing Task\n\nTo build and install all libraries, run:\n\n```shell\ntask ystdlib:install-release INSTALL_PREFIX=\"$HOME/.local\"\n```\n\nTo build and install a subset of libraries, set the\n[`ystdlib_LIBRARIES` parameter](#ystdlib_libraries). For example:\n\n```shell\ntask ystdlib:install-release \\\n    INSTALL_PREFIX=\"$HOME/.local\" \\\n    ystdlib_LIBRARIES=\"containers;io_interface\"\n```\n\n### \u003ca id=\"installing-using-cmake\" /\u003eUsing CMake\n\nAfter [building](#building-using-cmake), to install all built libraries, run:\n\n```shell\ncmake --install \"./build\" --prefix \"$HOME/.local\"\n```\n\n## Testing\n\nTo build and run all unit tests:\n\n```shell\ntask test:run-debug\n```\n\nTo build and run unit tests for a subset of libraries, set the\n[`ystdlib_LIBRARIES` parameter](#ystdlib_libraries). For example:\n\n```shell\ntask test:run-debug ystdlib_LIBRARIES=\"containers;io_interface\"\n```\n\nWhen generating a testing target, the CMake variable `BUILD_TESTING` is followed (unless overruled\nby setting `ystdlib_BUILD_TESTING` to false). By default, if built as a top-level project,\n`BUILD_TESTING` is set to true and unit tests are built.\n\n## Linting\nBefore submitting a pull request, ensure you’ve run the linting commands below and have fixed all\nviolations and suppressed all warnings.\n\nTo run all linting checks:\n```shell\ntask lint:check\n```\n\nTo run all linting checks AND fix some violations:\n```shell\ntask lint:fix\n```\n\nTo see how to run a subset of linters for a specific file type:\n```shell\ntask -a\n```\nLook for all tasks under the `lint` namespace (identified by the `lint:` prefix).\n\n## Build and install parameters\n\nThe following parameters are common between multiple tasks and CMake.\n\n### `ystdlib_LIBRARIES`\n\nThe parameter/variable `ystdlib_LIBRARIES` can be used to target a subset of libraries, by setting\nit to a semicolon-separated (`;`) list of library names. The library names match their\n[directory name in `src/`](./src/ystdlib).\n\n\u003e [!NOTE]\n\u003e Internal dependencies of the libraries you choose will be automatically built, even if you don't\n\u003e explicitly specify them. In the following examples, specifying `io_interface` automatically adds\n\u003e `wrapped_facade_headers` to the build.\n\n#### Using Task\n\nSet by adding it after the task name. For example:\n\n```shell\ntask ystdlib:build-release ystdlib_LIBRARIES=\"containers;io_interface\"\n```\n\nNot all tasks support `ystdlib_LIBRARIES`. You can check if a task supports it by reading its\ndescription (run `task -a` to view all tasks and descriptions).\n\n#### Using CMake\n\nSet using the `-D` flag in the generation step. For example:\n\n```shell\ncmake -S . -B ./build -Dystdlib_LIBRARIES=\"containers;io_interface\"\n```\n\n[Task]: https://taskfile.dev\n[uv]: https://docs.astral.sh/uv\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fy-scope%2Fystdlib-cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fy-scope%2Fystdlib-cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fy-scope%2Fystdlib-cpp/lists"}