Reimplement #[bitcode(with_serde)]
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
Research direction
The issue names no files, tests, or entry points. Start by comparing the current 0.6 implementation with the previous 0.5 feature, then determine how #[bitcode(with_serde)] should support serde::Serialize fields while handling the stated collection limitations. Done means the feature is reimplemented for the requested third-party types and its behavior is verified.
Written by the indexing model from the issue text.
Description
There have been many requests for supporting 3rd party crates such as: time, rust_decimal, uuid, and chrono. Rather than implementing support manually for these crates and more, an easier solution is to allow types implementing serde::Serialize inside types implementing bitcode::Encode.
This was previously a feature in 0.5, but we didn't reimplement it in the 0.6 rewrite due due to technical limitations. I have since found a path forward and intend to add this feature to 0.6.
The downsides of using serde instead of implementing these types in native bitcode are:
- Worse performance
- Requiring
#[bitcode(with_serde)]annotations on every field where serde is used - Doesn't work well on collection types since it forces everything inside them to use serde
1 and 2 aren't much of an issue if serde is used infrequently. 3 poses more of an issue, but so far none of the types requested are collections. We could mitigate it by implementing some of the popular collections such as IndexMap.
- Dominant language
- Rust
- Stars
- 673
- Forks
- 61
- PR merge metrics
- No merged PRs in 30d
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
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.
More from SoftbearStudios/bitcode
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
SoftbearStudios/bitcode#122 · 1 reaction ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
SoftbearStudios/bitcode#121 · 2 comments ·
-
Implement #[bitcode(with = LocalType)] RemoteTypePossibly taken @finnbear claimed this 102 days ago. Open
Difficulty 5/5 Over a week Newbie friendliness 35/100
SoftbearStudios/bitcode#115 · 1 reaction ·
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
SoftbearStudios/bitcode#110 · 1 reaction ·
-
BUffer for serde?May be free again @caibear claimed this 228 days ago, and no pull request is open. Open
SoftbearStudios/bitcode#102 · 1 comment · 1 assignee ·
All issues in SoftbearStudios/bitcode
Similar issues
-
arch-audit refactor
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
SocketDev/socket-patch#1011 ·
Maintainers usually reply within 1 day
-
L: github:actions L: php:composer
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
dependabot/dependabot-core#16493 ·
Maintainers usually reply within 1 day
-
agent-ready area:breg bug criticality:p3 triage:needs-implementation
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
registrystack/registry-stack#1941 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
joshstevens19/rindexer#483 ·
Maintainers usually reply within 1 day
-
VX_PRINT_DROPS prints each drop point twice on the default code generator, the second time at line 0Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day