Janet 1.6.0-da93a73 Documentation
(Other Versions:
1.5.1
1.5.0
1.4.0
1.3.1)
Fiber Module
Index
fiber/current fiber/getenv fiber/maxstack fiber/new fiber/setenv fiber/setmaxstack fiber/status
fiber/current cfunction
(fiber/current) Returns the currently running fiber.
fiber/getenv cfunction
(fiber/getenv fiber) Gets the environment for a fiber. Returns nil if no such table is set yet.
fiber/maxstack cfunction
(fiber/maxstack fib) Gets the maximum stack size in janet values allowed for a fiber. While memory for the fiber's stack is not allocated up front, the fiber will not allocated more than this amount and will throw a stack-overflow error if more memory is needed.
fiber/new cfunction
(fiber/new func &opt sigmask) Create a new fiber with function body func. Can optionally take a set of signals to block from the current parent fiber when called. The mask is specified as a keyword where each character is used to indicate a signal to block. The default sigmask is :y. For example, (fiber/new myfun :e123) blocks error signals and user signals 1, 2 and 3. The signals are as follows: a - block all signals d - block debug signals e - block error signals u - block user signals y - block yield signals 0-9 - block a specific user signal The sigmask argument also can take environment flags. If any mutually exclusive flags are present, the last flag takes precedence. i - inherit the environment from the current fiber p - the environment table's prototype is the current environment table
fiber/setenv cfunction
(fiber/setenv fiber table) Sets the environment table for a fiber. Set to nil to remove the current environment.
fiber/setmaxstack cfunction
(fiber/setmaxstack fib maxstack) Sets the maximum stack size in janet values for a fiber. By default, the maximum stack size is usually 8192.
fiber/status cfunction
(fiber/status fib) Get the status of a fiber. The status will be one of: :dead - the fiber has finished :error - the fiber has errored out :debug - the fiber is suspended in debug mode :pending - the fiber has been yielded :user(0-9) - the fiber is suspended by a user signal :alive - the fiber is currently running and cannot be resumed :new - the fiber has just been created and not yet run