Cedarbridge message protocol specification language
- Java 99.1%
- CSS 0.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo | ||
| com.io7m.cedarbridge.bridgedoc.api | ||
| com.io7m.cedarbridge.bridgedoc.spi | ||
| com.io7m.cedarbridge.bridgedoc.xhtml | ||
| com.io7m.cedarbridge.cmdline | ||
| com.io7m.cedarbridge.codegen.api | ||
| com.io7m.cedarbridge.codegen.javastatic | ||
| com.io7m.cedarbridge.codegen.spi | ||
| com.io7m.cedarbridge.documentation | ||
| com.io7m.cedarbridge.errors | ||
| com.io7m.cedarbridge.examples | ||
| com.io7m.cedarbridge.exprsrc | ||
| com.io7m.cedarbridge.exprsrc.api | ||
| com.io7m.cedarbridge.maven_plugin | ||
| com.io7m.cedarbridge.runtime.api | ||
| com.io7m.cedarbridge.runtime.bssio | ||
| com.io7m.cedarbridge.runtime.container_protocol | ||
| com.io7m.cedarbridge.runtime.convenience | ||
| com.io7m.cedarbridge.runtime.time | ||
| com.io7m.cedarbridge.schema.ast | ||
| com.io7m.cedarbridge.schema.binder | ||
| com.io7m.cedarbridge.schema.binder.api | ||
| com.io7m.cedarbridge.schema.compiled | ||
| com.io7m.cedarbridge.schema.compiler | ||
| com.io7m.cedarbridge.schema.compiler.api | ||
| com.io7m.cedarbridge.schema.core_types | ||
| com.io7m.cedarbridge.schema.loader.api | ||
| com.io7m.cedarbridge.schema.names | ||
| com.io7m.cedarbridge.schema.parser | ||
| com.io7m.cedarbridge.schema.parser.api | ||
| com.io7m.cedarbridge.schema.time | ||
| com.io7m.cedarbridge.schema.typer | ||
| com.io7m.cedarbridge.schema.typer.api | ||
| com.io7m.cedarbridge.specification | ||
| com.io7m.cedarbridge.strings.api | ||
| com.io7m.cedarbridge.tests | ||
| com.io7m.cedarbridge.version | ||
| src/site/resources | ||
| .gitignore | ||
| .gitmodules | ||
| checkstyle-filter.xml | ||
| checkstyle-suppressions-1.0.dtd | ||
| doc7m-books.json | ||
| pom.xml | ||
| README-CHANGES.xml | ||
| README-LICENSE.txt | ||
| README.in | ||
| README.md | ||
cedarbridge
cedarbridge
The cedarbridge package implements an efficient, strongly-typed,
platform-independent, binary message protocol language based around sum and
product types, and strong versioning.
[documentation ChatCommandJoin "Join the chat room."]
[record ChatCommandJoin
[field name cb:String]
[documentation name "The username with which to join."]]
[documentation Chat "The chat protocol."]
[protocol Chat
[version 1
[types-added
ChatCommandJoin
ChatCommandSpeak
ChatEventJoined
ChatEventLeft
ChatEventSpoke
ChatEventError]]]
...
Features
- A carefully written language specification.
- A minimal data definition language based on algebraic sum and product types.
- Strong versioning as a core aspect of the language.
- A small, easily auditable codebase with a heavy use of modularity for correctness.
- Generates simple, readable, reflection-free Java code.
- A small footprint; the generated Java code consists of trivial record definitions and incredibly simple and straightforward code to serialize and deserialize values.
- Platform independence. No platform-dependent code is included in any form.
- Suitable for use in security-critical environments: Serialization code is immune to the usual serialization vulnerabilities such as type confusion, resource exhaustion, exponential parse times, and etc.
- An extensive automated test suite with high coverage.
- OSGi-ready.
- JPMS-ready.
- ISC license.
Usage
See the documentation and language specification.
