{"id":24917998,"url":"https://github.com/mjz86/basic_string","last_synced_at":"2025-03-28T08:28:50.757Z","repository":{"id":275292049,"uuid":"925640702","full_name":"Mjz86/basic_String","owner":"Mjz86","description":"a c++20 string class library that aims to achive performance and memory efficiency while being constexpr friendly","archived":false,"fork":false,"pushed_at":"2025-02-01T13:22:47.000Z","size":102,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-01T13:32:57.172Z","etag":null,"topics":["cpp20","cpp23-library","string","string-algorithms","string-formatter","string-manipulation","string-optimization","strings"],"latest_commit_sha":null,"homepage":"","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/Mjz86.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":"2025-02-01T11:23:53.000Z","updated_at":"2025-02-01T13:22:51.000Z","dependencies_parsed_at":"2025-02-01T13:32:58.805Z","dependency_job_id":"b69b69ca-b8cb-42d6-bdc3-647553bedac6","html_url":"https://github.com/Mjz86/basic_String","commit_stats":null,"previous_names":["mjz86/basic_string"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mjz86%2Fbasic_String","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mjz86%2Fbasic_String/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mjz86%2Fbasic_String/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mjz86%2Fbasic_String/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mjz86","download_url":"https://codeload.github.com/Mjz86/basic_String/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245994302,"owners_count":20706750,"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":["cpp20","cpp23-library","string","string-algorithms","string-formatter","string-manipulation","string-optimization","strings"],"created_at":"2025-02-02T09:17:17.820Z","updated_at":"2025-03-28T08:28:50.586Z","avatar_url":"https://github.com/Mjz86.png","language":"C++","readme":"# basic_String\n\u003c/br\u003e\nthis is the mjz string library, \u003c/br\u003e\nit uses the newest C++20 features and sometimes a bit of c++23 ones.\u003c/br\u003e\noriginally only compiled in msvc, but i recently ensured that gcc works as well.\u003c/br\u003e\nits currently in the alpha version and most features are not polished,well-tested,well-documented.\u003c/br\u003e\ncurruntly , the library supports:\u003c/br\u003e\n\n1-string minipulation with most of the equivalent functions to\nstd::string\u003c/br\u003e\n(https://en.cppreference.com/w/cpp/string/basic_string) \u003c/br\u003e\nand\u003c/br\u003e\nstd::string_view\u003c/br\u003e\n(https://en.cppreference.com/w/cpp/string/basic_string_view)\u003c/br\u003e\n\u003c/br\u003e\n2-compile-time execution support of   all of the functions\u003c/br\u003e (except the ones that are using std::iostream or something that is inheritly not constexpr in the standard)\u003c/br\u003e\n3-all of the functions are noexcept \u003c/br\u003e (except the ones that are using std::iostream )\u003c/br\u003e\n4-extended-COW\u003c/br\u003e(copy-on-write, sharing substings)\u003c/br\u003e\n5-SSO\u003c/br\u003e(small string optimization with capacity of 15 in 64bit and 7 in other platforms)\u003c/br\u003e\n6-built-in-viewer\u003c/br\u003e( the string litterals are not cpied until modification)\u003c/br\u003e\n7-custom allocators\u003c/br\u003e(its like a constexpr form of std::pmr::polymorphic_allocator)\u003c/br\u003e\n8-stack-buffers\u003c/br\u003e(opt-in, you can use an stack buffer to avoid allocations, note that this doesn't require an allocator and that it doesn't support COW)\u003c/br\u003e\n9-thread-safty while COW\u003c/br\u003e(can opt-out)\u003c/br\u003e\n10- some parts of std::format\u003c/br\u003e (still in progress)\u003c/br\u003e\n\nmy plan for the future versions:\u003c/br\u003e\n1-full std::format functionality compatibility\u003c/br\u003e\n2-more fmt::format functionality compatibility\u003c/br\u003e\n3-easier to use api for the byte-string\u003c/br\u003e\n4-addition of regex support \u003c/br\u003e\n5-more documentatin,testing and comments\u003c/br\u003e\n6-copy-less(by using sharing instead of copy and insertion of a shared substring insead of vector insertion ) \u003c/br\u003e\nrope(array of substrings) and or tree(balanced binary tree of  substrings)  alternatives for string in cases where the text is large\u003c/br\u003e\n\u003c/br\u003e\u003c/br\u003e\nmy plan for custom-encoding/Unicode support:\u003c/br\u003e\n1-ability to use UTF-8 in formatting\u003c/br\u003e\n2-ability to iterate over code unit,point,grapheme, and grapheme cluster\u003c/br\u003e\n3-addition of normalization support\u003c/br\u003e\n4-more features if needed \u003c/br\u003e\n\u003c/br\u003e\ni would appreciate if you give feedback, although note that i know that the documentation is currently lacking.\u003c/br\u003e\n\n\n\n\n\nfor compilation of the test file you can simply do: \u003c/br\u003e\n(i used g++ 12.2.0) \u003c/br\u003e\n \u003c/br\u003e\n g++ -std=c++2a   main.cpp \u003c/br\u003e\n  \u003c/br\u003e\n\n\n\n\n\n\n\n \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmjz86%2Fbasic_string","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmjz86%2Fbasic_string","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmjz86%2Fbasic_string/lists"}