From fae5921bfcbf9f0c8c138dd13aa9c8822a75a316 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Mon, 2 Mar 2026 01:12:33 -0500 Subject: Printing diagnostics --- src/library.c | 7 +++++++ src/runtime.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/library.c b/src/library.c index 7c63066..5176874 100644 --- a/src/library.c +++ b/src/library.c @@ -805,6 +805,11 @@ void pit_install_library_essential(pit_runtime *rt) { pit_fset(rt, pit_intern_cstr(rt, "bitwise/rshift"), pit_nativefunc_new(rt, impl_bitwise_rshift)); } +static pit_value impl_diagnostics(pit_runtime *rt, pit_value args) { + (void) args; + fprintf(stderr, "value allocs: %ld\n", rt->values->next); + return PIT_NIL; +} static pit_value impl_print(pit_runtime *rt, pit_value args) { pit_value x = pit_car(rt, args); char buf[1024] = {0}; @@ -844,6 +849,8 @@ static pit_value impl_load(pit_runtime *rt, pit_value args) { return ret; } void pit_install_library_io(pit_runtime *rt) { + /* diagnostics */ + pit_fset(rt, pit_intern_cstr(rt, "diagnostics!"), pit_nativefunc_new(rt, impl_diagnostics)); /* stream IO */ pit_fset(rt, pit_intern_cstr(rt, "print!"), pit_nativefunc_new(rt, impl_print)); pit_fset(rt, pit_intern_cstr(rt, "princ!"), pit_nativefunc_new(rt, impl_princ)); diff --git a/src/runtime.c b/src/runtime.c index 1c0e6e1..fea53dd 100644 --- a/src/runtime.c +++ b/src/runtime.c @@ -1310,11 +1310,11 @@ void pit_run_file(pit_runtime *rt, char *path) { if (pit_runtime_print_error(rt)) exit(1); pit_eval(rt, p); if (pit_runtime_print_error(rt)) exit(1); - // pit_collect_garbage(rt); + pit_collect_garbage(rt); if (pit_runtime_print_error(rt)) exit(1); } if (pit_runtime_print_error(rt)) exit(1); - fprintf(stderr, "value allocations: %ld\n", rt->values->next); + fprintf(stderr, "value allocs at exit: %ld\n", rt->values->next); } void pit_repl(pit_runtime *rt) { -- cgit v1.2.3