{"id":"language--tunnels","name":"Tunnels","owner":"yeho","package":"language","kind":"language","signature":"tunnel of Type name\ntunnel<Type> name\nname.Send(value)\nname.Receive()","description":"tunnel carries typed values between concurrent work with capacity-one FIFO handoff and backpressure.","context":"Use a tunnel when producers and consumers should communicate without sharing an unbounded mutable queue.","parameters":[],"returns":"","members":[],"tags":["Receive","Send","concurrency","cpu","hasValue","language","of","tunnel","yeho"],"updated":"2026-09-09","source":{"repository":"yeho","path":"errors-tasks-effects-2026.1.json; tests/compiler/errors-tasks-effects/tunnel-handoff/start.yh"},"status":"experimental","notes":["The channel keyword was removed. Use tunnel.","Tunnels are capacity one, FIFO, and backpressured in the current contract."],"examples":[{"id":"complete","title":"Complete tunnels example","description":"Use a tunnel when producers and consumers should communicate without sharing an unbounded mutable queue.","code":"tunnel of text messages\nmessages.Send(\"Player joined\")\ntext message = messages.Receive()\nConsole.Log(message)\n","tags":["cpu","language"],"run":"cpu-oracle","expected":null,"verifyRun":false,"manifest":"manifestVersion = \"2\"\npackage = \"api.example.language__tunnels\"\nversion = \"0.1.0\"\nlanguageEdition = \"yeho-core-2026.1\"\n\n[app]\nkind = \"headless\"\n","verification":"type checked","sha256":"4802550cad3a89cde69e1e4b7dd742271ad40da7aa0a26401cc29fc82cbc715c","checked":"2026-09-09","diagnostic":"","observedOutput":null,"checkedBackend":null}],"searchTerms":[],"url":"https://demonhunterlabs.com/academy/api?item=language--tunnels","json":"https://demonhunterlabs.com/reference/items/language--tunnels.json","markdown":"https://demonhunterlabs.com/reference/text/language--tunnels.md"}
