Janet 1.38.0-73334f3 Documentation
(Other Versions:
1.37.1
1.36.0
1.35.0
1.34.0
1.31.0
1.29.1
1.28.0
1.27.0
1.26.0
1.25.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.0
1.18.1
1.17.1
1.16.1
1.15.0
1.13.1
1.12.2
1.11.1
1.10.1
1.9.1
1.8.1
1.7.0
1.6.0
1.5.1
1.5.0
1.4.0
1.3.1
)
Fiber Module
Index
fiber/can-resume? fiber/current fiber/getenv fiber/last-value fiber/maxstack fiber/new fiber/root fiber/setenv fiber/setmaxstack fiber/status
(fiber/can-resume? fiber)
Check if a fiber is finished and cannot be resumed.
(fiber/current)
Returns the currently running fiber.
(fiber/getenv fiber)
Gets the environment for a fiber. Returns nil if no such table is set yet.
(fiber/last-value fiber)
Get the last value returned or signaled from the fiber.
(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 func &opt sigmask env)
Create a new fiber with function body func. Can optionally take a set of signals sigmask
to capture from
child fibers, and an environment table env
. The mask is specified as a keyword where each character is used
to indicate a signal to block. If the ev module is enabled, and this fiber is used as an argument to ev/go
,
these "blocked" signals will result in messages being sent to the supervisor channel. 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
- :t - block termination signals: error + user[0-4]
- :u - block user signals
- :y - block yield signals
- :w - block await signals (user9)
- :r - block interrupt signals (user8)
- :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/root)
Returns the current root fiber. The root fiber is the oldest ancestor that does not have a parent.
(fiber/setenv fiber table)
Sets the environment table for a fiber. Set to nil to remove the current environment.
(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 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-7) - the fiber is suspended by a user signal
- :interrupted - the fiber was interrupted
- :suspended - the fiber is waiting to be resumed by the scheduler
- :alive - the fiber is currently running and cannot be resumed
- :new - the fiber has just been created and not yet run