build.zig | 14 +- doc/docgen.zig | 22 +- doc/langref.html.in | 36 +- lib/std/build.zig | 38 +- lib/std/build/run.zig | 4 +- lib/std/build/write_file.zig | 2 +- lib/std/c.zig | 1 + lib/std/crypto/aes.zig | 38 +- lib/std/crypto/blake2.zig | 11 +- lib/std/crypto/chacha20.zig | 61 ++- lib/std/crypto/md5.zig | 3 +- lib/std/crypto/poly1305.zig | 29 +- lib/std/crypto/sha1.zig | 3 +- lib/std/crypto/sha2.zig | 6 +- lib/std/crypto/sha3.zig | 5 +- lib/std/crypto/x25519.zig | 41 +- lib/std/fmt.zig | 3 +- lib/std/fs.zig | 525 +++++++++++------------- lib/std/fs/watch.zig | 2 +- lib/std/hash/auto_hash.zig | 12 +- lib/std/hash/siphash.zig | 6 +- lib/std/hash/wyhash.zig | 2 +- lib/std/io/serialization.zig | 6 +- lib/std/json.zig | 23 +- lib/std/math/big/int.zig | 4 +- lib/std/mem.zig | 212 ++++++---- lib/std/meta.zig | 65 ++- lib/std/meta/trait.zig | 12 +- lib/std/net.zig | 12 +- lib/std/os.zig | 148 ++++++- lib/std/os/bits/dragonfly.zig | 2 + lib/std/os/bits/freebsd.zig | 2 + lib/std/os/bits/linux.zig | 2 + lib/std/os/bits/netbsd.zig | 2 + lib/std/os/linux.zig | 12 +- lib/std/os/test.zig | 56 ++- lib/std/os/windows.zig | 86 +++- lib/std/os/windows/bits.zig | 7 + lib/std/rand.zig | 2 +- lib/std/thread.zig | 51 ++- lib/std/unicode.zig | 20 +- lib/std/zig/ast.zig | 158 +++----- lib/std/zig/parse.zig | 687 ++++++++++++++++---------------- lib/std/zig/parser_test.zig | 2 + lib/std/zig/render.zig | 59 ++- lib/std/zig/system.zig | 2 +- src-self-hosted/c_int.zig | 8 +- src-self-hosted/compilation.zig | 30 +- src-self-hosted/errmsg.zig | 11 +- src-self-hosted/ir.zig | 2 +- src-self-hosted/libc_installation.zig | 10 +- src-self-hosted/link.zig | 112 +++--- src-self-hosted/main.zig | 103 ++--- src-self-hosted/print_targets.zig | 2 +- src-self-hosted/stage2.zig | 4 +- src-self-hosted/test.zig | 4 +- src-self-hosted/translate_c.zig | 26 +- src-self-hosted/util.zig | 15 +- src/all_types.hpp | 6 + src/analyze.cpp | 56 ++- src/analyze.hpp | 2 +- src/codegen.cpp | 165 +++++--- src/ir.cpp | 423 +++++++++++++++----- src/link.cpp | 1 + src/main.cpp | 3 +- test/cli.zig | 2 +- test/compare_output.zig | 2 +- test/compile_errors.zig | 16 +- test/runtime_safety.zig | 2 +- test/stage1/behavior/align.zig | 36 +- test/stage1/behavior/array.zig | 38 ++ test/stage1/behavior/cast.zig | 3 +- test/stage1/behavior/eval.zig | 2 +- test/stage1/behavior/misc.zig | 14 +- test/stage1/behavior/pointers.zig | 9 +- test/stage1/behavior/ptrcast.zig | 2 +- test/stage1/behavior/slice.zig | 159 +++++++- test/stage1/behavior/struct.zig | 4 +- 78 files changed, 2332 insertions(+), 1436 deletions(-)