Большинство Smalltalk имеют методы манипуляции со стеком объекта thisContext.Вы можете использовать их для реализации сопрограмм, хотя работа со стеком на этом уровне может оказаться немного утомительной.
GNU Smalltalk и последние версии Squeak и Pharo также предлагают класс Generator, который облегчает написание генераторов (т.е.типы сопрограмм, которые дают несколько значений):
"This generator yield an infinite sequence of 1"
generator := Generator on: [ :gen | [ gen yield: 1 ] repeat ].
(1 to: 100) do: [:i | Transcript show: (generator next printString); cr]