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
Fix calls to functions with template parameters
Fix crash on conditional expressions
Missing hashlib import was crashing the compiler.
Fix the "Hello, World!" example source code
It would be ridiculous if example code was not compiling.
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.