SoftbearStudios / SoftbearStudios/bitcode

Implement a schema language to support generic tools and other languages

Open
#14 3 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
671
Forks
61
PR merge metrics
No merged PRs in 30d

Description

Consider adding a schema language, like Capnp, Flatbuffers, and the like. From there, a code generator could, in a first step, generate Rust types with the known bitcode (and/or serde) annotations. In a further step, reliance on proc macros could be eliminated for users who wish to do so, but that is not the main benefit. The main benefits would be two-fold:

  • Allow a generic cli tool to accept a schema file and an input stream to translate between the bitcode and a human friendly format for debugging purposes (introspection is a powerful tool when debugging complex problems in distributed systems). Also, versioned APIs could advertise their schema so that not-yet updated clients could fall back to a "dynamically typed" scheme (i.e. (de)serialise to/from a HashMap instead of a native type) to continue working with degraded performance until they can be patched.
  • Allow interoperational implementations in other languages to exist.

I am willing to give this a shot myself, but if you stalk me, you'll notice that my own attempts at data serialisation have been lackluster so far, to say the least. Just let me know if you're interested!

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files, tests, or entry points, so begin by mapping the repository's serialization, CLI, and code-generation areas. Define the schema language, generated Rust types, generic stream translation, and interoperability scope before implementation; completion criteria are not specified beyond these proposed capabilities.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
cli, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
22/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.