~maelkum/viuact

Merge v2 to the development branch, making it semi-official

The v2 code is stable enough if you don't try to hurt it too much, and
don't look at it funny. I guess that's enough for devel: people can use
it, but if it occasionally breaks... no harm, no foul, it's still an
early release, alphish-state software. You can't expect it to be
*rock-solid* at this stage, and I never promised that.

Anyway, v2 is now the semi-official main release of Viuact.

(More like 0.3.0 than v2, but I digress.)
A little bit of work on switch an environment

I should probably define what I *want* from the `viuact switch' command
and only then start implementing it. Back to the whiteboard, I guess.

Let's take some inspiration from OCaml's opam, Rust's cargo, and OCaml's
drom (cargo for OCaml, something like that).
Fix example programs in cc's built-in help

Also fix some bugs in the compiler that appeared during the refactroings
and reworkings.
Fix example code
Fix calls to functions with template parameters
Fix crash on conditional expressions

Missing hashlib import was crashing the compiler.
Fix variable name
Fix the "Hello, World!" example source code

It would be ridiculous if example code was not compiling.
Make imports work
Call functions using signatures, not definitions

This way the code is the same for local and imported functions.
Update syntax file

Recognise `void' as keyword.
Imports (should) work

When encountering an import instruction, the compiler locates a matching
interface file (if any), and parses it to extract module information.
Move ops classes and emiter functions to their own files

Let's not have everything in one big source file.
Cleaner separation of responsibilities between functions
Emit interface files

They will be required for imports. How else would an importing module
know what the imported module provides?
List enumeration and record types

This will be useful when generating interface files.
Fix: provide reason for failure

The reason may be simple - source file does not exist, but it must be
communicated to the user.
Remove useless file
Next