Tutorials
Build working native programs, port managed patterns deliberately, and contribute verified runtime behavior.
Choose a learning path
Tutorials are organized by the task you need to complete, not by the size of a namespace. Every page names its direct CMake component, calls out native ownership, and distinguishes a source-checked example from an environment-dependent network or filesystem scenario.
Beginner: build and core values
Build a first consumerBeginner · Console · Configure and run one native executable.
Select componentsBeginner · CMake · Understand direct targets and dependency closure.
Strings and StringBuilderBeginner · Core.Base + Text · Work safely with UTF-8 byte units.
Nullable valuesBeginner · Core.Base · Preserve absent values without heap ownership.
Arrays and spansBeginner · Core.Base · Separate owned vectors from borrowed views.
Use collectionsBeginner · Collections.Core · Choose containers and element ownership.
Read and write JSONIntermediate · Text.Json · Serialize explicit native shapes.
Porting C# patterns
Port a C# classIntermediate · Values, properties, ownership, and exceptions.
Delegates and eventsIntermediate · Core.Base · Subscription tokens and capture lifetime.
Tasks and cancellationIntermediate · Threading.Tasks · Native continuations and cooperative cancellation.
Filesystem workflowIntermediate · IO · Paths, files, errors, and scoped resources.
HTTP boundariesIntermediate · Net.Http · Requests without assuming TLS.
XML LINQIntermediate · Xml.Linq · Names, elements, documents, and strictness.
I/O and storage
MemoryStream round tripIntermediate · IO · Binary values, positions, and leave-open ownership.
Readers and writersIntermediate · IO · Binary protocol versus reduced text decoding.
Watch a directoryAdvanced · IO · Linux/inotify callbacks, self-stop, and reconciliation.
Compression and hashingIntermediate · IO.Compression + IO.Hashing · Distinct jobs and boundaries.
Networking
DNS, TCP, and UDPAdvanced · Net + Net.Sockets · Resolution, owned sockets, and host evidence.
HTTP clientIntermediate · Net.Http · Plain HTTP/1.1 and content lifetime.
WebSocketsAdvanced · Net.WebSockets · ws:// framing, tasks, and buffer lifetime.
Concurrency
Locks and ThreadPoolAdvanced · Threading · RAII locks, Monitor semantics, and detached work.
Tasks and cancellationIntermediate · Threading.Tasks · Completion, faults, and ownership.
ChannelsAdvanced · Threading.Channels · Backpressure, completion, and reader/writer lifetime.
TimersAdvanced · Timers · Background callbacks and teardown hazards.
Contributor path
Write a component testContributor · GoogleTest · Behavior, boundaries, discovery, and focused execution.
Add a negative consumer fixtureContributor · CMake · Prove forbidden headers and constraints stay forbidden.
Add a componentContributor · Registration, ownership, edges, and catalogue regeneration.
Debug component selectionContributor · Diagnose unknown targets, leaked includes, and link visibility.
Verification labels
| Label in a tutorial | Meaning |
|---|---|
| Compile-checked | The published translation unit compiled against public headers at the pinned SHA. |
| Built and run | The example linked and executed with its stated result in the audit environment. |
| Source-checked | Names, signatures, and semantics were checked in implementation/tests, but the scenario needs external state or a long build. |
| Environment-dependent | Network, watcher, permission, or platform state prevents a universal runtime result. |
Code that intentionally illustrates a design without being directly compilable is labelled pseudocode. No tutorial treats plausible syntax as tested behavior.