refactor: revisit the triplicated buffer implementations across the tokio / embassy / wasm adapters

Ouverte
#459 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
35/100
Type d'issue
Refactorisation
Clarté
Plutôt claire
Activité
Active
Stack technique
rust

Piste de recherche

Read docs/design/035-review-followups-deferred.md §2.3 and docs/design/038-technical-debt-and-simplification-review.md §2.3 / §3.2, then compare the buffer read paths in the three adapter files named in the issue. Check whether the documented tripwire has been hit by the late-join snapshot and record.get changes. Done means either recording a re-confirmation in 035 and closing the issue, or writing the shared core implementation design described in 038.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

🏗️ core enhancement

Problem

The three runtime adapters each hand-build the same three buffer semantics (SPMC ring, single-latest, mailbox):

File Lines Of which inline tests start at
aimdb-tokio-adapter/src/buffer.rs 1,634 line 611
aimdb-embassy-adapter/src/buffer.rs 963 line 628
aimdb-wasm-adapter/src/buffer.rs 757 line 478

Each also carries a high density of feature gates (32, 29 and 26 cfg(feature …) occurrences respectively). This is the largest structural duplication left in the workspace: a behavioural fix or a new buffer feature has to be written and tested three times, and parity between them is only enforced by tests.

Prior decisions

This is not new:

  • docs/design/038-technical-debt-and-simplification-review.md §2.3 / §3.2 proposed one portable buffer implementation in core and estimated about 2,000 lines net removed (breaking for adapter authors only).
  • docs/design/035-review-followups-deferred.md §2.3 decided "keep, with a tripwire" for the buffer-ext trait triplication.

So this issue is a request to re-check that decision, not to overturn it by default.

Suggested work

  • Check whether the tripwire condition recorded in 035 §2.3 has been hit since (e.g. by the recent late-join snapshot and record.get changes, which touched buffer read paths).
  • If it has, or if the cost has grown, write the design for a shared core implementation as 038 §3.2 sketched.
  • If not, record the re-confirmation in 035 and close this.

Notes

Line counts are from the tree at d9c7be0. I did not diff the three implementations line by line, so the amount of truly shareable code is the 038 estimate, not something I measured.

Langage dominant
Rust
Étoiles
101
Forks
20
Merge moyen
2 h 33 min
PR mergées (30 j)
90

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de aimdb-dev/aimdb

Toutes les issues de aimdb-dev/aimdb

Issues similaires

Plus d'issues Rust

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.