microsoft / microsoft/openvmm

Support cloning type-erased protobuf values

Open
#4,426 0 comments 0 reactions 1 assignee View on GitHub

@ppenna is already working on this.

Since Sep 15, 2026.

Dominant language
Rust
Stars
1.9k
Forks
238
Avg merge
1d 15h
Merged PRs (30d)
100

Description

Tracking issue: MicroVM support and private snapshot restore.

Motivation

Transactional lifecycle operations may need to retain a saved value while another
operation consumes an equivalent value. Type-erased protobuf storage should expose
clear ownership and clone semantics so callers do not need to recover the concrete
message type or invent an application-specific serialization workaround.

Proposed Scope

  • Provide clone support for the relevant type-erased protobuf value abstraction.
  • Define how cloning preserves the payload and its ownership semantics, including
    any required type bounds or restrictions.
  • Preserve protobuf encoding compatibility and existing conversion behavior.
  • Keep lifecycle policy outside the serialization abstraction.

Acceptance Criteria

  • An erased value and its clone encode equivalent protobuf payloads and
    successfully round-trip through the supported decode path.
  • The clone remains usable after the original value is consumed or dropped.
  • Tests cover representative owned payloads, including nested messages and
    variable-length data, without accidental shared mutable state.
  • The API documents its clone semantics and applicable ownership constraints.
  • Existing serialization tests continue to pass without a wire-format change.

Dependencies

No feature prerequisites. Fallible lifecycle transactions will consume this
capability in a separate PR.

Non-Goals

This issue does not define snapshot manifests, lifecycle rollback, or device
persistence policy.

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.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.