~sebsite/harec

mutability overhaul TODO
Mutability overhaul :3
type_store: remove duplicate assignment
tests/17-alloc: remove a nomem check
tests/17-alloc: remove unused global in fail test
check: improve even more error messages
check: improve quality of switch error messages
tests/12-loops: remove unnecessary heap allocation
parse: further improve error msg for tuple unpacking def

7c0c436970ec91dcdd8af4a457b040fe464de5f4 improved the previously
incorrect error messsage, but this commit adds a specialized error
message which better communicates the error to the user.
Implement discarding bindings and assignment

	let _ = expr;
	_ = expr;
	for (let _ .. expr) void;
	for (let _ &.. expr) void;
	for (let _ => expr) void;

void casts have also been removed.

This is a breaking change.

Implements: https://todo.sr.ht/~sircmpwn/hare/461
check: recover from for-each binding error
check: improve error message
check: disallow unexported ident in exported constant
typedef support unary & TODO
typedef: support unary & constant initializer
i128/u128 TODO
Drop capacity field from strings

Closes: https://todo.sr.ht/~sircmpwn/hare/703
Use assert(0) instead of abort()

abort(3) shouldn't be used for unreachable code; using assert(3) prints
debug info when reached.
Add rt::allocator (TODO: rt docs; docs/runtime.txt)
eval: implement signed shifts

Also adds a lot of tests for runtime signed shifts, to verify that
compile-time and runtime behavior is identical
Next
Do not follow this link