CMakeLists.txt | 17 +- doc/langref/build.zig | 6 +- doc/langref/build_c.zig | 12 +- doc/langref/build_object.zig | 12 +- lib/compiler/build_runner.zig | 10 +- lib/compiler/objcopy.zig | 969 +-- lib/compiler/std-docs.zig | 45 +- lib/compiler/test_runner.zig | 39 +- lib/compiler_rt.zig | 4 +- lib/compiler_rt/addo.zig | 4 +- lib/compiler_rt/addoti4_test.zig | 3 + lib/compiler_rt/clear_cache.zig | 14 +- lib/compiler_rt/cmp.zig | 1 - lib/compiler_rt/common.zig | 7 +- lib/compiler_rt/comparedf2_test.zig | 1 - lib/compiler_rt/comparesf2_test.zig | 1 - lib/compiler_rt/count0bits.zig | 1 - lib/compiler_rt/divdf3.zig | 1 - lib/compiler_rt/divmodei4.zig | 4 +- lib/compiler_rt/fixint_test.zig | 1 - lib/compiler_rt/int.zig | 1 - lib/compiler_rt/memcpy.zig | 4 +- lib/compiler_rt/memmove.zig | 16 +- lib/compiler_rt/mulf3.zig | 4 +- lib/compiler_rt/rem_pio2_large.zig | 2 +- lib/compiler_rt/stack_probe.zig | 1 - lib/compiler_rt/suboti4_test.zig | 3 + lib/compiler_rt/udivmod.zig | 10 +- lib/compiler_rt/udivmodei4.zig | 5 +- lib/docs/wasm/main.zig | 6 +- lib/init/build.zig | 1 - lib/std/Build.zig | 227 +- lib/std/Build/Fuzz/WebServer.zig | 39 +- lib/std/Build/Step.zig | 59 +- lib/std/Build/Step/Compile.zig | 46 +- lib/std/Build/Step/Run.zig | 97 +- lib/std/Io.zig | 479 +- lib/std/Io/DeprecatedReader.zig | 8 +- lib/std/Io/DeprecatedWriter.zig | 7 +- lib/std/Io/Reader.zig | 140 +- lib/std/Io/Writer.zig | 113 +- lib/std/Io/buffered_atomic_file.zig | 55 - lib/std/Io/c_writer.zig | 44 - lib/std/Io/change_detection_stream.zig | 55 - lib/std/Io/find_byte_writer.zig | 40 - lib/std/Io/multi_writer.zig | 53 - lib/std/Io/stream_source.zig | 127 - lib/std/Progress.zig | 75 +- lib/std/builtin.zig | 7 +- lib/std/c.zig | 6 +- lib/std/compress.zig | 60 +- lib/std/compress/xz.zig | 49 +- lib/std/compress/xz/block.zig | 2 +- lib/std/compress/zstandard.zig | 310 - lib/std/compress/zstandard/decode/block.zig | 1149 --- lib/std/compress/zstandard/decode/fse.zig | 153 - lib/std/compress/zstandard/decode/huffman.zig | 234 - lib/std/compress/zstandard/decompress.zig | 633 -- lib/std/compress/zstandard/readers.zig | 82 - lib/std/compress/zstandard/types.zig | 403 -- lib/std/compress/zstd.zig | 152 + lib/std/compress/zstd/Decompress.zig | 1840 +++++ lib/std/crypto/md5.zig | 12 +- lib/std/elf.zig | 275 +- lib/std/fs/AtomicFile.zig | 98 +- lib/std/fs/Dir.zig | 180 +- lib/std/fs/File.zig | 317 +- lib/std/fs/test.zig | 86 +- lib/std/http/Server.zig | 3 +- lib/std/json.zig | 1 - lib/std/math.zig | 93 +- lib/std/math/big/int_test.zig | 1 - lib/std/math/float.zig | 6 +- lib/std/math/log10.zig | 1 - lib/std/mem.zig | 7 +- lib/std/os/linux.zig | 1 - lib/std/posix.zig | 319 +- lib/std/process/Child.zig | 81 +- lib/std/start.zig | 59 +- lib/std/tar.zig | 612 +- lib/std/tar/Writer.zig | 462 ++ lib/std/tar/test.zig | 350 +- lib/std/tar/writer.zig | 497 -- lib/std/testing.zig | 1 + lib/std/zig.zig | 39 +- src/Builtin.zig | 4 +- src/Compilation.zig | 315 +- src/InternPool.zig | 14 +- src/Package/Fetch.zig | 36 +- src/Package/Fetch/git.zig | 65 +- src/Package/Module.zig | 2 +- src/Sema.zig | 31 +- src/Type.zig | 2 +- src/Zcu.zig | 29 +- src/Zcu/PerThread.zig | 35 +- src/arch/aarch64/bits.zig | 2063 ------ src/arch/riscv64/CodeGen.zig | 10 +- src/arch/sparc64/CodeGen.zig | 4 +- src/arch/wasm/CodeGen.zig | 31 +- src/arch/x86_64/CodeGen.zig | 108 +- src/arch/x86_64/Emit.zig | 11 +- src/codegen.zig | 61 +- src/codegen/aarch64.zig | 205 + src/codegen/aarch64/Assemble.zig | 1682 +++++ src/codegen/aarch64/Disassemble.zig | 905 +++ src/codegen/aarch64/Mir.zig | 348 + src/codegen/aarch64/Select.zig | 12141 +++++++++++++++++++++++++++++++ src/codegen/aarch64/abi.zig | 20 +- src/codegen/aarch64/encoding.zig | 12194 ++++++++++++++++++++++++++++++++ src/codegen/aarch64/instructions.zon | 1543 ++++ src/codegen/c.zig | 33 +- src/codegen/llvm.zig | 17 +- src/codegen/spirv.zig | 6 +- src/dev.zig | 41 +- src/fmt.zig | 4 +- src/link.zig | 1 + src/link/Coff.zig | 76 +- src/link/Dwarf.zig | 8 +- src/link/Elf/Atom.zig | 70 +- src/link/Elf/Thunk.zig | 15 +- src/link/Elf/ZigObject.zig | 10 +- src/link/Elf/relocation.zig | 24 +- src/link/Elf/synthetic_sections.zig | 75 +- src/link/MachO.zig | 4 +- src/link/MachO/Atom.zig | 100 +- src/link/MachO/Thunk.zig | 10 +- src/link/MachO/ZigObject.zig | 10 +- src/link/MachO/synthetic.zig | 95 +- src/link/aarch64.zig | 64 +- src/main.zig | 151 +- src/target.zig | 30 +- stage1/wasm2c.c | 2 +- stage1/zig1.wasm | Bin 2889638 -> 2897241 bytes test/behavior.zig | 4 +- test/behavior/abs.zig | 10 +- test/behavior/align.zig | 20 +- test/behavior/array.zig | 42 +- test/behavior/asm.zig | 9 +- test/behavior/atomics.zig | 25 +- test/behavior/basic.zig | 22 +- test/behavior/bit_shifting.zig | 3 +- test/behavior/bitcast.zig | 21 +- test/behavior/bitreverse.zig | 8 +- test/behavior/builtin_functions_returning_void_or_noreturn.zig | 1 - test/behavior/byteswap.zig | 75 +- test/behavior/call.zig | 19 +- test/behavior/cast.zig | 118 +- test/behavior/cast_int.zig | 7 +- test/behavior/comptime_memory.zig | 2 - test/behavior/const_slice_child.zig | 1 - test/behavior/decl_literals.zig | 1 - test/behavior/defer.zig | 8 +- test/behavior/enum.zig | 29 +- test/behavior/error.zig | 25 +- test/behavior/eval.zig | 36 +- test/behavior/export_builtin.zig | 4 - test/behavior/field_parent_ptr.zig | 3 + test/behavior/floatop.zig | 86 +- test/behavior/fn.zig | 13 - test/behavior/for.zig | 20 - test/behavior/generics.zig | 19 +- test/behavior/globals.zig | 6 +- test/behavior/if.zig | 6 +- test/behavior/import_c_keywords.zig | 1 - test/behavior/inline_switch.zig | 9 - test/behavior/int128.zig | 5 - test/behavior/int_comparison_elision.zig | 1 - test/behavior/ir_block_deps.zig | 1 - test/behavior/lower_strlit_to_vector.zig | 1 - test/behavior/math.zig | 72 +- test/behavior/maximum_minimum.zig | 22 +- test/behavior/member_func.zig | 2 - test/behavior/memcpy.zig | 5 +- test/behavior/memmove.zig | 3 - test/behavior/memset.zig | 7 - test/behavior/muladd.zig | 14 +- test/behavior/multiple_externs_with_conflicting_types.zig | 1 - test/behavior/nan.zig | 1 - test/behavior/null.zig | 6 +- test/behavior/optional.zig | 20 +- test/behavior/packed-struct.zig | 46 +- test/behavior/packed-union.zig | 6 +- test/behavior/packed_struct_explicit_backing_int.zig | 1 - test/behavior/pointers.zig | 14 +- test/behavior/popcount.zig | 5 +- test/behavior/ptrcast.zig | 29 +- test/behavior/ptrfromint.zig | 3 - test/behavior/ref_var_in_if_after_if_2nd_switch_prong.zig | 1 - test/behavior/reflection.zig | 1 - test/behavior/return_address.zig | 1 - test/behavior/saturating_arithmetic.zig | 17 +- test/behavior/select.zig | 5 +- test/behavior/shuffle.zig | 8 +- test/behavior/sizeof_and_typeof.zig | 3 - test/behavior/slice.zig | 24 +- test/behavior/src.zig | 1 - test/behavior/string_literals.zig | 6 +- test/behavior/struct.zig | 59 +- test/behavior/struct_contains_null_ptr_itself.zig | 1 - test/behavior/struct_contains_slice_of_itself.zig | 3 +- test/behavior/switch.zig | 38 +- test/behavior/switch_loop.zig | 41 +- test/behavior/switch_on_captured_error.zig | 1 + test/behavior/switch_prong_err_enum.zig | 2 +- test/behavior/switch_prong_implicit_cast.zig | 2 +- test/behavior/this.zig | 2 - test/behavior/threadlocal.zig | 3 - test/behavior/truncate.zig | 2 +- test/behavior/try.zig | 82 +- test/behavior/tuple.zig | 22 +- test/behavior/tuple_declarations.zig | 2 - test/behavior/type.zig | 9 +- test/behavior/type_info.zig | 6 +- test/behavior/typename.zig | 8 - test/behavior/undefined.zig | 4 - test/behavior/union.zig | 104 +- test/behavior/union_with_members.zig | 1 - test/behavior/var_args.zig | 18 +- test/behavior/vector.zig | 98 +- test/behavior/void.zig | 1 - test/behavior/while.zig | 9 - test/behavior/widening.zig | 5 - test/c_import/macros.zig | 12 - test/cases/array_in_anon_struct.zig | 2 +- test/cases/compile_errors/callconv_interrupt_on_unsupported_platform.zig | 4 +- test/cases/compile_errors/error_set_membership.zig | 2 +- test/cases/compile_errors/function_ptr_alignment.zig | 2 +- test/cases/compile_errors/issue_15572_break_on_inline_while.zig | 2 +- test/cases/compile_errors/switch_on_non_err_union.zig | 2 +- test/cases/pic_freestanding.zig | 2 +- test/cases/safety/@alignCast misaligned.zig | 2 +- test/cases/safety/@enumFromInt - no matching tag value.zig | 2 +- test/cases/safety/@enumFromInt truncated bits - exhaustive.zig | 2 +- test/cases/safety/@enumFromInt truncated bits - nonexhaustive.zig | 2 +- test/cases/safety/@errorCast error not present in destination.zig | 2 +- test/cases/safety/@errorCast error union casted to disjoint set.zig | 2 +- test/cases/safety/@intCast to u0.zig | 2 +- test/cases/safety/@intFromFloat cannot fit - boundary case - i0 max.zig | 2 +- test/cases/safety/@intFromFloat cannot fit - boundary case - i0 min.zig | 2 +- test/cases/safety/@intFromFloat cannot fit - boundary case - signed max.zig | 2 +- test/cases/safety/@intFromFloat cannot fit - boundary case - signed min.zig | 2 +- test/cases/safety/@intFromFloat cannot fit - boundary case - u0 max.zig | 2 +- test/cases/safety/@intFromFloat cannot fit - boundary case - u0 min.zig | 2 +- test/cases/safety/@intFromFloat cannot fit - boundary case - unsigned max.zig | 2 +- test/cases/safety/@intFromFloat cannot fit - boundary case - unsigned min.zig | 2 +- test/cases/safety/@intFromFloat cannot fit - boundary case - vector max.zig | 2 +- test/cases/safety/@intFromFloat cannot fit - boundary case - vector min.zig | 2 +- test/cases/safety/@intFromFloat cannot fit - negative out of range.zig | 2 +- test/cases/safety/@intFromFloat cannot fit - negative to unsigned.zig | 2 +- test/cases/safety/@intFromFloat cannot fit - positive out of range.zig | 2 +- test/cases/safety/@ptrFromInt address zero to non-optional byte-aligned pointer.zig | 2 +- test/cases/safety/@ptrFromInt address zero to non-optional pointer.zig | 2 +- test/cases/safety/@ptrFromInt with misaligned address.zig | 2 +- test/cases/safety/@tagName on corrupted enum value.zig | 2 +- test/cases/safety/@tagName on corrupted union value.zig | 2 +- test/cases/safety/array slice sentinel mismatch vector.zig | 2 +- test/cases/safety/array slice sentinel mismatch.zig | 2 +- test/cases/safety/bad union field access.zig | 2 +- test/cases/safety/calling panic.zig | 2 +- test/cases/safety/cast []u8 to bigger slice of wrong size.zig | 2 +- test/cases/safety/cast integer to global error and no code matches.zig | 2 +- test/cases/safety/empty slice with sentinel out of bounds.zig | 2 +- test/cases/safety/exact division failure - vectors.zig | 2 +- test/cases/safety/exact division failure.zig | 2 +- test/cases/safety/for_len_mismatch.zig | 2 +- test/cases/safety/for_len_mismatch_three.zig | 2 +- test/cases/safety/ignored expression integer overflow.zig | 2 +- test/cases/safety/integer addition overflow.zig | 2 +- test/cases/safety/integer division by zero - vectors.zig | 2 +- test/cases/safety/integer division by zero.zig | 2 +- test/cases/safety/integer multiplication overflow.zig | 2 +- test/cases/safety/integer negation overflow.zig | 2 +- test/cases/safety/integer subtraction overflow.zig | 2 +- test/cases/safety/memcpy_alias.zig | 2 +- test/cases/safety/memcpy_len_mismatch.zig | 2 +- test/cases/safety/memmove_len_mismatch.zig | 2 +- test/cases/safety/memset_array_undefined_bytes.zig | 2 +- test/cases/safety/memset_array_undefined_large.zig | 2 +- test/cases/safety/memset_slice_undefined_bytes.zig | 2 +- test/cases/safety/memset_slice_undefined_large.zig | 2 +- test/cases/safety/modrem by zero.zig | 2 +- test/cases/safety/modulus by zero.zig | 2 +- test/cases/safety/noreturn returned.zig | 2 +- test/cases/safety/optional unwrap operator on C pointer.zig | 2 +- test/cases/safety/optional unwrap operator on null pointer.zig | 2 +- test/cases/safety/optional_empty_error_set.zig | 2 +- test/cases/safety/out of bounds array slice by length.zig | 2 +- test/cases/safety/out of bounds slice access.zig | 2 +- test/cases/safety/pointer casting null to non-optional pointer.zig | 2 +- test/cases/safety/pointer casting to null function pointer.zig | 2 +- test/cases/safety/pointer slice sentinel mismatch.zig | 2 +- test/cases/safety/remainder division by zero.zig | 2 +- test/cases/safety/shift left by huge amount.zig | 2 +- test/cases/safety/shift right by huge amount.zig | 2 +- test/cases/safety/signed integer division overflow - vectors.zig | 2 +- test/cases/safety/signed integer division overflow.zig | 2 +- test/cases/safety/signed integer not fitting in cast to unsigned integer - widening.zig | 2 +- test/cases/safety/signed integer not fitting in cast to unsigned integer.zig | 2 +- test/cases/safety/signed shift left overflow.zig | 2 +- test/cases/safety/signed shift right overflow.zig | 2 +- test/cases/safety/signed-unsigned vector cast.zig | 2 +- test/cases/safety/slice by length sentinel mismatch on lhs.zig | 2 +- test/cases/safety/slice by length sentinel mismatch on rhs.zig | 2 +- test/cases/safety/slice sentinel mismatch - floats.zig | 2 +- test/cases/safety/slice sentinel mismatch - optional pointers.zig | 2 +- test/cases/safety/slice slice sentinel mismatch.zig | 2 +- test/cases/safety/slice start index greater than end index.zig | 2 +- test/cases/safety/slice with sentinel out of bounds - runtime len.zig | 2 +- test/cases/safety/slice with sentinel out of bounds.zig | 2 +- test/cases/safety/slice_cast_change_len_0.zig | 2 +- test/cases/safety/slice_cast_change_len_1.zig | 2 +- test/cases/safety/slice_cast_change_len_2.zig | 2 +- test/cases/safety/slicing null C pointer - runtime len.zig | 2 +- test/cases/safety/slicing null C pointer.zig | 2 +- test/cases/safety/switch else on corrupt enum value - one prong.zig | 2 +- test/cases/safety/switch else on corrupt enum value - union.zig | 2 +- test/cases/safety/switch else on corrupt enum value.zig | 2 +- test/cases/safety/switch on corrupted enum value.zig | 2 +- test/cases/safety/switch on corrupted union value.zig | 2 +- test/cases/safety/truncating vector cast.zig | 2 +- test/cases/safety/unreachable.zig | 2 +- test/cases/safety/unsigned integer not fitting in cast to signed integer - same bit count.zig | 2 +- test/cases/safety/unsigned shift left overflow.zig | 2 +- test/cases/safety/unsigned shift right overflow.zig | 2 +- test/cases/safety/unsigned-signed vector cast.zig | 2 +- test/cases/safety/unwrap error switch.zig | 2 +- test/cases/safety/unwrap error.zig | 2 +- test/cases/safety/value does not fit in shortening cast - u0.zig | 2 +- test/cases/safety/value does not fit in shortening cast.zig | 2 +- test/cases/safety/vector integer addition overflow.zig | 2 +- test/cases/safety/vector integer multiplication overflow.zig | 2 +- test/cases/safety/vector integer negation overflow.zig | 2 +- test/cases/safety/vector integer subtraction overflow.zig | 2 +- test/cases/safety/zero casted to error.zig | 2 +- test/cases/taking_pointer_of_global_tagged_union.zig | 2 +- test/incremental/fix_many_errors | 71 - test/link/build.zig.zon | 3 +- test/link/elf.zig | 738 +- test/link/link.zig | 6 +- test/link/macho.zig | 246 +- test/link/wasm/extern/build.zig | 2 +- test/src/Cases.zig | 10 +- test/src/RunTranslatedC.zig | 2 +- test/standalone/build.zig.zon | 5 +- test/standalone/c_embed_path/build.zig | 6 +- test/standalone/dependencyFromBuildZig/build.zig.zon | 3 +- test/standalone/dependencyFromBuildZig/other/build.zig.zon | 3 +- test/standalone/dependency_options/build.zig | 148 + test/standalone/dependency_options/build.zig.zon | 11 + test/standalone/dependency_options/other/build.zig | 59 + test/standalone/dependency_options/other/build.zig.zon | 7 + test/standalone/extern/build.zig | 4 +- test/standalone/issue_794/build.zig | 2 +- test/standalone/stack_iterator/build.zig | 127 +- test/tests.zig | 73 +- tools/docgen.zig | 1 - tools/gen_stubs.zig | 3 +- tools/incr-check.zig | 63 +- 358 files changed, 35966 insertions(+), 11528 deletions(-)