Stackless Python은 파이썬에 경량 태스크릿과 채널을 더한 구현이다

Stackless Python은 파이썬 문법을 완전히 새로 만든 언어가 아니라, 파이썬 계열 구현 위에 태스크릿(tasklet)과 채널(channel) 같은 경량 동시성 도구를 더한 프로젝트다. 공식 문서도 Stackless의 핵심 구성으로 태스크릿, 채널, 스케줄러를 따로 설명한다.
예전에는 이 프로젝트를 소개하면서 코루틴이 들어간 파이썬이라고 짧게 말하곤 했는데, 그 설명만으로는 조금 부족하다. 오늘 기준의 파이썬에는 이미 async/await도 있고, 제너레이터 기반 코루틴 역사도 길기 때문이다. 그래서 Stackless Python을 이해하려면 먼저 코루틴이 무엇인지부터 짚는 편이 낫다.
코루틴은 실행을 한 번에 끝내지 않고, 중간에 넘겼다가 다시 이어 가는 흐름이다
코루틴은 한쪽이 완전히 호출하고 끝내는 서브루틴과 달리, 실행 흐름을 주고받을 수 있는 구조를 가리킨다. Python의 PEP 342도 제너레이터에 값을 보내고 예외를 주입할 수 있게 하면 코루틴 스케줄러를 만들 수 있다고 설명한다.
즉 코루틴의 핵심은 “함수처럼 한 번 들어갔다가 한 번 나오고 끝나는가”보다, 중간 상태를 보존한 채 다시 이어서 실행할 수 있는가에 있다.
Stackless Python은 이 흐름을 태스크릿과 채널 중심으로 풀어낸다
Stackless 문서를 보면 가장 먼저 나오는 개념이 태스크릿이다. 문서가 직접 lightweight threads라고 부르듯, 태스크릿은 운영체제 스레드보다 훨씬 가볍게 다룰 수 있는 실행 단위다. 그리고 채널은 이 태스크릿들 사이에서 값을 주고받는 통로 역할을 한다.
이 구조를 단순하게 보면 이렇게 이해할 수 있다.
- 태스크릿: 아주 가벼운 작업 단위
- 채널: 작업 단위끼리 값을 주고받는 통로
- 스케줄러: 어느 태스크릿이 언제 실행될지 정하는 장치
Stackless 문서는 여기에 cooperative scheduling과 pre-emptive scheduling 항목도 따로 두고 있다. 즉 Stackless Python은 단순히 코루틴 문법만 흉내 내는 것이 아니라, 태스크릿을 실제로 돌리는 스케줄링 모델까지 함께 제공하는 쪽에 가깝다.
오늘 기준으로는 async 파이썬과 무엇이 다른지도 같이 봐야 한다
현대 파이썬에서는 비동기 프로그래밍을 말할 때 보통 async/await를 먼저 떠올린다. 이 흐름은 PEP 342의 제너레이터 기반 코루틴, 그 뒤의 발전을 거쳐 PEP 492의 async/await 문법으로 정착했다.
그래서 지금 Stackless Python을 볼 때는 “파이썬에 코루틴을 처음 넣은 유일한 길”이라고 보기보다, 파이썬 동시성의 다른 계보로 보는 편이 더 정확하다.
async/await는 현대 파이썬 표준 문법에 가깝다.- Stackless Python은 태스크릿과 채널을 중심으로 한 별도 구현이다.
둘 다 실행 흐름을 잘게 나누고 넘겨 준다는 점에서는 닿아 있지만, 생태계와 사용 문맥은 같지 않다.
그럼에도 Stackless Python이 흥미로운 이유는 실행 단위를 다루는 감각을 보여 주기 때문이다
Stackless Python이 지금 모든 파이썬 개발자의 기본 선택지는 아니더라도, 여전히 흥미로운 이유는 분명하다. 태스크릿과 채널이라는 모델은 동시성 문제를 어떻게 더 작은 실행 단위와 메시지 전달로 바라볼 수 있는가를 잘 보여 준다.
특히 많은 작업을 가볍게 쪼개고, 각 작업 사이 통신 구조를 분명히 만들고 싶을 때 Stackless의 사고방식은 지금 읽어도 배울 점이 있다. 비동기 프로그래밍을 함수 호출의 연장선이 아니라, 작은 실행 주체들의 협력으로 보는 관점을 주기 때문이다.
핵심 정리
Stackless Python은 일반 파이썬에 코루틴 비슷한 기능만 살짝 얹은 프로젝트가 아니다. 태스크릿, 채널, 스케줄러를 통해 매우 가벼운 실행 단위를 다루게 만드는 별도 구현이다.
오늘날 파이썬에서는 async/await가 더 표준적인 비동기 도구가 되었지만, Stackless Python은 동시성을 태스크릿과 메시지 전달 중심으로 설계하는 또 다른 길을 보여 준다. 그래서 이 프로젝트의 가치는 “지금도 주류인가”보다, 파이썬에서 실행 흐름을 어떻게 다르게 조직할 수 있었는가를 보여 주는 데 있다.