old->new prelude

This commit is contained in:
Scott Richmond 2025-07-06 23:14:01 -04:00
parent 77635685ab
commit a87fa6bd3f
8 changed files with 999 additions and 2459 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -403,7 +403,7 @@ function __wbg_get_imports() {
_assertBoolean(ret); _assertBoolean(ret);
return ret; return ret;
}; };
imports.wbg.__wbindgen_closure_wrapper8194 = function() { return logError(function (arg0, arg1, arg2) { imports.wbg.__wbindgen_closure_wrapper8195 = function() { return logError(function (arg0, arg1, arg2) {
const ret = makeMutClosure(arg0, arg1, 363, __wbg_adapter_20); const ret = makeMutClosure(arg0, arg1, 363, __wbg_adapter_20);
return ret; return ret;
}, arguments) }; }, arguments) };

BIN
pkg/rudus_bg.wasm (Stored with Git LFS)

Binary file not shown.

View File

@ -1,6 +1,5 @@
use crate::ast::{Ast, StringPart}; use crate::ast::{Ast, StringPart};
use crate::chunk::{Chunk, StrPattern}; use crate::chunk::{Chunk, StrPattern};
use crate::errors::line_number;
use crate::op::Op; use crate::op::Op;
use crate::spans::Spanned; use crate::spans::Spanned;
use crate::value::*; use crate::value::*;
@ -1115,6 +1114,7 @@ impl Compiler {
self.emit_op(Op::Spawn); self.emit_op(Op::Spawn);
} }
Receive(clauses) => { Receive(clauses) => {
self.msg("********starting receive".to_string());
let tail_pos = self.tail_pos; let tail_pos = self.tail_pos;
self.emit_op(Op::ClearMessage); self.emit_op(Op::ClearMessage);
let receive_begin = self.len(); let receive_begin = self.len();
@ -1158,7 +1158,8 @@ impl Compiler {
} }
self.pop_n(self.stack_depth - stack_depth); self.pop_n(self.stack_depth - stack_depth);
self.emit_op(Op::Load); self.emit_op(Op::Load);
self.stack_depth += 1; // self.stack_depth += 1;
self.msg("********receive completed".to_string());
} }
MatchClause(..) => unreachable!(), MatchClause(..) => unreachable!(),
Fn(name, body, doc) => { Fn(name, body, doc) => {

View File

@ -1,12 +1,6 @@
use phf::phf_map;
use rudus::value::Value; use rudus::value::Value;
use std::env; use std::env;
const KEYWORDS: phf::Map<&'static str, Value> = phf_map! {
"ok" => Value::keyword("ok"),
"err" => Value::keyword("err"),
}
pub fn main() { pub fn main() {
env::set_var("RUST_BACKTRACE", "1"); env::set_var("RUST_BACKTRACE", "1");
println!("Hello, world.") println!("Hello, world.")

View File

@ -103,10 +103,16 @@ impl<'a> Validator<'a> {
} }
fn declare_fn(&mut self, name: String) { fn declare_fn(&mut self, name: String) {
if name.is_empty() {
return;
}
self.locals.push((name, self.span, FnInfo::Declared)); self.locals.push((name, self.span, FnInfo::Declared));
} }
fn define_fn(&mut self, name: String, info: FnInfo) { fn define_fn(&mut self, name: String, info: FnInfo) {
if name.is_empty() {
return;
}
let i = self.locals.iter().position(|(n, ..)| *n == name).unwrap(); let i = self.locals.iter().position(|(n, ..)| *n == name).unwrap();
let new_binding = (name, self.locals[i].1, info); let new_binding = (name, self.locals[i].1, info);
self.locals[i] = new_binding; self.locals[i] = new_binding;

View File

@ -305,7 +305,7 @@ impl Creature {
unreachable!("expected keyword pid in monitor"); unreachable!("expected keyword pid in monitor");
}; };
if other != self.pid { if other != self.pid {
self.unlink(Value::Keyword(other)); self.do_unlink(Value::Keyword(other));
let mut other = self.zoo.borrow_mut().catch(other); let mut other = self.zoo.borrow_mut().catch(other);
other.parents.push(self.pid); other.parents.push(self.pid);
self.zoo.borrow_mut().release(other); self.zoo.borrow_mut().release(other);
@ -322,6 +322,11 @@ impl Creature {
} }
fn unlink(&mut self, other: Value) { fn unlink(&mut self, other: Value) {
self.do_unlink(other);
self.push(Value::Keyword("ok"))
}
fn do_unlink(&mut self, other: Value) {
let Value::Keyword(other) = other else { let Value::Keyword(other) = other else {
unreachable!("expected keyword pid in unlink") unreachable!("expected keyword pid in unlink")
}; };
@ -331,7 +336,6 @@ impl Creature {
other.delete_from_siblings(self.pid); other.delete_from_siblings(self.pid);
self.zoo.borrow_mut().release(other); self.zoo.borrow_mut().release(other);
} }
self.push(Value::Keyword("ok"))
} }
fn link(&mut self, other: Value) { fn link(&mut self, other: Value) {
@ -1324,7 +1328,12 @@ impl Creature {
} }
Return => { Return => {
if self.debug { if self.debug {
console_log!("== returning from {} ==", self.frame.function.show()) console_log!("== returning from {} ==", self.frame.function.show());
let destination = match self.call_stack.last() {
Some(frame) => frame.function.as_fn().name(),
None => "toplevel",
};
console_log!("== returning to {destination} ==");
} }
let mut value = Value::Nothing; let mut value = Value::Nothing;
swap(&mut self.register[0], &mut value); swap(&mut self.register[0], &mut value);