Skip to main content

Crate ring_lang_rs

Crate ring_lang_rs 

Source
Expand description

§ring-lang-rs

Rust bindings for the Ring programming language.

§Thread Safety

Ring has no GIL (Global Interpreter Lock). Threading works as follows:

  • Separate states are independent: Multiple ring_state_new() calls create isolated VMs
  • Shared state across threads: Use ring_vm_runcodefromthread() which creates a per-thread VM that shares global scope with the main VM. Mutex protection is applied to globals, function hash table, variable hash table, and memory pool during thread creation/deletion.
  • Memory pool: Thread-safe only after calling ring_vm_mutexfunctions() to register mutex callbacks, and only when using the threading API (ring_vm_runcodefromthread)

§Memory Safety

Most functions in this crate are thin wrappers around Ring’s C API. Callers must ensure:

  • Pointers (RingState, RingList, RingVM) are valid and non-null
  • Objects are not used after being deleted
  • ring_list_getstring_str() returns an owned String (safe to store)
  • ring_api_getstring_str() returns a reference valid only during the callback

Re-exports§

pub use api::*;
pub use general::*;
pub use item::*;
pub use list::*;
pub use state::*;
pub use string::*;
pub use vm::*;

Modules§

api
ffi
general
item
list
macros
state
string
vm

Macros§

ring_check_cpointer
ring_check_list
ring_check_number
ring_check_paracount
ring_check_paracount_range
ring_check_pointer
ring_check_string
ring_error
ring_func
ring_get_cpointer
ring_get_int
ring_get_list
ring_get_number
ring_get_pointer
ring_get_string
ring_libinit
ring_new_list
ring_ret_cpointer
ring_ret_list
ring_ret_managed_cpointer
ring_ret_number
ring_ret_string

Constants§

RING_API_BADPARACOUNT
RING_API_BADPARALENGTH
RING_API_BADPARARANGE
RING_API_BADPARATYPE
RING_API_BADPARAVALUE
RING_API_EMPTYLIST
RING_API_INTERNALFAILURE
RING_API_MISS1PARA
RING_API_MISS2PARA
RING_API_MISS3PARA
RING_API_MISS4PARA
RING_API_NOTPOINTER
RING_API_NULLPOINTER
RING_API_RANGEEXCEEDED
RING_CPOINTERSTATUS_NOTASSIGNED
RING_CPOINTER_STATUS
RING_OUTPUT_RETLIST
RING_OUTPUT_RETLISTBYREF
RING_OUTPUT_RETNEWREF
RING_VARVALUE_FLOAT
RING_VARVALUE_INT
RING_VAR_NAME
RING_VAR_PRIVATEFLAG
RING_VAR_PVALUETYPE
RING_VAR_TYPE
RING_VAR_VALUE

Type Aliases§

RingFunc
RingList
RingState
RingVM