{"id":43047996,"url":"https://github.com/noelware/violet","last_synced_at":"2026-04-26T23:02:53.912Z","repository":{"id":318963823,"uuid":"1026143111","full_name":"Noelware/violet","owner":"Noelware","description":"🌺💜 Extended C++ standard library","archived":false,"fork":false,"pushed_at":"2026-02-12T06:06:09.000Z","size":918,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-02-12T13:43:26.346Z","etag":null,"topics":["bazel","cpp","noelware","violet"],"latest_commit_sha":null,"homepage":"https://docs.noelware.org/library/cpp/violet","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Noelware.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["auguwu","Noelware"],"custom":["https://paypal.me/auguwu","https://noelware.org"]}},"created_at":"2025-07-25T11:32:47.000Z","updated_at":"2026-02-12T03:33:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"b10da581-41b3-44f5-97d1-69c6c58d6814","html_url":"https://github.com/Noelware/violet","commit_stats":null,"previous_names":["noelware/violet"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/Noelware/violet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Noelware%2Fviolet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Noelware%2Fviolet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Noelware%2Fviolet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Noelware%2Fviolet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Noelware","download_url":"https://codeload.github.com/Noelware/violet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Noelware%2Fviolet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29639808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T22:32:43.237Z","status":"online","status_checked_at":"2026-02-20T02:00:07.535Z","response_time":59,"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":["bazel","cpp","noelware","violet"],"created_at":"2026-01-31T10:06:15.140Z","updated_at":"2026-04-19T08:04:55.298Z","avatar_url":"https://github.com/Noelware.png","language":"C++","readme":"### 🌺💜 Violet\n### *Extended C++ standard library*\n\n**Violet** is a C++20 and higher library that extends the current C++ standard library with enriching types coming from a Rust developer and cross-platform libraries that are readily avaliable.\n\n\u003e [!IMPORTANT]\n\u003e **Violet** is 100% experimental software and may not work as intended! Please report bugs via [GitHub Issues](https://github.com/Noelware/Violet/issues/new)! **Violet** is also NOT production ready either! things will break!!!\n\u003e\n\u003e ---\n\u003e\n\u003e **Violet** (and other frameworks) uses a rather unique versioning scheme: `year.month.revision[-channel[.patch]]`:\n\u003e\n\u003e * `25.09`\n\u003e * `25.09.01`\n\u003e * `25.09.01-dev`\n\u003e * `25.09.01-dev.1`\n\u003e\n\u003e We decided on this because it is very easy to see when a version of the library was released and doesn't\n\u003e enforce \"breaking/change\" semantics like [SemVer](https://semver.org), we depend on release timing for\n\u003e the scope of the library.\n\n## Building\n**Violet** aims to be buildable on most popular C++ build systems, which include:\n\n* Bazel 7.6 or higher\n* CMake 3.25 or higher\n* Meson 1.1 or higher\n\nand the following compilers:\n\n* Clang 20 or higher\n* GCC 14 or higher\n\n**Violet** also supports C++ 20 or higher.\n\n### Bazel\nUsing **Violet** in Bazel is the most trivial and most supported build system as we use Bazel extensively at Noelware. We only support Bzlmod and not the legacy WORKSPACE system.\n\nWe also aim to have Violet avaliable on BCR soon.\n\n```python\nbazel_dep(name = \"violet\", version = \"26.01\") # you can pin `version` to what .violet-version says\ngit_override(\n    module_name = \"violet\",\n    remote = \"https://github.com/Noelware/violet.git\",\n    commit = \"\u003cpinned commit here\u003e\"\n)\n```\n\n#### Flags\n\u003e [!NOTE]\n\u003e All flags can be aliased using `@violet//:[flag-name]` like using `--@violet//:asan`  to use `--@violet//buildsystem/bazel/flags:asan`\n\n\u003c!-- flag-table-start --\u003e\n| Flag | Description | Default Value |\n| :--- | :--------- | ------------: |\n| \u003ca id=\"bazel_flag_asan\"/\u003e `--@violet//buildsystem/bazel/flags:asan=[True\\|False]` | Enables the **Address** Sanitizer on each C++ target. Usually, this is meant for Bazel workspaces that don't provide custom C++ toolchain definitions. | `False` |\n| \u003ca id=\"bazel_flag_bitflags_free_function_impls\"/\u003e `--@violet//buildsystem/bazel/flags:bitflags_free_function_impls` | Enables the free-functions for the following operators when using the `violet::Bitflags` class: \u003cbr\u003e\u003cbr\u003e * `operator\\|` \u003cbr\u003e * `operator\u0026` \u003cbr\u003e * `operator^` \u003cbr\u003e * `operator~` | `False` |\n| \u003ca id=\"bazel_flag_dwarf_backend\"/\u003e `--@violet//buildsystem/bazel/flags:dwarf_backend=[libdwarf\\|llvm\\|violet\\|none]` | The backend to use when parsing DWARF object files, primarily used in Linux. This is mainly used by the `Noelware.Violet.Experimental.Debugging` framework. When you don't have dependents on any target inside of `//violet/experimental/debugging`, this is disabled. \u003cbr\u003e\u003cbr\u003eBy default, this will use the **elfutils** `libdw` library. \u003cbr\u003e\u003cbr\u003e * `libdwarf`: Uses **elfutils**' `libdw` library to parse DWARF object files. Recommended on most instances. \u003cbr\u003e * `llvm`: Uses LLVM's machinery to parse DWARF object files. Only recommended if you want strong support, but at the cost of more compilation time as libLLVM is a huge project. \u003cbr\u003e * `violet` (**EXPERIMENTAL**): Uses Noelware's implementation for parsing DWARF object files. Not recommended at the slightest; this is VERY experimental and things are subject to break. We're not sure if we want to do this. \u003cbr\u003e * `none`: Allows you to build your own DWARF object-file backend. Very not recommended unless you want to have full control over the parsing yourself. | `\"libdwarf\"` |\n| \u003ca id=\"bazel_flag_mach_o_backend\"/\u003e `--@violet//buildsystem/bazel/flags:mach-o_backend=[llvm\\|violet\\|disable\\|none]` | The backend to use when parsing Mach-O binaries on macOS. This is mainly used by the `Noelware.Violet.Experimental.Debugging` framework. When you don't have dependents on any target inside of `//violet/experimental/debugging`, this is disabled. \u003cbr\u003e\u003cbr\u003e By default, it'll use `libLLVM` to parse Mach-O binaries. Unfortunately, `libLLVM` is VERY large, so that is the penalty right now unless you want to use very experimental machinery that the Violet team implements theirselves. \u003cbr\u003e\u003cbr\u003e * `llvm`: Uses LLVM's machinery to parse DWARF object files. Only recommended if you want strong support, but at the cost of more compilation time as libLLVM is a huge project. \u003cbr\u003e * `violet` (**EXPERIMENTAL**): Uses Noelware's implementation for parsing DWARF object files. Not recommended at the slightest; this is VERY experimental and things are subject to break. We're not sure if we want to do this. \u003cbr\u003e * `disable`: Disables parsing Mach-O binaries alltogether. The implementation won't resolve line numbers or function names if disabled. \u003cbr\u003e * `none`: Allows you to build your own Mach-O backend. Very not recommended unless you want to have full control over the parsing yourself. | `\"llvm\"` |\n| \u003ca id=\"bazel_flag_msan\"/\u003e `--@violet//buildsystem/bazel/flags:msan` | Enables the **Memory** Sanitizer on each C++ target. Usually, this is meant for Bazel workspaces that don't provide custom C++ toolchain definitions. \u003cbr\u003e\u003cbr\u003eWhen invoked on any C++ target, the C++ standard library implementation will require to be compiled with **MemorySanitizer**. This will always fail in libstdc++, but libc++ has MSan support, but you will need to compile it yourself; default toolchains of libc++ don't compile with MSan by default. | `False` |\n| \u003ca id=\"bazel_flag_runfiles_logs\"/\u003e `--@violet//buildsystem/bazel/flags:runfiles_logs` | Enables verbose logging on each test that invokes [`violet::testing::runfiles::Init`][runfiles-init] (only applicable on the **Noelware.Violet.Testing** framework when using Runfiles) | `True` |\n| \u003ca id=\"bazel_flag_tsan\"/\u003e `--@violet//buildsystem/bazel/flags:tsan` | Enables the **Thread** Sanitizer on each C++ target. Usually, this is meant for Bazel workspaces that don't provide custom C++ toolchain definitions. | `False` |\n| \u003ca id=\"bazel_flag_ubsan\"/\u003e `--@violet//buildsystem/bazel/flags:ubsan` | Enables the **Undefined Behaviour** Sanitizer on each C++ target. Usually, this is meant for Bazel workspaces that don't provide custom C++ toolchain definitions. | `False` |\n| \u003ca id=\"bazel_flag_win32_dllexport\"/\u003e `--@violet//buildsystem/bazel/flags:win32_dllexport` | When set to **true**, this will use `__declspec(dllexport)` on MSVC toolchains instead of `__declspec(dllimport)`. This is a no-op on non-MSVC toolchains. | `False` |\n\u003c!-- flag-table-end --\u003e\n\n[runfiles-init]: #\n\n### CMake\n**CMake** is officially supported as of Violet 25.11. It's not usually up-to-date since at Noelware, we use Bazel but we try to.\n\nAt the moment, we don't provide `pkg-config` recipes yet but you can use CMake's [`FetchContent`]:\n\n```cmake\nFetchContent_Declare(\n    violet\n    GIT_REPOSITORY \"https://github.com/Noelware/violet.git\"\n    GIT_TAG \"\u003cgit tag here\u003e\"\n)\n\n# Disable installing for Violet\nset(VIOLET_INSTALL OFF CACHE BOOL \"\" FORCE)\nFetchContent_MakeAvailable(violet)\n```\n\n[`FetchContent`]: https://cmake.org/cmake/help/latest/module/FetchContent.html\n\n### Meson\n**Meson** is not supported as of this current release. We have a basic `meson.build` but we won't add support unless necessary or if multiple people need support.\n\n## License\n**Violet** is licensed under the **Apache 2.0** License with love and care by [Noelware, LLC.](https://noelware.org).\n","funding_links":["https://github.com/sponsors/auguwu","https://github.com/sponsors/Noelware","https://paypal.me/auguwu","https://noelware.org"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoelware%2Fviolet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoelware%2Fviolet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoelware%2Fviolet/lists"}