.builds/freebsd.yml | 2 +- .gitignore | 6 +- CMakeLists.txt | 17 + README.md | 62 +- build.zig | 11 +- cmake/Findclang.cmake | 22 + doc/docgen.zig | 10 +- doc/langref.html.in | 683 +++++++-- example/mix_o_files/build.zig | 6 +- example/shared_library/build.zig | 6 +- example/shared_library/mathtest.zig | 9 - src-self-hosted/codegen.zig | 42 +- src-self-hosted/compilation.zig | 22 +- src-self-hosted/ir.zig | 20 +- src-self-hosted/libc_installation.zig | 26 +- src-self-hosted/link.zig | 8 +- src-self-hosted/llvm.zig | 181 ++- src-self-hosted/main.zig | 24 +- src-self-hosted/scope.zig | 2 +- src-self-hosted/target.zig | 281 +--- src-self-hosted/type.zig | 44 +- src-self-hosted/value.zig | 18 +- src/all_types.hpp | 162 +- src/analyze.cpp | 540 +++---- src/analyze.hpp | 13 +- src/ast_render.cpp | 27 +- src/ast_render.hpp | 3 - src/bigint.cpp | 1 - src/buffer.hpp | 4 +- src/cache_hash.cpp | 34 + src/cache_hash.hpp | 2 + src/codegen.cpp | 907 ++++++++--- src/codegen.hpp | 10 +- src/error.cpp | 9 + src/error.hpp | 9 + src/ir.cpp | 1409 ++++++++++++----- src/ir.hpp | 2 +- src/ir_print.cpp | 30 +- src/libc_installation.cpp | 498 ++++++ src/libc_installation.hpp | 35 + src/link.cpp | 189 +-- src/main.cpp | 345 +++-- src/os.cpp | 47 +- src/os.hpp | 9 +- src/parser.cpp | 12 +- src/target.cpp | 943 +++++++----- src/target.hpp | 85 +- src/tokenizer.cpp | 19 +- src/tokenizer.hpp | 1 + src/translate_c.cpp | 2642 ++++++++++++-------------------- src/util.hpp | 11 +- src/zig_clang.cpp | 214 +++ src/zig_clang.h | 259 ++++ src/zig_clang_cc1_main.cpp | 226 +++ src/zig_clang_cc1as_main.cpp | 573 +++++++ src/zig_clang_driver.cpp | 513 +++++++ src/zig_llvm.cpp | 2 +- src/zig_llvm.h | 5 +- std/buf_set.zig | 4 + std/build.zig | 929 +++-------- std/build/fmt.zig | 35 + std/c/darwin.zig | 11 +- std/c/index.zig | 1 + std/c/netbsd.zig | 116 ++ std/debug/index.zig | 82 +- std/event/fs.zig | 31 +- std/event/loop.zig | 21 +- std/fmt/index.zig | 13 +- std/fmt/parse_float.zig | 420 +++++ std/hash_map.zig | 2 + std/heap.zig | 6 +- std/index.zig | 4 +- std/io.zig | 83 +- std/io_test.zig | 11 + std/json.zig | 8 +- std/math/fabs.zig | 19 + std/math/index.zig | 12 +- std/math/inf.zig | 7 +- std/math/isinf.zig | 22 + std/math/isnan.zig | 6 + std/math/nan.zig | 7 +- std/math/powi.zig | 9 +- std/mem.zig | 49 +- std/meta/index.zig | 9 +- std/os/darwin.zig | 2 +- std/os/file.zig | 8 +- std/os/freebsd/index.zig | 2 +- std/os/get_app_data_dir.zig | 2 +- std/os/get_user_id.zig | 2 +- std/os/index.zig | 50 +- std/os/linux/index.zig | 2 +- std/os/netbsd/errno.zig | 134 ++ std/os/netbsd/index.zig | 725 +++++++++ std/os/path.zig | 4 +- std/os/time.zig | 10 +- std/priority_queue.zig | 331 ++++ std/special/bootstrap.zig | 13 +- std/special/compiler_rt/addXf3.zig | 191 +++ std/special/compiler_rt/addXf3_test.zig | 85 + std/special/compiler_rt/index.zig | 62 +- std/special/compiler_rt/truncXfYf2.zig | 4 + std/special/compiler_rt/truncXfYf2_test.zig | 68 + std/special/fmt_runner.zig | 260 ++++ std/testing.zig | 4 +- std/zig/parse.zig | 7 +- std/zig/parser_test.zig | 16 + std/zig/render.zig | 5 +- std/zig/tokenizer.zig | 23 +- test/build_examples.zig | 8 +- test/compile_errors.zig | 474 +++++- test/runtime_safety.zig | 51 + test/stage1/behavior.zig | 8 + test/stage1/behavior/bitcast.zig | 78 + test/stage1/behavior/bugs/1120.zig | 23 + test/stage1/behavior/bugs/1851.zig | 27 + test/stage1/behavior/bugs/2006.zig | 12 + test/stage1/behavior/bugs/421.zig | 16 + test/stage1/behavior/bugs/529.zig | 15 + test/stage1/behavior/bugs/529_other_file.zig | 5 + test/stage1/behavior/bugs/529_other_file_2.zig | 4 + test/stage1/behavior/bugs/704.zig | 7 + test/stage1/behavior/bugs/718.zig | 17 + test/stage1/behavior/pointers.zig | 82 + test/stage1/behavior/ptrcast.zig | 8 + test/stage1/behavior/slicetobytes.zig | 29 + test/stage1/behavior/struct.zig | 53 +- test/stage1/behavior/truncate.zig | 5 + test/stage1/behavior/type_info.zig | 15 + test/stage1/behavior/union.zig | 15 + test/stage1/behavior/vector.zig | 56 +- test/stage1/c_abi/build.zig | 5 +- test/tests.zig | 82 +- test/translate_c.zig | 100 +- 133 files changed, 11458 insertions(+), 4956 deletions(-)