# Pastebin W2ZBrS0M so payonel maybe I should just do something like: -- S3IX Scheduler local function run(state) coroutine.yield() -- Yield first optimization local ev_args = computer.pullSignal(0) local ev_name = table.remove(ev, 1) -- Environment for processes: local env = {} local create_container(fn) local container = { co = coroutine.create(fn) } return container end -- Register a new process container containing function callback as co: function env.spawn(fn) container = create_container(fn) state["processes"][container] = true end return run(state) end -- Setup: run({ ["outbox"] = {}, -- Messages waiting to be delivered to processes ["processes"] = {}, -- Process store ["ready"] = {} -- Processes ready for work })