{"id":16984626,"url":"https://github.com/not-nik/cpp-stalin","last_synced_at":"2025-04-12T03:24:14.474Z","repository":{"id":104028782,"uuid":"384222439","full_name":"Not-Nik/cpp-stalin","owner":"Not-Nik","description":"A C++ standard library implementation","archived":false,"fork":false,"pushed_at":"2024-06-06T09:56:07.000Z","size":323,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-10T15:53:18.028Z","etag":null,"topics":["cpp","cpp11","cpp14","cpp17","cpp20","cpp23","standard-library","stl"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Not-Nik.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}},"created_at":"2021-07-08T18:59:31.000Z","updated_at":"2024-12-15T18:38:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"b99bf4e6-90d2-443e-8b7b-92d171f02124","html_url":"https://github.com/Not-Nik/cpp-stalin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Not-Nik%2Fcpp-stalin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Not-Nik%2Fcpp-stalin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Not-Nik%2Fcpp-stalin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Not-Nik%2Fcpp-stalin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Not-Nik","download_url":"https://codeload.github.com/Not-Nik/cpp-stalin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248511020,"owners_count":21116333,"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":["cpp","cpp11","cpp14","cpp17","cpp20","cpp23","standard-library","stl"],"created_at":"2024-10-14T02:32:52.804Z","updated_at":"2025-04-12T03:24:14.451Z","avatar_url":"https://github.com/Not-Nik.png","language":"C++","readme":"# cpp-stalin is a C++ standard library implementation\n\nstalin currently only supports a small percentage of the standard. Feel free to contribute to any existing code, or start implementing something new.\n\n## Structure\n\n* `include/` - The main include directory\n* `src/` - The source directory. Any implementations for non-template functions are here\n* `test/` - Test directory. Contains tests to ensure the functionality of cpp-stalin\n\n## Configuration\n\nStalin allows you to configure the library to your needs in the `include/__config` file.\n\n* Defining `STALIN_CXX_STD_VERSION_XX` will set the library version to match the standard.\n* Defining `STALIN_CXX_STD_STRICT` will make the library comply more strictly to the standard. In non-strict mode stalin will add the `[[maybe_unused]]`\n  and `[[nodiscard]]` attributes in various places, to silence and generate unused warnings where appropriate.\n* Defining `STALIN_CXX_STD_NO_IO` will prevent `basic_filebuf` and the default streams `cin`, `cout`, `cerr` and `clog` as well as their wide counterparts from being\n  defined. This reduces the actual dependencies\u003csup\u003e[1](#fn_one)\u003c/sup\u003e \u003csup\u003e[2](#fn_two)\u003c/sup\u003e of cpp-stalin to the basic memory management functions `malloc`, `realloc`\n  and `free` and default types defined in `stddef.h` and\n  `stdio.h`.\n* Defining `STALIN_CXX_STD_FREESTANDING` will limit headers to the [freestanding library standard](https://en.cppreference.com/w/cpp/freestanding). Including any other\n  headers will do nothing.\n\n\u003ca name=\"fn_one\"\u003e\u003csup\u003e1\u003c/sup\u003e\u003c/a\u003e: In practice stalin also requires the rest of the C standard library for the `using` directives in the `c*` headers. Most modern\ncompilers support some way of checking whether a function or type exists so this shouldn't be a big issue.\n\n\u003ca name=\"fn_two\"\u003e\u003csup\u003e2\u003c/sup\u003e\u003c/a\u003e: Even if you don't declare/define these functions, your compiler likely won't complain, as long as the stalin functions using them\naren't instantiated. This means that the required functions depend on your usage of the library.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnot-nik%2Fcpp-stalin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnot-nik%2Fcpp-stalin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnot-nik%2Fcpp-stalin/lists"}