Crate seq_runtime

Crate seq_runtime 

Source
Expand description

Seq Runtime: A clean concatenative language foundation

Key design principles:

  • Value: What the language talks about (Int, Bool, Variant, etc.)
  • StackNode: Implementation detail (contains Value + next pointer)
  • Variant fields: Stored in arrays, NOT linked via next pointers

Re-exports§

pub use stack::Stack;
pub use stack::StackNode;
pub use stack::drop;
pub use stack::is_empty;
pub use stack::patch_seq_2dup as two_dup;
pub use stack::patch_seq_3drop as three_drop;
pub use stack::patch_seq_drop_op as drop_op;
pub use stack::patch_seq_dup as dup;
pub use stack::patch_seq_nip as nip;
pub use stack::patch_seq_over as over;
pub use stack::patch_seq_pick_op as pick_op;
pub use stack::patch_seq_push_value as push_value;
pub use stack::patch_seq_rot as rot;
pub use stack::patch_seq_swap as swap;
pub use stack::patch_seq_tuck as tuck;
pub use stack::peek;
pub use stack::pick;
pub use stack::pop;
pub use stack::push;
pub use value::MapKey;
pub use value::Value;
pub use value::VariantData;
pub use serialize::SerializeError;
pub use serialize::TypedMapKey;
pub use serialize::TypedValue;
pub use serialize::ValueSerialize;
pub use arithmetic::patch_seq_add as add;
pub use arithmetic::patch_seq_divide as divide;
pub use arithmetic::patch_seq_eq as eq;
pub use arithmetic::patch_seq_gt as gt;
pub use arithmetic::patch_seq_gte as gte;
pub use arithmetic::patch_seq_lt as lt;
pub use arithmetic::patch_seq_lte as lte;
pub use arithmetic::patch_seq_multiply as multiply;
pub use arithmetic::patch_seq_neq as neq;
pub use arithmetic::patch_seq_push_bool as push_bool;
pub use arithmetic::patch_seq_push_int as push_int;
pub use arithmetic::patch_seq_subtract as subtract;
pub use float_ops::patch_seq_f_add as f_add;
pub use float_ops::patch_seq_f_divide as f_divide;
pub use float_ops::patch_seq_f_eq as f_eq;
pub use float_ops::patch_seq_f_gt as f_gt;
pub use float_ops::patch_seq_f_gte as f_gte;
pub use float_ops::patch_seq_f_lt as f_lt;
pub use float_ops::patch_seq_f_lte as f_lte;
pub use float_ops::patch_seq_f_multiply as f_multiply;
pub use float_ops::patch_seq_f_neq as f_neq;
pub use float_ops::patch_seq_f_subtract as f_subtract;
pub use float_ops::patch_seq_float_to_int as float_to_int;
pub use float_ops::patch_seq_float_to_string as float_to_string;
pub use float_ops::patch_seq_int_to_float as int_to_float;
pub use float_ops::patch_seq_push_float as push_float;
pub use io::patch_seq_exit_op as exit_op;
pub use io::patch_seq_push_string as push_string;
pub use io::patch_seq_read_line as read_line;
pub use io::patch_seq_read_line_plus as read_line_plus;
pub use io::patch_seq_write_line as write_line;
pub use scheduler::patch_seq_scheduler_init as scheduler_init;
pub use scheduler::patch_seq_scheduler_run as scheduler_run;
pub use scheduler::patch_seq_scheduler_shutdown as scheduler_shutdown;
pub use scheduler::patch_seq_spawn_strand as spawn_strand;
pub use scheduler::patch_seq_strand_spawn as strand_spawn;
pub use scheduler::patch_seq_wait_all_strands as wait_all_strands;
pub use scheduler::patch_seq_yield_strand as yield_strand;
pub use channel::patch_seq_chan_receive as receive;
pub use channel::patch_seq_chan_receive_safe as receive_safe;
pub use channel::patch_seq_chan_send as send;
pub use channel::patch_seq_chan_send_safe as send_safe;
pub use channel::patch_seq_close_channel as close_channel;
pub use channel::patch_seq_make_channel as make_channel;
pub use io::patch_seq_int_to_string as int_to_string;
pub use string_ops::patch_seq_json_escape as json_escape;
pub use string_ops::patch_seq_string_chomp as string_chomp;
pub use string_ops::patch_seq_string_concat as string_concat;
pub use string_ops::patch_seq_string_contains as string_contains;
pub use string_ops::patch_seq_string_empty as string_empty;
pub use string_ops::patch_seq_string_length as string_length;
pub use string_ops::patch_seq_string_split as string_split;
pub use string_ops::patch_seq_string_starts_with as string_starts_with;
pub use string_ops::patch_seq_string_to_int as string_to_int;
pub use string_ops::patch_seq_string_to_lower as string_to_lower;
pub use string_ops::patch_seq_string_to_upper as string_to_upper;
pub use string_ops::patch_seq_string_trim as string_trim;
pub use quotations::patch_seq_call as call;
pub use quotations::patch_seq_peek_is_quotation as peek_is_quotation;
pub use quotations::patch_seq_peek_quotation_fn_ptr as peek_quotation_fn_ptr;
pub use quotations::patch_seq_push_quotation as push_quotation;
pub use quotations::patch_seq_spawn as spawn;
pub use quotations::patch_seq_times as times;
pub use quotations::patch_seq_until_loop as until_loop;
pub use quotations::patch_seq_while_loop as while_loop;
pub use closures::patch_seq_create_env as create_env;
pub use closures::patch_seq_env_get as env_get;
pub use closures::patch_seq_env_get_int as env_get_int;
pub use closures::patch_seq_env_set as env_set;
pub use closures::patch_seq_make_closure as make_closure;
pub use closures::patch_seq_push_closure as push_closure;
pub use cond::patch_seq_cond as cond;
pub use tcp::patch_seq_tcp_accept as tcp_accept;
pub use tcp::patch_seq_tcp_close as tcp_close;
pub use tcp::patch_seq_tcp_listen as tcp_listen;
pub use tcp::patch_seq_tcp_read as tcp_read;
pub use tcp::patch_seq_tcp_write as tcp_write;
pub use os::patch_seq_current_dir as current_dir;
pub use os::patch_seq_exit as exit;
pub use os::patch_seq_getenv as getenv;
pub use os::patch_seq_home_dir as home_dir;
pub use os::patch_seq_os_arch as os_arch;
pub use os::patch_seq_os_name as os_name;
pub use os::patch_seq_path_exists as path_exists;
pub use os::patch_seq_path_filename as path_filename;
pub use os::patch_seq_path_is_dir as path_is_dir;
pub use os::patch_seq_path_is_file as path_is_file;
pub use os::patch_seq_path_join as path_join;
pub use os::patch_seq_path_parent as path_parent;
pub use variant_ops::patch_seq_make_variant_0 as make_variant_0;
pub use variant_ops::patch_seq_make_variant_1 as make_variant_1;
pub use variant_ops::patch_seq_make_variant_2 as make_variant_2;
pub use variant_ops::patch_seq_make_variant_3 as make_variant_3;
pub use variant_ops::patch_seq_make_variant_4 as make_variant_4;
pub use variant_ops::patch_seq_unpack_variant as unpack_variant;
pub use variant_ops::patch_seq_variant_field_at as variant_field_at;
pub use variant_ops::patch_seq_variant_field_count as variant_field_count;
pub use variant_ops::patch_seq_variant_tag as variant_tag;
pub use args::patch_seq_arg_at as arg_at;
pub use args::patch_seq_arg_count as arg_count;
pub use args::patch_seq_args_init as args_init;
pub use file::patch_seq_file_exists as file_exists;
pub use file::patch_seq_file_for_each_line_plus as file_for_each_line_plus;
pub use file::patch_seq_file_slurp as file_slurp;
pub use file::patch_seq_file_slurp_safe as file_slurp_safe;
pub use list_ops::patch_seq_list_each as list_each;
pub use list_ops::patch_seq_list_empty as list_empty;
pub use list_ops::patch_seq_list_filter as list_filter;
pub use list_ops::patch_seq_list_fold as list_fold;
pub use list_ops::patch_seq_list_length as list_length;
pub use list_ops::patch_seq_list_map as list_map;
pub use map_ops::patch_seq_make_map as make_map;
pub use map_ops::patch_seq_map_empty as map_empty;
pub use map_ops::patch_seq_map_get as map_get;
pub use map_ops::patch_seq_map_get_safe as map_get_safe;
pub use map_ops::patch_seq_map_has as map_has;
pub use map_ops::patch_seq_map_keys as map_keys;
pub use map_ops::patch_seq_map_remove as map_remove;
pub use map_ops::patch_seq_map_set as map_set;
pub use map_ops::patch_seq_map_size as map_size;
pub use map_ops::patch_seq_map_values as map_values;
pub use test::patch_seq_test_assert as test_assert;
pub use test::patch_seq_test_assert_eq as test_assert_eq;
pub use test::patch_seq_test_assert_eq_str as test_assert_eq_str;
pub use test::patch_seq_test_assert_not as test_assert_not;
pub use test::patch_seq_test_fail as test_fail;
pub use test::patch_seq_test_fail_count as test_fail_count;
pub use test::patch_seq_test_finish as test_finish;
pub use test::patch_seq_test_has_failures as test_has_failures;
pub use test::patch_seq_test_init as test_init;
pub use test::patch_seq_test_pass_count as test_pass_count;

Modules§

arena
Arena Allocator - Thread-local bump allocation for Values
args
Command-line argument handling for Seq
arithmetic
Arithmetic operations for Seq
channel
Channel operations for CSP-style concurrency
closures
Closure support for Seq
cond
Conditional combinator for multi-way branching
diagnostics
Runtime diagnostics for production debugging
file
File I/O Operations for Seq
float_ops
Float operations for Seq
io
I/O Operations for Seq
list_ops
List operations for Seq
map_ops
Map operations for Seq
memory_stats
Cross-thread memory statistics registry
os
OS operations for Seq
pool
Stack Node Pool - Thread-local memory pool for fast stack node allocation
quotations
Quotation operations for Seq
scheduler
Scheduler - Green Thread Management with May
seqstring
SeqString - Arena or Globally Allocated String
serialize
Serialization of Seq Values
stack
string_ops
String operations for Seq
tcp
TCP Socket Operations for Seq
tcp_test
Minimal May TCP test to verify the library works
test
Test framework support for Seq
value
variant_ops
Variant field access operations for Seq
watchdog
Watchdog timer for detecting stuck strands