Repository navigation
feat!: remove simple_doip's old client, server and bare-metal entity, with the migration guide and 0.7.0 changelogs (W13) - #63
Merged
Conversation
zheylmun
added this pull request to stack #64
October 9, 2026 21:59
JustinKovacich
self-requested a review
October 12, 2026 14:24
JustinKovacich
approved these changes
Oct 12, 2026
JustinKovacich
left a comment
Contributor
There was a problem hiding this comment.
Approved with optional comments.
…and server's tests did Ported before the old surfaces are deleted: - entity_udp: a request for another entity's EID or VIN gets silence and the next request is answered (Figure 13), and a truncated datagram or a UDP alive check (NACK 0x01, Figure 16; the old test expected silence) does not stop the next. - entity: connections that close without a frame free their sockets (REQ 4.DoIP-002). - tester: what arrived before the entity's close is reported before Closed (ISO 14229-5:2022 REQ 7.9); an ack late in A_DoIP_Diagnostic_Message confirms Ok; routing activation passes over other well-formed messages. Tester::connect's rustdoc said any answer but a response for the tester is an error; it now says what it does: an alive check is answered and other messages passed over.
tester::Tester, entity::Entity (with Entity::with_discovery for UDP) and uds_on_ip's transports replace them. Removed: - the modules client, client_inner, connection (the old one), socket_manager, server and bare_metal_entity, and error, which only they used; - the `client` and `server` features, and async-trait and futures, which nothing else depends on; - impl Default for OwnedMessage, a placeholder only client_inner used; - tests integration_test, tester_interop and udp_identification, and the examples simple_client and echo_server. The behaviours only those tests pinned were ported to Tester and Entity first. The fuzz crate needs only `codec`. lib.rs's derogation counts are re-measured: 13 production sites (was 29), 125 test-module sites (the 49 was already stale). ci.yml's Miri comment stops naming tester_interop. BREAKING CHANGE: bare_metal_entity was not feature-gated, so every user of simple_doip, default features included, loses it. simple_doip::Error, the client and server features and their modules are gone.
…and bare-metal entity
ARCHITECTURE.md loses the old modules' layering rows, feature gating, module map,
pending-request lifecycle, error type and tests, and §2.5.2 ("What the old code
did"); §2.5 and §7 are renumbered, and every cross-reference with them. §7.2's
write-only fields were all in deleted code, and §7's server rough edges go.
The two sentences that named W9's outbound_max now name
DoIpClientTransport::with_max_data_size. §4 describes MessageError alone, and why
it carries std::io::Error (MessageCodec's Decoder needs it).
The README's scope, feature table and examples describe Tester and Entity, and
point at tests/entity_std.rs, testing/doip-loopback and the embassy-net example
in place of the deleted example pair. The workspace README's simple_doip row
drops the async client and server.
…ariant 2 holds §3.1's "does not hold today", §9.1's "two server seams" prerequisite and invariant 2's "currently violated" all named simple_doip's bare_metal_entity and its on_uds_request callback, which is deleted. uds_services is now the one place a request is answered.
…ment is indicated The old client dropped such a response, and its README said so. The Tester indicates every diagnostic message when it arrives (ISO 13400-2:2019 8.3.3); the migration guide states it, so a test pins it.
…-metal entity MIGRATING.md maps each removed type to its replacement, with an example for each: Client to Tester, and to a uds_client! client over DoIpClientTransport; Server to Entity with with_discovery, and to a uds_server! server over DoIpTransport; and bare_metal_entity to Entity on an edge-nal adapter, written for a firmware that drove it from its network stack's callbacks, with what such a firmware must supply and what changes on the wire. The guide is a doctest of simple_doip under the connection feature, so its Tester and Entity examples compile against the crate. The uds_on_ip and embassy-net examples cannot (neither crate is a simple_doip dependency), so each names the tested file it is taken from.
…wn breaks Each crate's CHANGELOG.md gets its 0.7.0 entry under [Unreleased]: - simple_doip: everything since 0.6.0, from cargo semver-checks against the published 0.6.0 and the commits since. bare_metal_entity's removal comes first: it was not feature-gated, so it breaks default-feature users. Then the client and server, the connection feature's service traits, Tester and Entity, discovery, and the protocol core's own breaks. - uds_protocol: everything since 0.1.0, also checked with semver-checks; the jump to 0.7.0 is the lockstep release. - uds_session, uds_services, uds_on_ip: first-release entries describing each crate as released, with its known limitations. MIGRATING.md said the protocol core was unchanged but for OwnedMessage's Default; it has breaks of its own since 0.6.0, which the changelog lists.
…gation counts The UDP test that a datagram the entity cannot serve does not stop the next cited REQ 7.DoIP-031, which is about broadcast source addresses; it rests on 7.DoIP-042 and Figure 16. The test that a response before its acknowledgement is indicated cited 8.3.3, which defines the indication and says nothing of its order; it pins Tester's own contract, and now says so. lib.rs and ARCHITECTURE §7.3 counted the lint derogations' sites. Nothing checked the numbers, and the test-module count had already drifted; the allow on each module is the list.
… prose is rewrapped Tester::connect said, under Cancel safety, that any other well-formed message is passed over while it waits. A header NACK and a response for another tester are well formed and end connect with an error, as its # Errors section says. The description now names what is passed over: a message that is neither a routing activation response nor a header negative acknowledgement. The test that pins it says the same. ARCHITECTURE.md's pointer to the entity's known issues still named §7.4, which is §7.3 since §7.2 went. The paragraphs this branch edited in ARCHITECTURE.md and the README are rewrapped, the guide's embassy-net loop is formatted, and the new late-ack test cites Table 12 bare, as the crate's own document.
zheylmun
force-pushed
the
feat/remove-old-doip
branch
from
October 12, 2026 16:55
69b3afe to
1578d1e
Compare
…iber is gone `MessageCodec` needs `tokio-util` and `bytes`; the only tokio left in the crate is its tests', which the dev-dependency gives. Enabling `codec` built a runtime for no caller. `tracing-subscriber` had no user left once the old client, server and their tests went, so it leaves the crate and the workspace.
…refusal a connection gives "`automotive-wire-codec` 0.4, and `embedded-io` is gone" could be read as both going. And a closed connection refuses `ConnectionRefusal::Closed` since #62, which the changelog and one test's doc still called `NotConnected`.
It gave simple_doip's `client` and `server` features, which required `codec`, `std` and tokio, as why an executor is assumed below. Those are gone, and `uds_on_ip` never had such features: what is below is `connection`, async over edge-nal and embassy-time, with no runtime of its own.
Three of the guide's five examples were `ignore`d: the `uds_client!` and `uds_server!` ones reach `uds_on_ip` and `uds_services`, and the embassy-net one the adapter, none of which `simple_doip` can have as a dev-dependency. The loopback crate can, and is unpublished for exactly this, so the guide is its doctest now, every example compiled, and the `simple_doip` hook that compiled two of them goes.
zheylmun
force-pushed
the
feat/remove-old-doip
branch
from
October 12, 2026 17:03
8ef0211 to
98680be
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue URL
Closes #25, closes #26, closes #33, closes #34, closes #48. Based on
mainafter W9 (#62).What this does
Removes
simple_doip's three old I/O surfaces, whichTester,Entityand theuds_on_iptransports replace. It also writes the migration guide and every crate's 0.7.0 changelog. This is the breaking release; publishing stays held inci.yml.client,client_inner, the oldconnection,socket_manager,server,bare_metal_entity, anderror, which only those modules used.clientandserverfeatures, and theasync-traitandfuturesdependencies.impl Default for OwnedMessage, which only the old client used.integration_test,tester_interopandudp_identification, and the examplessimple_clientandecho_server.bare_metal_entitywas not feature-gated, so its removal breaks default-feature users.0x01(the old test expected silence). Neither stops the next answer.Closed.Ok.codecfeature andMessageCodec.tests/entity_interop.rsand a fuzz target use them; the fuzz crate now needs onlycodec. tokio is a dev-dependency only:codecno longer enables it, andtracing-subscriberis gone from the crate and the workspace, both from the review.simple_doip/ARCHITECTURE.mddrops the old modules' sections, including §2.5.2 ("What the old code did"), and is renumbered.uds_on_ip/ARCHITECTURE.md, the "two server seams" prerequisite is resolved and invariant 2 now holds.TesterandEntity.crates/simple_doip/MIGRATING.md: mapsClient→Tester(anduds_client!overDoIpClientTransport),Server→Entitywithwith_discovery(anduds_server!overDoIpTransport), andbare_metal_entity→Entityon anedge-naladapter.bare_metal_entitysection is written for a firmware that drove it from its network stack's callbacks. It says what such a firmware must now supply and what changes on the wire.testing/doip-loopback's doctests: theTesterandEntityexamples, theuds_client!anduds_server!ones overuds_on_ip, and the embassy-net one over the adapter. The loopback crate is where every crate the guide reaches can be a dev-dependency; from the review.[Unreleased], version 0.7.0):simple_doipcovers everything since 0.6.0 anduds_protocoleverything since 0.1.0; both were checked withcargo semver-checksagainst the published versions.uds_session,uds_servicesanduds_on_ipget first-release entries.The embedded probe's size is unchanged, since the probe never linked the old code.
Issues
Entityimplements Table 12's timers, alive checks per Figures 26–28, and the source-address checks, with tests.TesterconfirmsOkonly on acknowledgement code0x00, andtests/tester.rscovers a reserved code.Reserved(u8)aliasing remains.Notes for review
rust_doip_shimdepends on the separateluminartech/simple_doiprepo at tagv0.1.0, not on this workspace, so this PR cannot break its build. Halo is not changed.codec,allocandstdlayers are now used only by one test and the fuzz crate. MovingMessageCodecbehind a test-only feature was deferred. Doing it after 0.7.0 would take another breaking release.ci.yml:227: a one-word comment edit (it no longer namestester_interop).Testing
just check-all: fmt, the tests, clippy-D warnings, the embedded build and size gate, and rustdoc, rerun after the rebase onto feat!: the DoIP client transport, a uds_client! client over a Tester end to end (W9) #62 and the review changes.just miri: 1,278 tests, including the tree-borrows run of the connection tests.cargo +1.91 check --workspace --all-features --all-targets-D missing_docs, all clean./code-reviewand the Rust design review; their findings are fixed in the last two commits.🤖 Generated with Claude Code