{"id":45629210,"url":"https://github.com/commschamp/commsdsl","last_synced_at":"2026-04-01T18:55:04.621Z","repository":{"id":37254137,"uuid":"143420819","full_name":"commschamp/commsdsl","owner":"commschamp","description":"DSL schemas parser and code generators for CommsChampion Ecosystem","archived":false,"fork":false,"pushed_at":"2026-03-24T23:09:05.000Z","size":7369,"stargazers_count":23,"open_issues_count":4,"forks_count":8,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-26T04:50:54.673Z","etag":null,"topics":["comms","comms-champion","communication-protocol","protocol","protocol-generator","schema"],"latest_commit_sha":null,"homepage":"https://commschamp.github.io","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/commschamp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"arobenko","custom":"https://www.paypal.me/arobenko"}},"created_at":"2018-08-03T11:46:18.000Z","updated_at":"2026-03-19T22:03:00.000Z","dependencies_parsed_at":"2023-02-19T02:31:51.527Z","dependency_job_id":"80c1c75d-22e2-4c01-a644-d777fff84c67","html_url":"https://github.com/commschamp/commsdsl","commit_stats":null,"previous_names":[],"tags_count":68,"template":false,"template_full_name":null,"purl":"pkg:github/commschamp/commsdsl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commschamp%2Fcommsdsl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commschamp%2Fcommsdsl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commschamp%2Fcommsdsl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commschamp%2Fcommsdsl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/commschamp","download_url":"https://codeload.github.com/commschamp/commsdsl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/commschamp%2Fcommsdsl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290977,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"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":["comms","comms-champion","communication-protocol","protocol","protocol-generator","schema"],"created_at":"2026-02-23T23:23:07.711Z","updated_at":"2026-04-01T18:55:04.615Z","avatar_url":"https://github.com/commschamp.png","language":"C++","funding_links":["https://github.com/sponsors/arobenko","https://www.paypal.me/arobenko"],"categories":[],"sub_categories":[],"readme":"# Overview\nThis project is a member of [CommsChampion Ecosystem](https://commschamp.github.io).\nIt provides multiple code generators to produce C++11 binary protocol\ndefinition code as well as other satellite components that can be used to (fuzz) test\nthe protocol definition, visualize the message contents, debug the protocol messages exchange,\nas well as create bindings (glue code) for other high level programming languages.\n\n# What's Inside\n- **commsdsl2comms** - A code generator, that produces C++11 code for binary\nprotocol definition out of [CommsDSL](https://github.com/commschamp/CommsDSL-Specification) \nschema files. The generated outcome is actually a CMake project that can be used to\nproperly install protocol definition headers as well as relevant cmake configuration files. \nFor details on how to use the tool, please read the \n[commsdsl2comms Manual](doc/Manual_commsdsl2comms.md) \ndocumentation page. For details on the generated CMake project please read the\n[Generated CMake Project Walkthrough](doc/GeneratedProjectWalkthrough.md)\ndocumentation page.\n- **commsdsl2test** - A code generator that produces C++11 code for fuzz\ntesting of the protocol definition produced by the **commsdsl2comms**.\nDetails are in the [Testing Generated Protocol Code](doc/TestingGeneratedProtocolCode.md) documentation\npage. For details on how to use the tool, please read the [commsdsl2test Manual](doc/Manual_commsdsl2test.md) documentation page.\nBuild requires explicit cmake enable [option](CMakeLists.txt).\n- **commsdsl2tools_qt** - A code generator, that produces the protocol\ndefinition plugin code for [CommmsChampion Tools](https://github.com/commschamp/cc_tools_qt),\nwhich can be used to visualize message contents as well as debug / observe exchange\nof the messages between different systems. Details are in the\n[Visual Protocol Analysis](doc/VisualProtocolAnalysis.md) documentation page.\nFor details on how to use the tool, please read the [commsdsl2tools_qt Manual](doc/Manual_commsdsl2tools_qt.md) documentation page.\nBuild requires explicit cmake enable [option](CMakeLists.txt).\n- **commsdsl2swig** - A code generator that produces [SWIG](https://www.swig.org) interface \nfile(s) for the protocol definition produced by the **commsdsl2comms**.\nIt allows generation of the bindings (glue code) to other high level \nprogramming languages using external [swig](https://www.swig.org) utility.\nDetails are in the [Other Languages Support](doc/OtherLanguagesSupport.md) documentation page.\nFor details on how to use the tool, please read the [commsdsl2swig Manual](doc/Manual_commsdsl2swig.md) documentation page.\nBuild requires explicit cmake enable [option](CMakeLists.txt).\n- **commsdsl2emscripten** - A code generator that produces [emscripten](https://emscripten.org/)\nbindings for the protocol definition produced by the **commsdsl2comms**.\nIt allows compilation of the protocol definition C++ code into WebAssembly as well as\ngeneration javascript bindings to it.\nDetails are in the [WebAssembly Support](doc/WebAssemblySupport.md) documentation page.\nFor details on how to use the tool, please read the [commsdsl2emscripten Manual](doc/Manual_commsdsl2emscripten.md) documentation page.\nBuild requires explicit cmake enable [option](CMakeLists.txt).\n- **commsdsl2c** - A code generator that produces \"C\" interface to the C++ protocol definition classes\nand functions produced by the **commsdsl2comms**. It allows easier integration with other \"C\" code\nas well as other programming languages not covered by [SWIG](https://www.swig.org) or [emscripten](https://emscripten.org/).\nDetails are in the [\"C\" Interface](doc/CInterface.md) documentation page.\nFor details on how to use the tool, please read the [commsdsl2c Manual](doc/Manual_commsdsl2c.md) documentation page.\nBuild requires explicit cmake enable [option](CMakeLists.txt).\n- **commsdsl2latex** - A code generator that produces [LaTeX](https://en.wikipedia.org/wiki/LaTeX)\nfiles for the protocol specification. The produced files can be built into\n**pdf** and/or **html** documents. For details on how to use the tool, please read the\n[commsdsl2latex Manual](doc/Manual_commsdsl2latex.md)\ndocumentation page. Build requires explicit cmake enable [option](CMakeLists.txt).\n- **libcommsdsl** - A C++ library containing common functionality for parsing\n[CommsDSL](https://github.com/commschamp/CommsDSL-Specification) schema files as\nwell code generation. It can be used to implement independent code generators.\nAt this moment, the library is not documented. Please\n[get in touch](#contact-information) in case you need it. I'll let you know\nwhen it's going to be ready.\n\n# License\nThe code of this project (libraries and tools it contains)\nis licensed under [Apache v2.0](https://www.apache.org/licenses/LICENSE-2.0) license.\n\nThe generated code has no license, the vendor is free to\npick any as long as it's compatible with the\n[license](https://commschamp.github.io/licenses/) of the\nrelevant [CommsChampion Ecosystem](https://commschamp.github.io) dependency project.\n\n# Tutorial\nThe [cc_tutorial](https://github.com/commschamp/cc_tutorial/) project contains a \ntutorial on how to use \n[CommsDSL](https://commschamp.github.io/commsdsl_spec/) to define binary communication protocol,\n**commsdsl2comms** to generate code, and \n[COMMS Library](https://github.com/commschamp/comms) to customize and \nintegrate the protocol definition with the business logic of the application.\n\n# How to Build\nDetailed instructions on how to build and install all the components can be\nfound in [doc/BUILD.md](doc/BUILD.md) file.\n\n# Other Documentation\nPlease check the [doc](doc) folder for the available additional documentation.\n\n# Versioning\nThis project will use [Semantic Versioning](https://semver.org/), where\n**MAJOR** number will be equal to the latest **DSL** version \n(The first number of [CommsDSL](https://github.com/commschamp/CommsDSL-Specification)\nversion) it supports. The **MINOR** number will indicate various improvements\nin the code of this repository, and **PATCH** number will indicate various bug fixes.\n\n# Supported Compilers\nThis project (the code generator and [CommsDSL](https://github.com/commschamp/CommsDSL-Specification) \nparsing library) is implemented using C++17 programming language. As the result,\nthe supported compilers are:\n- **GCC**: \u003e=8\n- **Clang**: \u003e=7\n- **MSVC**: \u003e= 2017\n\nThe **generated** projects however contain C++11 valid code and supports a bit earlier\nversions of the compilers:\n- **GCC**: \u003e=4.8\n- **Clang**: \u003e=3.8\n- **MSVC**: \u003e= 2015\n\n# Branching Model\nThis repository will follow the \n[Successful Git Branching Model](http://nvie.com/posts/a-successful-git-branching-model/).\n\nThe **master** branch will always point to the latest release, the\ndevelopment is performed on **develop** branch. As the result it is safe\nto just clone the sources of this repository and use it without\nany extra manipulations of looking for the latest stable version among the tags and\nchecking it out.\n\n# Asking For Help\nWith time the [CommsChampion Ecosystem](https://commschamp.github.io) has grown with both\nfeatures and complexity. Sometimes it can become challenging, especially for first time users,\nto find a proper way to define the required binary protocol, especially quite complex ones.\nThe most efficient way to ask for help would be:\n\n1. forking the official [tutorial](https://github.com/commschamp/cc_tutorial/) project on github\n2. create a separate folder (say **howto100**) where the minimal portion of\nthe required protocol which exposes the encountered problem is defined.\n3. [get in touch](#contact-information) providing an info on the forked project and encountered problem.\n\nThe suggested resolution will be provided by a pull request and/or a comment. After the problem\nis resolved, the forked project can be deleted.\n\n# Contact Information\nFor bug reports, feature requests, or any other question you may open an issue\nhere in **github** or e-mail me directly to: **arobenko@gmail.com**. I usually\nrespond within 24 hours.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommschamp%2Fcommsdsl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcommschamp%2Fcommsdsl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcommschamp%2Fcommsdsl/lists"}