void notice(const char *file, ucell line, const char *func, const char *fmt, ...);
void bailout(const char *file, ucell line, const char *func, const char *fmt, ...);
void noop();
void* allocate(ucell size);
void* reallocate(void *p, ucell size);
ucell strskip(char **str, str_cb_chr cb);
ucell strscan(char **str, str_cb_chr cb);
ucell strskipthese(char **str, const char *these);
ucell strscanthese(char **str, const char *these);
ucell strltrim(byte *addr);
ucell strrtrim(byte *addr);
ucell strtrim(byte *addr);
char* strpull(byte *addr, ucell len);
char* strnext(byte **addr, str_cb_chr cb);
char* strnextthese(byte **addr, const char *these);
void str_create(autostr *s);
void str_require(autostr *s, ucell len);
void str_append(autostr *s, char *p, ucell len);
void str_print(autostr *s, ucell lim, char *fmt, ...);
void str_drop(autostr *s, ucell len);
void str_push(autostr *s, char c);
void str_free(autostr *s);
int regmatch(char *pattern, char *subject, ucell slots, regmatch_t *subs, ucell flags);
char* regsubstr(char *subject, regmatch_t *subs, int slot);
void blurt(const char *name, void *data);
ucell suck(FILE *src, byte *pad, ucell len, byte stop);
byte* slurp(const char *name, ucell *len);
void stack_push(stack *s, void *v);
void* stack_pop(stack *s);
void* stack_top(stack *s);
void* stack_get(stack *s, ucell slot);
void* stack_shift(stack *s);
void stack_shove(stack *s, void *item);
void stack_del(stack *s, ucell index);
int stack_find(stack *s, void *item);
void stack_discard(stack *s, void *item);
stack *stack_create();
void stack_free(stack *s);
hash* hash_create();
ubyte hash_index(char *s);
bucket* hash_find(hash *h, char *key);
void* hash_get(hash *h, char *key);
void* hash_set(hash *h, char *key, void *val);
void* hash_del(hash *h, char *key);
void hash_free(hash *h, bool vals);
void hash_iterate(hash *h, void (*cb)(hash*, char*, void *val));
stack* strsplit(char *addr, str_cb_chr cb);
stack* strsplitthese(char *addr, char *join);
void catch_exit(int sig);
pid_t exec_cmd_io(const char *command, int *infp, int *outfp);
pid_t exec_cmd(char *cmd);
void ppm_pixel(ppm *ppm, int x, int y, ubyte r, ubyte g, ubyte b);
ppm* ppm_create(int w, int h, ubyte r, ubyte g, ubyte b);
void ppm_save(ppm *ppm, const char *name);
void ppm_free(ppm *ppm);
hash* args_to_hash(int argc, char *argv[]);
bucket* hash_find_one(hash *h, char *csv);
char* hash_get_one(hash *h, char *csv);
char* hash_expect(hash *h, char *keys, char *pattern, int maxsubs, regmatch_t *subs);
char* hash_encode(hash *h);
hash* hash_decode(char *s);
char* mem2str(void *addr, ucell len);
void str2mem(void *addr, ucell len, char *s);
ubyte* bm_create(ucell bits);
void bm_set(ubyte *b, ucell item);
void bm_clr(ubyte *b, ucell item);
bool bm_chk(ubyte *b, ucell item);
void bm_flip(ubyte *b, ucell item);
