Choose Your Path
The homepage should help you decide where to go next. Start with the path that matches your current goal rather than reading every maintainer page up front.
Current Repository Read
The homepage should not repeat the full repository README or the maintainer status page. Use this section to decide which document holds the detail you actually need.
Read the repository guide
Read the current project state
- Project Status: what is already closed, what is still open, and what should happen next.
- C API Quickstart: the currently supported public C entry points.
- Use these pages when you need the current decision posture rather than the full repository tour.
Read the narrow follow-up paths
- Board Bring-Up: the first board-backed validation route.
- Drafts and Records: release notes, decision helpers, and maintainer-only history.
- Benchmarks: measured history instead of homepage summary bullets.
5-Minute Start
If you only want to know whether the project works on your machine, start with the host-side validation path. Only then decide whether to continue into C ABI or board bring-up work.
Build and test
git clone https://github.com/KairuiKin/udplink.git cd udplink cmake -S . -B build cmake --build build --config Release # Unix-like ctest --test-dir build --output-on-failure # Windows PowerShell ctest --test-dir build -C Release --output-on-failure
If you only run one path, Windows is currently the strongest maintained validation route because it includes install-consume and release-style verification.
What to read next
- C API Quickstart: for C, FFI, and ABI-sensitive integration.
- Board Bring-Up: for the first narrow hardware-backed route.
- Project Status: for the current maturity read and next-route summary.
- README: for the fuller Chinese repository guide.
Minimal Endpoint Snippet
This block stays synced with the repository source and shows the smallest useful combination of Config, Hooks, and StartConnect().
rudp::Config cfg = rudp::ConfigForProfile(rudp::ConfigProfile::kBalanced);
cfg.enable_auth = true;
cfg.auth_key0 = 0x0706050403020100ull;
cfg.auth_key1 = 0x0F0E0D0C0B0A0908ull;
rudp::Endpoint a;
rudp::Endpoint b;
rudp::Hooks ha = {&wire, NowMs, SendA, 0, DeliverA, 0, 0};
rudp::Hooks hb = {&wire, NowMs, SendB, 0, DeliverB, 0, 0};
if (!a.Init(cfg, ha) || !b.Init(cfg, hb)) return 1;
a.StartConnect();
Go Deeper By Role
The site now separates user-facing paths from maintainer-facing decision pages instead of flattening every internal draft onto the homepage.
Use and verify
- Project Status: shipped scope, current blockers, and next route.
- C API Quickstart: the minimal public C entry points and installed-package consumer path.
- Arduino Mega W5100 Bring-Up: the first documented board-backed route.
- Maintainer Run Pack: helper scripts, host-peer capture, and issue-ready report rendering.
- Benchmarks: current benchmark framing and release-to-release history.
- MCU UDP vs TCP article: a longer Chinese explainer for the embedded transport tradeoff.
Decide and maintain
- C ABI Compatibility: what is allowed, forbidden, and release-sensitive in ABI v1.
- C ABI Stability Gate: what must be true before the ABI may be called stable.
- C ABI Assessment: why the current answer is still not yet.
- Baseline Decision: whether the in-repo C consumer should count as the first supported downstream baseline.
- Decision Playbook: the explicit wait vs stable decision flow.
- Stable Candidate: the draft file set for a future intentional stable declaration.
- Drafts and Records: release notes, PR drafts, and stable-declaration helpers collected in one place.