CMakeLists.txt | 28 +- build.zig | 11 +- doc/docgen.zig | 32 +- doc/langref.html.in | 80 ++++- lib/libc/glibc/abi.txt | 330 ++++++++++++++++++ lib/libc/glibc/fns.txt | 22 ++ lib/libc/glibc/vers.txt | 1 + lib/libc/include/aarch64-linux-gnu/bits/hwcap.h | 5 +- lib/libc/include/aarch64-linux-gnu/gnu/stubs-lp64.h | 6 - lib/libc/include/aarch64_be-linux-gnu/bits/hwcap.h | 5 +- lib/libc/include/aarch64_be-linux-gnu/gnu/stubs-lp64_be.h | 6 - lib/libc/include/generic-glibc/bits/dirent_ext.h | 33 ++ lib/libc/include/generic-glibc/bits/fcntl-linux.h | 2 + lib/libc/include/generic-glibc/bits/in.h | 1 + lib/libc/include/generic-glibc/bits/math-vector-fortran.h | 19 -- lib/libc/include/generic-glibc/bits/signal_ext.h | 31 ++ lib/libc/include/generic-glibc/bits/socket-constants.h | 38 +++ lib/libc/include/generic-glibc/bits/socket.h | 98 +----- lib/libc/include/generic-glibc/bits/statx-generic.h | 60 ++++ lib/libc/include/generic-glibc/bits/statx.h | 80 +---- lib/libc/include/generic-glibc/bits/stropts.h | 230 ------------- lib/libc/include/generic-glibc/bits/syscall.h | 156 ++++++++- lib/libc/include/generic-glibc/bits/types.h | 19 +- lib/libc/include/generic-glibc/bits/types/struct_statx.h | 55 +++ lib/libc/include/generic-glibc/bits/types/struct_statx_timestamp.h | 33 ++ lib/libc/include/generic-glibc/bits/xtitypes.h | 33 -- lib/libc/include/generic-glibc/dirent.h | 2 + lib/libc/include/generic-glibc/dlfcn.h | 12 + lib/libc/include/generic-glibc/elf.h | 32 +- lib/libc/include/generic-glibc/features.h | 2 +- lib/libc/include/generic-glibc/finclude/math-vector-fortran.h | 19 ++ lib/libc/include/generic-glibc/gconv.h | 11 +- lib/libc/include/generic-glibc/gnu/stubs-32.h | 2 - lib/libc/include/generic-glibc/gnu/stubs-64.h | 18 + lib/libc/include/generic-glibc/gnu/stubs-hard.h | 6 - lib/libc/include/generic-glibc/gnu/stubs-n32_hard.h | 2 - lib/libc/include/generic-glibc/gnu/stubs-n64_hard.h | 2 - lib/libc/include/generic-glibc/gnu/stubs-o32_hard.h | 2 - lib/libc/include/generic-glibc/gnu/stubs-soft.h | 6 - lib/libc/include/generic-glibc/malloc.h | 20 +- lib/libc/include/generic-glibc/math.h | 17 +- lib/libc/include/generic-glibc/netinet/igmp.h | 1 + lib/libc/include/generic-glibc/netinet/in.h | 1 + lib/libc/include/generic-glibc/netinet/udp.h | 1 + lib/libc/include/generic-glibc/pthread.h | 36 ++ lib/libc/include/generic-glibc/resolv.h | 4 - lib/libc/include/generic-glibc/search.h | 7 + lib/libc/include/generic-glibc/semaphore.h | 30 +- lib/libc/include/generic-glibc/signal.h | 3 + lib/libc/include/generic-glibc/stdlib.h | 13 +- lib/libc/include/generic-glibc/stropts.h | 92 ----- lib/libc/include/generic-glibc/sys/cdefs.h | 8 + lib/libc/include/generic-glibc/sys/ifunc.h | 42 +++ lib/libc/include/generic-glibc/sys/io.h | 166 ++++++++- lib/libc/include/generic-glibc/sys/stropts.h | 1 - lib/libc/include/generic-glibc/sys/sysctl.h | 5 +- lib/libc/include/generic-glibc/sys/types.h | 33 +- lib/libc/include/i386-linux-gnu/bits/math-vector-fortran.h | 43 --- lib/libc/include/i386-linux-gnu/bits/xtitypes.h | 33 -- lib/libc/include/i386-linux-gnu/finclude/math-vector-fortran.h | 43 +++ lib/libc/include/i386-linux-gnu/sys/io.h | 183 ---------- lib/libc/include/mips-linux-gnu/bits/socket-constants.h | 38 +++ lib/libc/include/mips64-linux-gnuabi64/bits/socket-constants.h | 38 +++ lib/libc/include/mips64-linux-gnuabin32/bits/socket-constants.h | 38 +++ lib/libc/include/mips64el-linux-gnuabi64/bits/socket-constants.h | 38 +++ lib/libc/include/mips64el-linux-gnuabin32/bits/socket-constants.h | 38 +++ lib/libc/include/mipsel-linux-gnu/bits/socket-constants.h | 38 +++ lib/libc/include/powerpc-linux-gnu/bits/fenvinline.h | 37 ++- lib/libc/include/powerpc-linux-gnu/bits/socket-constants.h | 38 +++ lib/libc/include/powerpc-linux-gnu/fpu_control.h | 72 ++-- lib/libc/include/powerpc64-linux-gnu/bits/fenvinline.h | 37 ++- lib/libc/include/powerpc64-linux-gnu/bits/socket-constants.h | 38 +++ lib/libc/include/powerpc64-linux-gnu/fpu_control.h | 72 ++-- lib/libc/include/powerpc64-linux-gnu/gnu/stubs-64-v1.h | 2 - lib/libc/include/powerpc64le-linux-gnu/bits/fenvinline.h | 37 ++- lib/libc/include/powerpc64le-linux-gnu/bits/socket-constants.h | 38 +++ lib/libc/include/powerpc64le-linux-gnu/fpu_control.h | 72 ++-- lib/libc/include/powerpc64le-linux-gnu/gnu/stubs-64-v2.h | 2 - lib/libc/include/riscv64-linux-gnu/gnu/stubs-lp64.h | 6 - lib/libc/include/s390x-linux-gnu/bits/hwcap.h | 6 +- lib/libc/include/s390x-linux-gnu/bits/xtitypes.h | 33 -- lib/libc/include/s390x-linux-gnu/gnu/stubs-64.h | 24 -- lib/libc/include/sparc-linux-gnu/bits/socket-constants.h | 38 +++ lib/libc/include/sparc-linux-gnu/gnu/stubs-64.h | 26 -- lib/libc/include/sparcv9-linux-gnu/bits/socket-constants.h | 38 +++ lib/libc/include/sparcv9-linux-gnu/gnu/stubs-32.h | 26 -- lib/libc/include/x86_64-linux-gnu/bits/math-vector-fortran.h | 43 --- lib/libc/include/x86_64-linux-gnu/bits/xtitypes.h | 33 -- lib/libc/include/x86_64-linux-gnu/finclude/math-vector-fortran.h | 43 +++ lib/libc/include/x86_64-linux-gnu/gnu/stubs-64.h | 4 - lib/libc/include/x86_64-linux-gnu/sys/io.h | 183 ---------- lib/libc/include/x86_64-linux-gnux32/bits/math-vector-fortran.h | 43 --- lib/libc/include/x86_64-linux-gnux32/bits/xtitypes.h | 33 -- lib/libc/include/x86_64-linux-gnux32/finclude/math-vector-fortran.h | 43 +++ lib/libc/include/x86_64-linux-gnux32/gnu/stubs-x32.h | 4 - lib/libc/include/x86_64-linux-gnux32/sys/io.h | 183 ---------- src-self-hosted/arg.zig | 4 +- src-self-hosted/compilation.zig | 2 +- src-self-hosted/decl.zig | 2 +- src-self-hosted/main.zig | 2 +- src-self-hosted/package.zig | 2 +- src-self-hosted/stage1.zig | 4 +- src/all_types.hpp | 87 ++++- src/analyze.cpp | 425 ++++++++++++++++++----- src/analyze.hpp | 10 +- src/ast_render.cpp | 28 +- src/buffer.hpp | 5 + src/codegen.cpp | 301 ++++++++++++----- src/ir.cpp | 526 ++++++++++++++++++++++++----- src/ir.hpp | 5 + src/ir_print.cpp | 57 +++- src/ir_print.hpp | 4 +- src/main.cpp | 21 +- src/os.cpp | 24 ++ src/parser.cpp | 47 ++- src/stack_report.cpp | 121 +++++++ src/stack_report.hpp | 16 + src/target.cpp | 8 +- src/tokenizer.cpp | 4 + src/tokenizer.hpp | 2 + src/translate_c.cpp | 4 +- src/zig_llvm.cpp | 1 + std/bloom_filter.zig | 253 ++++++++++++++ std/buf_map.zig | 4 +- std/buf_set.zig | 4 +- std/build.zig | 38 ++- std/c.zig | 1 + std/debug.zig | 46 ++- std/event.zig | 2 - std/event/future.zig | 6 +- std/event/io.zig | 76 ----- std/event/loop.zig | 14 +- std/fmt/parse_float.zig | 14 +- std/fs/file.zig | 6 +- std/hash/cityhash.zig | 8 +- std/hash/murmur.zig | 6 +- std/hash_map.zig | 4 +- std/io.zig | 188 +---------- std/io/in_stream.zig | 200 +++++++++++ std/json.zig | 4 +- std/mem.zig | 38 +-- std/meta.zig | 3 +- std/os.zig | 42 +-- std/os/bits/linux.zig | 1 + std/os/bits/linux/arm-eabi.zig | 573 ++++++++++++++++++++++++++++++++ std/os/linux.zig | 157 +++++++-- std/os/linux/arm-eabi.zig | 96 ++++++ std/os/linux/arm64.zig | 14 +- std/os/linux/tls.zig | 13 + std/special/build_runner.zig | 2 + std/special/c.zig | 31 ++ std/special/start.zig | 2 +- std/std.zig | 3 + std/zig/parse.zig | 6 +- std/zig/parser_test.zig | 91 +++++ std/zig/render.zig | 43 ++- std/zig/tokenizer.zig | 4 + test/compile_errors.zig | 105 ++++++ test/runtime_safety.zig | 15 + test/stack_traces.zig | 355 ++++++++++++++++++++ test/stage1/behavior.zig | 1 + test/stage1/behavior/async_fn.zig | 192 ++++++++++- test/stage1/behavior/enum.zig | 14 + test/stage1/behavior/if.zig | 12 + test/stage1/behavior/sizeof_and_typeof.zig | 9 + test/stage1/behavior/struct.zig | 59 ++++ test/stage1/behavior/type.zig | 113 +++++++ test/stage1/behavior/union.zig | 37 +++ test/tests.zig | 224 ++++++++++++- tools/process_headers.zig | 396 ++++------------------ tools/update_glibc.zig | 2 +- 171 files changed, 6231 insertions(+), 2802 deletions(-)