Class: Wasmtime::WasiConfig
- Inherits:
-
Object
- Object
- Wasmtime::WasiConfig
- Defined in:
- ext/src/ruby_api/wasi_config.rs
Overview
WASI config to be sent as Store.new’s wasi_config keyword argument.
Instance methods mutate the current object and return self.
Class Method Summary collapse
-
.new ⇒ WasiConfig
Create a new WasiConfig.
Instance Method Summary collapse
-
#add_determinism ⇒ WasiConfig
Use deterministic implementations for clocks and random methods.
-
#allow_ip_name_lookup(enabled) ⇒ WasiConfig
Allow or deny IP name lookup (DNS resolution).
-
#allow_tcp(enabled) ⇒ WasiConfig
Allow or deny TCP socket access.
-
#allow_udp(enabled) ⇒ WasiConfig
Allow or deny UDP socket access.
-
#inherit_network ⇒ WasiConfig
Allow all network addresses accessible to the host.
-
#inherit_stderr ⇒ WasiConfig
Inherit stderr from the current Ruby process.
-
#inherit_stdin ⇒ WasiConfig
Inherit stdin from the current Ruby process.
-
#inherit_stdout ⇒ WasiConfig
Inherit stdout from the current Ruby process.
-
#set_argv(args) ⇒ WasiConfig
Set the arguments (argv) to the specified
Array. -
#set_env(env) ⇒ WasiConfig
Set env to the specified
Hash. -
#set_mapped_directory(host_path, guest_path, fs_perms) ⇒ WasiConfig
Set mapped directory for host path and guest path.
-
#set_stderr_buffer(buffer, capacity) ⇒ WasiConfig
Set stderr to write to a string buffer.
-
#set_stderr_file(path) ⇒ WasiConfig
Set stderr to write to a file.
-
#set_stdin_file(path) ⇒ WasiConfig
Set stdin to read from the specified file.
-
#set_stdin_string(content) ⇒ WasiConfig
Set stdin to the specified String.
-
#set_stdout_buffer(buffer, capacity) ⇒ WasiConfig
Set stdout to write to a string buffer.
-
#set_stdout_file(path) ⇒ WasiConfig
Set stdout to write to a file.
-
#socket_addr_check {|addr, use| ... } ⇒ WasiConfig
Set a custom check function for socket address access control.
Class Method Details
.new ⇒ WasiConfig
Create a new Wasmtime::WasiConfig. By default, it has nothing: no stdin/out/err, no env, no argv, no file access.
250 251 252 |
# File 'ext/src/ruby_api/wasi_config.rs', line 250
pub fn new() -> Self {
Self::default()
}
|
Instance Method Details
#add_determinism ⇒ WasiConfig
Use deterministic implementations for clocks and random methods.
257 258 259 260 261 |
# File 'ext/src/ruby_api/wasi_config.rs', line 257
pub fn add_determinism(rb_self: RbSelf) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.deterministic = true;
rb_self
}
|
#allow_ip_name_lookup(enabled) ⇒ WasiConfig
Allow or deny IP name lookup (DNS resolution).
451 452 453 454 455 |
# File 'ext/src/ruby_api/wasi_config.rs', line 451
pub fn allow_ip_name_lookup(rb_self: RbSelf, enabled: bool) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.allow_ip_name_lookup = Some(enabled);
rb_self
}
|
#allow_tcp(enabled) ⇒ WasiConfig
Allow or deny TCP socket access. Disabled by default.
429 430 431 432 433 |
# File 'ext/src/ruby_api/wasi_config.rs', line 429
pub fn allow_tcp(rb_self: RbSelf, enabled: bool) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.allow_tcp = Some(enabled);
rb_self
}
|
#allow_udp(enabled) ⇒ WasiConfig
Allow or deny UDP socket access. Disabled by default.
440 441 442 443 444 |
# File 'ext/src/ruby_api/wasi_config.rs', line 440
pub fn allow_udp(rb_self: RbSelf, enabled: bool) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.allow_udp = Some(enabled);
rb_self
}
|
#inherit_network ⇒ WasiConfig
Allow all network addresses accessible to the host.
TCP, UDP, and IP name lookup must be enabled separately with allow_tcp,
allow_udp, and allow_ip_name_lookup.
Note: any network access happens while the Global VM Lock (GVL) is held, so other threads will be blocked in the meantime.
418 419 420 421 422 |
# File 'ext/src/ruby_api/wasi_config.rs', line 418
pub fn inherit_network(rb_self: RbSelf) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.inherit_network = true;
rb_self
}
|
#inherit_stderr ⇒ WasiConfig
Inherit stderr from the current Ruby process.
332 333 334 335 336 |
# File 'ext/src/ruby_api/wasi_config.rs', line 332
pub fn inherit_stderr(rb_self: RbSelf) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.stderr = Some(WriteStream::Inherit);
rb_self
}
|
#inherit_stdin ⇒ WasiConfig
Inherit stdin from the current Ruby process.
266 267 268 269 270 |
# File 'ext/src/ruby_api/wasi_config.rs', line 266
pub fn inherit_stdin(rb_self: RbSelf) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.stdin = Some(ReadStream::Inherit);
rb_self
}
|
#inherit_stdout ⇒ WasiConfig
Inherit stdout from the current Ruby process.
297 298 299 300 301 |
# File 'ext/src/ruby_api/wasi_config.rs', line 297
pub fn inherit_stdout(rb_self: RbSelf) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.stdout = Some(WriteStream::Inherit);
rb_self
}
|
#set_argv(args) ⇒ WasiConfig
Set the arguments (argv) to the specified Array.
379 380 381 382 383 |
# File 'ext/src/ruby_api/wasi_config.rs', line 379
pub fn set_argv(rb_self: RbSelf, argv: RArray) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.args = Some(argv.into());
rb_self
}
|
#set_env(env) ⇒ WasiConfig
Set env to the specified Hash.
368 369 370 371 372 |
# File 'ext/src/ruby_api/wasi_config.rs', line 368
pub fn set_env(rb_self: RbSelf, env: RHash) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.env = Some(env.into());
rb_self
}
|
#set_mapped_directory(host_path, guest_path, fs_perms) ⇒ WasiConfig
Set mapped directory for host path and guest path.
392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 |
# File 'ext/src/ruby_api/wasi_config.rs', line 392
pub fn set_mapped_directory(
rb_self: RbSelf,
host_path: RString,
guest_path: RString,
fs_perms: Symbol,
) -> RbSelf {
let mapped_dir = MappedDirectory {
host_path: host_path.into(),
guest_path: guest_path.into(),
fs_perms: fs_perms.into(),
};
let mut inner = rb_self.inner.borrow_mut();
inner.mapped_directories.push(mapped_dir);
rb_self
}
|
#set_stderr_buffer(buffer, capacity) ⇒ WasiConfig
Set stderr to write to a string buffer. If the string buffer is frozen, Wasm execution will raise a Wasmtime::Error error. No encoding checks are done on the resulting string, it is the caller's responsibility to ensure the string contains a valid encoding
358 359 360 361 362 363 |
# File 'ext/src/ruby_api/wasi_config.rs', line 358
pub fn set_stderr_buffer(rb_self: RbSelf, buffer: RString, capacity: usize) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.stderr = Some(WriteStream::Buffer(buffer.into(), capacity));
rb_self
}
/// @yard
|
#set_stderr_file(path) ⇒ WasiConfig
Set stderr to write to a file. Will truncate the file if it exists, otherwise try to create it.
344 345 346 347 348 |
# File 'ext/src/ruby_api/wasi_config.rs', line 344
pub fn set_stderr_file(rb_self: RbSelf, path: RString) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.stderr = Some(WriteStream::Path(path.into()));
rb_self
}
|
#set_stdin_file(path) ⇒ WasiConfig
Set stdin to read from the specified file.
277 278 279 280 281 |
# File 'ext/src/ruby_api/wasi_config.rs', line 277
pub fn set_stdin_file(rb_self: RbSelf, path: RString) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.stdin = Some(ReadStream::Path(path.into()));
rb_self
}
|
#set_stdin_string(content) ⇒ WasiConfig
Set stdin to the specified String.
288 289 290 291 292 |
# File 'ext/src/ruby_api/wasi_config.rs', line 288
pub fn set_stdin_string(rb_self: RbSelf, content: RString) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.stdin = Some(ReadStream::String(content.into()));
rb_self
}
|
#set_stdout_buffer(buffer, capacity) ⇒ WasiConfig
Set stdout to write to a string buffer. If the string buffer is frozen, Wasm execution will raise a Wasmtime::Error error. No encoding checks are done on the resulting string, it is the caller's responsibility to ensure the string contains a valid encoding
323 324 325 326 327 |
# File 'ext/src/ruby_api/wasi_config.rs', line 323
pub fn set_stdout_buffer(rb_self: RbSelf, buffer: RString, capacity: usize) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.stdout = Some(WriteStream::Buffer(buffer.into(), capacity));
rb_self
}
|
#set_stdout_file(path) ⇒ WasiConfig
Set stdout to write to a file. Will truncate the file if it exists, otherwise try to create it.
309 310 311 312 313 |
# File 'ext/src/ruby_api/wasi_config.rs', line 309
pub fn set_stdout_file(rb_self: RbSelf, path: RString) -> RbSelf {
let mut inner = rb_self.inner.borrow_mut();
inner.stdout = Some(WriteStream::Path(path.into()));
rb_self
}
|
#socket_addr_check {|addr, use| ... } ⇒ WasiConfig
Set a custom check function for socket address access control. The block will be called for each socket operation with the socket address (as a String) and the operation type (as a Symbol: :tcp_bind, :tcp_listen, :tcp_accept, :tcp_connect, :udp_bind, :udp_send, or :udp_receive). The block should return true to allow the operation or false to deny it. If the block raises an exception, the operation will be denied.
Note: any network access happens while the Global VM Lock (GVL) is held, so other threads will be blocked in the meantime.
473 474 475 476 477 478 479 480 |
# File 'ext/src/ruby_api/wasi_config.rs', line 473
pub fn socket_addr_check(ruby: &Ruby, rb_self: RbSelf) -> RbSelf {
if ruby.block_given() {
let proc = ruby.block_proc().unwrap();
let mut inner = rb_self.inner.borrow_mut();
inner.socket_addr_check = Some(proc.into());
}
rb_self
}
|