# Igor: Structured concurrency in Go

**URL:** <https://trio.discourse.group/t/igor-structured-concurrency-in-go/390>\
**Category:** Structured concurrency\
**Created:** [June 13, 2021, 2:55pm UTC](https://trio.discourse.group/t/igor-structured-concurrency-in-go/390 "2021-06-13T14:55:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![sustrik](https://yyz2.discourse-cdn.com/free1/user_avatar/trio.discourse.group/sustrik/32/39_2.png) [@sustrik](https://trio.discourse.group/u/sustrik)\
**Post date:** [June 13, 2021, 2:55pm UTC](https://trio.discourse.group/t/igor-structured-concurrency-in-go/390/1 "2021-06-13T14:55:31Z")

</div>

I’ve put a small project together over the weekend that implements structured concurrency in Go.

It’s in no way production ready, but it may be of interest if you want to just play with it.

> **[sustrik/igor](https://github.com/sustrik/igor)**
>
> Contribute to sustrik/igor development by creating an account on GitHub.

---

<div class="post-metadata">

**Author:** ![belm0](https://yyz2.discourse-cdn.com/free1/user_avatar/trio.discourse.group/belm0/32/69_2.png) [@belm0](https://trio.discourse.group/u/belm0)\
**Post date:** [June 21, 2021, 1:20am UTC](https://trio.discourse.group/t/igor-structured-concurrency-in-go/390/2 "2021-06-21T01:20:07Z")

</div>

I’ll try to add context (not knowing Go well, feel free to correct me):

- structured concurrency requires cooperation from the entire program, including library dependencies. So Igor must exist as a Go dialect (disallowing `go` statement, etc.) rather than library.
- Python / Trio can kind of get away with just a library, since Python is agnostic to the cooperative multitasking loop, and a large percentage of Python libraries don’t use OS threads or asyncio (in contrast, I assume almost every Go library uses the `go` statement).

---

<div class="post-metadata">

**Author:** ![belm0](https://yyz2.discourse-cdn.com/free1/user_avatar/trio.discourse.group/belm0/32/69_2.png) [@belm0](https://trio.discourse.group/u/belm0)\
**Post date:** [June 21, 2021, 2:15am UTC](https://trio.discourse.group/t/igor-structured-concurrency-in-go/390/3 "2021-06-21T02:15:03Z")

</div>

I see, it’s clarified more in the README:

> _This project is meant as a playground for experimenting with what a language with native support for structured concurrency would look like._
