Languages

Choose an implementation based on the operations your application needs. All eighteen languages have account modules, but only some include an HTTPS transport. Cryptographic support and test coverage also vary, so the presence of a language directory does not imply that every messaging operation is available.

The order reflects the current implementation, rather than language popularity or the presence of an auth module. Complete cryptographic workflows and peer-key interoperability come first, followed by verified HTTPS integration, identity and key handling, and repository test coverage. Implementations with incomplete PKI or only account-adapter scaffolding follow those with working JWK cryptography. Similar implementations share a completeness tier even where the navigation must put one before another; Java and C#, and Perl and Lua, are such pairs. This is a source-based completeness assessment, not a speed or resource-usage benchmark.

WSS in this table means an SDK integration with mesgd's current messaging protocol. A language runtime or a sample may open a TLS WebSocket without implementing that integration. JavaScript can use the browser's native WebSocket API with the documented JSON example.

In the table, "Contract" identifies languages included in make test-auth, and "Live" identifies those included in make test-auth-live. Both describe test coverage in the repository rather than a guarantee that every toolchain is installed. The runners report unavailable toolchains as skips.

PositionLanguage and examplesHTTPSWSS SDK integrationAccount test coverageBasis for position
1ErlangBuilt inPending; experimental sample onlyContract and live HTTPSVerified HTTPS, peer-key helpers, and hybrid seal/open with a tested full public-key registration round trip.
2GoBuilt inPending; experimental sample onlyContract and live HTTPSVerified HTTPS, explicit identity instances, JWK import/export, and tested peer encryption and signature verification.
3CBuilt inPending; experimental sample onlyContract and live HTTPSVerified HTTPS through libcurl and tested peer-key cryptography; public PKI header and WSS wrapper remain missing.
4RubyBuilt inPending; experimental sample onlyContract and live HTTPSVerified HTTPS, JWK storage, and tested peer encryption and signature verification; identity state is module-global.
5PythonBuilt inPending; experimental sample onlyContract and live HTTPSVerified HTTPS and tested peer-key operations; identity state is class-global, and full-key registration exceeds its single OAEP block.
6JavaScriptBuilt inPending; browser JSON example availableContract and live HTTPSVerified HTTPS and tested peer-key operations; PKI imports Node filesystem code, and no registration helper is provided.
7RustPending; supply transportPending; experimental sample onlyContractExplicit identity instances and tested peer-key cryptography; the account adapter requires an application HTTPS transport.
8PHPBuilt inPending; experimental sample onlyContract and live HTTPSVerified HTTPS and local JWK/PKI tests; no peer-key helper surface matching the shared protocol implementations.
9JavaPending; supply transportPending; experimental sample onlyNot in auth runnerLocal JWK/PKI and cross-language fixture tests; HTTPS transport and account-runner coverage remain pending.
10C#Pending; supply transportPending; experimental sample onlyNot in auth runnerLocal JWK/PKI and cross-language fixture tests; HTTPS transport and account-runner coverage remain pending.
11KotlinPending; supply transportPending; no sampleNot in auth runnerLocal JWK/PKI tests; HTTPS transport, shared protocol coverage, and a WSS sample remain pending.
12OCamlPending; supply transportPending; experimental sample onlyNot in auth runnerJWK storage, local PKI tests, and encrypt-to-key support; shared protocol coverage and native HTTPS remain pending.
13C++C libcurl bridgePending; experimental sample onlyContract; shares C transportAccount contract tests and the C HTTPS bridge; PKI still uses the older implementation and missing WSS headers.
14SwiftPending; supply transportPending; experimental sample onlyNot in auth runnerAccount adapter and Apple-oriented cryptography; native HTTPS adapter, Linux RSA, and shared coverage remain pending.
15PerlPending; supply transportPending; experimental sample onlyContractTested account adapter; native HTTPS and interoperable JWK/PKI support remain pending.
16LuaPending; supply transportPending; experimental sample onlyContractTested account adapter; native HTTPS and interoperable JWK/PKI support remain pending.
17HaskellPending; supply transportPending; experimental sample onlyNot in auth runnerAccount adapter source; native HTTPS, account-runner coverage, and the PKI rewrite remain pending.
18ForthPending; supply transportNot implementedNot in auth runnerLow-level account endpoint words and local cryptography; structured validation, JWK, HTTPS, and WSS remain unimplemented.

Java and Kotlin use the org.json dependency already in mesgd-sdk. C# uses System.Text.Json. Swift uses Foundation. OCaml uses Yojson.Safe. Haskell uses aeson, containers, and text. C and C++ use the bundled cJSON: compile c/auth.c and 3rd-party/cJSON/cJSON.c, and optionally c/auth_curl.c with libcurl. Rust uses serde_json and does not add an HTTP crate. The OCaml auth library is separate from its PKI library.

PKI and protocol tests

make test-mesgd runs Erlang, Python, JavaScript, Go, Ruby, Rust, and C. Those languages implement the public-JWK, encrypt-to-a-key, and verify-with-a-public-key helpers, except where a language is only on the local PKI target.

AreaLanguages
On make test-mesgdErlang, Python, JavaScript, Go, Ruby, Rust, C
Local PKI tests, not on the top-level protocol targetPHP, Kotlin. OCaml has encrypt_with and register, and is not on make tests
PKI still being rewrittenC++, Haskell, Lua, Perl
Outside the shared JWK testsSwift has no Linux RSA path in mesgd-sdk. Forth has no JWK

Run commands for the ping/pong samples are in Running the samples. Package lists stay in each sample README. Those READMEs still tell you to fetch /.well-known/mesgd-pub.json. mesgd does not serve that file.