This commit is contained in:
Jaroslaw Konik 2025-05-20 23:36:38 +02:00
parent 07331f8d48
commit 553abeb0c3
2 changed files with 9 additions and 7 deletions

View file

@ -1,5 +1,6 @@
use std::{env, path::PathBuf, process::Command};
fn main() {
println!("cargo:rustc-link-arg=-rdynamic");
println!("cargo:rustc-link-lib=z"); // TODO: if features Ruby
}

View file

@ -72,17 +72,18 @@ impl RubyThread {
let (sender, receiver) = crossbeam_channel::unbounded::<Box<dyn FnOnce(Ruby) + Send>>();
let handle = thread::spawn(move || {
let argc: i32 = 0;
let argv = vec![CString::new("ruby").unwrap(), CString::new("-e").unwrap()];
let mut argv = argv
.iter()
.map(|cs| cs.as_ptr() as *mut _)
.collect::<Vec<_>>();
let argc: i32 = 3;
let mut argv = vec![
CString::new("ruby").unwrap().into_raw(),
CString::new("-e").unwrap().into_raw(),
CString::new("").unwrap().into_raw(),
];
unsafe {
let mut variable_in_this_stack_frame: VALUE = 0;
ruby_init_stack(&mut variable_in_this_stack_frame as *mut VALUE as *mut _);
rb_sys::ruby_init();
rb_sys::ruby_init_loadpath();
rb_sys::ruby_options(argc, argv.as_mut_ptr());
};
while let Ok(f) = receiver.recv() {
@ -90,7 +91,7 @@ impl RubyThread {
f(ruby);
}
unsafe {
ruby_finalize();
rb_sys::ruby_finalize();
}
});