{"id":28177788,"url":"https://github.com/vokegpu/standard","last_synced_at":"2026-01-25T17:32:20.061Z","repository":{"id":277165376,"uuid":"931512783","full_name":"vokegpu/standard","owner":"vokegpu","description":"Code of conduct, coding style-guide and coding rule-guide for Vokegpu projects.","archived":false,"fork":false,"pushed_at":"2025-07-27T03:11:08.000Z","size":118,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-27T05:22:55.655Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vokegpu.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,"zenodo":null}},"created_at":"2025-02-12T12:04:47.000Z","updated_at":"2025-07-27T03:11:11.000Z","dependencies_parsed_at":"2025-02-12T14:25:00.216Z","dependency_job_id":"39c345ae-9f98-4069-bb54-ec2aadc7d242","html_url":"https://github.com/vokegpu/standard","commit_stats":null,"previous_names":["vokegpu/code-of-conduct-and-style-guide"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vokegpu/standard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vokegpu%2Fstandard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vokegpu%2Fstandard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vokegpu%2Fstandard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vokegpu%2Fstandard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vokegpu","download_url":"https://codeload.github.com/vokegpu/standard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vokegpu%2Fstandard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28755930,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T16:32:25.380Z","status":"ssl_error","status_checked_at":"2026-01-25T16:32:09.189Z","response_time":113,"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":"2025-05-16T01:09:28.233Z","updated_at":"2026-01-25T17:32:20.054Z","avatar_url":"https://github.com/vokegpu.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Standard\n\n---\n\n## Topics\n\n![image](https://github.com/user-attachments/assets/e937c74d-9b27-416e-89bc-5e5ae75be127)\n\n---\n\n## Preface\n\nHere we discuss about Vokegpu standard for all types of projects.\n\n### Note\n\nAll written here is strictly followed, may some older projects contains unaltered coding style but EKG must refactor soon.\n\n### Summary\n\n`User-programmer` - an user that is a programmer and is using a technology from Vokegpu.  \n`Internal` - no user-programmer side purpose, only for the library engine.  \n`Features` - object(s), data(s) or any technology from Vokegpu.\n\n---\n\n## Documentation, Commit and Version\n\n### Documentation\n\nUser-programmer side must be documented. Internal side should be documented (recommended). Functions, structures, classes, methods, macros, specific-things should be documented.\n\n#### Specific Headers\n\n```cpp\n/**\n * Specific things should be like this.\n * Text should have a fixed space to fit verbose stuff.\n * This applies to all docs.\n **/\n```\n\n#### Notation-\u0026-Format, Functions and Macros\n\nThe notation and format:\n```cpp\n// notation\n\n/**\n * @brief short-text about\n * @note extra-stuff\n * @description verbose description\n * @param one parameter\n * @return type of return  \n **/\n\n// format\n\n/**\n * @* bla-bla class `x`\n **/\n\n// or\n\n/**\n * @*:\n *  bla-bla class `x`\n **/\n```\n\n```cpp\n// macros\n\n/**\n * @param `x` bla\n * @param `y` blu\n * @return stuff\n **/\n#define meow_bla(x, y) x * y; \n\n// functions\n\nnamespace * {\n  /**\n   * @brief:\n   *  what-do\n   * @note:\n   *  extra-stuff\n   **/\n  void def();\n\n  /**\n   * @brief:\n   *  what-do\n   * @note:\n   *  extra-stuff\n   * @param `meow`:\n   *  which is/do\n   * @return:\n   *  what-return\n   **/\n  * def(meow_t meow, *);\n}\n```\n\n#### Classes and Structures\n\n```cpp\nnamespace * {\n  /**\n   * @brief bla\n   * @note things\n   * @description verbose stuff\n   **/\n  class meow {};\n\n  /**\n   * @* same as class\n   **/\n  struct meow_t {};\n}\n```\n\n#### Inline Comments\n\nWriting on all lines is not recommended, can be confused with IA-generated code. Stupid-fun stuff is acceptable, but stupid-unfun comments no. Redundant stuff is not accepeted.\n\n```cpp\n// this meow should be less than 32 if not the entire statement can crash\n{\n  int32_t meow {};\n  /* etc */\n}\n```\n\n### Commit\n\nCommit formatting is important, sadly VokeGpu is not total mature, but we should follow it now.\n\nBasic:  \n`[commit-type] thing 1; thing 2; thing ...`\n\nIf possible add a description for specific-topics:  \n`bla, bla, meow`\n\nAlso, concant commits-types if possible:  \n`[feature][update][fix] added colored-buttons; updated slider code; fixed a glitch where meow spells on the console`\n\nCommit-types:  \n* `[update]` updated any-feature\n* `[feature]` added a feature\n* `[fix]` fixed something like a glitch or performance-issues\n* `[ref]` refactored code, like code-format, nomenclature or any moved stuff\n* `[git] + [\u003cany\u003e]` any related git stuff, readme, GitHub ci/di pipeline etc.\n* `[deprecated]` specific-case where you deprecated anything\n* `[build]` build-file was changed\n\n### Version\n\n#### Direct to a Master\n\nA software/library which does not want to receive official release until the nature is done. Should include a file named `commit.txt` under `version` dir, where you can describe what was created, updated or deleted.\n```\n[version e.g: 1.0.0] [date e.g: 04/06/2025]\n\n-- [description: removed moo]\n-- [description: something glitch idk]\n\n[version e.g: 1.1.0] [date e.g: 10/07/2025]\n\n-- [description e.g: bla added meow]\netc\n```\n\nMost recent version must be always at end.  \nWith auto-release, we can describe a complete history-change and details.\n\n#### Official Release\n\nFor projects where official releases exists, for example a complete architectured-model library/application, the version must be separated between Milestones.\n\nEach milestone must be a complete new version, and the master branch should be buildable, each issue should upgrade a minor or a patch, and a complete milestone should upgrade a major version.\n\n`Milestone.Feature.Fix` or `Major.Minor.Patch`: a `Milestone` should be the milestone name, `Feature` can be anything new, and a `Fix` can be a hotfix, fix, patch, performance fix etc.\n\nEach new issue completed and squashed on Master, is a new release.\n\n---\n\n## The Programming-Standard\n\n### Architecture \n\nBuilding a project with support for 32 bits must use at maxium 4-bytes number, as example, declaring flags or id:\n```cpp\nnamespace * {\n  typedef uint32_t flags_t;\n  typedef uint32_t id_t;\n}\n```\n\nIf the project purpose is not support 32-bits, reaching 8-bytes is not a rule, this applies for all parts of code, every field, function, method etc.\n\n### Library-Standard\n\n* Use `#ifndef LIB_PACKAGE_FEATURE_HPP` for headers, for platform-specific code use `#if defined(X)`\n```c++\n#ifndef LIB_PACKAGE_FEATURE_HPP\n#define LIB_PACKAGE_FEATURE_HPP\n\nnamespace lib {\n  void meow() {\n    #if defined(X)\n      // do something here\n    #else\n      // moo\n    #endif\n\n    #if defined(Y)\n      meow();\n    #endif\n  }\n}\n\n#endif\n```\n\n* Use 2 (two) spaces as tab.\n* Standard case is `sneak_case`, `SCREAM_SNEAK_CASE` for macro(s), optionally (`SCREAM_SNEAK_CASE`, `sneak_case`, `nocase`, `SCREAMNOCASE`) for enum(s) --- but no mistakes, do not use `SCREAMNOCASE` enum(s) with `nocase`, we do not care if you use `nocase` and `sneak_case` for enum(s), just do not mix uppercase and lowercase enum(s).\n* No unnecessary macro(s), use `constexpr` if possible, for type-definitions use `typedef`.\n* Ptr(s) must starts with `p_*`, and counts many `***`, e.g: `int ***ppp_bla`.\n* Use `this-\u003e` and not `m_*`.\n* Definitions on header(s) are trivial but do not use too much.\n* C-style references `int *p_bla` are allowed when needs but always use `int \u0026bla`.\n* Struct(s) are not allowed to have method(s), if contains, must be declared as `class` and not `struct`.\n* Non-OO (Object Oriented) or struct without method(s) must end as type `*_t`.\n* Library output dir must be located in: `lib/OS/32|64`.\n\n* - Internal-object(s) and internal-data(s) must be by-package namespace separated, you can optionally complete the package namespace sentence, but do not mix, follow a pattern.\n```c++\n// all `lib::gpu` are used by the core of library\n\n// gpu/model.hpp\nnamespace lib::gpu {\n  struct instance_t {\n  public:\n    // etc\n  };\n\n  lib::flags_t create_instance(\n    lib::gpu::create_instance_info_t \u0026create_instance_info,\n    lib::gpu::instance_t \u0026instance\n  );\n}\n```\n\n* - Public user-programmer side object(s) and data(s), must not be by-package namespace separated.\n```c++\n// all `lib` are used by the core of library at same time is public for the user-programmer side.\n\n// gpu/model.hpp\nnamespace lib {\n  struct model_t {\n  public:\n    // bla\n  };\n}\n\nnamespace lib {\n   // C++-style\n   lib::flags_t create_model(lib::model_t \u0026model);\n\n   // C-style (when really needs)\n   lib::flags_t create_model(lib::model_t *p_model);\n};\n```\n\n### Software-Standard\n\nAll must follow as core-library, except:\n\n* Executable output dir must be located in: `bin/OS/32|64`.\n\n* Internal-feature(s) if are used on genernal-specific places must be by-package namespace separated, otherwise, you do not need to put everything on separated namespace.\n```cpp\n// genernal-specific internal-feature(s)\nnamespace application::* {\n  /**\n   * This is genernally used on specific parts of the code, not all places.\n   **/\n  application::flags_t fetch(/* etc */);\n}\n\n// general features(s)\nnamespace application {\n  typedef uint64_t flags_t;\n\n  enum make {\n    MEOW,\n    MOO\n  }; \n\n  template\u003ctypename t\u003e\n  t meow() {\n    return t {};\n  }\n\n  /**\n   * This can be used in EVERYTHING!\n   **/\n  class log {\n  public:\n     /* etc */ \n  };\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvokegpu%2Fstandard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvokegpu%2Fstandard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvokegpu%2Fstandard/lists"}