Post Scarcity
A prototype for a post scarcity programming environment
Loading...
Searching...
No Matches
Todo List
Global allocate_cell (uint32_t tag)
handle the case where another cons_page cannot be allocated; return an exception. Which, as we cannot create such an exception when cons space is exhausted, means we must construct it at init time.
Global bind_function (wchar_t *name, struct cons_pointer(*executable)(struct stack_frame *, struct cons_pointer, struct cons_pointer))
where a function is not compiled from source, we could cache the name on the source pointer. Would make stack frames potentially more readable and aid debugging generally.
Global CONSTV
tag values should be collected into an enum.
Global end_of_stringp (struct cons_pointer arg)
candidate for moving to a memory/string.c file
Global function_payload::executable )(struct stack_frame *, struct cons_pointer, struct cons_pointer)
check this documentation is current!
Struct integer_payload
Why is this 60, and not 64 bits?
Global lisp_set (struct stack_frame *frame, struct cons_pointer frame_pointer, struct cons_pointer env)
doesn't actually work yet for namespaces which are not the oblist.
Global lisp_set_shriek (struct stack_frame *frame, struct cons_pointer frame_pointer, struct cons_pointer env)
doesn't actually work yet for namespaces which are not the oblist.
Global make_cons_page ()
we ought to handle cons space exhaustion more gracefully than just crashing; should probably return an exception instead, although obviously that exception would have to have been pre-built.
Global read_number (struct stack_frame *frame, struct cons_pointer frame_pointer, URL_FILE *input, wint_t initial, bool seen_period)
Need to do a lot of inc_ref and dec_ref, to make sure the garbage is collected.
Struct stack_frame
refactor.
Global to_long_double (struct cons_pointer arg)
cannot throw an exception out of here, which is a problem if a ratio may legally have zero as a divisor, or something which is not a number is passed in.
Global to_long_int (struct cons_pointer arg)
cannot throw an exception out of here, which is a problem if a ratio may legally have zero as a divisor, or something which is not a number (or is a big number) is passed in.
Global vector_space_object::payload
this is almost certainly not idiomatic C.
Global vectorp_payload::address
will change when I actually implement vector space)