clockworklabs / clockworklabs/SpacetimeDB
Support tuple newtype patterns across SDKs
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 25.2k
- Forks
- 1.1k
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 46
Description
This issue tracks reimplementing the work from stale PR #2957, which has been closed because it is too far out of date to merge directly.
Original pull request
- PR #2957: Implemented newtype pattern support for tuples
- Original author: @egormanga
What the original PR was trying to do
Description of Changes Related issues: 2379, 2604, 4031. To be able to do this: (previously, the derive macro would panic.) This is an early attempt! I need help in figuring out all details on how to properly implement deserialization. Also, currently this fails with errors like these: (resolved) API and ABI breaking changes Unknown. Expected complexity level and risk 3? Testing - [x] SpacetimeDB compiles - [x] The module builds - [x] Publishing works
Closure context
- @egormanga what types does this generate in C#, TypeScript, and Rust? I think we'd need those to have support before we merge this. I am going to close this PR and open a ticket with you as the assignee.
If you are motivated to get this feature in then we'd need a philosophy for languages that don't have tuples or tuple structs. In particular C# and C++. Something like regular product types with field names like _0, _1, etc could be acceptable.
Reimplementation notes
- Reimplement this work on top of current
masterin a new PR. - Keep the original PR linked as historical context and as a source of useful implementation ideas where still relevant.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing historical PR #2957 and comparing its approach with current master. Trace how tuple newtypes are represented across the Rust, C#, TypeScript, and C++ SDKs, including the language-specific philosophy for tuple-like types. Done means the feature works consistently across the SDKs and the module builds and publishes successfully.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, csharp, rust, typescript
- Domain
- api
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100