~sebsite/hare-specification

annotate the spec with examples: number lexing changes
Distinguish between number tokens and literals
Annotate the spec with examples
Add colon to \example command
Replace \informative with \example in various places
Get rid of multiple bindings per declaration

This also changes the function attribute grammar to only allow one
attribute. TODO
Better specify type classes and type groups

"Type groups" are new, and are specified very loosely. The term just
exists as a way to clarify what things like "integer types", "numeric
types", and "primitive types" are: they aren't type classes; they're
gruops of type classes which share similar semantics. A type class may
be a part of any number of groups.

A later patch will add an example of type groups.
Specify result "value" of assignment from never
Move rune type into other primitive types

rune isn't any more special than void/never/etc, so it's strange that it
gets its own section when the other types don't.

The description has also been slightly reworded to be more specific.
Allow non-translation-compatible len operand at compile-time
More strictly specify bounds tests

Rather than just permitting the implementation to perform bounds tests
at compile-time, the spec now explicitly specifies when bounds tests
should be performed.
Specify that len/offset operand are sometimes not evaluated
Allow the teardown process to begin early

This explicitly allows for functions like os::exit
Improve description of function variadism

So the *function* has Hare-style variadism, rather than the parameter.
Also, functions without ... don't use any variadism.
Disallow variadism in main, @init, @fini, and @test
Disallow use of exported types in unexported decls
Allow restrictions for @symbol strings
Remove redundant constraint
Disallow tagged union members with undefined size
Next
Do not follow this link