{"id":27958047,"url":"https://github.com/ericsson/xcm","last_synced_at":"2026-01-29T00:19:36.871Z","repository":{"id":70059638,"uuid":"272515613","full_name":"Ericsson/xcm","owner":"Ericsson","description":"The Extensible Connection-oriented Messaging (XCM) library.","archived":false,"fork":false,"pushed_at":"2026-01-23T12:29:29.000Z","size":2080,"stargazers_count":18,"open_issues_count":27,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-01-24T04:48:00.084Z","etag":null,"topics":["cloud-native","embedded","messaging","tls"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ericsson.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-06-15T18:33:40.000Z","updated_at":"2026-01-23T10:50:25.000Z","dependencies_parsed_at":"2023-06-05T08:00:23.340Z","dependency_job_id":"0cfcc4b3-04d1-466a-8c80-cc4cf0896563","html_url":"https://github.com/Ericsson/xcm","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/Ericsson/xcm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ericsson%2Fxcm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ericsson%2Fxcm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ericsson%2Fxcm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ericsson%2Fxcm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ericsson","download_url":"https://codeload.github.com/Ericsson/xcm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ericsson%2Fxcm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28857546,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T22:56:21.783Z","status":"ssl_error","status_checked_at":"2026-01-28T22:56:00.861Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["cloud-native","embedded","messaging","tls"],"created_at":"2025-05-07T18:16:04.601Z","updated_at":"2026-01-29T00:19:36.866Z","avatar_url":"https://github.com/Ericsson.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Extensible Connection-oriented Messaging (XCM)\n\n## Overview\n\nXCM is a shared library implementing an inter-process communication\nservice on Linux. It allows communication between processes on the\nsame system, as well as over a network.\n\nThe library is good fit for an embedded system, with a light-weight\ndesign and high performance. XCM is also well-suited for use in a\nCloud setting, such as communication between Kubernetes micro\nservices.\n\nXCM has pluggable transports, handling the actual data delivery. In\ncombination with an URL-like addressing scheme, it allows applications\nto be transport agnostic, and one transport suitable for one\ndeployment can seamlessly be replaced with another, in another\ndeployment. The API semantics are the same, regardless of underlying\ntransport used.\n\nA XCM transport either provides a messaging or a byte stream type\nservice.\n\nXCM supports UNIX domain sockets for efficient local-only\ncommunication, and TCP, TLS and SCTP for remote inter-process\ncommunication. The service XCM provides is of the connection-oriented,\nclient-server type. It is not a message bus and does not implement the\npublish-subscribe or broadcast patterns.\n\nXCM does not depend any other processes or other type of\ninfrastructure than the library itself for its implementation. It has\nno separate, background threads of its own, but uses the application's\nthread(s) for all processing.\n\nXCM does not make any assumption about which event loop is being used,\nand thus frees the user to choose between libraries such as libev and\nlibevent, or the glib event loop (besides using XCM in blocking mode).\n\n## User Manual\n\nAPI documentation and a user manual are available in xcm.h. `make\ndoxygen` will create HTML version. Provided the `pdflatex` tool is\ninstalled, `make doxygen-pdf` will produce a PDF version of the\ndocument.\n\nAn online copy of this API version's documentation can be found here:\nhttps://ericsson.github.io/xcm/api/0.27/\n\n## Building\n\nTo build this software the system needs to have the following packages\n(not including standard things like a C compiler):\n\n* automake\n* autoconf (2.63 and later are known to work, some older versions will not)\n* libtool\n* python (3.x, including the cryptography module if TLS is enabled)\n* pytest\n* c-ares (1.16.0 or later)\n* openssl (1.1.1 or 3.x, if UTLS or TLS transports are enabled)\n* lttng-ust (including the dev and tools package) (if LTTng is enabled)\n* libevent2 (if the 'xcm' and 'xcmrelay' tools are enabled)\n* doxygen and plantuml (for documentation)\n* libsctp-dev (in case the SCTP transport is enabled)\n\nPlease see `./configure --help` for available build-time options. API\nand ABI is identical regardless of options used.\n\nWhen all packages are installed, run:\n`autoreconf -i \u0026\u0026 ./configure \u003coptions\u003e \u0026\u0026 make`\n\nThe BTLS, TLS and UTLS transports may be disabled (eliminating\nthe OpenSSL dependency):\n`./configure --disable-tls`\n\nLTTng support may also be disabled:\n`./configure --disable-lttng`\n\nXCM may be configured to use the glibc resolver instead of the c-ares\nlibrary:\n`./configure --disable-cares`\n\nNote: glibc getaddrinfo_a() uses background threads, performs worse\nthan c-ares, and has a tendency to leak memory in some corner cases.\n\nThe 'xcm' command-line tool may be disabled (eliminating the libevent\ndependency):\n`./configure --disable-xcm-tool`\n\nThe control interface can be disabled:\n`./configure --disable-ctl`\n\n### Ubuntu\n\nTo build on Ubuntu 22.04 LTS, install the following packages:\n\n```\nsudo apt install gcc make automake libtool libssl-dev libevent-dev \\\n     liblttng-ust-dev libc-ares-dev\n```\n\n### Static Library Builds\n\nXCM depends on constructor functions to register transports into the\ncore library, and thus cannot be built statically.\n\n## Testing\n\nTo execute the unit and component test suits, run:\n`make check`\n\nThe test process doesn't require root permission, but some test cases\nwill be skipped for non-root users. Running as root will allow the\ntest suite to use network namespaces, and in such a way run many test\ncases in parallel.\n\nThe test suite is in part an integration test, where the system under\ntest (SUT) includes the part of the Linux kernel and OpenSSL. Some\ntests have race conditions, and may fail on busy or otherwise slow\nmachines. The races are in the tests - not in the XCM library itself.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericsson%2Fxcm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fericsson%2Fxcm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericsson%2Fxcm/lists"}