{"id":23879522,"url":"https://github.com/jlaumon/bedrock","last_synced_at":"2025-04-05T08:03:45.969Z","repository":{"id":257975993,"uuid":"864867687","full_name":"jlaumon/Bedrock","owner":"jlaumon","description":"Minimal C++20 STL replacement library. Simpler, smaller, and in many cases faster.","archived":false,"fork":false,"pushed_at":"2025-03-31T19:48:58.000Z","size":649,"stargazers_count":172,"open_issues_count":0,"forks_count":3,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-05T08:02:30.165Z","etag":null,"topics":["allocators","atomic","cpp","cpp20","hashmap","string","thread","vector"],"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/jlaumon.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":"2024-09-29T11:35:44.000Z","updated_at":"2025-04-04T15:55:18.000Z","dependencies_parsed_at":"2025-03-10T20:29:35.857Z","dependency_job_id":"61a326d7-c8f8-4cce-a394-29bd52b9c37c","html_url":"https://github.com/jlaumon/Bedrock","commit_stats":null,"previous_names":["jlaumon/bedrock"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlaumon%2FBedrock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlaumon%2FBedrock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlaumon%2FBedrock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlaumon%2FBedrock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jlaumon","download_url":"https://codeload.github.com/jlaumon/Bedrock/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247305932,"owners_count":20917208,"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":["allocators","atomic","cpp","cpp20","hashmap","string","thread","vector"],"created_at":"2025-01-03T23:17:33.596Z","updated_at":"2025-04-05T08:03:45.950Z","avatar_url":"https://github.com/jlaumon.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bedrock 🪨\n\nBedrock is a C++20 STL alternative. Smaller, simpler, in many case faster. It's a hobby project, don't expect much more than an interesting implementation reference for things.\n\nCurrently Windows only. Supports MSVC and Clang. There are no concrete plans to support more platforms/compilers at this time. \n\n## Containers and Views\n\n```c++\nVector\u003cint\u003e         // Roughly equivalent to std::vector\u003cint\u003e, with extra useful methods (Find, SwapErase, etc.)\nSpan\u003cint\u003e           // Roughly equivalent to std::span\u003cint\u003e\nString              // Roughly equivalent to std::string\nStringView          // Roughly equivalent to std::string_view\nHashMap\u003cint, int\u003e   // Dense open addressed (Robin Hood) hash map. Key-value pairs are stored contiguously.\nHashSet\u003cint\u003e        // Same as HashMap, but without values.\n```\n\n## Allocators \n\nAll containers come in different allocator flavors:\n\n```c++\nTempVector\u003cint\u003e     // Allocates from a thread local arena. Falls back to the heap if it runs out.\nFixedVector\u003cint\u003e    // Allocates from a fixed-size arena embedded in the container.\nVMemVector\u003cint\u003e     // Allocates from a virtual memory arena embedded in the container. Can grow while keeping a stable address.\nArenaVector\u003cint\u003e    // Allocates from an externally provided arena.\n\n```\n\n## Tests\n\nWrite tests anywhere:\n\n```c++\nREGISTER_TEST(\"Span\")\n{\n    int values[] = { 1, 2, 3, 4, 5 };\n    Span test = values;\n\n    Span first_two = test.First(2);\n    TEST_TRUE(first_two.Size() == 2);\n    TEST_TRUE(first_two[0] == 1);\n    TEST_TRUE(first_two[1] == 2);\n};\n```\n\nThe run them with `gRunAllTests()`. \n\n## Other\n\nMutex, Atomic, Thread, Semaphore. \nFunction, many Type Traits, a few Algorithms...\n\n## Building\n\nCompile every cpp file in Bedrock/. Define `ASSERTS_ENABLED` if you want asserts and tests. That's about it. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjlaumon%2Fbedrock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjlaumon%2Fbedrock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjlaumon%2Fbedrock/lists"}