aboutsummaryrefslogtreecommitdiffstats
path: root/epubs/zig-0.1.1.epub
blob: 42c91ecb950a37b2d95d475a3be59daa7a0816e7 (plain)
ofshex dumpascii
0000 50 4b 03 04 14 00 00 00 00 00 00 00 21 52 6f 61 ab 2c 14 00 00 00 14 00 00 00 08 00 00 00 6d 69 PK..........!Roa.,............mi
0020 6d 65 74 79 70 65 61 70 70 6c 69 63 61 74 69 6f 6e 2f 65 70 75 62 2b 7a 69 70 50 4b 03 04 14 00 metypeapplication/epub+zipPK....
0040 00 00 00 00 00 00 21 52 6f 92 d0 0a fc 00 00 00 fc 00 00 00 16 00 00 00 4d 45 54 41 2d 49 4e 46 ......!Ro...............META-INF
0060 2f 63 6f 6e 74 61 69 6e 65 72 2e 78 6d 6c 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 /container.xml<?xml.version="1.0
0080 22 20 65 6e 63 6f 64 69 6e 67 3d 22 75 74 66 2d 38 22 3f 3e 0a 3c 63 6f 6e 74 61 69 6e 65 72 20 ".encoding="utf-8"?>.<container.
00a0 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 78 6d 6c 6e 73 3d 22 75 72 6e 3a 6f 61 73 69 73 3a 6e version="1.0".xmlns="urn:oasis:n
00c0 61 6d 65 73 3a 74 63 3a 6f 70 65 6e 64 6f 63 75 6d 65 6e 74 3a 78 6d 6c 6e 73 3a 63 6f 6e 74 61 ames:tc:opendocument:xmlns:conta
00e0 69 6e 65 72 22 3e 0a 20 20 3c 72 6f 6f 74 66 69 6c 65 73 3e 0a 20 20 20 20 3c 72 6f 6f 74 66 69 iner">...<rootfiles>.....<rootfi
0100 6c 65 20 66 75 6c 6c 2d 70 61 74 68 3d 22 4f 45 42 50 53 2f 63 6f 6e 74 65 6e 74 2e 6f 70 66 22 le.full-path="OEBPS/content.opf"
0120 20 6d 65 64 69 61 2d 74 79 70 65 3d 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6f 65 62 70 73 2d 70 .media-type="application/oebps-p
0140 61 63 6b 61 67 65 2b 78 6d 6c 22 2f 3e 0a 20 20 3c 2f 72 6f 6f 74 66 69 6c 65 73 3e 0a 3c 2f 63 ackage+xml"/>...</rootfiles>.</c
0160 6f 6e 74 61 69 6e 65 72 3e 0a 50 4b 03 04 14 00 00 00 00 00 00 00 21 52 f7 75 ad 9d a7 02 00 00 ontainer>.PK..........!R.u......
0180 a7 02 00 00 11 00 00 00 4f 45 42 50 53 2f 63 6f 6e 74 65 6e 74 2e 6f 70 66 3c 3f 78 6d 6c 20 76 ........OEBPS/content.opf<?xml.v
01a0 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 75 74 66 2d 38 22 3f 3e 0a ersion="1.0".encoding="utf-8"?>.
01c0 3c 70 61 63 6b 61 67 65 20 78 6d 6c 6e 73 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 69 64 70 66 2e <package.xmlns="http://www.idpf.
01e0 6f 72 67 2f 32 30 30 37 2f 6f 70 66 22 20 76 65 72 73 69 6f 6e 3d 22 33 2e 30 22 20 75 6e 69 71 org/2007/opf".version="3.0".uniq
0200 75 65 2d 69 64 65 6e 74 69 66 69 65 72 3d 22 70 75 62 2d 69 64 22 3e 0a 20 20 3c 6d 65 74 61 64 ue-identifier="pub-id">...<metad
0220 61 74 61 20 78 6d 6c 6e 73 3a 64 63 3d 22 68 74 74 70 3a 2f 2f 70 75 72 6c 2e 6f 72 67 2f 64 63 ata.xmlns:dc="http://purl.org/dc
0240 2f 65 6c 65 6d 65 6e 74 73 2f 31 2e 31 2f 22 3e 0a 20 20 20 20 3c 64 63 3a 69 64 65 6e 74 69 66 /elements/1.1/">.....<dc:identif
0260 69 65 72 20 69 64 3d 22 70 75 62 2d 69 64 22 3e 75 72 6e 3a 7a 69 67 6c 61 6e 67 2d 64 6f 63 73 ier.id="pub-id">urn:ziglang-docs
0280 3a 30 2e 31 2e 31 3c 2f 64 63 3a 69 64 65 6e 74 69 66 69 65 72 3e 0a 20 20 20 20 3c 64 63 3a 74 :0.1.1</dc:identifier>.....<dc:t
02a0 69 74 6c 65 3e 5a 69 67 20 4c 61 6e 67 75 61 67 65 20 52 65 66 65 72 65 6e 63 65 20 28 30 2e 31 itle>Zig.Language.Reference.(0.1
02c0 2e 31 29 3c 2f 64 63 3a 74 69 74 6c 65 3e 0a 20 20 20 20 3c 64 63 3a 6c 61 6e 67 75 61 67 65 3e .1)</dc:title>.....<dc:language>
02e0 65 6e 3c 2f 64 63 3a 6c 61 6e 67 75 61 67 65 3e 0a 20 20 20 20 3c 6d 65 74 61 20 70 72 6f 70 65 en</dc:language>.....<meta.prope
0300 72 74 79 3d 22 64 63 74 65 72 6d 73 3a 6d 6f 64 69 66 69 65 64 22 3e 32 30 32 31 2d 30 31 2d 30 rty="dcterms:modified">2021-01-0
0320 31 54 30 30 3a 30 30 3a 30 30 5a 3c 2f 6d 65 74 61 3e 0a 20 20 3c 2f 6d 65 74 61 64 61 74 61 3e 1T00:00:00Z</meta>...</metadata>
0340 0a 20 20 3c 6d 61 6e 69 66 65 73 74 3e 0a 20 20 20 20 3c 69 74 65 6d 20 69 64 3d 22 6e 61 76 22 ...<manifest>.....<item.id="nav"
0360 20 68 72 65 66 3d 22 6e 61 76 2e 78 68 74 6d 6c 22 20 6d 65 64 69 61 2d 74 79 70 65 3d 22 61 70 .href="nav.xhtml".media-type="ap
0380 70 6c 69 63 61 74 69 6f 6e 2f 78 68 74 6d 6c 2b 78 6d 6c 22 20 70 72 6f 70 65 72 74 69 65 73 3d plication/xhtml+xml".properties=
03a0 22 6e 61 76 22 2f 3e 0a 20 20 20 20 3c 69 74 65 6d 20 69 64 3d 22 69 6e 64 65 78 22 20 68 72 65 "nav"/>.....<item.id="index".hre
03c0 66 3d 22 69 6e 64 65 78 2e 78 68 74 6d 6c 22 20 6d 65 64 69 61 2d 74 79 70 65 3d 22 61 70 70 6c f="index.xhtml".media-type="appl
03e0 69 63 61 74 69 6f 6e 2f 78 68 74 6d 6c 2b 78 6d 6c 22 2f 3e 0a 20 20 3c 2f 6d 61 6e 69 66 65 73 ication/xhtml+xml"/>...</manifes
0400 74 3e 0a 20 20 3c 73 70 69 6e 65 3e 0a 20 20 20 20 3c 69 74 65 6d 72 65 66 20 69 64 72 65 66 3d t>...<spine>.....<itemref.idref=
0420 22 69 6e 64 65 78 22 2f 3e 0a 20 20 3c 2f 73 70 69 6e 65 3e 0a 3c 2f 70 61 63 6b 61 67 65 3e 0a "index"/>...</spine>.</package>.
0440 50 4b 03 04 14 00 00 00 00 00 00 00 21 52 73 54 30 2e 86 01 00 00 86 01 00 00 0f 00 00 00 4f 45 PK..........!RsT0.............OE
0460 42 50 53 2f 6e 61 76 2e 78 68 74 6d 6c 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 BPS/nav.xhtml<?xml.version="1.0"
0480 20 65 6e 63 6f 64 69 6e 67 3d 22 75 74 66 2d 38 22 3f 3e 0a 3c 68 74 6d 6c 20 78 6d 6c 6e 73 3d .encoding="utf-8"?>.<html.xmlns=
04a0 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 31 39 39 39 2f 78 68 74 6d 6c 22 20 78 "http://www.w3.org/1999/xhtml".x
04c0 6d 6c 6e 73 3a 65 70 75 62 3d 22 68 74 74 70 3a 2f 2f 77 77 77 2e 69 64 70 66 2e 6f 72 67 2f 32 mlns:epub="http://www.idpf.org/2
04e0 30 30 37 2f 6f 70 73 22 20 6c 61 6e 67 3d 22 65 6e 22 3e 0a 20 20 3c 68 65 61 64 3e 3c 74 69 74 007/ops".lang="en">...<head><tit
0500 6c 65 3e 5a 69 67 20 4c 61 6e 67 75 61 67 65 20 52 65 66 65 72 65 6e 63 65 20 28 30 2e 31 2e 31 le>Zig.Language.Reference.(0.1.1
0520 29 3c 2f 74 69 74 6c 65 3e 3c 2f 68 65 61 64 3e 0a 20 20 3c 62 6f 64 79 3e 0a 20 20 20 20 3c 6e )</title></head>...<body>.....<n
0540 61 76 20 65 70 75 62 3a 74 79 70 65 3d 22 74 6f 63 22 20 69 64 3d 22 74 6f 63 22 3e 0a 20 20 20 av.epub:type="toc".id="toc">....
0560 20 20 20 3c 68 31 3e 43 6f 6e 74 65 6e 74 73 3c 2f 68 31 3e 0a 20 20 20 20 20 20 3c 6f 6c 3e 0a ...<h1>Contents</h1>.......<ol>.
0580 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 69 6e 64 65 78 2e 78 68 74 6d 6c ........<li><a.href="index.xhtml
05a0 22 3e 5a 69 67 20 4c 61 6e 67 75 61 67 65 20 52 65 66 65 72 65 6e 63 65 20 28 30 2e 31 2e 31 29 ">Zig.Language.Reference.(0.1.1)
05c0 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 6f 6c 3e 0a 20 20 20 20 3c 2f 6e 61 76 3e </a></li>.......</ol>.....</nav>
05e0 0a 20 20 3c 2f 62 6f 64 79 3e 0a 3c 2f 68 74 6d 6c 3e 0a 50 4b 03 04 14 00 00 00 00 00 00 00 21 ...</body>.</html>.PK..........!
0600 52 99 93 6f 87 10 0d 03 00 10 0d 03 00 11 00 00 00 4f 45 42 50 53 2f 69 6e 64 65 78 2e 78 68 74 R..o.............OEBPS/index.xht
0620 6d 6c 3c 3f 78 6d 6c 20 76 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 ml<?xml.version="1.0".encoding="
0640 75 74 66 2d 38 22 3f 3e 0a 0a 3c 68 74 6d 6c 20 78 6d 6c 6e 73 3d 22 68 74 74 70 3a 2f 2f 77 77 utf-8"?>..<html.xmlns="http://ww
0660 77 2e 77 33 2e 6f 72 67 2f 31 39 39 39 2f 78 68 74 6d 6c 22 3e 0a 20 20 3c 68 65 61 64 3e 0a 20 w.w3.org/1999/xhtml">...<head>..
0680 20 20 20 3c 6d 65 74 61 20 63 68 61 72 73 65 74 3d 22 75 74 66 2d 38 22 2f 3e 0a 20 20 20 20 3c ...<meta.charset="utf-8"/>.....<
06a0 74 69 74 6c 65 3e 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 2d 20 54 68 65 20 5a 69 67 20 50 72 title>Documentation.-.The.Zig.Pr
06c0 6f 67 72 61 6d 6d 69 6e 67 20 4c 61 6e 67 75 61 67 65 3c 2f 74 69 74 6c 65 3e 0a 20 20 20 20 3c ogramming.Language</title>.....<
06e0 6c 69 6e 6b 20 72 65 6c 3d 22 73 74 79 6c 65 73 68 65 65 74 22 20 74 79 70 65 3d 22 74 65 78 74 link.rel="stylesheet".type="text
0700 2f 63 73 73 22 20 68 72 65 66 3d 22 68 69 67 68 6c 69 67 68 74 2f 73 74 79 6c 65 73 2f 64 65 66 /css".href="highlight/styles/def
0720 61 75 6c 74 2e 63 73 73 22 2f 3e 0a 20 20 20 20 3c 73 74 79 6c 65 20 74 79 70 65 3d 22 74 65 78 ault.css"/>.....<style.type="tex
0740 74 2f 63 73 73 22 3e 0a 20 20 20 20 20 20 23 6e 61 76 20 7b 0a 20 20 20 20 20 20 20 20 77 69 64 t/css">.......#nav.{.........wid
0760 74 68 3a 20 32 30 65 6d 3b 0a 20 20 20 20 20 20 20 20 68 65 69 67 68 74 3a 20 31 30 30 25 3b 0a th:.20em;.........height:.100%;.
0780 20 20 20 20 20 20 20 20 6f 76 65 72 66 6c 6f 77 2d 79 3a 20 73 63 72 6f 6c 6c 3b 0a 20 20 20 20 ........overflow-y:.scroll;.....
07a0 20 20 20 20 70 6f 73 69 74 69 6f 6e 3a 20 66 69 78 65 64 3b 0a 20 20 20 20 20 20 20 20 6c 65 66 ....position:.fixed;.........lef
07c0 74 3a 20 30 3b 0a 20 20 20 20 20 20 20 20 74 6f 70 3a 20 32 65 6d 3b 0a 20 20 20 20 20 20 7d 0a t:.0;.........top:.2em;.......}.
07e0 20 20 20 20 20 20 23 63 6f 6e 74 65 6e 74 73 20 7b 0a 20 20 20 20 20 20 20 20 6d 61 78 2d 77 69 ......#contents.{.........max-wi
0800 64 74 68 3a 20 35 30 65 6d 3b 0a 20 20 20 20 20 20 20 20 70 61 64 64 69 6e 67 2d 6c 65 66 74 3a dth:.50em;.........padding-left:
0820 20 32 32 65 6d 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 74 61 62 6c 65 2c 20 74 68 2c 20 .22em;.......}.......table,.th,.
0840 74 64 20 7b 0a 20 20 20 20 20 20 20 20 62 6f 72 64 65 72 2d 63 6f 6c 6c 61 70 73 65 3a 20 63 6f td.{.........border-collapse:.co
0860 6c 6c 61 70 73 65 3b 0a 20 20 20 20 20 20 20 20 62 6f 72 64 65 72 3a 20 31 70 78 20 73 6f 6c 69 llapse;.........border:.1px.soli
0880 64 20 67 72 65 79 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 74 68 2c 20 74 64 20 7b 0a 20 d.grey;.......}.......th,.td.{..
08a0 20 20 20 20 20 20 20 70 61 64 64 69 6e 67 3a 20 30 2e 31 65 6d 3b 0a 20 20 20 20 20 20 7d 0a 20 .......padding:.0.1em;.......}..
08c0 20 20 20 3c 2f 73 74 79 6c 65 3e 0a 20 20 3c 2f 68 65 61 64 3e 0a 20 20 3c 62 6f 64 79 3e 0a 20 ...</style>...</head>...<body>..
08e0 20 20 20 30 2e 31 2e 31 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c ...0.1.1.|.<a.href="https://zigl
0900 61 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 32 2e 30 2f 22 3e 30 2e ang.org/documentation/0.2.0/">0.
0920 32 2e 30 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 2.0</a>.|.<a.href="https://zigla
0940 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 33 2e 30 2f 22 3e 30 2e 33 ng.org/documentation/0.3.0/">0.3
0960 2e 30 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e .0</a>.|.<a.href="https://ziglan
0980 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 34 2e 30 2f 22 3e 30 2e 34 2e g.org/documentation/0.4.0/">0.4.
09a0 30 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 0</a>.|.<a.href="https://ziglang
09c0 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 35 2e 30 2f 22 3e 30 2e 35 2e 30 .org/documentation/0.5.0/">0.5.0
09e0 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e </a>.|.<a.href="https://ziglang.
0a00 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 36 2e 30 2f 22 3e 30 2e 36 2e 30 3c org/documentation/0.6.0/">0.6.0<
0a20 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f /a>.|.<a.href="https://ziglang.o
0a40 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 37 2e 31 2f 22 3e 30 2e 37 2e 31 3c 2f rg/documentation/0.7.1/">0.7.1</
0a60 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 a>.|.<a.href="https://ziglang.or
0a80 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 38 2e 31 2f 22 3e 30 2e 38 2e 31 3c 2f 61 g/documentation/0.8.1/">0.8.1</a
0aa0 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 >.|.<a.href="https://ziglang.org
0ac0 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 39 2e 31 2f 22 3e 30 2e 39 2e 31 3c 2f 61 3e /documentation/0.9.1/">0.9.1</a>
0ae0 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 2f .|.<a.href="https://ziglang.org/
0b00 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 31 30 2e 31 2f 22 3e 30 2e 31 30 2e 31 3c 2f 61 documentation/0.10.1/">0.10.1</a
0b20 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 67 >.|.<a.href="https://ziglang.org
0b40 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 31 31 2e 30 2f 22 3e 30 2e 31 31 2e 30 3c 2f /documentation/0.11.0/">0.11.0</
0b60 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f 72 a>.|.<a.href="https://ziglang.or
0b80 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 31 32 2e 31 2f 22 3e 30 2e 31 32 2e 31 3c g/documentation/0.12.1/">0.12.1<
0ba0 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e 6f /a>.|.<a.href="https://ziglang.o
0bc0 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 31 33 2e 30 2f 22 3e 30 2e 31 33 2e 30 rg/documentation/0.13.0/">0.13.0
0be0 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 2e </a>.|.<a.href="https://ziglang.
0c00 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 31 34 2e 31 2f 22 3e 30 2e 31 34 2e org/documentation/0.14.1/">0.14.
0c20 31 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e 67 1</a>.|.<a.href="https://ziglang
0c40 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 31 35 2e 32 2f 22 3e 30 2e 31 35 .org/documentation/0.15.2/">0.15
0c60 2e 32 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6e .2</a>.|.<a.href="https://ziglan
0c80 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 30 2e 31 36 2e 30 2f 22 3e 30 2e 31 g.org/documentation/0.16.0/">0.1
0ca0 36 2e 30 3c 2f 61 3e 20 7c 0a 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 7a 69 67 6c 61 6.0</a>.|.<a.href="https://zigla
0cc0 6e 67 2e 6f 72 67 2f 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2f 6d 61 73 74 65 72 2f 22 3e 6d 61 ng.org/documentation/master/">ma
0ce0 73 74 65 72 3c 2f 61 3e 0a 20 20 20 20 3c 64 69 76 20 69 64 3d 22 6e 61 76 22 3e 0a 20 20 20 20 ster</a>.....<div.id="nav">.....
0d00 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 68 65 6c ..<ul>.........<li><a.href="#hel
0d20 6c 6f 2d 77 6f 72 6c 64 22 3e 48 65 6c 6c 6f 20 57 6f 72 6c 64 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 lo-world">Hello.World</a></li>..
0d40 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 76 61 6c 75 65 73 22 3e 56 61 6c .......<li><a.href="#values">Val
0d60 75 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 ues</a></li>...........<ul>.....
0d80 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 70 72 69 6d 69 74 69 76 65 2d ........<li><a.href="#primitive-
0da0 74 79 70 65 73 22 3e 50 72 69 6d 69 74 69 76 65 20 54 79 70 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a types">Primitive.Types</a></li>.
0dc0 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 70 72 69 6d 69 74 ............<li><a.href="#primit
0de0 69 76 65 2d 76 61 6c 75 65 73 22 3e 50 72 69 6d 69 74 69 76 65 20 56 61 6c 75 65 73 3c 2f 61 3e ive-values">Primitive.Values</a>
0e00 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 </li>.............<li><a.href="#
0e20 73 74 72 69 6e 67 2d 6c 69 74 65 72 61 6c 73 22 3e 53 74 72 69 6e 67 20 4c 69 74 65 72 61 6c 73 string-literals">String.Literals
0e40 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 </a>...............<ul>.........
0e60 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 74 72 69 6e 67 2d 6c 69 74 65 72 ......<li><a.href="#string-liter
0e80 61 6c 2d 65 73 63 61 70 65 73 22 3e 45 73 63 61 70 65 20 53 65 71 75 65 6e 63 65 73 3c 2f 61 3e al-escapes">Escape.Sequences</a>
0ea0 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d </li>...............<li><a.href=
0ec0 22 23 6d 75 6c 74 69 6c 69 6e 65 2d 73 74 72 69 6e 67 2d 6c 69 74 65 72 61 6c 73 22 3e 4d 75 6c "#multiline-string-literals">Mul
0ee0 74 69 6c 69 6e 65 20 53 74 72 69 6e 67 20 4c 69 74 65 72 61 6c 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a tiline.String.Literals</a></li>.
0f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ..............</ul>.............
0f20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 </li>.............<li><a.href="#
0f40 76 61 6c 75 65 73 2d 61 73 73 69 67 6e 6d 65 6e 74 22 3e 41 73 73 69 67 6e 6d 65 6e 74 3c 2f 61 values-assignment">Assignment</a
0f60 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c ></li>...........</ul>.........<
0f80 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 /li>.........<li><a.href="#integ
0fa0 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e ers">Integers</a>...........<ul>
0fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 .............<li><a.href="#integ
0fe0 65 72 2d 6c 69 74 65 72 61 6c 73 22 3e 49 6e 74 65 67 65 72 20 4c 69 74 65 72 61 6c 73 3c 2f 61 er-literals">Integer.Literals</a
1000 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 ></li>.............<li><a.href="
1020 23 72 75 6e 74 69 6d 65 2d 69 6e 74 65 67 65 72 2d 76 61 6c 75 65 73 22 3e 52 75 6e 74 69 6d 65 #runtime-integer-values">Runtime
1040 20 49 6e 74 65 67 65 72 20 56 61 6c 75 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 .Integer.Values</a></li>........
1060 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c ...</ul>.........</li>.........<
1080 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c 2f 61 3e 0a li><a.href="#floats">Floats</a>.
10a0 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c ..........<ul>.............<li><
10c0 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 2d 6c 69 74 65 72 61 6c 73 22 3e 46 6c 6f 61 74 20 4c a.href="#float-literals">Float.L
10e0 69 74 65 72 61 6c 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 iterals</a></li>.............<li
1100 3e 3c 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 2d 6f 70 65 72 61 74 69 6f 6e 73 22 3e 46 6c 6f ><a.href="#float-operations">Flo
1120 61 74 69 6e 67 20 50 6f 69 6e 74 20 4f 70 65 72 61 74 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a ating.Point.Operations</a></li>.
1140 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 ..........</ul>.........</li>...
1160 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6f 70 65 72 61 74 6f 72 73 22 3e 4f ......<li><a.href="#operators">O
1180 70 65 72 61 74 6f 72 73 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 perators</a>...........<ul>.....
11a0 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6f 70 65 72 61 74 6f 72 73 2d ........<li><a.href="#operators-
11c0 74 61 62 6c 65 22 3e 54 61 62 6c 65 20 6f 66 20 4f 70 65 72 61 74 6f 72 73 3c 2f 61 3e 3c 2f 6c table">Table.of.Operators</a></l
11e0 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6f 70 65 i>.............<li><a.href="#ope
1200 72 61 74 6f 72 73 2d 70 72 65 63 65 64 65 6e 63 65 22 3e 50 72 65 63 65 64 65 6e 63 65 3c 2f 61 rators-precedence">Precedence</a
1220 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c ></li>...........</ul>.........<
1240 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 61 72 72 61 79 /li>.........<li><a.href="#array
1260 73 22 3e 41 72 72 61 79 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c s">Arrays</a></li>.........<li><
1280 61 20 68 72 65 66 3d 22 23 70 6f 69 6e 74 65 72 73 22 3e 50 6f 69 6e 74 65 72 73 3c 2f 61 3e 0a a.href="#pointers">Pointers</a>.
12a0 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c ..........<ul>.............<li><
12c0 61 20 68 72 65 66 3d 22 23 61 6c 69 67 6e 6d 65 6e 74 22 3e 41 6c 69 67 6e 6d 65 6e 74 3c 2f 61 a.href="#alignment">Alignment</a
12e0 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 ></li>.............<li><a.href="
1300 23 74 79 70 65 2d 62 61 73 65 64 2d 61 6c 69 61 73 2d 61 6e 61 6c 79 73 69 73 22 3e 54 79 70 65 #type-based-alias-analysis">Type
1320 20 42 61 73 65 64 20 41 6c 69 61 73 20 41 6e 61 6c 79 73 69 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 .Based.Alias.Analysis</a></li>..
1340 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 .........</ul>.........</li>....
1360 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 6c 69 63 65 73 22 3e 53 6c 69 63 65 .....<li><a.href="#slices">Slice
1380 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 s</a></li>.........<li><a.href="
13a0 23 73 74 72 75 63 74 22 3e 73 74 72 75 63 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 #struct">struct</a></li>........
13c0 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 65 6e 75 6d 22 3e 65 6e 75 6d 3c 2f 61 3e 3c 2f 6c .<li><a.href="#enum">enum</a></l
13e0 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 77 69 74 63 68 22 i>.........<li><a.href="#switch"
1400 3e 73 77 69 74 63 68 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 >switch</a></li>.........<li><a.
1420 68 72 65 66 3d 22 23 77 68 69 6c 65 22 3e 77 68 69 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 href="#while">while</a></li>....
1440 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 6f 72 22 3e 66 6f 72 3c 2f 61 3e 3c .....<li><a.href="#for">for</a><
1460 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 66 22 3e 69 /li>.........<li><a.href="#if">i
1480 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 f</a></li>.........<li><a.href="
14a0 23 67 6f 74 6f 22 3e 67 6f 74 6f 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 #goto">goto</a></li>.........<li
14c0 3e 3c 61 20 68 72 65 66 3d 22 23 64 65 66 65 72 22 3e 64 65 66 65 72 3c 2f 61 3e 3c 2f 6c 69 3e ><a.href="#defer">defer</a></li>
14e0 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 72 65 61 63 68 61 62 .........<li><a.href="#unreachab
1500 6c 65 22 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 75 le">unreachable</a>...........<u
1520 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 72 l>.............<li><a.href="#unr
1540 65 61 63 68 61 62 6c 65 2d 62 61 73 69 63 73 22 3e 42 61 73 69 63 73 3c 2f 61 3e 3c 2f 6c 69 3e eachable-basics">Basics</a></li>
1560 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 72 65 61 .............<li><a.href="#unrea
1580 63 68 61 62 6c 65 2d 63 6f 6d 70 74 69 6d 65 22 3e 41 74 20 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 chable-comptime">At.Compile-Time
15a0 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 </a></li>...........</ul>.......
15c0 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6e 6f ..</li>.........<li><a.href="#no
15e0 72 65 74 75 72 6e 22 3e 6e 6f 72 65 74 75 72 6e 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 return">noreturn</a></li>.......
1600 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 75 6e 63 74 69 6f 6e 73 22 3e 46 75 6e 63 74 ..<li><a.href="#functions">Funct
1620 69 6f 6e 73 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 ions</a>...........<ul>.........
1640 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 75 6e 63 74 69 6f 6e 73 2d 62 79 2d 76 ....<li><a.href="#functions-by-v
1660 61 6c 2d 70 61 72 61 6d 73 22 3e 50 61 73 73 2d 62 79 2d 76 61 6c 20 50 61 72 61 6d 65 74 65 72 al-params">Pass-by-val.Parameter
1680 73 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 2f s</a>...........</ul>.........</
16a0 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 65 72 72 6f 72 73 li>.........<li><a.href="#errors
16c0 22 3e 45 72 72 6f 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 ">Errors</a></li>.........<li><a
16e0 20 68 72 65 66 3d 22 23 6e 75 6c 6c 61 62 6c 65 73 22 3e 4e 75 6c 6c 61 62 6c 65 73 3c 2f 61 3e .href="#nullables">Nullables</a>
1700 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 61 73 74 </li>.........<li><a.href="#cast
1720 69 6e 67 22 3e 43 61 73 74 69 6e 67 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c ing">Casting</a></li>.........<l
1740 69 3e 3c 61 20 68 72 65 66 3d 22 23 76 6f 69 64 22 3e 76 6f 69 64 3c 2f 61 3e 3c 2f 6c 69 3e 0a i><a.href="#void">void</a></li>.
1760 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 74 68 69 73 22 3e 74 68 69 73 ........<li><a.href="#this">this
1780 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 </a></li>.........<li><a.href="#
17a0 63 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d 70 74 69 6d 65 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 comptime">comptime</a>..........
17c0 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 .<ul>.............<li><a.href="#
17e0 69 6e 74 72 6f 64 75 63 69 6e 67 2d 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2d 63 6f 6e 63 65 70 74 introducing-compile-time-concept
1800 22 3e 49 6e 74 72 6f 64 75 63 69 6e 67 20 74 68 65 20 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 20 43 ">Introducing.the.Compile-Time.C
1820 6f 6e 63 65 70 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e oncept</a></li>.............<ul>
1840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d ...............<li><a.href="#com
1860 70 69 6c 65 2d 74 69 6d 65 2d 70 61 72 61 6d 65 74 65 72 73 22 3e 43 6f 6d 70 69 6c 65 2d 74 69 pile-time-parameters">Compile-ti
1880 6d 65 20 70 61 72 61 6d 65 74 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 me.parameters</a></li>..........
18a0 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2d .....<li><a.href="#compile-time-
18c0 76 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 76 61 72 69 61 62 6c 65 variables">Compile-time.variable
18e0 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 s</a></li>...............<li><a.
1900 68 72 65 66 3d 22 23 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2d 65 78 70 72 65 73 73 69 6f 6e 73 22 href="#compile-time-expressions"
1920 3e 43 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 65 78 70 72 65 73 73 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c >Compile-time.expressions</a></l
1940 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 i>.............</ul>............
1960 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 67 65 6e 65 72 69 63 2d 64 61 74 61 2d 73 74 72 75 .<li><a.href="#generic-data-stru
1980 63 74 75 72 65 73 22 3e 47 65 6e 65 72 69 63 20 44 61 74 61 20 53 74 72 75 63 74 75 72 65 73 3c ctures">Generic.Data.Structures<
19a0 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 /a></li>.............<li><a.href
19c0 3d 22 23 63 61 73 65 2d 73 74 75 64 79 2d 70 72 69 6e 74 66 22 3e 43 61 73 65 20 53 74 75 64 79 ="#case-study-printf">Case.Study
19e0 3a 20 70 72 69 6e 74 66 20 69 6e 20 5a 69 67 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 :.printf.in.Zig</a></li>........
1a00 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c ...</ul>.........</li>.........<
1a20 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 6c 69 6e 65 22 3e 69 6e 6c 69 6e 65 3c 2f 61 3e 3c li><a.href="#inline">inline</a><
1a40 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 61 73 73 65 6d /li>.........<li><a.href="#assem
1a60 62 6c 79 22 3e 61 73 73 65 6d 62 6c 79 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c bly">assembly</a></li>.........<
1a80 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 61 74 6f 6d 69 63 73 22 3e 41 74 6f 6d 69 63 73 3c 2f 61 li><a.href="#atomics">Atomics</a
1aa0 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 ></li>.........<li><a.href="#bui
1ac0 6c 74 69 6e 2d 66 75 6e 63 74 69 6f 6e 73 22 3e 42 75 69 6c 74 69 6e 20 46 75 6e 63 74 69 6f 6e ltin-functions">Builtin.Function
1ae0 73 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 s</a>...........<ul>............
1b00 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 61 64 64 57 69 74 68 4f 76 .<li><a.href="#builtin-addWithOv
1b20 65 72 66 6c 6f 77 22 3e 40 61 64 64 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 erflow">@addWithOverflow</a></li
1b40 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c >.............<li><a.href="#buil
1b60 74 69 6e 2d 61 6c 69 67 6e 43 61 73 74 22 3e 40 61 6c 69 67 6e 43 61 73 74 3c 2f 61 3e 3c 2f 6c tin-alignCast">@alignCast</a></l
1b80 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 i>.............<li><a.href="#bui
1ba0 6c 74 69 6e 2d 61 6c 69 67 6e 4f 66 22 3e 40 61 6c 69 67 6e 4f 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a ltin-alignOf">@alignOf</a></li>.
1bc0 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 ............<li><a.href="#builti
1be0 6e 2d 62 69 74 43 61 73 74 22 3e 40 62 69 74 43 61 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 n-bitCast">@bitCast</a></li>....
1c00 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 62 .........<li><a.href="#builtin-b
1c20 72 65 61 6b 70 6f 69 6e 74 22 3e 40 62 72 65 61 6b 70 6f 69 6e 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a reakpoint">@breakpoint</a></li>.
1c40 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 ............<li><a.href="#builti
1c60 6e 2d 63 44 65 66 69 6e 65 22 3e 40 63 44 65 66 69 6e 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 n-cDefine">@cDefine</a></li>....
1c80 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 .........<li><a.href="#builtin-c
1ca0 49 6d 70 6f 72 74 22 3e 40 63 49 6d 70 6f 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 Import">@cImport</a></li>.......
1cc0 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 49 6e 63 ......<li><a.href="#builtin-cInc
1ce0 6c 75 64 65 22 3e 40 63 49 6e 63 6c 75 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 lude">@cInclude</a></li>........
1d00 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 55 6e 64 65 .....<li><a.href="#builtin-cUnde
1d20 66 22 3e 40 63 55 6e 64 65 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 f">@cUndef</a></li>.............
1d40 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 61 6e 49 6d 70 6c 69 63 69 <li><a.href="#builtin-canImplici
1d60 74 43 61 73 74 22 3e 40 63 61 6e 49 6d 70 6c 69 63 69 74 43 61 73 74 3c 2f 61 3e 3c 2f 6c 69 3e tCast">@canImplicitCast</a></li>
1d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 .............<li><a.href="#built
1da0 69 6e 2d 63 6c 7a 22 3e 40 63 6c 7a 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 in-clz">@clz</a></li>...........
1dc0 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 6d 70 78 63 68 67 22 ..<li><a.href="#builtin-cmpxchg"
1de0 3e 40 63 6d 70 78 63 68 67 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c >@cmpxchg</a></li>.............<
1e00 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 6f 6d 70 69 6c 65 45 72 72 6f li><a.href="#builtin-compileErro
1e20 72 22 3e 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 r">@compileError</a></li>.......
1e40 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 6f 6d 70 ......<li><a.href="#builtin-comp
1e60 69 6c 65 4c 6f 67 22 3e 40 63 6f 6d 70 69 6c 65 4c 6f 67 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 ileLog">@compileLog</a></li>....
1e80 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 .........<li><a.href="#builtin-c
1ea0 74 7a 22 3e 40 63 74 7a 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c tz">@ctz</a></li>.............<l
1ec0 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 64 69 76 45 78 61 63 74 22 3e 40 64 i><a.href="#builtin-divExact">@d
1ee0 69 76 45 78 61 63 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 ivExact</a></li>.............<li
1f00 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 64 69 76 46 6c 6f 6f 72 22 3e 40 64 69 ><a.href="#builtin-divFloor">@di
1f20 76 46 6c 6f 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e vFloor</a></li>.............<li>
1f40 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 64 69 76 54 72 75 6e 63 22 3e 40 64 69 76 <a.href="#builtin-divTrunc">@div
1f60 54 72 75 6e 63 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c Trunc</a></li>.............<li><
1f80 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 65 6d 62 65 64 46 69 6c 65 22 3e 40 65 6d 62 a.href="#builtin-embedFile">@emb
1fa0 65 64 46 69 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e edFile</a></li>.............<li>
1fc0 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 65 6e 75 6d 54 61 67 4e 61 6d 65 22 3e 40 <a.href="#builtin-enumTagName">@
1fe0 65 6e 75 6d 54 61 67 4e 61 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 enumTagName</a></li>............
2000 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 65 72 72 6f 72 4e 61 6d 65 .<li><a.href="#builtin-errorName
2020 22 3e 40 65 72 72 6f 72 4e 61 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 ">@errorName</a></li>...........
2040 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 66 65 6e 63 65 22 3e 40 ..<li><a.href="#builtin-fence">@
2060 66 65 6e 63 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c fence</a></li>.............<li><
2080 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 66 69 65 6c 64 50 61 72 65 6e 74 50 74 72 22 a.href="#builtin-fieldParentPtr"
20a0 3e 40 66 69 65 6c 64 50 61 72 65 6e 74 50 74 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 >@fieldParentPtr</a></li>.......
20c0 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 66 72 61 6d ......<li><a.href="#builtin-fram
20e0 65 41 64 64 72 65 73 73 22 3e 40 66 72 61 6d 65 41 64 64 72 65 73 73 3c 2f 61 3e 3c 2f 6c 69 3e eAddress">@frameAddress</a></li>
2100 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 .............<li><a.href="#built
2120 69 6e 2d 69 6d 70 6f 72 74 22 3e 40 69 6d 70 6f 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 in-import">@import</a></li>.....
2140 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 69 6e ........<li><a.href="#builtin-in
2160 6c 69 6e 65 43 61 6c 6c 22 3e 40 69 6e 6c 69 6e 65 43 61 6c 6c 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 lineCall">@inlineCall</a></li>..
2180 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e ...........<li><a.href="#builtin
21a0 2d 69 6e 74 54 6f 50 74 72 22 3e 40 69 6e 74 54 6f 50 74 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 -intToPtr">@intToPtr</a></li>...
21c0 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d ..........<li><a.href="#builtin-
21e0 49 6e 74 54 79 70 65 22 3e 40 49 6e 74 54 79 70 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 IntType">@IntType</a></li>......
2200 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 6d 61 78 .......<li><a.href="#builtin-max
2220 56 61 6c 75 65 22 3e 40 6d 61 78 56 61 6c 75 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 Value">@maxValue</a></li>.......
2240 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 6d 65 6d 62 ......<li><a.href="#builtin-memb
2260 65 72 43 6f 75 6e 74 22 3e 40 6d 65 6d 62 65 72 43 6f 75 6e 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 erCount">@memberCount</a></li>..
2280 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e ...........<li><a.href="#builtin
22a0 2d 6d 65 6d 63 70 79 22 3e 40 6d 65 6d 63 70 79 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 -memcpy">@memcpy</a></li>.......
22c0 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 6d 65 6d 73 ......<li><a.href="#builtin-mems
22e0 65 74 22 3e 40 6d 65 6d 73 65 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 et">@memset</a></li>............
2300 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 6d 69 6e 56 61 6c 75 65 22 .<li><a.href="#builtin-minValue"
2320 3e 40 6d 69 6e 56 61 6c 75 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 >@minValue</a></li>.............
2340 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 6d 6f 64 22 3e 40 6d 6f 64 3c <li><a.href="#builtin-mod">@mod<
2360 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 /a></li>.............<li><a.href
2380 3d 22 23 62 75 69 6c 74 69 6e 2d 6d 75 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 3e 40 6d 75 6c ="#builtin-mulWithOverflow">@mul
23a0 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 WithOverflow</a></li>...........
23c0 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 6f 66 66 73 65 74 4f 66 ..<li><a.href="#builtin-offsetOf
23e0 22 3e 40 6f 66 66 73 65 74 4f 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 ">@offsetOf</a></li>............
2400 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 4f 70 61 71 75 65 54 79 70 .<li><a.href="#builtin-OpaqueTyp
2420 65 22 3e 40 4f 70 61 71 75 65 54 79 70 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 e">@OpaqueType</a></li>.........
2440 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 70 61 6e 69 63 22 ....<li><a.href="#builtin-panic"
2460 3e 40 70 61 6e 69 63 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 >@panic</a></li>.............<li
2480 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 70 74 72 43 61 73 74 22 3e 40 70 74 72 ><a.href="#builtin-ptrCast">@ptr
24a0 43 61 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 Cast</a></li>.............<li><a
24c0 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 70 74 72 54 6f 49 6e 74 22 3e 40 70 74 72 54 6f .href="#builtin-ptrToInt">@ptrTo
24e0 49 6e 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 Int</a></li>.............<li><a.
2500 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 72 65 6d 22 3e 40 72 65 6d 3c 2f 61 3e 3c 2f 6c 69 href="#builtin-rem">@rem</a></li
2520 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c >.............<li><a.href="#buil
2540 74 69 6e 2d 72 65 74 75 72 6e 41 64 64 72 65 73 73 22 3e 40 72 65 74 75 72 6e 41 64 64 72 65 73 tin-returnAddress">@returnAddres
2560 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 s</a></li>.............<li><a.hr
2580 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 65 74 44 65 62 75 67 53 61 66 65 74 79 22 3e 40 73 65 ef="#builtin-setDebugSafety">@se
25a0 74 44 65 62 75 67 53 61 66 65 74 79 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 tDebugSafety</a></li>...........
25c0 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 65 74 45 76 61 6c 42 ..<li><a.href="#builtin-setEvalB
25e0 72 61 6e 63 68 51 75 6f 74 61 22 3e 40 73 65 74 45 76 61 6c 42 72 61 6e 63 68 51 75 6f 74 61 3c ranchQuota">@setEvalBranchQuota<
2600 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 /a></li>.............<li><a.href
2620 3d 22 23 62 75 69 6c 74 69 6e 2d 73 65 74 46 6c 6f 61 74 4d 6f 64 65 22 3e 40 73 65 74 46 6c 6f ="#builtin-setFloatMode">@setFlo
2640 61 74 4d 6f 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e atMode</a></li>.............<li>
2660 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 65 74 47 6c 6f 62 61 6c 4c 69 6e 6b 61 <a.href="#builtin-setGlobalLinka
2680 67 65 22 3e 40 73 65 74 47 6c 6f 62 61 6c 4c 69 6e 6b 61 67 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 ge">@setGlobalLinkage</a></li>..
26a0 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e ...........<li><a.href="#builtin
26c0 2d 73 65 74 47 6c 6f 62 61 6c 53 65 63 74 69 6f 6e 22 3e 40 73 65 74 47 6c 6f 62 61 6c 53 65 63 -setGlobalSection">@setGlobalSec
26e0 74 69 6f 6e 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 tion</a></li>.............<li><a
2700 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 68 6c 45 78 61 63 74 22 3e 40 73 68 6c 45 78 .href="#builtin-shlExact">@shlEx
2720 61 63 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 act</a></li>.............<li><a.
2740 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 3e href="#builtin-shlWithOverflow">
2760 40 73 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 @shlWithOverflow</a></li>.......
2780 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 68 72 45 ......<li><a.href="#builtin-shrE
27a0 78 61 63 74 22 3e 40 73 68 72 45 78 61 63 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 xact">@shrExact</a></li>........
27c0 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 69 7a 65 4f .....<li><a.href="#builtin-sizeO
27e0 66 22 3e 40 73 69 7a 65 4f 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 f">@sizeOf</a></li>.............
2800 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 75 62 57 69 74 68 4f 76 65 <li><a.href="#builtin-subWithOve
2820 72 66 6c 6f 77 22 3e 40 73 75 62 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 3e rflow">@subWithOverflow</a></li>
2840 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 .............<li><a.href="#built
2860 69 6e 2d 74 72 75 6e 63 61 74 65 22 3e 40 74 72 75 6e 63 61 74 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a in-truncate">@truncate</a></li>.
2880 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 ............<li><a.href="#builti
28a0 6e 2d 74 79 70 65 49 64 22 3e 40 74 79 70 65 49 64 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 n-typeId">@typeId</a></li>......
28c0 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 74 79 70 .......<li><a.href="#builtin-typ
28e0 65 4e 61 6d 65 22 3e 40 74 79 70 65 4e 61 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 eName">@typeName</a></li>.......
2900 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 74 79 70 65 ......<li><a.href="#builtin-type
2920 4f 66 22 3e 40 74 79 70 65 4f 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 3c Of">@typeOf</a></li>...........<
2940 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c /ul>.........</li>.........<li><
2960 61 20 68 72 65 66 3d 22 23 62 75 69 6c 64 2d 6d 6f 64 65 22 3e 42 75 69 6c 64 20 4d 6f 64 65 3c a.href="#build-mode">Build.Mode<
2980 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 6c 69 /a>...........<ul>...........<li
29a0 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 64 2d 6d 6f 64 65 2d 64 65 62 75 67 22 3e 44 65 62 ><a.href="#build-mode-debug">Deb
29c0 75 67 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 ug</a></li>...........<li><a.hre
29e0 66 3d 22 23 62 75 69 6c 64 2d 6d 6f 64 65 2d 72 65 6c 65 61 73 65 2d 66 61 73 74 22 3e 52 65 6c f="#build-mode-release-fast">Rel
2a00 65 61 73 65 46 61 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e easeFast</a></li>...........<li>
2a20 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 64 2d 6d 6f 64 65 2d 72 65 6c 65 61 73 65 2d 73 61 66 <a.href="#build-mode-release-saf
2a40 65 22 3e 52 65 6c 65 61 73 65 53 61 66 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 e">ReleaseSafe</a></li>.........
2a60 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c ..</ul>.........</li>.........<l
2a80 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 69 6e 65 64 2d 62 65 68 61 76 69 6f 72 22 3e i><a.href="#undefined-behavior">
2aa0 55 6e 64 65 66 69 6e 65 64 20 42 65 68 61 76 69 6f 72 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 Undefined.Behavior</a>..........
2ac0 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 .<ul>.............<li><a.href="#
2ae0 75 6e 64 65 66 2d 75 6e 72 65 61 63 68 61 62 6c 65 22 3e 52 65 61 63 68 69 6e 67 20 55 6e 72 65 undef-unreachable">Reaching.Unre
2b00 61 63 68 61 62 6c 65 20 43 6f 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 achable.Code</a></li>...........
2b20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 69 6e 64 65 78 2d 6f 75 74 2d ..<li><a.href="#undef-index-out-
2b40 6f 66 2d 62 6f 75 6e 64 73 22 3e 49 6e 64 65 78 20 6f 75 74 20 6f 66 20 42 6f 75 6e 64 73 3c 2f of-bounds">Index.out.of.Bounds</
2b60 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d a></li>.............<li><a.href=
2b80 22 23 75 6e 64 65 66 2d 63 61 73 74 2d 6e 65 67 61 74 69 76 65 2d 75 6e 73 69 67 6e 65 64 22 3e "#undef-cast-negative-unsigned">
2ba0 43 61 73 74 20 4e 65 67 61 74 69 76 65 20 4e 75 6d 62 65 72 20 74 6f 20 55 6e 73 69 67 6e 65 64 Cast.Negative.Number.to.Unsigned
2bc0 20 49 6e 74 65 67 65 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c .Integer</a></li>.............<l
2be0 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 63 61 73 74 2d 74 72 75 6e 63 61 74 65 73 i><a.href="#undef-cast-truncates
2c00 2d 64 61 74 61 22 3e 43 61 73 74 20 54 72 75 6e 63 61 74 65 73 20 44 61 74 61 3c 2f 61 3e 3c 2f -data">Cast.Truncates.Data</a></
2c20 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e li>.............<li><a.href="#un
2c40 64 65 66 2d 69 6e 74 65 67 65 72 2d 6f 76 65 72 66 6c 6f 77 22 3e 49 6e 74 65 67 65 72 20 4f 76 def-integer-overflow">Integer.Ov
2c60 65 72 66 6c 6f 77 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 erflow</a>...............<ul>...
2c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 ..............<li><a.href="#unde
2ca0 66 2d 69 6e 74 2d 6f 76 65 72 66 6c 6f 77 2d 64 65 66 61 75 6c 74 22 3e 44 65 66 61 75 6c 74 20 f-int-overflow-default">Default.
2cc0 4f 70 65 72 61 74 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 Operations</a></li>.............
2ce0 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 69 6e 74 2d 6f 76 65 72 ....<li><a.href="#undef-int-over
2d00 66 6c 6f 77 2d 73 74 64 22 3e 53 74 61 6e 64 61 72 64 20 4c 69 62 72 61 72 79 20 4d 61 74 68 20 flow-std">Standard.Library.Math.
2d20 46 75 6e 63 74 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 Functions</a></li>..............
2d40 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 69 6e 74 2d 6f 76 65 72 66 ...<li><a.href="#undef-int-overf
2d60 6c 6f 77 2d 62 75 69 6c 74 69 6e 22 3e 42 75 69 6c 74 69 6e 20 4f 76 65 72 66 6c 6f 77 20 46 75 low-builtin">Builtin.Overflow.Fu
2d80 6e 63 74 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nctions</a></li>................
2da0 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 69 6e 74 2d 6f 76 65 72 66 6c 6f .<li><a.href="#undef-int-overflo
2dc0 77 2d 77 72 61 70 22 3e 57 72 61 70 70 69 6e 67 20 4f 70 65 72 61 74 69 6f 6e 73 3c 2f 61 3e 3c w-wrap">Wrapping.Operations</a><
2de0 2f 6c 69 3e 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 /li>................</ul>.......
2e00 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 ......</li>.............<li><a.h
2e20 72 65 66 3d 22 23 75 6e 64 65 66 2d 73 68 6c 2d 6f 76 65 72 66 6c 6f 77 22 3e 45 78 61 63 74 20 ref="#undef-shl-overflow">Exact.
2e40 4c 65 66 74 20 53 68 69 66 74 20 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 Left.Shift.Overflow</a></li>....
2e60 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 73 68 72 .........<li><a.href="#undef-shr
2e80 2d 6f 76 65 72 66 6c 6f 77 22 3e 45 78 61 63 74 20 52 69 67 68 74 20 53 68 69 66 74 20 4f 76 65 -overflow">Exact.Right.Shift.Ove
2ea0 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c rflow</a></li>.............<li><
2ec0 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 64 69 76 69 73 69 6f 6e 2d 62 79 2d 7a 65 72 6f 22 a.href="#undef-division-by-zero"
2ee0 3e 44 69 76 69 73 69 6f 6e 20 62 79 20 5a 65 72 6f 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 >Division.by.Zero</a></li>......
2f00 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 72 65 6d 61 69 .......<li><a.href="#undef-remai
2f20 6e 64 65 72 2d 64 69 76 69 73 69 6f 6e 2d 62 79 2d 7a 65 72 6f 22 3e 52 65 6d 61 69 6e 64 65 72 nder-division-by-zero">Remainder
2f40 20 44 69 76 69 73 69 6f 6e 20 62 79 20 5a 65 72 6f 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 .Division.by.Zero</a></li>......
2f60 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 65 78 61 63 74 .......<li><a.href="#undef-exact
2f80 2d 64 69 76 69 73 69 6f 6e 2d 72 65 6d 61 69 6e 64 65 72 22 3e 45 78 61 63 74 20 44 69 76 69 73 -division-remainder">Exact.Divis
2fa0 69 6f 6e 20 52 65 6d 61 69 6e 64 65 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 ion.Remainder</a></li>..........
2fc0 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 73 6c 69 63 65 2d 77 69 64 ...<li><a.href="#undef-slice-wid
2fe0 65 6e 2d 72 65 6d 61 69 6e 64 65 72 22 3e 53 6c 69 63 65 20 57 69 64 65 6e 20 52 65 6d 61 69 6e en-remainder">Slice.Widen.Remain
3000 64 65 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 der</a></li>.............<li><a.
3020 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 61 74 74 65 6d 70 74 2d 75 6e 77 72 61 70 2d 6e 75 6c 6c href="#undef-attempt-unwrap-null
3040 22 3e 41 74 74 65 6d 70 74 20 74 6f 20 55 6e 77 72 61 70 20 4e 75 6c 6c 3c 2f 61 3e 3c 2f 6c 69 ">Attempt.to.Unwrap.Null</a></li
3060 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 >.............<li><a.href="#unde
3080 66 2d 61 74 74 65 6d 70 74 2d 75 6e 77 72 61 70 2d 65 72 72 6f 72 22 3e 41 74 74 65 6d 70 74 20 f-attempt-unwrap-error">Attempt.
30a0 74 6f 20 55 6e 77 72 61 70 20 45 72 72 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 to.Unwrap.Error</a></li>........
30c0 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 69 6e 76 61 6c 69 64 .....<li><a.href="#undef-invalid
30e0 2d 65 72 72 6f 72 2d 63 6f 64 65 22 3e 49 6e 76 61 6c 69 64 20 45 72 72 6f 72 20 43 6f 64 65 3c -error-code">Invalid.Error.Code<
3100 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 /a></li>.............<li><a.href
3120 3d 22 23 75 6e 64 65 66 2d 69 6e 76 61 6c 69 64 2d 65 6e 75 6d 2d 63 61 73 74 22 3e 49 6e 76 61 ="#undef-invalid-enum-cast">Inva
3140 6c 69 64 20 45 6e 75 6d 20 43 61 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 lid.Enum.Cast</a></li>..........
3160 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 69 6e 63 6f 72 72 65 63 74 ...<li><a.href="#undef-incorrect
3180 2d 70 6f 69 6e 74 65 72 2d 61 6c 69 67 6e 6d 65 6e 74 22 3e 49 6e 63 6f 72 72 65 63 74 20 50 6f -pointer-alignment">Incorrect.Po
31a0 69 6e 74 65 72 20 41 6c 69 67 6e 6d 65 6e 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 inter.Alignment</a></li>........
31c0 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c ...</ul>.........</li>.........<
31e0 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6d 65 6d 6f 72 79 22 3e 4d 65 6d 6f 72 79 3c 2f 61 3e 3c li><a.href="#memory">Memory</a><
3200 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 69 /li>.........<li><a.href="#compi
3220 6c 65 2d 76 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 20 56 61 72 69 61 62 6c 65 73 3c le-variables">Compile.Variables<
3240 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 72 /a></li>.........<li><a.href="#r
3260 6f 6f 74 2d 73 6f 75 72 63 65 2d 66 69 6c 65 22 3e 52 6f 6f 74 20 53 6f 75 72 63 65 20 46 69 6c oot-source-file">Root.Source.Fil
3280 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 e</a></li>.........<li><a.href="
32a0 23 7a 69 67 2d 74 65 73 74 22 3e 5a 69 67 20 54 65 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 #zig-test">Zig.Test</a></li>....
32c0 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 7a 69 67 2d 62 75 69 6c 64 2d 73 79 73 .....<li><a.href="#zig-build-sys
32e0 74 65 6d 22 3e 5a 69 67 20 42 75 69 6c 64 20 53 79 73 74 65 6d 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 tem">Zig.Build.System</a></li>..
3300 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 22 3e 43 3c 2f 61 3e 0a 20 20 .......<li><a.href="#c">C</a>...
3320 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 ........<ul>.............<li><a.
3340 68 72 65 66 3d 22 23 63 2d 74 79 70 65 2d 70 72 69 6d 69 74 69 76 65 73 22 3e 43 20 54 79 70 65 href="#c-type-primitives">C.Type
3360 20 50 72 69 6d 69 74 69 76 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 .Primitives</a></li>............
3380 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 2d 73 74 72 69 6e 67 2d 6c 69 74 65 72 61 6c 73 .<li><a.href="#c-string-literals
33a0 22 3e 43 20 53 74 72 69 6e 67 20 4c 69 74 65 72 61 6c 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 ">C.String.Literals</a></li>....
33c0 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 2d 69 6d 70 6f 72 74 22 .........<li><a.href="#c-import"
33e0 3e 49 6d 70 6f 72 74 20 66 72 6f 6d 20 43 20 48 65 61 64 65 72 20 46 69 6c 65 3c 2f 61 3e 3c 2f >Import.from.C.Header.File</a></
3400 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6d 69 li>.............<li><a.href="#mi
3420 78 69 6e 67 2d 6f 62 6a 65 63 74 2d 66 69 6c 65 73 22 3e 4d 69 78 69 6e 67 20 4f 62 6a 65 63 74 xing-object-files">Mixing.Object
3440 20 46 69 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a .Files</a></li>...........</ul>.
3460 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 ........</li>.........<li><a.hre
3480 66 3d 22 23 74 61 72 67 65 74 73 22 3e 54 61 72 67 65 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 f="#targets">Targets</a></li>...
34a0 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 74 79 6c 65 2d 67 75 69 64 65 22 ......<li><a.href="#style-guide"
34c0 3e 53 74 79 6c 65 20 47 75 69 64 65 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a >Style.Guide</a>...........<ul>.
34e0 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 74 79 6c 65 2d ............<li><a.href="#style-
3500 67 75 69 64 65 2d 77 68 69 74 65 73 70 61 63 65 22 3e 57 68 69 74 65 73 70 61 63 65 3c 2f 61 3e guide-whitespace">Whitespace</a>
3520 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 </li>.............<li><a.href="#
3540 73 74 79 6c 65 2d 67 75 69 64 65 2d 6e 61 6d 65 73 22 3e 4e 61 6d 65 73 3c 2f 61 3e 3c 2f 6c 69 style-guide-names">Names</a></li
3560 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 74 79 6c >.............<li><a.href="#styl
3580 65 2d 67 75 69 64 65 2d 65 78 61 6d 70 6c 65 73 22 3e 45 78 61 6d 70 6c 65 73 3c 2f 61 3e 3c 2f e-guide-examples">Examples</a></
35a0 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 li>...........</ul>.........</li
35c0 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 67 72 61 6d 6d 61 72 22 >.........<li><a.href="#grammar"
35e0 3e 47 72 61 6d 6d 61 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 >Grammar</a></li>.........<li><a
3600 20 68 72 65 66 3d 22 23 7a 65 6e 22 3e 5a 65 6e 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 .href="#zen">Zen</a></li>.......
3620 3c 2f 75 6c 3e 0a 20 20 20 20 3c 2f 64 69 76 3e 0a 20 20 20 20 3c 64 69 76 20 69 64 3d 22 63 6f </ul>.....</div>.....<div.id="co
3640 6e 74 65 6e 74 73 22 3e 0a 20 20 20 20 20 20 3c 68 31 20 69 64 3d 22 69 6e 74 72 6f 64 75 63 74 ntents">.......<h1.id="introduct
3660 69 6f 6e 22 3e 5a 69 67 20 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 3c 2f 68 31 3e 0a 20 20 20 20 ion">Zig.Documentation</h1>.....
3680 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 20 69 73 20 61 6e 20 6f 70 65 6e 2d 73 6f 75 72 63 ..<p>.......Zig.is.an.open-sourc
36a0 65 20 70 72 6f 67 72 61 6d 6d 69 6e 67 20 6c 61 6e 67 75 61 67 65 20 64 65 73 69 67 6e 65 64 20 e.programming.language.designed.
36c0 66 6f 72 20 3c 73 74 72 6f 6e 67 3e 72 6f 62 75 73 74 6e 65 73 73 3c 2f 73 74 72 6f 6e 67 3e 2c for.<strong>robustness</strong>,
36e0 0a 20 20 20 20 20 20 3c 73 74 72 6f 6e 67 3e 6f 70 74 69 6d 61 6c 69 74 79 3c 2f 73 74 72 6f 6e .......<strong>optimality</stron
3700 67 3e 2c 20 61 6e 64 20 3c 73 74 72 6f 6e 67 3e 63 6c 61 72 69 74 79 3c 2f 73 74 72 6f 6e 67 3e g>,.and.<strong>clarity</strong>
3720 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 ........</p>.......<ul>.........
3740 3c 6c 69 3e 3c 73 74 72 6f 6e 67 3e 52 6f 62 75 73 74 3c 2f 73 74 72 6f 6e 67 3e 20 2d 20 62 65 <li><strong>Robust</strong>.-.be
3760 68 61 76 69 6f 72 20 69 73 20 63 6f 72 72 65 63 74 20 65 76 65 6e 20 66 6f 72 20 65 64 67 65 20 havior.is.correct.even.for.edge.
3780 63 61 73 65 73 20 73 75 63 68 20 61 73 20 6f 75 74 20 6f 66 20 6d 65 6d 6f 72 79 2e 3c 2f 6c 69 cases.such.as.out.of.memory.</li
37a0 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 73 74 72 6f 6e 67 3e 4f 70 74 69 6d 61 6c 3c 2f 73 >.........<li><strong>Optimal</s
37c0 74 72 6f 6e 67 3e 20 2d 20 77 72 69 74 65 20 70 72 6f 67 72 61 6d 73 20 74 68 65 20 62 65 73 74 trong>.-.write.programs.the.best
37e0 20 77 61 79 20 74 68 65 79 20 63 61 6e 20 62 65 68 61 76 65 20 61 6e 64 20 70 65 72 66 6f 72 6d .way.they.can.behave.and.perform
3800 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 73 74 72 6f 6e 67 3e 43 6c 65 61 72 .</li>.........<li><strong>Clear
3820 3c 2f 73 74 72 6f 6e 67 3e 20 2d 20 70 72 65 63 69 73 65 6c 79 20 63 6f 6d 6d 75 6e 69 63 61 74 </strong>.-.precisely.communicat
3840 65 20 79 6f 75 72 20 69 6e 74 65 6e 74 20 74 6f 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 61 6e e.your.intent.to.the.compiler.an
3860 64 20 6f 74 68 65 72 20 70 72 6f 67 72 61 6d 6d 65 72 73 2e 20 54 68 65 20 6c 61 6e 67 75 61 67 d.other.programmers..The.languag
3880 65 20 69 6d 70 6f 73 65 73 20 61 20 6c 6f 77 20 6f 76 65 72 68 65 61 64 20 74 6f 20 72 65 61 64 e.imposes.a.low.overhead.to.read
38a0 69 6e 67 20 63 6f 64 65 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 ing.code.</li>.......</ul>......
38c0 20 3c 70 3e 0a 20 20 20 20 20 20 4f 66 74 65 6e 20 74 68 65 20 6d 6f 73 74 20 65 66 66 69 63 69 .<p>.......Often.the.most.effici
38e0 65 6e 74 20 77 61 79 20 74 6f 20 6c 65 61 72 6e 20 73 6f 6d 65 74 68 69 6e 67 20 6e 65 77 20 69 ent.way.to.learn.something.new.i
3900 73 20 74 6f 20 73 65 65 20 65 78 61 6d 70 6c 65 73 2c 20 73 6f 0a 20 20 20 20 20 20 74 68 69 73 s.to.see.examples,.so.......this
3920 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 73 68 6f 77 73 20 68 6f 77 20 74 6f 20 75 73 65 20 .documentation.shows.how.to.use.
3940 65 61 63 68 20 6f 66 20 5a 69 67 27 73 20 66 65 61 74 75 72 65 73 2e 20 49 74 20 69 73 0a 20 20 each.of.Zig's.features..It.is...
3960 20 20 20 20 61 6c 6c 20 6f 6e 20 6f 6e 65 20 70 61 67 65 20 73 6f 20 79 6f 75 20 63 61 6e 20 73 ....all.on.one.page.so.you.can.s
3980 65 61 72 63 68 20 77 69 74 68 20 79 6f 75 72 20 62 72 6f 77 73 65 72 27 73 20 73 65 61 72 63 68 earch.with.your.browser's.search
39a0 20 74 6f 6f 6c 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 .tool........</p>.......<h2.id="
39c0 68 65 6c 6c 6f 2d 77 6f 72 6c 64 22 3e 48 65 6c 6c 6f 20 57 6f 72 6c 64 3c 2f 68 32 3e 0a 20 20 hello-world">Hello.World</h2>...
39e0 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 69 ..<pre><code.class="zig">const.i
3a00 6f 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 69 6f 3b 0a 0a 70 75 62 20 66 6e 20 6d o.=.@import("std").io;..pub.fn.m
3a20 61 69 6e 28 29 20 2d 26 67 74 3b 20 25 76 6f 69 64 20 7b 0a 20 20 20 20 25 25 69 6f 2e 73 74 64 ain().-&gt;.%void.{.....%%io.std
3a40 6f 75 74 2e 70 72 69 6e 74 66 28 22 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 5c 6e 22 29 3b 0a 7d out.printf("Hello,.world!\n");.}
3a60 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 </code></pre>.......<pre><code.c
3a80 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 68 65 6c 6c 6f 2e lass="sh">$.zig.build-exe.hello.
3aa0 7a 69 67 0a 24 20 2e 2f 68 65 6c 6c 6f 0a 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 3c 2f 63 6f 64 zig.$../hello.Hello,.world!</cod
3ac0 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a e></pre>.......<p>See.also:</p>.
3ae0 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 ......<ul>.........<li><a.href="
3b00 23 76 61 6c 75 65 73 22 3e 56 61 6c 75 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 #values">Values</a></li>........
3b20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 69 6d 70 6f 72 74 22 3e 40 .<li><a.href="#builtin-import">@
3b40 69 6d 70 6f 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 import</a></li>.........<li><a.h
3b60 72 65 66 3d 22 23 65 72 72 6f 72 73 22 3e 45 72 72 6f 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 ref="#errors">Errors</a></li>...
3b80 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 72 6f 6f 74 2d 73 6f 75 72 63 65 2d ......<li><a.href="#root-source-
3ba0 66 69 6c 65 22 3e 52 6f 6f 74 20 53 6f 75 72 63 65 20 46 69 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a file">Root.Source.File</a></li>.
3bc0 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 76 61 6c 75 65 73 ......</ul>.......<h2.id="values
3be0 22 3e 56 61 6c 75 65 73 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 ">Values</h2>.......<pre><code.c
3c00 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 69 6f 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 lass="zig">const.io.=.@import("s
3c20 74 64 22 29 2e 69 6f 3b 0a 63 6f 6e 73 74 20 6f 73 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 td").io;.const.os.=.@import("std
3c40 22 29 2e 6f 73 3b 0a 0a 2f 2f 20 65 72 72 6f 72 20 64 65 63 6c 61 72 61 74 69 6f 6e 2c 20 6d 61 ").os;..//.error.declaration,.ma
3c60 6b 65 73 20 60 65 72 72 6f 72 2e 41 72 67 4e 6f 74 46 6f 75 6e 64 60 20 61 76 61 69 6c 61 62 6c kes.`error.ArgNotFound`.availabl
3c80 65 0a 65 72 72 6f 72 20 41 72 67 4e 6f 74 46 6f 75 6e 64 3b 0a 0a 70 75 62 20 66 6e 20 6d 61 69 e.error.ArgNotFound;..pub.fn.mai
3ca0 6e 28 29 20 2d 26 67 74 3b 20 25 76 6f 69 64 20 7b 0a 20 20 20 20 2f 2f 20 69 6e 74 65 67 65 72 n().-&gt;.%void.{.....//.integer
3cc0 73 0a 20 20 20 20 63 6f 6e 73 74 20 6f 6e 65 5f 70 6c 75 73 5f 6f 6e 65 3a 20 69 33 32 20 3d 20 s.....const.one_plus_one:.i32.=.
3ce0 31 20 2b 20 31 3b 0a 20 20 20 20 25 25 69 6f 2e 73 74 64 6f 75 74 2e 70 72 69 6e 74 66 28 22 31 1.+.1;.....%%io.stdout.printf("1
3d00 20 2b 20 31 20 3d 20 7b 7d 5c 6e 22 2c 20 6f 6e 65 5f 70 6c 75 73 5f 6f 6e 65 29 3b 0a 0a 20 20 .+.1.=.{}\n",.one_plus_one);....
3d20 20 20 2f 2f 20 66 6c 6f 61 74 73 0a 20 20 20 20 63 6f 6e 73 74 20 73 65 76 65 6e 5f 64 69 76 5f ..//.floats.....const.seven_div_
3d40 74 68 72 65 65 3a 20 66 33 32 20 3d 20 37 2e 30 20 2f 20 33 2e 30 3b 0a 20 20 20 20 25 25 69 6f three:.f32.=.7.0./.3.0;.....%%io
3d60 2e 73 74 64 6f 75 74 2e 70 72 69 6e 74 66 28 22 37 2e 30 20 2f 20 33 2e 30 20 3d 20 7b 7d 5c 6e .stdout.printf("7.0./.3.0.=.{}\n
3d80 22 2c 20 73 65 76 65 6e 5f 64 69 76 5f 74 68 72 65 65 29 3b 0a 0a 20 20 20 20 2f 2f 20 62 6f 6f ",.seven_div_three);......//.boo
3da0 6c 65 61 6e 0a 20 20 20 20 25 25 69 6f 2e 73 74 64 6f 75 74 2e 70 72 69 6e 74 66 28 22 7b 7d 5c lean.....%%io.stdout.printf("{}\
3dc0 6e 7b 7d 5c 6e 7b 7d 5c 6e 22 2c 0a 20 20 20 20 20 20 20 20 74 72 75 65 20 61 6e 64 20 66 61 6c n{}\n{}\n",.........true.and.fal
3de0 73 65 2c 0a 20 20 20 20 20 20 20 20 74 72 75 65 20 6f 72 20 66 61 6c 73 65 2c 0a 20 20 20 20 20 se,.........true.or.false,......
3e00 20 20 20 21 74 72 75 65 29 3b 0a 0a 20 20 20 20 2f 2f 20 6e 75 6c 6c 61 62 6c 65 0a 20 20 20 20 ...!true);......//.nullable.....
3e20 63 6f 6e 73 74 20 6e 75 6c 6c 61 62 6c 65 5f 76 61 6c 75 65 20 3d 20 69 66 20 28 6f 73 2e 61 72 const.nullable_value.=.if.(os.ar
3e40 67 73 2e 63 6f 75 6e 74 28 29 20 26 67 74 3b 3d 20 32 29 20 6f 73 2e 61 72 67 73 2e 61 74 28 31 gs.count().&gt;=.2).os.args.at(1
3e60 29 20 65 6c 73 65 20 6e 75 6c 6c 3b 0a 20 20 20 20 25 25 69 6f 2e 73 74 64 6f 75 74 2e 70 72 69 ).else.null;.....%%io.stdout.pri
3e80 6e 74 66 28 22 5c 6e 6e 75 6c 6c 61 62 6c 65 5c 6e 74 79 70 65 3a 20 7b 7d 5c 6e 76 61 6c 75 65 ntf("\nnullable\ntype:.{}\nvalue
3ea0 3a 20 7b 7d 5c 6e 22 2c 0a 20 20 20 20 20 20 20 20 40 74 79 70 65 4e 61 6d 65 28 40 74 79 70 65 :.{}\n",.........@typeName(@type
3ec0 4f 66 28 6e 75 6c 6c 61 62 6c 65 5f 76 61 6c 75 65 29 29 2c 20 6e 75 6c 6c 61 62 6c 65 5f 76 61 Of(nullable_value)),.nullable_va
3ee0 6c 75 65 29 3b 0a 0a 20 20 20 20 2f 2f 20 65 72 72 6f 72 20 75 6e 69 6f 6e 0a 20 20 20 20 63 6f lue);......//.error.union.....co
3f00 6e 73 74 20 6e 75 6d 62 65 72 5f 6f 72 5f 65 72 72 6f 72 20 3d 20 69 66 20 28 6f 73 2e 61 72 67 nst.number_or_error.=.if.(os.arg
3f20 73 2e 63 6f 75 6e 74 28 29 20 26 67 74 3b 3d 20 33 29 20 6f 73 2e 61 72 67 73 2e 61 74 28 32 29 s.count().&gt;=.3).os.args.at(2)
3f40 20 65 6c 73 65 20 65 72 72 6f 72 2e 41 72 67 4e 6f 74 46 6f 75 6e 64 3b 0a 20 20 20 20 25 25 69 .else.error.ArgNotFound;.....%%i
3f60 6f 2e 73 74 64 6f 75 74 2e 70 72 69 6e 74 66 28 22 5c 6e 65 72 72 6f 72 20 75 6e 69 6f 6e 5c 6e o.stdout.printf("\nerror.union\n
3f80 74 79 70 65 3a 20 7b 7d 5c 6e 76 61 6c 75 65 3a 20 7b 7d 5c 6e 22 2c 0a 20 20 20 20 20 20 20 20 type:.{}\nvalue:.{}\n",.........
3fa0 40 74 79 70 65 4e 61 6d 65 28 40 74 79 70 65 4f 66 28 6e 75 6d 62 65 72 5f 6f 72 5f 65 72 72 6f @typeName(@typeOf(number_or_erro
3fc0 72 29 29 2c 20 6e 75 6d 62 65 72 5f 6f 72 5f 65 72 72 6f 72 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c r)),.number_or_error);.}</code><
3fe0 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 /pre>.......<pre><code.class="sh
4000 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 76 61 6c 75 65 73 2e 7a 69 67 0a 24 20 2e ">$.zig.build-exe.values.zig.$..
4020 2f 76 61 6c 75 65 73 0a 31 20 2b 20 31 20 3d 20 32 0a 37 2e 30 20 2f 20 33 2e 30 20 3d 20 32 2e /values.1.+.1.=.2.7.0./.3.0.=.2.
4040 33 33 33 33 33 33 0a 66 61 6c 73 65 0a 74 72 75 65 0a 66 61 6c 73 65 0a 0a 6e 75 6c 6c 61 62 6c 333333.false.true.false..nullabl
4060 65 0a 74 79 70 65 3a 20 3f 5b 5d 63 6f 6e 73 74 20 75 38 0a 76 61 6c 75 65 3a 20 6e 75 6c 6c 0a e.type:.?[]const.u8.value:.null.
4080 0a 65 72 72 6f 72 20 75 6e 69 6f 6e 0a 74 79 70 65 3a 20 25 5b 5d 63 6f 6e 73 74 20 75 38 0a 76 .error.union.type:.%[]const.u8.v
40a0 61 6c 75 65 3a 20 65 72 72 6f 72 2e 41 72 67 4e 6f 74 46 6f 75 6e 64 3c 2f 63 6f 64 65 3e 3c 2f alue:.error.ArgNotFound</code></
40c0 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 70 72 69 6d 69 74 69 76 65 2d 74 79 70 pre>.......<h3.id="primitive-typ
40e0 65 73 22 3e 50 72 69 6d 69 74 69 76 65 20 54 79 70 65 73 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c es">Primitive.Types</h2>.......<
4100 74 61 62 6c 65 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 table>.........<tr>...........<t
4120 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 3c 2f h>.............Name...........</
4140 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 43 th>...........<th>.............C
4160 20 45 71 75 69 76 61 6c 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 .Equivalent...........</th>.....
4180 20 20 20 20 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 65 73 63 72 69 70 74 69 ......<th>.............Descripti
41a0 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e on...........</th>.........</tr>
41c0 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 .........<tr>...........<td><cod
41e0 65 3e 69 32 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c e>i2</code></td>...........<td><
4200 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 code>(none)</code></td>.........
4220 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 32 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a ..<td>signed.2-bit.integer</td>.
4240 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 ........</tr>.........<tr>......
4260 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 32 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 .....<td><code>u2</code></td>...
4280 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c ........<td><code>(none)</code><
42a0 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 6e 73 69 67 6e 65 64 20 32 2d 62 69 /td>...........<td>unsigned.2-bi
42c0 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 t.integer</td>.........</tr>....
42e0 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 33 .....<tr>...........<td><code>i3
4300 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 </code></td>...........<td><code
4320 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 >(none)</code></td>...........<t
4340 64 3e 73 69 67 6e 65 64 20 33 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 d>signed.3-bit.integer</td>.....
4360 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 ....</tr>.........<tr>..........
4380 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 33 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 .<td><code>u3</code></td>.......
43a0 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e ....<td><code>(none)</code></td>
43c0 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 6e 73 69 67 6e 65 64 20 33 2d 62 69 74 20 69 6e ...........<td>unsigned.3-bit.in
43e0 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 teger</td>.........</tr>........
4400 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 34 3c 2f 63 6f .<tr>...........<td><code>i4</co
4420 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f de></td>...........<td><code>(no
4440 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 ne)</code></td>...........<td>si
4460 67 6e 65 64 20 34 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 gned.4-bit.integer</td>.........
4480 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 </tr>.........<tr>...........<td
44a0 3e 3c 63 6f 64 65 3e 75 34 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 ><code>u4</code></td>...........
44c0 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 <td><code>(none)</code></td>....
44e0 20 20 20 20 20 20 20 3c 74 64 3e 75 6e 73 69 67 6e 65 64 20 34 2d 62 69 74 20 69 6e 74 65 67 65 .......<td>unsigned.4-bit.intege
4500 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 r</td>.........</tr>.........<tr
4520 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 35 3c 2f 63 6f 64 65 3e 3c >...........<td><code>i5</code><
4540 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c /td>...........<td><code>(none)<
4560 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 /code></td>...........<td>signed
4580 20 35 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 .5-bit.integer</td>.........</tr
45a0 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f >.........<tr>...........<td><co
45c0 64 65 3e 75 35 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e de>u5</code></td>...........<td>
45e0 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 <code>(none)</code></td>........
4600 20 20 20 3c 74 64 3e 75 6e 73 69 67 6e 65 64 20 35 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 ...<td>unsigned.5-bit.integer</t
4620 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 d>.........</tr>.........<tr>...
4640 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 36 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e ........<td><code>i6</code></td>
4660 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 ...........<td><code>(none)</cod
4680 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 36 2d 62 e></td>...........<td>signed.6-b
46a0 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 it.integer</td>.........</tr>...
46c0 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 ......<tr>...........<td><code>u
46e0 36 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 6</code></td>...........<td><cod
4700 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c e>(none)</code></td>...........<
4720 74 64 3e 75 6e 73 69 67 6e 65 64 20 36 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 td>unsigned.6-bit.integer</td>..
4740 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 .......</tr>.........<tr>.......
4760 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 37 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 ....<td><code>i7</code></td>....
4780 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f .......<td><code>(none)</code></
47a0 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 37 2d 62 69 74 20 69 td>...........<td>signed.7-bit.i
47c0 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 nteger</td>.........</tr>.......
47e0 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 37 3c 2f 63 ..<tr>...........<td><code>u7</c
4800 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 28 6e ode></td>...........<td><code>(n
4820 6f 6e 65 29 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 one)</code></td>...........<td>u
4840 6e 73 69 67 6e 65 64 20 37 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 nsigned.7-bit.integer</td>......
4860 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 ...</tr>.........<tr>...........
4880 3c 74 64 3e 3c 63 6f 64 65 3e 69 38 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 <td><code>i8</code></td>........
48a0 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 6e 74 38 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a ...<td><code>int8_t</code></td>.
48c0 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 38 2d 62 69 74 20 69 6e 74 65 67 ..........<td>signed.8-bit.integ
48e0 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 er</td>.........</tr>.........<t
4900 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 38 3c 2f 63 6f 64 65 3e r>...........<td><code>u8</code>
4920 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 69 6e 74 38 5f </td>...........<td><code>uint8_
4940 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 6e 73 69 t</code></td>...........<td>unsi
4960 67 6e 65 64 20 38 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 gned.8-bit.integer</td>.........
4980 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 </tr>.........<tr>...........<td
49a0 3e 3c 63 6f 64 65 3e 69 31 36 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 ><code>i16</code></td>..........
49c0 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 6e 74 31 36 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 .<td><code>int16_t</code></td>..
49e0 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 31 36 2d 62 69 74 20 69 6e 74 65 67 .........<td>signed.16-bit.integ
4a00 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 er</td>.........</tr>.........<t
4a20 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 31 36 3c 2f 63 6f 64 65 r>...........<td><code>u16</code
4a40 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 69 6e 74 31 ></td>...........<td><code>uint1
4a60 36 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 6e 6_t</code></td>...........<td>un
4a80 73 69 67 6e 65 64 20 31 36 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 signed.16-bit.integer</td>......
4aa0 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 ...</tr>.........<tr>...........
4ac0 3c 74 64 3e 3c 63 6f 64 65 3e 69 33 32 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 <td><code>i32</code></td>.......
4ae0 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 6e 74 33 32 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 ....<td><code>int32_t</code></td
4b00 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 33 32 2d 62 69 74 20 69 6e >...........<td>signed.32-bit.in
4b20 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 teger</td>.........</tr>........
4b40 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 33 32 3c 2f 63 .<tr>...........<td><code>u32</c
4b60 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 69 ode></td>...........<td><code>ui
4b80 6e 74 33 32 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 nt32_t</code></td>...........<td
4ba0 3e 75 6e 73 69 67 6e 65 64 20 33 32 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 >unsigned.32-bit.integer</td>...
4bc0 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 ......</tr>.........<tr>........
4be0 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 36 34 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 ...<td><code>i64</code></td>....
4c00 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 6e 74 36 34 5f 74 3c 2f 63 6f 64 65 3e 3c .......<td><code>int64_t</code><
4c20 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 36 34 2d 62 69 74 /td>...........<td>signed.64-bit
4c40 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 .integer</td>.........</tr>.....
4c60 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 36 34 ....<tr>...........<td><code>u64
4c80 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 </code></td>...........<td><code
4ca0 3e 75 69 6e 74 36 34 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 >uint64_t</code></td>...........
4cc0 3c 74 64 3e 75 6e 73 69 67 6e 65 64 20 36 34 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e <td>unsigned.64-bit.integer</td>
4ce0 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 .........</tr>.........<tr>.....
4d00 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 31 32 38 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e ......<td><code>i128</code></td>
4d20 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 5f 5f 69 6e 74 31 32 38 3c 2f 63 ...........<td><code>__int128</c
4d40 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 31 ode></td>...........<td>signed.1
4d60 32 38 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 28-bit.integer</td>.........</tr
4d80 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f >.........<tr>...........<td><co
4da0 64 65 3e 75 31 32 38 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 de>u128</code></td>...........<t
4dc0 64 3e 3c 63 6f 64 65 3e 75 6e 73 69 67 6e 65 64 20 5f 5f 69 6e 74 31 32 38 3c 2f 63 6f 64 65 3e d><code>unsigned.__int128</code>
4de0 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 6e 73 69 67 6e 65 64 20 31 32 38 </td>...........<td>unsigned.128
4e00 2d 62 69 74 20 69 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a -bit.integer</td>.........</tr>.
4e20 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 ........<tr>...........<td><code
4e40 3e 69 73 69 7a 65 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 >isize</code></td>...........<td
4e60 3e 3c 63 6f 64 65 3e 69 6e 74 70 74 72 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 ><code>intptr_t</code></td>.....
4e80 20 20 20 20 20 20 3c 74 64 3e 73 69 67 6e 65 64 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 64 20 69 ......<td>signed.pointer.sized.i
4ea0 6e 74 65 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 nteger</td>.........</tr>.......
4ec0 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 73 69 7a 65 ..<tr>...........<td><code>usize
4ee0 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 </code></td>...........<td><code
4f00 3e 75 69 6e 74 70 74 72 5f 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 >uintptr_t</code></td>..........
4f20 20 3c 74 64 3e 75 6e 73 69 67 6e 65 64 20 70 6f 69 6e 74 65 72 20 73 69 7a 65 64 20 69 6e 74 65 .<td>unsigned.pointer.sized.inte
4f40 67 65 72 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 0a 20 20 20 20 20 20 20 20 ger</td>.........</tr>..........
4f60 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 63 5f 73 68 6f 72 74 <tr>...........<td><code>c_short
4f80 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 </code></td>...........<td><code
4fa0 3e 73 68 6f 72 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 >short</code></td>...........<td
4fc0 3e 66 6f 72 20 41 42 49 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 >for.ABI.compatibility.with.C</t
4fe0 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 d>.........</tr>.........<tr>...
5000 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 63 5f 75 73 68 6f 72 74 3c 2f 63 6f 64 65 ........<td><code>c_ushort</code
5020 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 6e 73 69 67 ></td>...........<td><code>unsig
5040 6e 65 64 20 73 68 6f 72 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 ned.short</code></td>...........
5060 3c 74 64 3e 66 6f 72 20 41 42 49 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 43 <td>for.ABI.compatibility.with.C
5080 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e </td>.........</tr>.........<tr>
50a0 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 63 5f 69 6e 74 3c 2f 63 6f 64 65 ...........<td><code>c_int</code
50c0 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 69 6e 74 3c 2f ></td>...........<td><code>int</
50e0 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 49 code></td>...........<td>for.ABI
5100 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 20 .compatibility.with.C</td>......
5120 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 ...</tr>.........<tr>...........
5140 3c 74 64 3e 3c 63 6f 64 65 3e 63 5f 75 69 6e 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 <td><code>c_uint</code></td>....
5160 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 6e 73 69 67 6e 65 64 20 69 6e 74 3c 2f 63 .......<td><code>unsigned.int</c
5180 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 49 20 ode></td>...........<td>for.ABI.
51a0 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 20 20 compatibility.with.C</td>.......
51c0 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c ..</tr>.........<tr>...........<
51e0 74 64 3e 3c 63 6f 64 65 3e 63 5f 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 td><code>c_long</code></td>.....
5200 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e ......<td><code>long</code></td>
5220 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 49 20 63 6f 6d 70 61 74 69 62 69 ...........<td>for.ABI.compatibi
5240 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 lity.with.C</td>.........</tr>..
5260 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e .......<tr>...........<td><code>
5280 63 5f 75 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 c_ulong</code></td>...........<t
52a0 64 3e 3c 63 6f 64 65 3e 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 74 64 d><code>unsigned.long</code></td
52c0 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 49 20 63 6f 6d 70 61 74 69 62 >...........<td>for.ABI.compatib
52e0 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a ility.with.C</td>.........</tr>.
5300 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 ........<tr>...........<td><code
5320 3e 63 5f 6c 6f 6e 67 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 >c_longlong</code></td>.........
5340 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 6c 6f 6e 67 20 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 74 64 ..<td><code>long.long</code></td
5360 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 49 20 63 6f 6d 70 61 74 69 62 >...........<td>for.ABI.compatib
5380 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a ility.with.C</td>.........</tr>.
53a0 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 ........<tr>...........<td><code
53c0 3e 63 5f 75 6c 6f 6e 67 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 >c_ulonglong</code></td>........
53e0 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 6c 6f 6e 67 3c ...<td><code>unsigned.long.long<
5400 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 /code></td>...........<td>for.AB
5420 49 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 I.compatibility.with.C</td>.....
5440 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 ....</tr>.........<tr>..........
5460 20 3c 74 64 3e 3c 63 6f 64 65 3e 63 5f 6c 6f 6e 67 64 6f 75 62 6c 65 3c 2f 63 6f 64 65 3e 3c 2f .<td><code>c_longdouble</code></
5480 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 6c 6f 6e 67 20 64 6f 75 td>...........<td><code>long.dou
54a0 62 6c 65 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f ble</code></td>...........<td>fo
54c0 72 20 41 42 49 20 63 6f 6d 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a r.ABI.compatibility.with.C</td>.
54e0 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 ........</tr>.........<tr>......
5500 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 63 5f 76 6f 69 64 3c 2f 63 6f 64 65 3e 3c 2f 74 64 .....<td><code>c_void</code></td
5520 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 76 6f 69 64 3c 2f 63 6f 64 65 >...........<td><code>void</code
5540 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 66 6f 72 20 41 42 49 20 63 6f 6d ></td>...........<td>for.ABI.com
5560 70 61 74 69 62 69 6c 69 74 79 20 77 69 74 68 20 43 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c patibility.with.C</td>.........<
5580 2f 74 72 3e 0a 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 /tr>..........<tr>...........<td
55a0 3e 3c 63 6f 64 65 3e 66 33 32 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 ><code>f32</code></td>..........
55c0 20 3c 74 64 3e 3c 63 6f 64 65 3e 66 6c 6f 61 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 .<td><code>float</code></td>....
55e0 20 20 20 20 20 20 20 3c 74 64 3e 33 32 2d 62 69 74 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 .......<td>32-bit.floating.point
5600 20 28 32 33 2d 62 69 74 20 6d 61 6e 74 69 73 73 61 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 .(23-bit.mantissa)</td>.........
5620 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 </tr>.........<tr>...........<td
5640 3e 3c 63 6f 64 65 3e 66 36 34 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 ><code>f64</code></td>..........
5660 20 3c 74 64 3e 3c 63 6f 64 65 3e 64 6f 75 62 6c 65 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 .<td><code>double</code></td>...
5680 20 20 20 20 20 20 20 20 3c 74 64 3e 36 34 2d 62 69 74 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e ........<td>64-bit.floating.poin
56a0 74 20 28 35 32 2d 62 69 74 20 6d 61 6e 74 69 73 73 61 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 t.(52-bit.mantissa)</td>........
56c0 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 .</tr>.........<tr>...........<t
56e0 64 3e 3c 63 6f 64 65 3e 66 31 32 38 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 d><code>f128</code></td>........
5700 20 20 20 3c 74 64 3e 28 6e 6f 6e 65 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 ...<td>(none)</td>...........<td
5720 3e 31 32 38 2d 62 69 74 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 28 31 31 32 2d 62 69 74 >128-bit.floating.point.(112-bit
5740 20 6d 61 6e 74 69 73 73 61 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 .mantissa)</td>.........</tr>...
5760 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 62 ......<tr>...........<td><code>b
5780 6f 6f 6c 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 ool</code></td>...........<td><c
57a0 6f 64 65 3e 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c ode>bool</code></td>...........<
57c0 74 64 3e 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 20 6f 72 20 3c 63 6f 64 65 3e 66 61 td><code>true</code>.or.<code>fa
57e0 6c 73 65 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 lse</code></td>.........</tr>...
5800 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 76 ......<tr>...........<td><code>v
5820 6f 69 64 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 28 6e oid</code></td>...........<td>(n
5840 6f 6e 65 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 30 20 62 69 74 20 74 79 one)</td>...........<td>0.bit.ty
5860 70 65 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 pe</td>.........</tr>.........<t
5880 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 6e 6f 72 65 74 75 72 6e 3c r>...........<td><code>noreturn<
58a0 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 28 6e 6f 6e 65 29 /code></td>...........<td>(none)
58c0 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 74 68 65 20 74 79 70 65 20 6f 66 20 </td>...........<td>the.type.of.
58e0 3c 63 6f 64 65 3e 62 72 65 61 6b 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 63 6f 6e 74 69 6e <code>break</code>,.<code>contin
5900 75 65 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 67 6f 74 6f 3c 2f 63 6f 64 65 3e 2c 20 3c 63 ue</code>,.<code>goto</code>,.<c
5920 6f 64 65 3e 72 65 74 75 72 6e 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 75 6e 72 65 61 63 68 ode>return</code>,.<code>unreach
5940 61 62 6c 65 3c 2f 63 6f 64 65 3e 2c 20 61 6e 64 20 3c 63 6f 64 65 3e 77 68 69 6c 65 20 28 74 72 able</code>,.and.<code>while.(tr
5960 75 65 29 20 7b 7d 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e ue).{}</code></td>.........</tr>
5980 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 .........<tr>...........<td><cod
59a0 65 3e 74 79 70 65 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 e>type</code></td>...........<td
59c0 3e 28 6e 6f 6e 65 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 74 68 65 20 74 >(none)</td>...........<td>the.t
59e0 79 70 65 20 6f 66 20 74 79 70 65 73 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a ype.of.types</td>.........</tr>.
5a00 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 ........<tr>...........<td><code
5a20 3e 65 72 72 6f 72 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 >error</code></td>...........<td
5a40 3e 28 6e 6f 6e 65 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 61 6e 20 65 72 >(none)</td>...........<td>an.er
5a60 72 6f 72 20 63 6f 64 65 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 ror.code</td>.........</tr>.....
5a80 20 20 3c 2f 74 61 62 6c 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 ..</table>.......<p>See.also:</p
5aa0 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 >.......<ul>.........<li><a.href
5ac0 3d 22 23 69 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 ="#integers">Integers</a></li>..
5ae0 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 73 22 3e 46 6c 6f .......<li><a.href="#floats">Flo
5b00 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 ats</a></li>.........<li><a.href
5b20 3d 22 23 76 6f 69 64 22 3e 76 6f 69 64 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c ="#void">void</a></li>.........<
5b40 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 65 72 72 6f 72 73 22 3e 45 72 72 6f 72 73 3c 2f 61 3e 3c li><a.href="#errors">Errors</a><
5b60 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 70 /li>.......</ul>.......<h3.id="p
5b80 72 69 6d 69 74 69 76 65 2d 76 61 6c 75 65 73 22 3e 50 72 69 6d 69 74 69 76 65 20 56 61 6c 75 65 rimitive-values">Primitive.Value
5ba0 73 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 74 61 62 6c 65 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 s</h3>.......<table>.........<tr
5bc0 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e 61 6d >...........<th>.............Nam
5be0 65 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 68 3e e...........</th>...........<th>
5c00 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 20 20 20 20 .............Description........
5c20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c ...</th>.........</tr>.........<
5c40 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f tr>...........<td><code>true</co
5c60 64 65 3e 20 61 6e 64 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a de>.and.<code>false</code></td>.
5c80 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 20 ..........<td><code>bool</code>.
5ca0 76 61 6c 75 65 73 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 values</td>.........</tr>.......
5cc0 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 6e 75 6c 6c 3c ..<tr>...........<td><code>null<
5ce0 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 75 73 65 64 20 74 /code></td>...........<td>used.t
5d00 6f 20 73 65 74 20 61 20 6e 75 6c 6c 61 62 6c 65 20 74 79 70 65 20 74 6f 20 3c 63 6f 64 65 3e 6e o.set.a.nullable.type.to.<code>n
5d20 75 6c 6c 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 ull</code></td>.........</tr>...
5d40 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 75 ......<tr>...........<td><code>u
5d60 6e 64 65 66 69 6e 65 64 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c ndefined</code></td>...........<
5d80 74 64 3e 75 73 65 64 20 74 6f 20 6c 65 61 76 65 20 61 20 76 61 6c 75 65 20 75 6e 73 70 65 63 69 td>used.to.leave.a.value.unspeci
5da0 66 69 65 64 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 fied</td>.........</tr>.........
5dc0 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 74 68 69 73 3c 2f 63 <tr>...........<td><code>this</c
5de0 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 72 65 66 65 72 73 20 74 ode></td>...........<td>refers.t
5e00 6f 20 74 68 65 20 74 68 69 6e 67 20 69 6e 20 69 6d 6d 65 64 69 61 74 65 20 73 63 6f 70 65 3c 2f o.the.thing.in.immediate.scope</
5e20 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 3c 2f 74 61 62 6c 65 3e td>.........</tr>.......</table>
5e40 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 .......<p>See.also:</p>.......<u
5e60 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6e 75 6c 6c 61 62 6c l>.........<li><a.href="#nullabl
5e80 65 73 22 3e 4e 75 6c 6c 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c es">Nullables</a></li>.........<
5ea0 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 74 68 69 73 22 3e 74 68 69 73 3c 2f 61 3e 3c 2f 6c 69 3e li><a.href="#this">this</a></li>
5ec0 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 73 74 72 69 6e .......</ul>.......<h3.id="strin
5ee0 67 2d 6c 69 74 65 72 61 6c 73 22 3e 53 74 72 69 6e 67 20 4c 69 74 65 72 61 6c 73 3c 2f 68 33 3e g-literals">String.Literals</h3>
5f00 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f .......<pre><code.class="zig">co
5f20 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 nst.assert.=.@import("std").debu
5f40 67 2e 61 73 73 65 72 74 3b 0a 63 6f 6e 73 74 20 6d 65 6d 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 g.assert;.const.mem.=.@import("s
5f60 74 64 22 29 2e 6d 65 6d 3b 0a 0a 74 65 73 74 20 22 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 73 td").mem;..test."string.literals
5f80 22 20 7b 0a 20 20 20 20 2f 2f 20 49 6e 20 5a 69 67 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65 72 ".{.....//.In.Zig.a.string.liter
5fa0 61 6c 20 69 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20 62 79 74 65 73 2e 0a 20 20 20 20 63 6f 6e al.is.an.array.of.bytes......con
5fc0 73 74 20 6e 6f 72 6d 61 6c 5f 62 79 74 65 73 20 3d 20 22 68 65 6c 6c 6f 22 3b 0a 20 20 20 20 61 st.normal_bytes.=."hello";.....a
5fe0 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 6e 6f 72 6d 61 6c 5f 62 79 74 65 73 29 20 3d 3d 20 5b ssert(@typeOf(normal_bytes).==.[
6000 35 5d 75 38 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 6e 6f 72 6d 61 6c 5f 62 79 74 65 73 2e 6c 5]u8);.....assert(normal_bytes.l
6020 65 6e 20 3d 3d 20 35 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 6e 6f 72 6d 61 6c 5f 62 79 74 65 en.==.5);.....assert(normal_byte
6040 73 5b 31 5d 20 3d 3d 20 27 65 27 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 27 65 27 20 3d 3d 20 s[1].==.'e');.....assert('e'.==.
6060 27 5c 78 36 35 27 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 '\x65');.....assert(mem.eql(u8,.
6080 22 68 65 6c 6c 6f 22 2c 20 22 68 5c 78 36 35 6c 6c 6f 22 29 29 3b 0a 0a 20 20 20 20 2f 2f 20 41 "hello",."h\x65llo"));......//.A
60a0 20 43 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 20 69 73 20 61 20 6e 75 6c 6c 20 74 65 72 6d .C.string.literal.is.a.null.term
60c0 69 6e 61 74 65 64 20 70 6f 69 6e 74 65 72 2e 0a 20 20 20 20 63 6f 6e 73 74 20 6e 75 6c 6c 5f 74 inated.pointer......const.null_t
60e0 65 72 6d 69 6e 61 74 65 64 5f 62 79 74 65 73 20 3d 20 63 22 68 65 6c 6c 6f 22 3b 0a 20 20 20 20 erminated_bytes.=.c"hello";.....
6100 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 6e 75 6c 6c 5f 74 65 72 6d 69 6e 61 74 65 64 5f 62 assert(@typeOf(null_terminated_b
6120 79 74 65 73 29 20 3d 3d 20 26 61 6d 70 3b 63 6f 6e 73 74 20 75 38 29 3b 0a 20 20 20 20 61 73 73 ytes).==.&amp;const.u8);.....ass
6140 65 72 74 28 6e 75 6c 6c 5f 74 65 72 6d 69 6e 61 74 65 64 5f 62 79 74 65 73 5b 35 5d 20 3d 3d 20 ert(null_terminated_bytes[5].==.
6160 30 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 0);.}</code></pre>.......<pre><c
6180 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 74 65 73 74 20 73 74 72 69 6e 67 ode.class="sh">$.zig.test.string
61a0 5f 6c 69 74 65 72 61 6c 73 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 73 74 72 69 6e 67 20 6c 69 _literals.zig.Test.1/1.string.li
61c0 74 65 72 61 6c 73 2e 2e 2e 4f 4b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c terals...OK</code></pre>.......<
61e0 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 p>See.also:</p>.......<ul>......
6200 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 61 72 72 61 79 73 22 3e 41 72 72 61 79 73 3c ...<li><a.href="#arrays">Arrays<
6220 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 7a /a></li>.........<li><a.href="#z
6240 69 67 2d 74 65 73 74 22 3e 5a 69 67 20 54 65 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 ig-test">Zig.Test</a></li>......
6260 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 34 20 69 64 3d 22 73 74 72 69 6e 67 2d 6c 69 74 65 .</ul>.......<h4.id="string-lite
6280 72 61 6c 2d 65 73 63 61 70 65 73 22 3e 45 73 63 61 70 65 20 53 65 71 75 65 6e 63 65 73 3c 2f 68 ral-escapes">Escape.Sequences</h
62a0 34 3e 0a 20 20 20 20 20 20 3c 74 61 62 6c 65 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 4>.......<table>.........<tr>...
62c0 20 20 20 20 20 20 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 73 63 61 70 65 20 ........<th>.............Escape.
62e0 53 65 71 75 65 6e 63 65 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 Sequence...........</th>........
6300 20 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e 61 6d 65 0a 20 20 20 20 20 20 20 ...<th>.............Name........
6320 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c ...</th>.........</tr>.........<
6340 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 5c 6e 3c 2f 63 6f 64 65 tr>...........<td><code>\n</code
6360 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 4e 65 77 6c 69 6e 65 3c 2f 74 64 ></td>...........<td>Newline</td
6380 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 >.........</tr>.........<tr>....
63a0 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 5c 72 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a .......<td><code>\r</code></td>.
63c0 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 43 61 72 72 69 61 67 65 20 52 65 74 75 72 6e 3c 2f 74 ..........<td>Carriage.Return</t
63e0 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 d>.........</tr>.........<tr>...
6400 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 5c 74 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e ........<td><code>\t</code></td>
6420 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 54 61 62 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 ...........<td>Tab</td>.........
6440 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 </tr>.........<tr>...........<td
6460 3e 3c 63 6f 64 65 3e 5c 5c 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 ><code>\\</code></td>...........
6480 3c 74 64 3e 42 61 63 6b 73 6c 61 73 68 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e <td>Backslash</td>.........</tr>
64a0 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 .........<tr>...........<td><cod
64c0 65 3e 5c 27 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 53 e>\'</code></td>...........<td>S
64e0 69 6e 67 6c 65 20 51 75 6f 74 65 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 ingle.Quote</td>.........</tr>..
6500 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e .......<tr>...........<td><code>
6520 5c 22 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 44 6f 75 \"</code></td>...........<td>Dou
6540 62 6c 65 20 51 75 6f 74 65 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 ble.Quote</td>.........</tr>....
6560 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 5c 78 .....<tr>...........<td><code>\x
6580 4e 4e 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 68 65 78 NN</code></td>...........<td>hex
65a0 61 64 65 63 69 6d 61 6c 20 38 2d 62 69 74 20 63 68 61 72 61 63 74 65 72 20 63 6f 64 65 20 28 32 adecimal.8-bit.character.code.(2
65c0 20 64 69 67 69 74 73 29 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 .digits)</td>.........</tr>.....
65e0 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 5c 75 4e ....<tr>...........<td><code>\uN
6600 4e 4e 4e 3c 2f 63 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 68 65 NNN</code></td>...........<td>he
6620 78 61 64 65 63 69 6d 61 6c 20 31 36 2d 62 69 74 20 55 6e 69 63 6f 64 65 20 63 68 61 72 61 63 74 xadecimal.16-bit.Unicode.charact
6640 65 72 20 63 6f 64 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 28 34 20 64 69 67 69 74 73 29 er.code.UTF-8.encoded.(4.digits)
6660 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e </td>.........</tr>.........<tr>
6680 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 63 6f 64 65 3e 5c 55 4e 4e 4e 4e 4e 4e 3c 2f 63 ...........<td><code>\UNNNNNN</c
66a0 6f 64 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 68 65 78 61 64 65 63 69 ode></td>...........<td>hexadeci
66c0 6d 61 6c 20 32 34 2d 62 69 74 20 55 6e 69 63 6f 64 65 20 63 68 61 72 61 63 74 65 72 20 63 6f 64 mal.24-bit.Unicode.character.cod
66e0 65 20 55 54 46 2d 38 20 65 6e 63 6f 64 65 64 20 28 36 20 64 69 67 69 74 73 29 3c 2f 74 64 3e 0a e.UTF-8.encoded.(6.digits)</td>.
6700 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 3c 2f 74 61 62 6c 65 3e 0a 20 20 20 ........</tr>.......</table>....
6720 20 20 20 3c 70 3e 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 69 ...<p>Note.that.the.maximum.vali
6740 64 20 55 6e 69 63 6f 64 65 20 70 6f 69 6e 74 20 69 73 20 3c 63 6f 64 65 3e 30 78 31 30 66 66 66 d.Unicode.point.is.<code>0x10fff
6760 66 3c 2f 63 6f 64 65 3e 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 34 20 69 64 3d 22 6d 75 6c 74 f</code>.</p>.......<h4.id="mult
6780 69 6c 69 6e 65 2d 73 74 72 69 6e 67 2d 6c 69 74 65 72 61 6c 73 22 3e 4d 75 6c 74 69 6c 69 6e 65 iline-string-literals">Multiline
67a0 20 53 74 72 69 6e 67 20 4c 69 74 65 72 61 6c 73 3c 2f 68 34 3e 0a 20 20 20 20 20 20 3c 70 3e 0a .String.Literals</h4>.......<p>.
67c0 20 20 20 20 20 20 4d 75 6c 74 69 6c 69 6e 65 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 73 20 ......Multiline.string.literals.
67e0 68 61 76 65 20 6e 6f 20 65 73 63 61 70 65 73 20 61 6e 64 20 63 61 6e 20 73 70 61 6e 20 61 63 72 have.no.escapes.and.can.span.acr
6800 6f 73 73 20 6d 75 6c 74 69 70 6c 65 20 6c 69 6e 65 73 2e 0a 20 20 20 20 20 20 54 6f 20 73 74 61 oss.multiple.lines........To.sta
6820 72 74 20 61 20 6d 75 6c 74 69 6c 69 6e 65 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 2c 20 75 rt.a.multiline.string.literal,.u
6840 73 65 20 74 68 65 20 3c 63 6f 64 65 3e 5c 5c 3c 2f 63 6f 64 65 3e 20 74 6f 6b 65 6e 2e 20 4a 75 se.the.<code>\\</code>.token..Ju
6860 73 74 20 6c 69 6b 65 20 61 20 63 6f 6d 6d 65 6e 74 2c 0a 20 20 20 20 20 20 74 68 65 20 73 74 72 st.like.a.comment,.......the.str
6880 69 6e 67 20 6c 69 74 65 72 61 6c 20 67 6f 65 73 20 75 6e 74 69 6c 20 74 68 65 20 65 6e 64 20 6f ing.literal.goes.until.the.end.o
68a0 66 20 74 68 65 20 6c 69 6e 65 2e 20 54 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 6c 69 6e 65 20 f.the.line..The.end.of.the.line.
68c0 69 73 0a 20 20 20 20 20 20 6e 6f 74 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 74 68 65 20 73 74 72 is.......not.included.in.the.str
68e0 69 6e 67 20 6c 69 74 65 72 61 6c 2e 0a 20 20 20 20 20 20 48 6f 77 65 76 65 72 2c 20 69 66 20 74 ing.literal........However,.if.t
6900 68 65 20 6e 65 78 74 20 6c 69 6e 65 20 62 65 67 69 6e 73 20 77 69 74 68 20 3c 63 6f 64 65 3e 5c he.next.line.begins.with.<code>\
6920 5c 3c 2f 63 6f 64 65 3e 20 74 68 65 6e 20 61 20 6e 65 77 6c 69 6e 65 20 69 73 20 61 70 70 65 6e \</code>.then.a.newline.is.appen
6940 64 65 64 20 61 6e 64 0a 20 20 20 20 20 20 74 68 65 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c ded.and.......the.string.literal
6960 20 63 6f 6e 74 69 6e 75 65 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 .continues........</p>.......<pr
6980 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 68 65 6c 6c 6f 5f e><code.class="zig">const.hello_
69a0 77 6f 72 6c 64 5f 69 6e 5f 63 20 3d 0a 20 20 20 20 5c 5c 23 69 6e 63 6c 75 64 65 20 26 6c 74 3b world_in_c.=.....\\#include.&lt;
69c0 73 74 64 69 6f 2e 68 26 67 74 3b 0a 20 20 20 20 5c 5c 0a 20 20 20 20 5c 5c 69 6e 74 20 6d 61 69 stdio.h&gt;.....\\.....\\int.mai
69e0 6e 28 69 6e 74 20 61 72 67 63 2c 20 63 68 61 72 20 2a 2a 61 72 67 76 29 20 7b 0a 20 20 20 20 5c n(int.argc,.char.**argv).{.....\
6a00 5c 20 20 20 20 70 72 69 6e 74 66 28 22 68 65 6c 6c 6f 20 77 6f 72 6c 64 5c 6e 22 29 3b 0a 20 20 \....printf("hello.world\n");...
6a20 20 20 5c 5c 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 20 20 20 20 5c 5c 7d 0a 3b 3c 2f 63 6f 64 ..\\....return.0;.....\\}.;</cod
6a40 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 46 6f 72 20 61 20 6d e></pre>.......<p>.......For.a.m
6a60 75 6c 74 69 6c 69 6e 65 20 43 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 2c 20 70 72 65 70 65 ultiline.C.string.literal,.prepe
6a80 6e 64 20 3c 63 6f 64 65 3e 63 3c 2f 63 6f 64 65 3e 20 74 6f 20 65 61 63 68 20 3c 63 6f 64 65 3e nd.<code>c</code>.to.each.<code>
6aa0 5c 5c 3c 2f 63 6f 64 65 3e 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 \\</code>:.......</p>.......<pre
6ac0 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 63 5f 73 74 72 69 6e ><code.class="zig">const.c_strin
6ae0 67 5f 6c 69 74 65 72 61 6c 20 3d 0a 20 20 20 20 63 5c 5c 23 69 6e 63 6c 75 64 65 20 26 6c 74 3b g_literal.=.....c\\#include.&lt;
6b00 73 74 64 69 6f 2e 68 26 67 74 3b 0a 20 20 20 20 63 5c 5c 0a 20 20 20 20 63 5c 5c 69 6e 74 20 6d stdio.h&gt;.....c\\.....c\\int.m
6b20 61 69 6e 28 69 6e 74 20 61 72 67 63 2c 20 63 68 61 72 20 2a 2a 61 72 67 76 29 20 7b 0a 20 20 20 ain(int.argc,.char.**argv).{....
6b40 20 63 5c 5c 20 20 20 20 70 72 69 6e 74 66 28 22 68 65 6c 6c 6f 20 77 6f 72 6c 64 5c 6e 22 29 3b .c\\....printf("hello.world\n");
6b60 0a 20 20 20 20 63 5c 5c 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 20 20 20 20 63 5c 5c 7d 0a 3b .....c\\....return.0;.....c\\}.;
6b80 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e </code></pre>.......<p>.......In
6ba0 20 74 68 69 73 20 65 78 61 6d 70 6c 65 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 3c 63 6f 64 65 .this.example.the.variable.<code
6bc0 3e 63 5f 73 74 72 69 6e 67 5f 6c 69 74 65 72 61 6c 3c 2f 63 6f 64 65 3e 20 68 61 73 20 74 79 70 >c_string_literal</code>.has.typ
6be0 65 20 3c 63 6f 64 65 3e 26 61 6d 70 3b 63 6f 6e 73 74 20 63 68 61 72 3c 2f 63 6f 64 65 3e 20 61 e.<code>&amp;const.char</code>.a
6c00 6e 64 0a 20 20 20 20 20 20 68 61 73 20 61 20 74 65 72 6d 69 6e 61 74 69 6e 67 20 6e 75 6c 6c 20 nd.......has.a.terminating.null.
6c20 62 79 74 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c byte........</p>.......<p>See.al
6c40 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c so:</p>.......<ul>.........<li><
6c60 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 65 6d 62 65 64 46 69 6c 65 22 3e 40 65 6d 62 a.href="#builtin-embedFile">@emb
6c80 65 64 46 69 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 edFile</a></li>.......</ul>.....
6ca0 20 20 3c 68 33 20 69 64 3d 22 76 61 6c 75 65 73 2d 61 73 73 69 67 6e 6d 65 6e 74 22 3e 41 73 73 ..<h3.id="values-assignment">Ass
6cc0 69 67 6e 6d 65 6e 74 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 55 73 65 20 3c 63 6f 64 65 3e ignment</h3>.......<p>Use.<code>
6ce0 63 6f 6e 73 74 3c 2f 63 6f 64 65 3e 20 74 6f 20 61 73 73 69 67 6e 20 61 20 76 61 6c 75 65 20 74 const</code>.to.assign.a.value.t
6d00 6f 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e o.an.identifier:</p>.......<pre>
6d20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 78 20 3d 20 31 32 33 34 <code.class="zig">const.x.=.1234
6d40 3b 0a 0a 66 6e 20 66 6f 6f 28 29 20 7b 0a 20 20 20 20 2f 2f 20 49 74 20 77 6f 72 6b 73 20 61 74 ;..fn.foo().{.....//.It.works.at
6d60 20 67 6c 6f 62 61 6c 20 73 63 6f 70 65 20 61 73 20 77 65 6c 6c 20 61 73 20 69 6e 73 69 64 65 20 .global.scope.as.well.as.inside.
6d80 66 75 6e 63 74 69 6f 6e 73 2e 0a 20 20 20 20 63 6f 6e 73 74 20 79 20 3d 20 35 36 37 38 3b 0a 0a functions......const.y.=.5678;..
6da0 20 20 20 20 2f 2f 20 4f 6e 63 65 20 61 73 73 69 67 6e 65 64 2c 20 61 6e 20 69 64 65 6e 74 69 66 ....//.Once.assigned,.an.identif
6dc0 69 65 72 20 63 61 6e 6e 6f 74 20 62 65 20 63 68 61 6e 67 65 64 2e 0a 20 20 20 20 79 20 2b 3d 20 ier.cannot.be.changed......y.+=.
6de0 31 3b 0a 7d 0a 0a 74 65 73 74 20 22 61 73 73 69 67 6e 6d 65 6e 74 22 20 7b 0a 20 20 20 20 66 6f 1;.}..test."assignment".{.....fo
6e00 6f 28 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c o();.}</code></pre>.......<pre><
6e20 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e code.class="sh">$.zig.test.test.
6e40 7a 69 67 0a 74 65 73 74 2e 7a 69 67 3a 38 3a 37 3a 20 65 72 72 6f 72 3a 20 63 61 6e 6e 6f 74 20 zig.test.zig:8:7:.error:.cannot.
6e60 61 73 73 69 67 6e 20 74 6f 20 63 6f 6e 73 74 61 6e 74 0a 20 20 20 20 79 20 2b 3d 20 31 3b 0a 20 assign.to.constant.....y.+=.1;..
6e80 20 20 20 20 20 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 49 66 20 .....^</code></pre>.......<p>If.
6ea0 79 6f 75 20 6e 65 65 64 20 61 20 76 61 72 69 61 62 6c 65 20 74 68 61 74 20 79 6f 75 20 63 61 6e you.need.a.variable.that.you.can
6ec0 20 6d 6f 64 69 66 79 2c 20 75 73 65 20 3c 63 6f 64 65 3e 76 61 72 3c 2f 63 6f 64 65 3e 3a 3c 2f .modify,.use.<code>var</code>:</
6ee0 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e p>.......<pre><code.class="zig">
6f00 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 const.assert.=.@import("std").de
6f20 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 20 22 76 61 72 22 20 7b 0a 20 20 20 20 76 61 bug.assert;..test."var".{.....va
6f40 72 20 79 3a 20 69 33 32 20 3d 20 35 36 37 38 3b 0a 0a 20 20 20 20 79 20 2b 3d 20 31 3b 0a 0a 20 r.y:.i32.=.5678;......y.+=.1;...
6f60 20 20 20 61 73 73 65 72 74 28 79 20 3d 3d 20 35 36 37 39 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f ...assert(y.==.5679);.}</code></
6f80 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 pre>.......<pre><code.class="sh"
6fa0 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 61 73 >$.zig.test.test.zig.Test.1/1.as
6fc0 73 69 67 6e 6d 65 6e 74 2e 2e 2e 4f 4b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 signment...OK</code></pre>......
6fe0 20 3c 70 3e 56 61 72 69 61 62 6c 65 73 20 6d 75 73 74 20 62 65 20 69 6e 69 74 69 61 6c 69 7a 65 .<p>Variables.must.be.initialize
7000 64 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a d:</p>.......<pre><code.class="z
7020 69 67 22 3e 74 65 73 74 20 22 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 22 20 7b 0a 20 20 20 20 ig">test."initialization".{.....
7040 76 61 72 20 78 3a 20 69 33 32 3b 0a 0a 20 20 20 20 78 20 3d 20 31 3b 0a 7d 3c 2f 63 6f 64 65 3e var.x:.i32;......x.=.1;.}</code>
7060 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 </pre>.......<pre><code.class="s
7080 68 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 74 65 73 74 2e 7a 69 67 3a h">$.zig.test.test.zig.test.zig:
70a0 33 3a 35 3a 20 65 72 72 6f 72 3a 20 76 61 72 69 61 62 6c 65 73 20 6d 75 73 74 20 62 65 20 69 6e 3:5:.error:.variables.must.be.in
70c0 69 74 69 61 6c 69 7a 65 64 0a 20 20 20 20 76 61 72 20 78 3a 20 69 33 32 3b 0a 20 20 20 20 5e 3c itialized.....var.x:.i32;.....^<
70e0 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 55 73 65 20 3c 63 6f 64 65 3e /code></pre>.......<p>Use.<code>
7100 75 6e 64 65 66 69 6e 65 64 3c 2f 63 6f 64 65 3e 20 74 6f 20 6c 65 61 76 65 20 76 61 72 69 61 62 undefined</code>.to.leave.variab
7120 6c 65 73 20 75 6e 69 6e 69 74 69 61 6c 69 7a 65 64 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 les.uninitialized:</p>.......<pr
7140 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 e><code.class="zig">const.assert
7160 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a .=.@import("std").debug.assert;.
7180 0a 74 65 73 74 20 22 69 6e 69 74 20 77 69 74 68 20 75 6e 64 65 66 69 6e 65 64 22 20 7b 0a 20 20 .test."init.with.undefined".{...
71a0 20 20 76 61 72 20 78 3a 20 69 33 32 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 78 20 ..var.x:.i32.=.undefined;.....x.
71c0 3d 20 31 3b 0a 20 20 20 20 61 73 73 65 72 74 28 78 20 3d 3d 20 31 29 3b 0a 7d 3c 2f 63 6f 64 65 =.1;.....assert(x.==.1);.}</code
71e0 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 ></pre>.......<pre><code.class="
7200 73 68 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 sh">$.zig.test.test.zig.Test.1/1
7220 20 69 6e 69 74 20 77 69 74 68 20 75 6e 64 65 66 69 6e 65 64 2e 2e 2e 4f 4b 3c 2f 63 6f 64 65 3e .init.with.undefined...OK</code>
7240 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 69 6e 74 65 67 65 72 73 22 3e 49 </pre>.......<h2.id="integers">I
7260 6e 74 65 67 65 72 73 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 69 6e 74 65 67 ntegers</h2>.......<h3.id="integ
7280 65 72 2d 6c 69 74 65 72 61 6c 73 22 3e 49 6e 74 65 67 65 72 20 4c 69 74 65 72 61 6c 73 3c 2f 68 er-literals">Integer.Literals</h
72a0 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 3>.......<pre><code.class="zig">
72c0 63 6f 6e 73 74 20 64 65 63 69 6d 61 6c 5f 69 6e 74 20 3d 20 39 38 32 32 32 3b 0a 63 6f 6e 73 74 const.decimal_int.=.98222;.const
72e0 20 68 65 78 5f 69 6e 74 20 3d 20 30 78 66 66 3b 0a 63 6f 6e 73 74 20 61 6e 6f 74 68 65 72 5f 68 .hex_int.=.0xff;.const.another_h
7300 65 78 5f 69 6e 74 20 3d 20 30 78 46 46 3b 0a 63 6f 6e 73 74 20 6f 63 74 61 6c 5f 69 6e 74 20 3d ex_int.=.0xFF;.const.octal_int.=
7320 20 30 6f 37 35 35 3b 0a 63 6f 6e 73 74 20 62 69 6e 61 72 79 5f 69 6e 74 20 3d 20 30 62 31 31 31 .0o755;.const.binary_int.=.0b111
7340 31 30 30 30 30 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 10000;</code></pre>.......<h3.id
7360 3d 22 72 75 6e 74 69 6d 65 2d 69 6e 74 65 67 65 72 2d 76 61 6c 75 65 73 22 3e 52 75 6e 74 69 6d ="runtime-integer-values">Runtim
7380 65 20 49 6e 74 65 67 65 72 20 56 61 6c 75 65 73 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 0a e.Integer.Values</h3>.......<p>.
73a0 20 20 20 20 20 20 49 6e 74 65 67 65 72 20 6c 69 74 65 72 61 6c 73 20 68 61 76 65 20 6e 6f 20 73 ......Integer.literals.have.no.s
73c0 69 7a 65 20 6c 69 6d 69 74 61 74 69 6f 6e 2c 20 61 6e 64 20 69 66 20 61 6e 79 20 75 6e 64 65 66 ize.limitation,.and.if.any.undef
73e0 69 6e 65 64 20 62 65 68 61 76 69 6f 72 20 6f 63 63 75 72 73 2c 0a 20 20 20 20 20 20 74 68 65 20 ined.behavior.occurs,.......the.
7400 63 6f 6d 70 69 6c 65 72 20 63 61 74 63 68 65 73 20 69 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a compiler.catches.it........</p>.
7420 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 48 6f 77 65 76 65 72 2c 20 6f 6e 63 65 20 61 6e ......<p>.......However,.once.an
7440 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 20 69 73 20 6e 6f 20 6c 6f 6e 67 65 72 20 6b 6e 6f 77 .integer.value.is.no.longer.know
7460 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 69 74 20 6d 75 73 74 20 68 61 76 65 20 n.at.compile-time,.it.must.have.
7480 61 0a 20 20 20 20 20 20 6b 6e 6f 77 6e 20 73 69 7a 65 2c 20 61 6e 64 20 69 73 20 76 75 6c 6e 65 a.......known.size,.and.is.vulne
74a0 72 61 62 6c 65 20 74 6f 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2e 0a 20 20 20 rable.to.undefined.behavior.....
74c0 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 ...</p>.......<pre><code.class="
74e0 7a 69 67 22 3e 66 6e 20 64 69 76 69 64 65 28 61 3a 20 69 33 32 2c 20 62 3a 20 69 33 32 29 20 2d zig">fn.divide(a:.i32,.b:.i32).-
7500 26 67 74 3b 20 69 33 32 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 61 20 2f 20 62 3b 0a 7d 3c 2f &gt;.i32.{.....return.a./.b;.}</
7520 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 20 74 code></pre>.......<p>.......In.t
7540 68 69 73 20 66 75 6e 63 74 69 6f 6e 2c 20 76 61 6c 75 65 73 20 3c 63 6f 64 65 3e 61 3c 2f 63 6f his.function,.values.<code>a</co
7560 64 65 3e 20 61 6e 64 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 20 61 72 65 20 6b 6e 6f 77 6e de>.and.<code>b</code>.are.known
7580 20 6f 6e 6c 79 20 61 74 20 72 75 6e 74 69 6d 65 2c 0a 20 20 20 20 20 20 61 6e 64 20 74 68 75 73 .only.at.runtime,.......and.thus
75a0 20 74 68 69 73 20 64 69 76 69 73 69 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 20 69 73 20 76 75 6c 6e .this.division.operation.is.vuln
75c0 65 72 61 62 6c 65 20 74 6f 20 62 6f 74 68 20 69 6e 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 20 erable.to.both.integer.overflow.
75e0 61 6e 64 0a 20 20 20 20 20 20 64 69 76 69 73 69 6f 6e 20 62 79 20 7a 65 72 6f 2e 0a 20 20 20 20 and.......division.by.zero......
7600 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4f 70 65 72 61 74 6f 72 73 ..</p>.......<p>.......Operators
7620 20 73 75 63 68 20 61 73 20 3c 63 6f 64 65 3e 2b 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 3c 63 6f 64 .such.as.<code>+</code>.and.<cod
7640 65 3e 2d 3c 2f 63 6f 64 65 3e 20 63 61 75 73 65 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 e>-</code>.cause.undefined.behav
7660 69 6f 72 20 6f 6e 0a 20 20 20 20 20 20 69 6e 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 2e 20 41 ior.on.......integer.overflow..A
7680 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 20 61 72 65 20 6f 70 65 72 61 74 69 6f 6e 73 20 73 75 63 lso.available.are.operations.suc
76a0 68 20 61 73 20 3c 63 6f 64 65 3e 2b 25 3c 2f 63 6f 64 65 3e 20 61 6e 64 0a 20 20 20 20 20 20 3c h.as.<code>+%</code>.and.......<
76c0 63 6f 64 65 3e 2d 25 3c 2f 63 6f 64 65 3e 20 77 68 69 63 68 20 61 72 65 20 64 65 66 69 6e 65 64 code>-%</code>.which.are.defined
76e0 20 74 6f 20 68 61 76 65 20 77 72 61 70 70 69 6e 67 20 61 72 69 74 68 6d 65 74 69 63 20 6f 6e 20 .to.have.wrapping.arithmetic.on.
7700 61 6c 6c 20 74 61 72 67 65 74 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 all.targets........</p>.......<p
7720 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 >See.also:</p>.......<ul>.......
7740 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 69 6e 74 65 67 65 72 2d 6f 76 ..<li><a.href="#undef-integer-ov
7760 65 72 66 6c 6f 77 22 3e 49 6e 74 65 67 65 72 20 4f 76 65 72 66 6c 6f 77 3c 2f 61 3e 3c 2f 6c 69 erflow">Integer.Overflow</a></li
7780 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 64 69 >.........<li><a.href="#undef-di
77a0 76 69 73 69 6f 6e 2d 62 79 2d 7a 65 72 6f 22 3e 44 69 76 69 73 69 6f 6e 20 42 79 20 5a 65 72 6f vision-by-zero">Division.By.Zero
77c0 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 </a></li>.........<li><a.href="#
77e0 75 6e 64 65 66 2d 69 6e 74 2d 6f 76 65 72 66 6c 6f 77 2d 77 72 61 70 22 3e 57 72 61 70 70 69 6e undef-int-overflow-wrap">Wrappin
7800 67 20 4f 70 65 72 61 74 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c g.Operations</a></li>.......</ul
7820 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 66 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c 2f >.......<h2.id="floats">Floats</
7840 68 32 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 66 6c 6f 61 74 2d 6c 69 74 65 72 61 6c 73 h2>.......<h3.id="float-literals
7860 22 3e 46 6c 6f 61 74 20 4c 69 74 65 72 61 6c 73 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 ">Float.Literals</h3>.......<pre
7880 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 66 6c 6f 61 74 69 6e ><code.class="zig">const.floatin
78a0 67 5f 70 6f 69 6e 74 20 3d 20 31 32 33 2e 30 45 2b 37 37 3b 0a 63 6f 6e 73 74 20 61 6e 6f 74 68 g_point.=.123.0E+77;.const.anoth
78c0 65 72 5f 66 6c 6f 61 74 20 3d 20 31 32 33 2e 30 3b 0a 63 6f 6e 73 74 20 79 65 74 5f 61 6e 6f 74 er_float.=.123.0;.const.yet_anot
78e0 68 65 72 20 3d 20 31 32 33 2e 30 65 2b 37 37 3b 0a 0a 63 6f 6e 73 74 20 68 65 78 5f 66 6c 6f 61 her.=.123.0e+77;..const.hex_floa
7900 74 69 6e 67 5f 70 6f 69 6e 74 20 3d 20 30 78 31 30 33 2e 37 30 70 2d 35 3b 0a 63 6f 6e 73 74 20 ting_point.=.0x103.70p-5;.const.
7920 61 6e 6f 74 68 65 72 5f 68 65 78 5f 66 6c 6f 61 74 20 3d 20 30 78 31 30 33 2e 37 30 3b 0a 63 6f another_hex_float.=.0x103.70;.co
7940 6e 73 74 20 79 65 74 5f 61 6e 6f 74 68 65 72 5f 68 65 78 5f 66 6c 6f 61 74 20 3d 20 30 78 31 30 nst.yet_another_hex_float.=.0x10
7960 33 2e 37 30 50 2d 35 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 33 20 3.70P-5;</code></pre>.......<h3.
7980 69 64 3d 22 66 6c 6f 61 74 2d 6f 70 65 72 61 74 69 6f 6e 73 22 3e 46 6c 6f 61 74 69 6e 67 20 50 id="float-operations">Floating.P
79a0 6f 69 6e 74 20 4f 70 65 72 61 74 69 6f 6e 73 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 42 79 oint.Operations</h3>.......<p>By
79c0 20 64 65 66 61 75 6c 74 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6f 70 65 72 61 74 69 6f .default.floating.point.operatio
79e0 6e 73 20 75 73 65 20 3c 63 6f 64 65 3e 4f 70 74 69 6d 69 7a 65 64 3c 2f 63 6f 64 65 3e 20 6d 6f ns.use.<code>Optimized</code>.mo
7a00 64 65 2c 0a 20 20 20 20 20 20 62 75 74 20 79 6f 75 20 63 61 6e 20 73 77 69 74 63 68 20 74 6f 20 de,.......but.you.can.switch.to.
7a20 3c 63 6f 64 65 3e 53 74 72 69 63 74 3c 2f 63 6f 64 65 3e 20 6d 6f 64 65 20 6f 6e 20 61 20 70 65 <code>Strict</code>.mode.on.a.pe
7a40 72 2d 62 6c 6f 63 6b 20 62 61 73 69 73 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 66 6f 6f 2e r-block.basis:</p>.......<p>foo.
7a60 7a 69 67 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 zig</p>.......<pre><code.class="
7a80 7a 69 67 22 3e 63 6f 6e 73 74 20 62 75 69 6c 74 69 6e 20 3d 20 40 69 6d 70 6f 72 74 28 22 62 75 zig">const.builtin.=.@import("bu
7aa0 69 6c 74 69 6e 22 29 3b 0a 63 6f 6e 73 74 20 62 69 67 20 3d 20 66 36 34 28 31 20 26 6c 74 3b 26 iltin");.const.big.=.f64(1.&lt;&
7ac0 6c 74 3b 20 34 30 29 3b 0a 0a 65 78 70 6f 72 74 20 66 6e 20 66 6f 6f 5f 73 74 72 69 63 74 28 78 lt;.40);..export.fn.foo_strict(x
7ae0 3a 20 66 36 34 29 20 2d 26 67 74 3b 20 66 36 34 20 7b 0a 20 20 20 20 40 73 65 74 46 6c 6f 61 74 :.f64).-&gt;.f64.{.....@setFloat
7b00 4d 6f 64 65 28 74 68 69 73 2c 20 62 75 69 6c 74 69 6e 2e 46 6c 6f 61 74 4d 6f 64 65 2e 53 74 72 Mode(this,.builtin.FloatMode.Str
7b20 69 63 74 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 78 20 2b 20 62 69 67 20 2d 20 62 69 67 3b 0a ict);.....return.x.+.big.-.big;.
7b40 7d 0a 0a 65 78 70 6f 72 74 20 66 6e 20 66 6f 6f 5f 6f 70 74 69 6d 69 7a 65 64 28 78 3a 20 66 36 }..export.fn.foo_optimized(x:.f6
7b60 34 29 20 2d 26 67 74 3b 20 66 36 34 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 78 20 2b 20 62 69 4).-&gt;.f64.{.....return.x.+.bi
7b80 67 20 2d 20 62 69 67 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 g.-.big;.}</code></pre>.......<p
7ba0 3e 74 65 73 74 2e 7a 69 67 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 >test.zig</p>.......<pre><code.c
7bc0 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 69 6f 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 lass="zig">const.io.=.@import("s
7be0 74 64 22 29 2e 69 6f 3b 0a 0a 65 78 74 65 72 6e 20 66 6e 20 66 6f 6f 5f 73 74 72 69 63 74 28 78 td").io;..extern.fn.foo_strict(x
7c00 3a 20 66 36 34 29 20 2d 26 67 74 3b 20 66 36 34 3b 0a 65 78 74 65 72 6e 20 66 6e 20 66 6f 6f 5f :.f64).-&gt;.f64;.extern.fn.foo_
7c20 6f 70 74 69 6d 69 7a 65 64 28 78 3a 20 66 36 34 29 20 2d 26 67 74 3b 20 66 36 34 3b 0a 0a 70 75 optimized(x:.f64).-&gt;.f64;..pu
7c40 62 20 66 6e 20 6d 61 69 6e 28 29 20 2d 26 67 74 3b 20 25 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f b.fn.main().-&gt;.%void.{.....co
7c60 6e 73 74 20 78 20 3d 20 30 2e 30 30 31 3b 0a 20 20 20 20 25 25 69 6f 2e 73 74 64 6f 75 74 2e 70 nst.x.=.0.001;.....%%io.stdout.p
7c80 72 69 6e 74 66 28 22 6f 70 74 69 6d 69 7a 65 64 20 3d 20 7b 7d 5c 6e 22 2c 20 66 6f 6f 5f 6f 70 rintf("optimized.=.{}\n",.foo_op
7ca0 74 69 6d 69 7a 65 64 28 78 29 29 3b 0a 20 20 20 20 25 25 69 6f 2e 73 74 64 6f 75 74 2e 70 72 69 timized(x));.....%%io.stdout.pri
7cc0 6e 74 66 28 22 73 74 72 69 63 74 20 3d 20 7b 7d 5c 6e 22 2c 20 66 6f 6f 5f 73 74 72 69 63 74 28 ntf("strict.=.{}\n",.foo_strict(
7ce0 78 29 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 46 6f 72 x));.}</code></pre>.......<p>For
7d00 20 74 68 69 73 20 74 65 73 74 20 77 65 20 68 61 76 65 20 74 6f 20 73 65 70 61 72 61 74 65 20 63 .this.test.we.have.to.separate.c
7d20 6f 64 65 20 69 6e 74 6f 20 74 77 6f 20 6f 62 6a 65 63 74 20 66 69 6c 65 73 20 2d 0a 20 20 20 20 ode.into.two.object.files.-.....
7d40 20 20 6f 74 68 65 72 77 69 73 65 20 74 68 65 20 6f 70 74 69 6d 69 7a 65 72 20 66 69 67 75 72 65 ..otherwise.the.optimizer.figure
7d60 73 20 6f 75 74 20 61 6c 6c 20 74 68 65 20 76 61 6c 75 65 73 20 61 74 20 63 6f 6d 70 69 6c 65 2d s.out.all.the.values.at.compile-
7d80 74 69 6d 65 2c 0a 20 20 20 20 20 20 77 68 69 63 68 20 6f 70 65 72 61 74 65 73 20 69 6e 20 73 74 time,.......which.operates.in.st
7da0 72 69 63 74 20 6d 6f 64 65 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 rict.mode.</p>.......<pre><code.
7dc0 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 66 6f 6f 2e 7a class="sh">$.zig.build-obj.foo.z
7de0 69 67 20 2d 2d 72 65 6c 65 61 73 65 2d 66 61 73 74 0a 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 ig.--release-fast.$.zig.build-ex
7e00 65 20 74 65 73 74 2e 7a 69 67 20 2d 2d 6f 62 6a 65 63 74 20 66 6f 6f 2e 6f 0a 24 20 2e 2f 74 65 e.test.zig.--object.foo.o.$../te
7e20 73 74 0a 6f 70 74 69 6d 69 7a 65 64 20 3d 20 31 2e 30 65 2d 32 0a 73 74 72 69 63 74 20 3d 20 39 st.optimized.=.1.0e-2.strict.=.9
7e40 2e 37 36 35 36 32 35 65 2d 33 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 .765625e-3</code></pre>.......<p
7e60 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 >See.also:</p>.......<ul>.......
7e80 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 65 74 46 6c 6f 61 74 ..<li><a.href="#builtin-setFloat
7ea0 4d 6f 64 65 22 3e 40 73 65 74 46 6c 6f 61 74 4d 6f 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 Mode">@setFloatMode</a></li>....
7ec0 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 64 69 76 69 73 69 6f .....<li><a.href="#undef-divisio
7ee0 6e 2d 62 79 2d 7a 65 72 6f 22 3e 44 69 76 69 73 69 6f 6e 20 42 79 20 5a 65 72 6f 3c 2f 61 3e 3c n-by-zero">Division.By.Zero</a><
7f00 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 6f /li>.......</ul>.......<h2.id="o
7f20 70 65 72 61 74 6f 72 73 22 3e 4f 70 65 72 61 74 6f 72 73 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c perators">Operators</h2>.......<
7f40 68 33 20 69 64 3d 22 6f 70 65 72 61 74 6f 72 73 2d 74 61 62 6c 65 22 3e 54 61 62 6c 65 20 6f 66 h3.id="operators-table">Table.of
7f60 20 4f 70 65 72 61 74 6f 72 73 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 74 61 62 6c 65 3e 0a 20 20 .Operators</h2>.......<table>...
7f80 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 ......<tr>...........<th>.......
7fa0 20 20 20 20 20 20 53 79 6e 74 61 78 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 ......Syntax...........</th>....
7fc0 20 20 20 20 20 20 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 65 6c 65 76 61 6e 74 .......<th>.............Relevant
7fe0 20 54 79 70 65 73 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 20 20 .Types...........</th>..........
8000 20 3c 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 44 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 .<th>.............Description...
8020 20 20 20 20 20 20 20 20 3c 2f 74 68 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 68 3e 0a 20 20 20 ........</th>...........<th>....
8040 20 20 20 20 20 20 20 20 20 45 78 61 6d 70 6c 65 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 68 3e .........Example...........</th>
8060 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 .........</tr>.........<tr>.....
8080 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 ......<td><pre><code.class="zig"
80a0 3e 61 20 2b 20 62 0a 61 20 2b 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a >a.+.b.a.+=.b</code></pre></td>.
80c0 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a ..........<td>.............<ul>.
80e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 ..............<li><a.href="#inte
8100 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 gers">Integers</a></li>.........
8120 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 73 22 3e 46 6c 6f 61 ......<li><a.href="#floats">Floa
8140 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 ts</a></li>.............</ul>...
8160 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 41 64 64 69 ........</td>...........<td>Addi
8180 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 tion..............<ul>..........
81a0 20 20 20 20 20 3c 6c 69 3e 43 61 6e 20 63 61 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 .....<li>Can.cause.<a.href="#und
81c0 65 66 2d 69 6e 74 65 67 65 72 2d 6f 76 65 72 66 6c 6f 77 22 3e 6f 76 65 72 66 6c 6f 77 3c 2f 61 ef-integer-overflow">overflow</a
81e0 3e 20 66 6f 72 20 69 6e 74 65 67 65 72 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 >.for.integers.</li>............
8200 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 .</ul>...........</td>..........
8220 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 .<td>.............<pre><code.cla
8240 73 73 3d 22 7a 69 67 22 3e 32 20 2b 20 35 20 3d 3d 20 37 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e ss="zig">2.+.5.==.7</code></pre>
8260 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 ...........</td>.........</tr>..
8280 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c .......<tr>...........<td><pre><
82a0 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 2b 25 20 62 0a 61 20 2b 25 3d 20 62 3c code.class="zig">a.+%.b.a.+%=.b<
82c0 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e /code></pre></td>...........<td>
82e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .............<ul>...............
8300 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 <li><a.href="#integers">Integers
8320 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 </a></li>.............</ul>.....
8340 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 57 72 61 70 70 69 ......</td>...........<td>Wrappi
8360 6e 67 20 41 64 64 69 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 ng.Addition..............<ul>...
8380 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 47 75 61 72 61 6e 74 65 65 64 20 74 6f 20 68 61 ............<li>Guaranteed.to.ha
83a0 76 65 20 74 77 6f 73 2d 63 6f 6d 70 6c 65 6d 65 6e 74 20 77 72 61 70 70 69 6e 67 20 62 65 68 61 ve.twos-complement.wrapping.beha
83c0 76 69 6f 72 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 vior.</li>.............</ul>....
83e0 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 .......</td>...........<td>.....
8400 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 75 ........<pre><code.class="zig">u
8420 33 32 28 40 6d 61 78 56 61 6c 75 65 28 75 33 32 29 29 20 2b 25 20 31 20 3d 3d 20 30 3c 2f 63 6f 32(@maxValue(u32)).+%.1.==.0</co
8440 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 de></pre>...........</td>.......
8460 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c ..</tr>.........<tr>...........<
8480 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 2d 20 62 0a td><pre><code.class="zig">a.-.b.
84a0 61 20 2d 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 a.-=.b</code></pre></td>........
84c0 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 ...<td>.............<ul>........
84e0 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 65 72 73 22 3e 49 .......<li><a.href="#integers">I
8500 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c ntegers</a></li>...............<
8520 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c 2f 61 3e 3c li><a.href="#floats">Floats</a><
8540 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 /li>.............</ul>..........
8560 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 53 75 62 74 72 61 63 74 69 6f 6e .</td>...........<td>Subtraction
8580 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..............<ul>..............
85a0 20 3c 6c 69 3e 43 61 6e 20 63 61 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 69 .<li>Can.cause.<a.href="#undef-i
85c0 6e 74 65 67 65 72 2d 6f 76 65 72 66 6c 6f 77 22 3e 6f 76 65 72 66 6c 6f 77 3c 2f 61 3e 20 66 6f nteger-overflow">overflow</a>.fo
85e0 72 20 69 6e 74 65 67 65 72 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 r.integers.</li>.............</u
8600 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 l>...........</td>...........<td
8620 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 >.............<pre><code.class="
8640 7a 69 67 22 3e 32 20 2d 20 35 20 3d 3d 20 2d 33 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 zig">2.-.5.==.-3</code></pre>...
8660 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 ........</td>.........</tr>.....
8680 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 ....<tr>...........<td><pre><cod
86a0 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 2d 25 20 62 0a 61 20 2d 25 3d 20 62 3c 2f 63 6f e.class="zig">a.-%.b.a.-%=.b</co
86c0 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 de></pre></td>...........<td>...
86e0 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 ..........<ul>...............<li
8700 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 ><a.href="#integers">Integers</a
8720 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 ></li>.............</ul>........
8740 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 57 72 61 70 70 69 6e 67 20 ...</td>...........<td>Wrapping.
8760 53 75 62 74 72 61 63 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 Subtraction..............<ul>...
8780 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 47 75 61 72 61 6e 74 65 65 64 20 74 6f 20 68 61 ............<li>Guaranteed.to.ha
87a0 76 65 20 74 77 6f 73 2d 63 6f 6d 70 6c 65 6d 65 6e 74 20 77 72 61 70 70 69 6e 67 20 62 65 68 61 ve.twos-complement.wrapping.beha
87c0 76 69 6f 72 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 vior.</li>.............</ul>....
87e0 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 .......</td>...........<td>.....
8800 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 75 ........<pre><code.class="zig">u
8820 33 32 28 30 29 20 2d 25 20 31 20 3d 3d 20 40 6d 61 78 56 61 6c 75 65 28 75 33 32 29 3c 2f 63 6f 32(0).-%.1.==.@maxValue(u32)</co
8840 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 de></pre>...........</td>.......
8860 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c ..</tr>.........<tr>...........<
8880 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2d 61 3c 63 6f 64 td><pre><code.class="zig">-a<cod
88a0 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 e></pre></td>...........<td>....
88c0 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e .........<ul>...............<li>
88e0 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e <a.href="#integers">Integers</a>
8900 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d </li>...............<li><a.href=
8920 22 23 66 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 "#floats">Floats</a></li>.......
8940 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 ......</ul>...........</td>.....
8960 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e 65 67 61 74 69 6f 6e 2e ......<td>.............Negation.
8980 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .............<ul>...............
89a0 3c 6c 69 3e 43 61 6e 20 63 61 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 69 6e <li>Can.cause.<a.href="#undef-in
89c0 74 65 67 65 72 2d 6f 76 65 72 66 6c 6f 77 22 3e 6f 76 65 72 66 6c 6f 77 3c 2f 61 3e 20 66 6f 72 teger-overflow">overflow</a>.for
89e0 20 69 6e 74 65 67 65 72 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c .integers.</li>.............</ul
8a00 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e >...........</td>...........<td>
8a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a .............<pre><code.class="z
8a40 69 67 22 3e 2d 31 20 3d 3d 20 30 20 2d 20 31 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 ig">-1.==.0.-.1</code></pre>....
8a60 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 .......</td>.........</tr>......
8a80 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 ...<tr>...........<td><pre><code
8aa0 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2d 25 61 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 .class="zig">-%a<code></pre></td
8ac0 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c >...........<td>.............<ul
8ae0 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e >...............<li><a.href="#in
8b00 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 tegers">Integers</a></li>.......
8b20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 ......</ul>...........</td>.....
8b40 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 57 72 61 70 70 69 6e 67 20 ......<td>.............Wrapping.
8b60 4e 65 67 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 Negation..............<ul>......
8b80 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 47 75 61 72 61 6e 74 65 65 64 20 74 6f 20 68 61 76 65 20 .........<li>Guaranteed.to.have.
8ba0 74 77 6f 73 2d 63 6f 6d 70 6c 65 6d 65 6e 74 20 77 72 61 70 70 69 6e 67 20 62 65 68 61 76 69 6f twos-complement.wrapping.behavio
8bc0 72 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 r.</li>.............</ul>.......
8be0 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 ....</td>...........<td>........
8c00 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2d 25 69 33 .....<pre><code.class="zig">-%i3
8c20 32 28 40 6d 69 6e 56 61 6c 75 65 28 69 33 32 29 29 20 3d 3d 20 40 6d 69 6e 56 61 6c 75 65 28 69 2(@minValue(i32)).==.@minValue(i
8c40 33 32 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 32)</code></pre>...........</td>
8c60 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 .........</tr>.........<tr>.....
8c80 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 ......<td><pre><code.class="zig"
8ca0 3e 61 20 2a 20 62 0a 61 20 2a 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a >a.*.b.a.*=.b</code></pre></td>.
8cc0 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a ..........<td>.............<ul>.
8ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 ..............<li><a.href="#inte
8d00 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 gers">Integers</a></li>.........
8d20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 73 22 3e 46 6c 6f 61 ......<li><a.href="#floats">Floa
8d40 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 ts</a></li>.............</ul>...
8d60 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 4d 75 6c 74 ........</td>...........<td>Mult
8d80 69 70 6c 69 63 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 iplication..............<ul>....
8da0 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 43 61 6e 20 63 61 75 73 65 20 3c 61 20 68 72 65 66 ...........<li>Can.cause.<a.href
8dc0 3d 22 23 75 6e 64 65 66 2d 69 6e 74 65 67 65 72 2d 6f 76 65 72 66 6c 6f 77 22 3e 6f 76 65 72 66 ="#undef-integer-overflow">overf
8de0 6c 6f 77 3c 2f 61 3e 20 66 6f 72 20 69 6e 74 65 67 65 72 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 low</a>.for.integers.</li>......
8e00 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 .......</ul>...........</td>....
8e20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f .......<td>.............<pre><co
8e40 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 32 20 2a 20 35 20 3d 3d 20 31 30 3c 2f 63 6f 64 65 de.class="zig">2.*.5.==.10</code
8e60 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 ></pre>...........</td>.........
8e80 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 </tr>.........<tr>...........<td
8ea0 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 2a 25 20 62 0a 61 ><pre><code.class="zig">a.*%.b.a
8ec0 20 2a 25 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 .*%=.b</code></pre></td>........
8ee0 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 ...<td>.............<ul>........
8f00 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 65 72 73 22 3e 49 .......<li><a.href="#integers">I
8f20 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 ntegers</a></li>.............</u
8f40 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 l>...........</td>...........<td
8f60 3e 57 72 61 70 70 69 6e 67 20 4d 75 6c 74 69 70 6c 69 63 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 >Wrapping.Multiplication........
8f80 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 47 75 61 ......<ul>...............<li>Gua
8fa0 72 61 6e 74 65 65 64 20 74 6f 20 68 61 76 65 20 74 77 6f 73 2d 63 6f 6d 70 6c 65 6d 65 6e 74 20 ranteed.to.have.twos-complement.
8fc0 77 72 61 70 70 69 6e 67 20 62 65 68 61 76 69 6f 72 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 wrapping.behavior.</li>.........
8fe0 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 ....</ul>...........</td>.......
9000 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 ....<td>.............<pre><code.
9020 63 6c 61 73 73 3d 22 7a 69 67 22 3e 75 38 28 32 30 30 29 20 2a 25 20 32 20 3d 3d 20 31 34 34 3c class="zig">u8(200).*%.2.==.144<
9040 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 /code></pre>...........</td>....
9060 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 .....</tr>.........<tr>.........
9080 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 2f ..<td><pre><code.class="zig">a./
90a0 20 62 0a 61 20 2f 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 .b.a./=.b</code></pre></td>.....
90c0 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 ......<td>.............<ul>.....
90e0 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 65 72 73 ..........<li><a.href="#integers
9100 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ">Integers</a></li>.............
9120 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c 2f ..<li><a.href="#floats">Floats</
9140 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 a></li>.............</ul>.......
9160 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 44 69 76 69 73 6f 6e 2e ....</td>...........<td>Divison.
9180 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .............<ul>...............
91a0 3c 6c 69 3e 43 61 6e 20 63 61 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 69 6e <li>Can.cause.<a.href="#undef-in
91c0 74 65 67 65 72 2d 6f 76 65 72 66 6c 6f 77 22 3e 6f 76 65 72 66 6c 6f 77 3c 2f 61 3e 20 66 6f 72 teger-overflow">overflow</a>.for
91e0 20 69 6e 74 65 67 65 72 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c .integers.</li>...............<l
9200 69 3e 43 61 6e 20 63 61 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 64 69 76 69 i>Can.cause.<a.href="#undef-divi
9220 73 69 6f 6e 2d 62 79 2d 7a 65 72 6f 22 3e 64 69 76 69 73 69 6f 6e 20 62 79 20 7a 65 72 6f 3c 2f sion-by-zero">division.by.zero</
9240 61 3e 20 66 6f 72 20 69 6e 74 65 67 65 72 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 a>.for.integers.</li>...........
9260 20 20 20 20 3c 6c 69 3e 43 61 6e 20 63 61 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 ....<li>Can.cause.<a.href="#unde
9280 66 2d 64 69 76 69 73 69 6f 6e 2d 62 79 2d 7a 65 72 6f 22 3e 64 69 76 69 73 69 6f 6e 20 62 79 20 f-division-by-zero">division.by.
92a0 7a 65 72 6f 3c 2f 61 3e 20 66 6f 72 20 66 6c 6f 61 74 73 20 69 6e 20 3c 61 20 68 72 65 66 3d 22 zero</a>.for.floats.in.<a.href="
92c0 23 66 6c 6f 61 74 2d 6f 70 65 72 61 74 69 6f 6e 73 22 3e 46 6c 6f 61 74 4d 6f 64 65 2e 4f 70 74 #float-operations">FloatMode.Opt
92e0 69 6d 69 7a 65 64 20 4d 6f 64 65 3c 2f 61 3e 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 imized.Mode</a>.</li>...........
9300 20 20 20 20 3c 6c 69 3e 46 6f 72 20 6e 6f 6e 2d 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2d 6b 6e 6f ....<li>For.non-compile-time-kno
9320 77 6e 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 73 2c 20 6d 75 73 74 20 75 73 65 0a 20 20 20 wn.signed.integers,.must.use....
9340 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 64 .............<a.href="#builtin-d
9360 69 76 54 72 75 6e 63 22 3e 40 64 69 76 54 72 75 6e 63 3c 2f 61 3e 2c 0a 20 20 20 20 20 20 20 20 ivTrunc">@divTrunc</a>,.........
9380 20 20 20 20 20 20 20 20 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 64 69 76 46 6c 6f ........<a.href="#builtin-divFlo
93a0 6f 72 22 3e 40 64 69 76 46 6c 6f 6f 72 3c 2f 61 3e 2c 20 6f 72 0a 20 20 20 20 20 20 20 20 20 20 or">@divFloor</a>,.or...........
93c0 20 20 20 20 20 20 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 64 69 76 45 78 61 63 74 ......<a.href="#builtin-divExact
93e0 22 3e 40 64 69 76 45 78 61 63 74 3c 2f 61 3e 20 69 6e 73 74 65 61 64 20 6f 66 20 3c 63 6f 64 65 ">@divExact</a>.instead.of.<code
9400 3e 2f 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 >/</code>................</li>..
9420 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e ...........</ul>...........</td>
9440 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 ...........<td>.............<pre
9460 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 31 30 20 2f 20 35 20 3d 3d 20 32 3c 2f ><code.class="zig">10./.5.==.2</
9480 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 code></pre>...........</td>.....
94a0 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 ....</tr>.........<tr>..........
94c0 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 25 20 .<td><pre><code.class="zig">a.%.
94e0 62 0a 61 20 25 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 b.a.%=.b</code></pre></td>......
9500 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 .....<td>.............<ul>......
9520 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 65 72 73 22 .........<li><a.href="#integers"
9540 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 >Integers</a></li>..............
9560 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c 2f 61 .<li><a.href="#floats">Floats</a
9580 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 ></li>.............</ul>........
95a0 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 52 65 6d 61 69 6e 64 65 72 ...</td>...........<td>Remainder
95c0 20 44 69 76 69 73 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 .Division..............<ul>.....
95e0 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 43 61 6e 20 63 61 75 73 65 20 3c 61 20 68 72 65 66 3d ..........<li>Can.cause.<a.href=
9600 22 23 75 6e 64 65 66 2d 64 69 76 69 73 69 6f 6e 2d 62 79 2d 7a 65 72 6f 22 3e 64 69 76 69 73 69 "#undef-division-by-zero">divisi
9620 6f 6e 20 62 79 20 7a 65 72 6f 3c 2f 61 3e 20 66 6f 72 20 69 6e 74 65 67 65 72 73 2e 3c 2f 6c 69 on.by.zero</a>.for.integers.</li
9640 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 43 61 6e 20 63 61 75 73 65 20 3c 61 >...............<li>Can.cause.<a
9660 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 64 69 76 69 73 69 6f 6e 2d 62 79 2d 7a 65 72 6f 22 3e .href="#undef-division-by-zero">
9680 64 69 76 69 73 69 6f 6e 20 62 79 20 7a 65 72 6f 3c 2f 61 3e 20 66 6f 72 20 66 6c 6f 61 74 73 20 division.by.zero</a>.for.floats.
96a0 69 6e 20 3c 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 2d 6f 70 65 72 61 74 69 6f 6e 73 22 3e 46 in.<a.href="#float-operations">F
96c0 6c 6f 61 74 4d 6f 64 65 2e 4f 70 74 69 6d 69 7a 65 64 20 4d 6f 64 65 3c 2f 61 3e 2e 3c 2f 6c 69 loatMode.Optimized.Mode</a>.</li
96e0 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 46 6f 72 20 6e 6f 6e 2d 63 6f 6d 70 >...............<li>For.non-comp
9700 69 6c 65 2d 74 69 6d 65 2d 6b 6e 6f 77 6e 20 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 73 2c 20 ile-time-known.signed.integers,.
9720 6d 75 73 74 20 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 61 20 68 72 65 66 must.use.................<a.href
9740 3d 22 23 62 75 69 6c 74 69 6e 2d 72 65 6d 22 3e 40 72 65 6d 3c 2f 61 3e 20 6f 72 0a 20 20 20 20 ="#builtin-rem">@rem</a>.or.....
9760 20 20 20 20 20 20 20 20 20 20 20 20 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 6d 6f ............<a.href="#builtin-mo
9780 64 22 3e 40 6d 6f 64 3c 2f 61 3e 20 69 6e 73 74 65 61 64 20 6f 66 20 3c 63 6f 64 65 3e 25 3c 2f d">@mod</a>.instead.of.<code>%</
97a0 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 code>................</li>......
97c0 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 .......</ul>...........</td>....
97e0 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f .......<td>.............<pre><co
9800 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 31 30 20 25 20 33 20 3d 3d 20 31 3c 2f 63 6f 64 65 de.class="zig">10.%.3.==.1</code
9820 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 ></pre>...........</td>.........
9840 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 </tr>.........<tr>...........<td
9860 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 26 6c 74 3b 26 6c ><pre><code.class="zig">a.&lt;&l
9880 74 3b 20 62 0a 61 20 26 6c 74 3b 26 6c 74 3b 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c t;.b.a.&lt;&lt;=.b</code></pre><
98a0 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 /td>...........<td>.............
98c0 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 <ul>...............<li><a.href="
98e0 23 69 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 #integers">Integers</a></li>....
9900 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 .........</ul>...........</td>..
9920 20 20 20 20 20 20 20 20 20 3c 74 64 3e 42 69 74 20 53 68 69 66 74 20 4c 65 66 74 2e 0a 20 20 20 .........<td>Bit.Shift.Left.....
9940 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e .........<ul>...............<li>
9960 53 65 65 20 61 6c 73 6f 20 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 68 6c 45 78 See.also.<a.href="#builtin-shlEx
9980 61 63 74 22 3e 40 73 68 6c 45 78 61 63 74 3c 2f 61 3e 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 act">@shlExact</a>.</li>........
99a0 20 20 20 20 20 20 20 3c 6c 69 3e 53 65 65 20 61 6c 73 6f 20 3c 61 20 68 72 65 66 3d 22 23 62 75 .......<li>See.also.<a.href="#bu
99c0 69 6c 74 69 6e 2d 73 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 3e 40 73 68 6c 57 69 74 68 4f iltin-shlWithOverflow">@shlWithO
99e0 76 65 72 66 6c 6f 77 3c 2f 61 3e 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f verflow</a>.</li>.............</
9a00 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 ul>...........</td>...........<t
9a20 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d d>.............<pre><code.class=
9a40 22 7a 69 67 22 3e 31 20 26 6c 74 3b 26 6c 74 3b 20 38 20 3d 3d 20 32 35 36 3c 2f 63 6f 64 65 3e "zig">1.&lt;&lt;.8.==.256</code>
9a60 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c </pre>...........</td>.........<
9a80 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e /tr>.........<tr>...........<td>
9aa0 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 26 67 74 3b 26 67 74 <pre><code.class="zig">a.&gt;&gt
9ac0 3b 20 62 0a 61 20 26 67 74 3b 26 67 74 3b 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f ;.b.a.&gt;&gt;=.b</code></pre></
9ae0 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c td>...........<td>.............<
9b00 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 ul>...............<li><a.href="#
9b20 69 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 integers">Integers</a></li>.....
9b40 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 ........</ul>...........</td>...
9b60 20 20 20 20 20 20 20 20 3c 74 64 3e 42 69 74 20 53 68 69 66 74 20 52 69 67 68 74 2e 0a 20 20 20 ........<td>Bit.Shift.Right.....
9b80 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e .........<ul>...............<li>
9ba0 53 65 65 20 61 6c 73 6f 20 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 68 72 45 78 See.also.<a.href="#builtin-shrEx
9bc0 61 63 74 22 3e 40 73 68 72 45 78 61 63 74 3c 2f 61 3e 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 act">@shrExact</a>.</li>........
9be0 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 .....</ul>...........</td>......
9c00 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 .....<td>.............<pre><code
9c20 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 31 30 20 26 67 74 3b 26 67 74 3b 20 31 20 3d 3d 20 35 3c .class="zig">10.&gt;&gt;.1.==.5<
9c40 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 /code></pre>...........</td>....
9c60 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 .....</tr>.........<tr>.........
9c80 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 26 ..<td><pre><code.class="zig">a.&
9ca0 61 6d 70 3b 20 62 0a 61 20 26 61 6d 70 3b 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f amp;.b.a.&amp;=.b</code></pre></
9cc0 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c td>...........<td>.............<
9ce0 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 ul>...............<li><a.href="#
9d00 69 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 integers">Integers</a></li>.....
9d20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 ........</ul>...........</td>...
9d40 20 20 20 20 20 20 20 20 3c 74 64 3e 42 69 74 77 69 73 65 20 41 4e 44 2e 0a 20 20 20 20 20 20 20 ........<td>Bitwise.AND.........
9d60 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 ...</td>...........<td>.........
9d80 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 30 62 30 31 31 ....<pre><code.class="zig">0b011
9da0 20 26 61 6d 70 3b 20 30 62 31 30 31 20 3d 3d 20 30 62 30 30 31 3c 2f 63 6f 64 65 3e 3c 2f 70 72 .&amp;.0b101.==.0b001</code></pr
9dc0 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e e>...........</td>.........</tr>
9de0 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 .........<tr>...........<td><pre
9e00 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 7c 20 62 0a 61 20 7c 3d 20 62 3c ><code.class="zig">a.|.b.a.|=.b<
9e20 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e /code></pre></td>...........<td>
9e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .............<ul>...............
9e60 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 <li><a.href="#integers">Integers
9e80 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 </a></li>.............</ul>.....
9ea0 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 42 69 74 77 69 73 ......</td>...........<td>Bitwis
9ec0 65 20 4f 52 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 e.OR............</td>...........
9ee0 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 <td>.............<pre><code.clas
9f00 73 3d 22 7a 69 67 22 3e 30 62 30 31 30 20 7c 20 30 62 31 30 30 20 3d 3d 20 30 62 31 31 30 3c 2f s="zig">0b010.|.0b100.==.0b110</
9f20 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 code></pre>...........</td>.....
9f40 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 ....</tr>.........<tr>..........
9f60 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 5e 20 .<td><pre><code.class="zig">a.^.
9f80 62 0a 61 20 5e 3d 20 62 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 b.a.^=.b</code></pre></td>......
9fa0 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 .....<td>.............<ul>......
9fc0 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 65 72 73 22 .........<li><a.href="#integers"
9fe0 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c >Integers</a></li>.............<
a000 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c /ul>...........</td>...........<
a020 74 64 3e 42 69 74 77 69 73 65 20 58 4f 52 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a td>Bitwise.XOR............</td>.
a040 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e ..........<td>.............<pre>
a060 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 30 62 30 31 31 20 5e 20 30 62 31 30 31 20 <code.class="zig">0b011.^.0b101.
a080 3d 3d 20 30 62 31 31 30 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 ==.0b110</code></pre>...........
a0a0 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e </td>.........</tr>.........<tr>
a0c0 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d ...........<td><pre><code.class=
a0e0 22 7a 69 67 22 3e 7e 61 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 "zig">~a<code></pre></td>.......
a100 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 ....<td>.............<ul>.......
a120 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 65 72 73 22 3e ........<li><a.href="#integers">
a140 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f Integers</a></li>.............</
a160 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 ul>...........</td>...........<t
a180 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74 77 69 73 65 20 4e 4f 54 2e 0a 20 20 20 20 d>.............Bitwise.NOT......
a1a0 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 ......</td>...........<td>......
a1c0 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 7e 75 .......<pre><code.class="zig">~u
a1e0 38 28 30 62 30 31 30 31 31 31 31 29 20 3d 3d 20 30 62 31 30 31 30 30 30 30 3c 2f 63 6f 64 65 3e 8(0b0101111).==.0b1010000</code>
a200 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c </pre>...........</td>.........<
a220 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e /tr>.........<tr>...........<td>
a240 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 3f 3f 20 62 3c 2f 63 <pre><code.class="zig">a.??.b</c
a260 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 ode></pre></td>...........<td>..
a280 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c ...........<ul>...............<l
a2a0 69 3e 3c 61 20 68 72 65 66 3d 22 23 6e 75 6c 6c 61 62 6c 65 73 22 3e 4e 75 6c 6c 61 62 6c 65 73 i><a.href="#nullables">Nullables
a2c0 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 </a></li>.............</ul>.....
a2e0 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 49 66 20 3c 63 6f ......</td>...........<td>If.<co
a300 64 65 3e 61 3c 2f 63 6f 64 65 3e 20 69 73 20 3c 63 6f 64 65 3e 6e 75 6c 6c 3c 2f 63 6f 64 65 3e de>a</code>.is.<code>null</code>
a320 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 62 3c 2f 63 ,.............returns.<code>b</c
a340 6f 64 65 3e 20 28 22 64 65 66 61 75 6c 74 20 76 61 6c 75 65 22 29 2c 0a 20 20 20 20 20 20 20 20 ode>.("default.value"),.........
a360 20 20 20 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 73 20 74 68 65 20 75 6e 77 72 61 70 ....otherwise.returns.the.unwrap
a380 70 65 64 20 76 61 6c 75 65 20 6f 66 20 3c 63 6f 64 65 3e 61 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 ped.value.of.<code>a</code>.....
a3a0 20 20 20 20 20 20 20 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 .........Note.that.<code>b</code
a3c0 3e 20 6d 61 79 20 62 65 20 61 20 76 61 6c 75 65 20 6f 66 20 74 79 70 65 20 3c 61 20 68 72 65 66 >.may.be.a.value.of.type.<a.href
a3e0 3d 22 23 6e 6f 72 65 74 75 72 6e 22 3e 6e 6f 72 65 74 75 72 6e 3c 2f 61 3e 2e 0a 20 20 20 20 20 ="#noreturn">noreturn</a>.......
a400 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 .....</td>...........<td>.......
a420 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e ......<pre><code.class="zig">con
a440 73 74 20 76 61 6c 75 65 3a 20 3f 75 33 32 20 3d 20 6e 75 6c 6c 3b 0a 63 6f 6e 73 74 20 75 6e 77 st.value:.?u32.=.null;.const.unw
a460 72 61 70 70 65 64 20 3d 20 76 61 6c 75 65 20 3f 3f 20 31 32 33 34 3b 0a 75 6e 77 72 61 70 70 65 rapped.=.value.??.1234;.unwrappe
a480 64 20 3d 3d 20 31 32 33 34 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 d.==.1234</code></pre>..........
a4a0 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 .</td>.........</tr>.........<tr
a4c0 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 >...........<td><pre><code.class
a4e0 3d 22 7a 69 67 22 3e 3f 3f 61 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 ="zig">??a</code></pre></td>....
a500 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 .......<td>.............<ul>....
a520 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6e 75 6c 6c 61 62 6c ...........<li><a.href="#nullabl
a540 65 73 22 3e 4e 75 6c 6c 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 es">Nullables</a></li>..........
a560 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 ...</ul>...........</td>........
a580 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 45 71 75 69 76 61 6c 65 6e 74 20 74 ...<td>.............Equivalent.t
a5a0 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d o:.............<pre><code.class=
a5c0 22 7a 69 67 22 3e 61 20 3f 3f 20 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e 3c 2f 70 "zig">a.??.unreachable</code></p
a5e0 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 re>...........</td>...........<t
a600 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d d>.............<pre><code.class=
a620 22 7a 69 67 22 3e 63 6f 6e 73 74 20 76 61 6c 75 65 3a 20 3f 75 33 32 20 3d 20 35 36 37 38 3b 0a "zig">const.value:.?u32.=.5678;.
a640 3f 3f 76 61 6c 75 65 20 3d 3d 20 35 36 37 38 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 ??value.==.5678</code></pre>....
a660 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 .......</td>.........</tr>......
a680 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 ...<tr>...........<td><pre><code
a6a0 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 25 25 20 62 0a 61 20 25 25 20 7c 65 72 72 7c 20 62 .class="zig">a.%%.b.a.%%.|err|.b
a6c0 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 </code></pre></td>...........<td
a6e0 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 >.............<ul>..............
a700 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 65 72 72 6f 72 73 22 3e 45 72 72 6f 72 20 55 6e 69 .<li><a.href="#errors">Error.Uni
a720 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 ons</a></li>.............</ul>..
a740 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 49 66 20 .........</td>...........<td>If.
a760 3c 63 6f 64 65 3e 61 3c 2f 63 6f 64 65 3e 20 69 73 20 61 6e 20 3c 63 6f 64 65 3e 65 72 72 6f 72 <code>a</code>.is.an.<code>error
a780 3c 2f 63 6f 64 65 3e 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 73 20 3c 63 6f </code>,.............returns.<co
a7a0 64 65 3e 62 3c 2f 63 6f 64 65 3e 20 28 22 64 65 66 61 75 6c 74 20 76 61 6c 75 65 22 29 2c 0a 20 de>b</code>.("default.value"),..
a7c0 20 20 20 20 20 20 20 20 20 20 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 73 20 74 68 65 ...........otherwise.returns.the
a7e0 20 75 6e 77 72 61 70 70 65 64 20 76 61 6c 75 65 20 6f 66 20 3c 63 6f 64 65 3e 61 3c 2f 63 6f 64 .unwrapped.value.of.<code>a</cod
a800 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 4e 6f 74 65 20 74 68 61 74 20 3c 63 6f 64 65 3e e>..............Note.that.<code>
a820 62 3c 2f 63 6f 64 65 3e 20 6d 61 79 20 62 65 20 61 20 76 61 6c 75 65 20 6f 66 20 74 79 70 65 20 b</code>.may.be.a.value.of.type.
a840 3c 61 20 68 72 65 66 3d 22 23 6e 6f 72 65 74 75 72 6e 22 3e 6e 6f 72 65 74 75 72 6e 3c 2f 61 3e <a.href="#noreturn">noreturn</a>
a860 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 63 6f 64 65 3e 65 72 72 3c 2f 63 6f 64 65 3e 20 69 ..............<code>err</code>.i
a880 73 20 74 68 65 20 3c 63 6f 64 65 3e 65 72 72 6f 72 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 69 73 20 s.the.<code>error</code>.and.is.
a8a0 69 6e 20 73 63 6f 70 65 20 6f 66 20 74 68 65 20 65 78 70 72 65 73 73 69 6f 6e 20 3c 63 6f 64 65 in.scope.of.the.expression.<code
a8c0 3e 62 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 >b</code>............</td>......
a8e0 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 .....<td>.............<pre><code
a900 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 76 61 6c 75 65 3a 20 25 75 33 32 20 3d .class="zig">const.value:.%u32.=
a920 20 6e 75 6c 6c 3b 0a 63 6f 6e 73 74 20 75 6e 77 72 61 70 70 65 64 20 3d 20 76 61 6c 75 65 20 25 .null;.const.unwrapped.=.value.%
a940 25 20 31 32 33 34 3b 0a 75 6e 77 72 61 70 70 65 64 20 3d 3d 20 31 32 33 34 3c 2f 63 6f 64 65 3e %.1234;.unwrapped.==.1234</code>
a960 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c </pre>...........</td>.........<
a980 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e /tr>.........<tr>...........<td>
a9a0 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 25 25 61 3c 2f 63 6f 64 65 <pre><code.class="zig">%%a</code
a9c0 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 ></pre></td>...........<td>.....
a9e0 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c ........<ul>...............<li><
aa00 61 20 68 72 65 66 3d 22 23 65 72 72 6f 72 73 22 3e 45 72 72 6f 72 20 55 6e 69 6f 6e 73 3c 2f 61 a.href="#errors">Error.Unions</a
aa20 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 ></li>.............</ul>........
aa40 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 45 71 75 69 76 61 6c 65 6e ...</td>...........<td>Equivalen
aa60 74 20 74 6f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 t.to:.............<pre><code.cla
aa80 73 73 3d 22 7a 69 67 22 3e 61 20 25 25 20 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e ss="zig">a.%%.unreachable</code>
aaa0 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 </pre>...........</td>..........
aac0 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 .<td>.............<pre><code.cla
aae0 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 76 61 6c 75 65 3a 20 25 75 33 32 20 3d 20 35 36 37 ss="zig">const.value:.%u32.=.567
ab00 38 3b 0a 25 25 76 61 6c 75 65 20 3d 3d 20 35 36 37 38 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 8;.%%value.==.5678</code></pre>.
ab20 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 ..........</td>.........</tr>...
ab40 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 ......<tr>...........<td><pre><c
ab60 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 61 6e 64 20 62 3c 63 6f 64 65 3e 3c 2f 70 ode.class="zig">a.and.b<code></p
ab80 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 re></td>...........<td>.........
aba0 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 ....<ul>...............<li><a.hr
abc0 65 66 3d 22 23 70 72 69 6d 69 74 69 76 65 2d 74 79 70 65 73 22 3e 62 6f 6f 6c 3c 2f 61 3e 3c 2f ef="#primitive-types">bool</a></
abe0 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 li>.............</ul>...........
ac00 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 </td>...........<td>............
ac20 20 49 66 20 3c 63 6f 64 65 3e 61 3c 2f 63 6f 64 65 3e 20 69 73 20 3c 63 6f 64 65 3e 66 61 6c 73 .If.<code>a</code>.is.<code>fals
ac40 65 3c 2f 63 6f 64 65 3e 2c 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 e</code>,.returns.<code>false</c
ac60 6f 64 65 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 6f 75 74 20 65 76 61 6c 75 61 74 ode>.............without.evaluat
ac80 69 6e 67 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 72 ing.<code>b</code>..Otherwise,.r
aca0 65 74 75 6e 73 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 etuns.<code>b</code>............
acc0 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 </td>...........<td>............
ace0 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 61 6c 73 65 20 61 6e .<pre><code.class="zig">false.an
ad00 64 20 74 72 75 65 20 3d 3d 20 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 d.true.==.false</code></pre>....
ad20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 .......</td>.........</tr>......
ad40 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 ...<tr>...........<td><pre><code
ad60 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 6f 72 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c .class="zig">a.or.b<code></pre><
ad80 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 /td>...........<td>.............
ada0 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 <ul>...............<li><a.href="
adc0 23 70 72 69 6d 69 74 69 76 65 2d 74 79 70 65 73 22 3e 62 6f 6f 6c 3c 2f 61 3e 3c 2f 6c 69 3e 0a #primitive-types">bool</a></li>.
ade0 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 ............</ul>...........</td
ae00 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 66 20 >...........<td>.............If.
ae20 3c 63 6f 64 65 3e 61 3c 2f 63 6f 64 65 3e 20 69 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f <code>a</code>.is.<code>true</co
ae40 64 65 3e 2c 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 0a 20 de>,.returns.<code>true</code>..
ae60 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 6f 75 74 20 65 76 61 6c 75 61 74 69 6e 67 20 3c 63 ...........without.evaluating.<c
ae80 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 72 65 74 75 6e 73 20 ode>b</code>..Otherwise,.retuns.
aea0 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a <code>b</code>............</td>.
aec0 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e ..........<td>.............<pre>
aee0 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 61 6c 73 65 20 6f 72 20 74 72 75 65 20 <code.class="zig">false.or.true.
af00 3d 3d 20 74 72 75 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c ==.true</code></pre>...........<
af20 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a /td>.........</tr>.........<tr>.
af40 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 ..........<td><pre><code.class="
af60 7a 69 67 22 3e 21 61 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 zig">!a<code></pre></td>........
af80 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 ...<td>.............<ul>........
afa0 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 70 72 69 6d 69 74 69 76 65 2d 74 .......<li><a.href="#primitive-t
afc0 79 70 65 73 22 3e 62 6f 6f 6c 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ypes">bool</a></li>.............
afe0 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 </ul>...........</td>...........
b000 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 42 6f 6f 6c 65 61 6e 20 4e 4f 54 2e 0a 20 20 <td>.............Boolean.NOT....
b020 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 ........</td>...........<td>....
b040 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e .........<pre><code.class="zig">
b060 21 66 61 6c 73 65 20 3d 3d 20 74 72 75 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 !false.==.true</code></pre>.....
b080 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 ......</td>.........</tr>.......
b0a0 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 ..<tr>...........<td><pre><code.
b0c0 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 3d 3d 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f class="zig">a.==.b<code></pre></
b0e0 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c td>...........<td>.............<
b100 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 ul>...............<li><a.href="#
b120 69 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 integers">Integers</a></li>.....
b140 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 73 22 3e ..........<li><a.href="#floats">
b160 46 6c 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c Floats</a></li>...............<l
b180 69 3e 3c 61 20 68 72 65 66 3d 22 23 70 72 69 6d 69 74 69 76 65 2d 74 79 70 65 73 22 3e 62 6f 6f i><a.href="#primitive-types">boo
b1a0 6c 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 l</a></li>...............<li><a.
b1c0 68 72 65 66 3d 22 23 70 72 69 6d 69 74 69 76 65 2d 74 79 70 65 73 22 3e 74 79 70 65 3c 2f 61 3e href="#primitive-types">type</a>
b1e0 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 </li>.............</ul>.........
b200 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 ..</td>...........<td>..........
b220 20 20 20 52 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 20 69 66 20 ...Returns.<code>true</code>.if.
b240 61 20 61 6e 64 20 62 20 61 72 65 20 65 71 75 61 6c 2c 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 a.and.b.are.equal,.otherwise.ret
b260 75 72 6e 73 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 urns.<code>false</code>.........
b280 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 ...</td>...........<td>.........
b2a0 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 28 31 20 3d 3d ....<pre><code.class="zig">(1.==
b2c0 20 31 29 20 3d 3d 20 74 72 75 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 .1).==.true</code></pre>........
b2e0 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c ...</td>.........</tr>.........<
b300 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 tr>...........<td><pre><code.cla
b320 73 73 3d 22 7a 69 67 22 3e 61 20 3d 3d 20 6e 75 6c 6c 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f ss="zig">a.==.null<code></pre></
b340 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c td>...........<td>.............<
b360 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 ul>...............<li><a.href="#
b380 6e 75 6c 6c 61 62 6c 65 73 22 3e 4e 75 6c 6c 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 nullables">Nullables</a></li>...
b3a0 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a ..........</ul>...........</td>.
b3c0 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 65 74 75 72 ..........<td>.............Retur
b3e0 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 20 69 66 20 61 20 69 73 20 3c 63 6f ns.<code>true</code>.if.a.is.<co
b400 64 65 3e 6e 75 6c 6c 3c 2f 63 6f 64 65 3e 2c 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e de>null</code>,.otherwise.return
b420 73 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 s.<code>false</code>............
b440 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 </td>...........<td>............
b460 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 76 61 .<pre><code.class="zig">const.va
b480 6c 75 65 3a 20 3f 75 33 32 20 3d 20 6e 75 6c 6c 3b 0a 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 3c lue:.?u32.=.null;.value.==.null<
b4a0 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 /code></pre>...........</td>....
b4c0 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 .....</tr>.........<tr>.........
b4e0 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 21 ..<td><pre><code.class="zig">a.!
b500 3d 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c =.b<code></pre></td>...........<
b520 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 td>.............<ul>............
b540 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 ...<li><a.href="#integers">Integ
b560 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c ers</a></li>...............<li><
b580 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e a.href="#floats">Floats</a></li>
b5a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 70 72 69 ...............<li><a.href="#pri
b5c0 6d 69 74 69 76 65 2d 74 79 70 65 73 22 3e 62 6f 6f 6c 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 mitive-types">bool</a></li>.....
b5e0 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 70 72 69 6d 69 74 69 76 ..........<li><a.href="#primitiv
b600 65 2d 74 79 70 65 73 22 3e 74 79 70 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 e-types">type</a></li>..........
b620 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 ...</ul>...........</td>........
b640 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 3c 63 6f 64 ...<td>.............Returns.<cod
b660 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 20 69 66 20 61 20 61 6e 64 20 62 20 61 72 65 20 65 71 e>false</code>.if.a.and.b.are.eq
b680 75 61 6c 2c 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 ual,.otherwise.returns.<code>tru
b6a0 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 e</code>............</td>.......
b6c0 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 ....<td>.............<pre><code.
b6e0 63 6c 61 73 73 3d 22 7a 69 67 22 3e 28 31 20 21 3d 20 31 29 20 3d 3d 20 66 61 6c 73 65 3c 2f 63 class="zig">(1.!=.1).==.false</c
b700 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 ode></pre>...........</td>......
b720 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 ...</tr>.........<tr>...........
b740 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 26 67 74 <td><pre><code.class="zig">a.&gt
b760 3b 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c ;.b<code></pre></td>...........<
b780 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 td>.............<ul>............
b7a0 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 ...<li><a.href="#integers">Integ
b7c0 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c ers</a></li>...............<li><
b7e0 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e a.href="#floats">Floats</a></li>
b800 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 .............</ul>...........</t
b820 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 65 d>...........<td>.............Re
b840 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 20 69 66 20 61 20 69 73 20 turns.<code>true</code>.if.a.is.
b860 67 72 65 61 74 65 72 20 74 68 61 6e 20 62 2c 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e greater.than.b,.otherwise.return
b880 73 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 s.<code>false</code>............
b8a0 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 </td>...........<td>............
b8c0 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 28 32 20 26 67 74 3b 20 .<pre><code.class="zig">(2.&gt;.
b8e0 31 29 20 3d 3d 20 74 72 75 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 1).==.true</code></pre>.........
b900 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 ..</td>.........</tr>.........<t
b920 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 r>...........<td><pre><code.clas
b940 73 3d 22 7a 69 67 22 3e 61 20 26 67 74 3b 3d 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 s="zig">a.&gt;=.b<code></pre></t
b960 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 d>...........<td>.............<u
b980 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 l>...............<li><a.href="#i
b9a0 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 ntegers">Integers</a></li>......
b9c0 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 73 22 3e 46 .........<li><a.href="#floats">F
b9e0 6c 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e loats</a></li>.............</ul>
ba00 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a ...........</td>...........<td>.
ba20 20 20 20 20 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f ............Returns.<code>true</
ba40 63 6f 64 65 3e 20 69 66 20 61 20 69 73 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 6f 72 20 65 71 code>.if.a.is.greater.than.or.eq
ba60 75 61 6c 20 74 6f 20 62 2c 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 ual.to.b,.otherwise.returns.<cod
ba80 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a e>false</code>............</td>.
baa0 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e ..........<td>.............<pre>
bac0 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 28 32 20 26 67 74 3b 3d 20 31 29 20 3d 3d <code.class="zig">(2.&gt;=.1).==
bae0 20 74 72 75 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 .true</code></pre>...........</t
bb00 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 d>.........</tr>.........<tr>...
bb20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 ........<td><pre><code.class="zi
bb40 67 22 3e 61 20 26 6c 74 3b 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 g">a.&lt;.b<code></pre></td>....
bb60 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 .......<td>.............<ul>....
bb80 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 69 6e 74 65 67 65 72 ...........<li><a.href="#integer
bba0 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 s">Integers</a></li>............
bbc0 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 74 73 22 3e 46 6c 6f 61 74 73 3c ...<li><a.href="#floats">Floats<
bbe0 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 /a></li>.............</ul>......
bc00 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 .....</td>...........<td>.......
bc20 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 20 ......Returns.<code>true</code>.
bc40 69 66 20 61 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 62 2c 20 6f 74 68 65 72 77 69 73 65 20 72 if.a.is.less.than.b,.otherwise.r
bc60 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 eturns.<code>false</code>.......
bc80 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 .....</td>...........<td>.......
bca0 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 28 31 20 ......<pre><code.class="zig">(1.
bcc0 26 6c 74 3b 20 32 29 20 3d 3d 20 74 72 75 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 &lt;.2).==.true</code></pre>....
bce0 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 .......</td>.........</tr>......
bd00 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 ...<tr>...........<td><pre><code
bd20 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 26 6c 74 3b 3d 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 .class="zig">a.&lt;=.b<code></pr
bd40 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 e></td>...........<td>..........
bd60 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 ...<ul>...............<li><a.hre
bd80 66 3d 22 23 69 6e 74 65 67 65 72 73 22 3e 49 6e 74 65 67 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a f="#integers">Integers</a></li>.
bda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 66 6c 6f 61 ..............<li><a.href="#floa
bdc0 74 73 22 3e 46 6c 6f 61 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ts">Floats</a></li>.............
bde0 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 </ul>...........</td>...........
be00 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 <td>.............Returns.<code>t
be20 72 75 65 3c 2f 63 6f 64 65 3e 20 69 66 20 61 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 6f 72 20 rue</code>.if.a.is.less.than.or.
be40 65 71 75 61 6c 20 74 6f 20 62 2c 20 6f 74 68 65 72 77 69 73 65 20 72 65 74 75 72 6e 73 20 3c 63 equal.to.b,.otherwise.returns.<c
be60 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 ode>false</code>............</td
be80 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 >...........<td>.............<pr
bea0 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 28 31 20 26 6c 74 3b 3d 20 32 29 20 e><code.class="zig">(1.&lt;=.2).
bec0 3d 3d 20 74 72 75 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c ==.true</code></pre>...........<
bee0 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a /td>.........</tr>.........<tr>.
bf00 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 ..........<td><pre><code.class="
bf20 7a 69 67 22 3e 61 20 2b 2b 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 zig">a.++.b<code></pre></td>....
bf40 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 .......<td>.............<ul>....
bf60 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 61 72 72 61 79 73 22 ...........<li><a.href="#arrays"
bf80 3e 41 72 72 61 79 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 >Arrays</a></li>.............</u
bfa0 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 l>...........</td>...........<td
bfc0 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79 20 63 6f 6e 63 61 74 65 6e 61 74 69 6f >.............Array.concatenatio
bfe0 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 n..............<ul>.............
c000 20 20 3c 6c 69 3e 4f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 77 68 65 6e 20 3c 63 6f 64 65 3e ..<li>Only.available.when.<code>
c020 61 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 20 61 72 65 20 a</code>.and.<code>b</code>.are.
c040 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 <a.href="#comptime">compile-time
c060 20 6b 6e 6f 77 6e 3c 2f 61 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 .known</a>..............</ul>...
c080 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 ........</td>...........<td>....
c0a0 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e .........<pre><code.class="zig">
c0c0 63 6f 6e 73 74 20 6d 65 6d 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 65 6d 3b 0a const.mem.=.@import("std").mem;.
c0e0 63 6f 6e 73 74 20 61 72 72 61 79 31 20 3d 20 5b 5d 75 33 32 7b 31 2c 32 7d 3b 0a 63 6f 6e 73 74 const.array1.=.[]u32{1,2};.const
c100 20 61 72 72 61 79 32 20 3d 20 5b 5d 75 33 32 7b 33 2c 34 7d 3b 0a 63 6f 6e 73 74 20 74 6f 67 65 .array2.=.[]u32{3,4};.const.toge
c120 74 68 65 72 20 3d 20 61 72 72 61 79 31 20 2b 2b 20 61 72 72 61 79 32 3b 0a 6d 65 6d 2e 65 71 6c ther.=.array1.++.array2;.mem.eql
c140 28 75 33 32 2c 20 74 6f 67 65 74 68 65 72 2c 20 5b 5d 75 33 32 7b 31 2c 32 2c 33 2c 34 7d 29 3c (u32,.together,.[]u32{1,2,3,4})<
c160 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 /code></pre>...........</td>....
c180 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 .....</tr>.........<tr>.........
c1a0 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 61 20 2a ..<td><pre><code.class="zig">a.*
c1c0 2a 20 62 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c *.b<code></pre></td>...........<
c1e0 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 td>.............<ul>............
c200 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 61 72 72 61 79 73 22 3e 41 72 72 61 79 73 3c ...<li><a.href="#arrays">Arrays<
c220 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 /a></li>.............</ul>......
c240 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 .....</td>...........<td>.......
c260 20 20 20 20 20 20 41 72 72 61 79 20 6d 75 6c 74 69 70 6c 69 63 61 74 69 6f 6e 2e 0a 20 20 20 20 ......Array.multiplication......
c280 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 4f ........<ul>...............<li>O
c2a0 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 77 68 65 6e 20 3c 63 6f 64 65 3e 61 3c 2f 63 6f 64 65 nly.available.when.<code>a</code
c2c0 3e 20 61 6e 64 20 3c 63 6f 64 65 3e 62 3c 2f 63 6f 64 65 3e 20 61 72 65 20 3c 61 20 68 72 65 66 >.and.<code>b</code>.are.<a.href
c2e0 3d 22 23 63 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6b 6e 6f 77 6e 3c ="#comptime">compile-time.known<
c300 2f 61 3e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 /a>..............</ul>..........
c320 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 .</td>...........<td>...........
c340 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 6d ..<pre><code.class="zig">const.m
c360 65 6d 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 65 6d 3b 0a 63 6f 6e 73 74 20 70 em.=.@import("std").mem;.const.p
c380 61 74 74 65 72 6e 20 3d 20 22 61 62 22 20 2a 2a 20 33 3b 0a 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 attern.=."ab".**.3;.mem.eql(u8,.
c3a0 70 61 74 74 65 72 6e 2c 20 22 61 62 61 62 61 62 22 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a pattern,."ababab")</code></pre>.
c3c0 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 ..........</td>.........</tr>...
c3e0 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 ......<tr>...........<td><pre><c
c400 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2a 61 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f ode.class="zig">*a<code></pre></
c420 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c td>...........<td>.............<
c440 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 ul>...............<li><a.href="#
c460 70 6f 69 6e 74 65 72 73 22 3e 50 6f 69 6e 74 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 pointers">Pointers</a></li>.....
c480 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 ........</ul>...........</td>...
c4a0 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 50 6f 69 6e 74 65 72 ........<td>.............Pointer
c4c0 20 64 65 72 65 66 65 72 65 6e 63 65 2e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 .dereference............</td>...
c4e0 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 ........<td>.............<pre><c
c500 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 78 3a 20 75 33 32 20 3d 20 31 ode.class="zig">const.x:.u32.=.1
c520 32 33 34 3b 0a 63 6f 6e 73 74 20 70 74 72 20 3d 20 26 61 6d 70 3b 78 3b 0a 2a 78 20 3d 3d 20 31 234;.const.ptr.=.&amp;x;.*x.==.1
c540 32 33 34 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 234</code></pre>...........</td>
c560 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 20 20 3c 74 72 3e 0a 20 20 20 20 .........</tr>.........<tr>.....
c580 20 20 20 20 20 20 3c 74 64 3e 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 ......<td><pre><code.class="zig"
c5a0 3e 26 61 6d 70 3b 61 3c 63 6f 64 65 3e 3c 2f 70 72 65 3e 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 >&amp;a<code></pre></td>........
c5c0 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 41 6c 6c 20 74 79 70 65 73 0a 20 20 ...<td>.............All.types...
c5e0 20 20 20 20 20 20 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 ........</td>...........<td>....
c600 20 20 20 20 20 20 20 20 20 41 64 64 72 65 73 73 20 6f 66 2e 0a 20 20 20 20 20 20 20 20 20 20 3c .........Address.of............<
c620 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 74 64 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 /td>...........<td>.............
c640 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 78 3a 20 <pre><code.class="zig">const.x:.
c660 75 33 32 20 3d 20 31 32 33 34 3b 0a 63 6f 6e 73 74 20 70 74 72 20 3d 20 26 61 6d 70 3b 78 3b 0a u32.=.1234;.const.ptr.=.&amp;x;.
c680 2a 78 20 3d 3d 20 31 32 33 34 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 20 20 *x.==.1234</code></pre>.........
c6a0 20 20 3c 2f 74 64 3e 0a 20 20 20 20 20 20 20 20 3c 2f 74 72 3e 0a 20 20 20 20 20 20 3c 2f 74 61 ..</td>.........</tr>.......</ta
c6c0 62 6c 65 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 6f 70 65 72 61 74 6f 72 73 2d 70 72 65 ble>.......<h3.id="operators-pre
c6e0 63 65 64 65 6e 63 65 22 3e 50 72 65 63 65 64 65 6e 63 65 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c cedence">Precedence</h3>.......<
c700 70 72 65 3e 3c 63 6f 64 65 3e 78 28 29 20 78 5b 5d 20 78 2e 79 0a 21 78 20 2d 78 20 2d 25 78 20 pre><code>x().x[].x.y.!x.-x.-%x.
c720 7e 78 20 2a 78 20 26 61 6d 70 3b 78 20 3f 78 20 25 78 20 25 25 78 20 3f 3f 78 0a 78 7b 7d 0a 2a ~x.*x.&amp;x.?x.%x.%%x.??x.x{}.*
c740 20 2f 20 25 20 2a 2a 20 2a 25 0a 2b 20 2d 20 2b 2b 20 2b 25 20 2d 25 0a 26 6c 74 3b 26 6c 74 3b ./.%.**.*%.+.-.++.+%.-%.&lt;&lt;
c760 20 26 67 74 3b 26 67 74 3b 0a 26 61 6d 70 3b 0a 5e 0a 7c 0a 3d 3d 20 21 3d 20 26 6c 74 3b 20 26 .&gt;&gt;.&amp;.^.|.==.!=.&lt;.&
c780 67 74 3b 20 26 6c 74 3b 3d 20 26 67 74 3b 3d 0a 61 6e 64 0a 6f 72 0a 3f 3f 20 25 25 0a 3d 20 2a gt;.&lt;=.&gt;=.and.or.??.%%.=.*
c7a0 3d 20 2f 3d 20 25 3d 20 2b 3d 20 2d 3d 20 26 6c 74 3b 26 6c 74 3b 3d 20 26 67 74 3b 26 67 74 3b =./=.%=.+=.-=.&lt;&lt;=.&gt;&gt;
c7c0 3d 20 26 61 6d 70 3b 3d 20 5e 3d 20 7c 3d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 =.&amp;=.^=.|=</code></pre>.....
c7e0 20 20 3c 68 32 20 69 64 3d 22 61 72 72 61 79 73 22 3e 41 72 72 61 79 73 3c 2f 68 32 3e 0a 20 20 ..<h2.id="arrays">Arrays</h2>...
c800 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 ....<pre><code.class="zig">const
c820 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 .assert.=.@import("std").debug.a
c840 73 73 65 72 74 3b 0a 63 6f 6e 73 74 20 6d 65 6d 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 ssert;.const.mem.=.@import("std"
c860 29 2e 6d 65 6d 3b 0a 0a 2f 2f 20 61 72 72 61 79 20 6c 69 74 65 72 61 6c 0a 63 6f 6e 73 74 20 6d ).mem;..//.array.literal.const.m
c880 65 73 73 61 67 65 20 3d 20 5b 5d 75 38 7b 27 68 27 2c 20 27 65 27 2c 20 27 6c 27 2c 20 27 6c 27 essage.=.[]u8{'h',.'e',.'l',.'l'
c8a0 2c 20 27 6f 27 7d 3b 0a 0a 2f 2f 20 67 65 74 20 74 68 65 20 73 69 7a 65 20 6f 66 20 61 6e 20 61 ,.'o'};..//.get.the.size.of.an.a
c8c0 72 72 61 79 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 65 73 73 61 rray.comptime.{.....assert(messa
c8e0 67 65 2e 6c 65 6e 20 3d 3d 20 35 29 3b 0a 7d 0a 0a 2f 2f 20 61 20 73 74 72 69 6e 67 20 6c 69 74 ge.len.==.5);.}..//.a.string.lit
c900 65 72 61 6c 20 69 73 20 61 6e 20 61 72 72 61 79 20 6c 69 74 65 72 61 6c 0a 63 6f 6e 73 74 20 73 eral.is.an.array.literal.const.s
c920 61 6d 65 5f 6d 65 73 73 61 67 65 20 3d 20 22 68 65 6c 6c 6f 22 3b 0a 0a 63 6f 6d 70 74 69 6d 65 ame_message.=."hello";..comptime
c940 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 6d 65 73 73 61 67 .{.....assert(mem.eql(u8,.messag
c960 65 2c 20 73 61 6d 65 5f 6d 65 73 73 61 67 65 29 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 e,.same_message));.....assert(@t
c980 79 70 65 4f 66 28 6d 65 73 73 61 67 65 29 20 3d 3d 20 40 74 79 70 65 4f 66 28 73 61 6d 65 5f 6d ypeOf(message).==.@typeOf(same_m
c9a0 65 73 73 61 67 65 29 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 69 74 65 72 61 74 65 20 6f 76 65 72 20 essage));.}..test."iterate.over.
c9c0 61 6e 20 61 72 72 61 79 22 20 7b 0a 20 20 20 20 76 61 72 20 73 75 6d 3a 20 75 73 69 7a 65 20 3d an.array".{.....var.sum:.usize.=
c9e0 20 30 3b 0a 20 20 20 20 66 6f 72 20 28 6d 65 73 73 61 67 65 29 20 7c 62 79 74 65 7c 20 7b 0a 20 .0;.....for.(message).|byte|.{..
ca00 20 20 20 20 20 20 20 73 75 6d 20 2b 3d 20 62 79 74 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 .......sum.+=.byte;.....}.....as
ca20 73 65 72 74 28 73 75 6d 20 3d 3d 20 75 73 69 7a 65 28 27 68 27 29 20 2b 20 75 73 69 7a 65 28 27 sert(sum.==.usize('h').+.usize('
ca40 65 27 29 20 2b 20 75 73 69 7a 65 28 27 6c 27 29 20 2a 20 32 20 2b 20 75 73 69 7a 65 28 27 6f 27 e').+.usize('l').*.2.+.usize('o'
ca60 29 29 3b 0a 7d 0a 0a 2f 2f 20 6d 6f 64 69 66 69 61 62 6c 65 20 61 72 72 61 79 0a 76 61 72 20 73 ));.}..//.modifiable.array.var.s
ca80 6f 6d 65 5f 69 6e 74 65 67 65 72 73 3a 20 5b 31 30 30 5d 69 33 32 20 3d 20 75 6e 64 65 66 69 6e ome_integers:.[100]i32.=.undefin
caa0 65 64 3b 0a 0a 74 65 73 74 20 22 6d 6f 64 69 66 79 20 61 6e 20 61 72 72 61 79 22 20 7b 0a 20 20 ed;..test."modify.an.array".{...
cac0 20 20 66 6f 72 20 28 73 6f 6d 65 5f 69 6e 74 65 67 65 72 73 29 20 7c 2a 69 74 65 6d 2c 20 69 7c ..for.(some_integers).|*item,.i|
cae0 20 7b 0a 20 20 20 20 20 20 20 20 2a 69 74 65 6d 20 3d 20 69 33 32 28 69 29 3b 0a 20 20 20 20 7d .{.........*item.=.i32(i);.....}
cb00 0a 20 20 20 20 61 73 73 65 72 74 28 73 6f 6d 65 5f 69 6e 74 65 67 65 72 73 5b 31 30 5d 20 3d 3d .....assert(some_integers[10].==
cb20 20 31 30 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 73 6f 6d 65 5f 69 6e 74 65 67 65 72 73 5b 39 .10);.....assert(some_integers[9
cb40 39 5d 20 3d 3d 20 39 39 29 3b 0a 7d 0a 0a 2f 2f 20 61 72 72 61 79 20 63 6f 6e 63 61 74 65 6e 61 9].==.99);.}..//.array.concatena
cb60 74 69 6f 6e 20 77 6f 72 6b 73 20 69 66 20 74 68 65 20 76 61 6c 75 65 73 20 61 72 65 20 6b 6e 6f tion.works.if.the.values.are.kno
cb80 77 6e 0a 2f 2f 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 0a 63 6f 6e 73 74 20 70 61 72 74 wn.//.at.compile.time.const.part
cba0 5f 6f 6e 65 20 3d 20 5b 5d 69 33 32 7b 31 2c 20 32 2c 20 33 2c 20 34 7d 3b 0a 63 6f 6e 73 74 20 _one.=.[]i32{1,.2,.3,.4};.const.
cbc0 70 61 72 74 5f 74 77 6f 20 3d 20 5b 5d 69 33 32 7b 35 2c 20 36 2c 20 37 2c 20 38 7d 3b 0a 63 6f part_two.=.[]i32{5,.6,.7,.8};.co
cbe0 6e 73 74 20 61 6c 6c 5f 6f 66 5f 69 74 20 3d 20 70 61 72 74 5f 6f 6e 65 20 2b 2b 20 70 61 72 74 nst.all_of_it.=.part_one.++.part
cc00 5f 74 77 6f 3b 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 65 6d 2e _two;.comptime.{.....assert(mem.
cc20 65 71 6c 28 69 33 32 2c 20 61 6c 6c 5f 6f 66 5f 69 74 2c 20 5b 5d 69 33 32 7b 31 2c 32 2c 33 2c eql(i32,.all_of_it,.[]i32{1,2,3,
cc40 34 2c 35 2c 36 2c 37 2c 38 7d 29 29 3b 0a 7d 0a 0a 2f 2f 20 72 65 6d 65 6d 62 65 72 20 74 68 61 4,5,6,7,8}));.}..//.remember.tha
cc60 74 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 73 20 61 72 65 20 61 72 72 61 79 73 0a 63 6f 6e t.string.literals.are.arrays.con
cc80 73 74 20 68 65 6c 6c 6f 20 3d 20 22 68 65 6c 6c 6f 22 3b 0a 63 6f 6e 73 74 20 77 6f 72 6c 64 20 st.hello.=."hello";.const.world.
cca0 3d 20 22 77 6f 72 6c 64 22 3b 0a 63 6f 6e 73 74 20 68 65 6c 6c 6f 5f 77 6f 72 6c 64 20 3d 20 68 =."world";.const.hello_world.=.h
ccc0 65 6c 6c 6f 20 2b 2b 20 22 20 22 20 2b 2b 20 77 6f 72 6c 64 3b 0a 63 6f 6d 70 74 69 6d 65 20 7b ello.++.".".++.world;.comptime.{
cce0 0a 20 20 20 20 61 73 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 68 65 6c 6c 6f 5f 77 6f .....assert(mem.eql(u8,.hello_wo
cd00 72 6c 64 2c 20 22 68 65 6c 6c 6f 20 77 6f 72 6c 64 22 29 29 3b 0a 7d 0a 0a 2f 2f 20 2a 2a 20 64 rld,."hello.world"));.}..//.**.d
cd20 6f 65 73 20 72 65 70 65 61 74 69 6e 67 20 70 61 74 74 65 72 6e 73 0a 63 6f 6e 73 74 20 70 61 74 oes.repeating.patterns.const.pat
cd40 74 65 72 6e 20 3d 20 22 61 62 22 20 2a 2a 20 33 3b 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 tern.=."ab".**.3;.comptime.{....
cd60 20 61 73 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 70 61 74 74 65 72 6e 2c 20 22 61 62 .assert(mem.eql(u8,.pattern,."ab
cd80 61 62 61 62 22 29 29 3b 0a 7d 0a 0a 2f 2f 20 69 6e 69 74 69 61 6c 69 7a 65 20 61 6e 20 61 72 72 abab"));.}..//.initialize.an.arr
cda0 61 79 20 74 6f 20 7a 65 72 6f 0a 63 6f 6e 73 74 20 61 6c 6c 5f 7a 65 72 6f 20 3d 20 5b 5d 75 31 ay.to.zero.const.all_zero.=.[]u1
cdc0 36 7b 30 7d 20 2a 2a 20 31 30 3b 0a 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 61 73 73 65 6{0}.**.10;..comptime.{.....asse
cde0 72 74 28 61 6c 6c 5f 7a 65 72 6f 2e 6c 65 6e 20 3d 3d 20 31 30 29 3b 0a 20 20 20 20 61 73 73 65 rt(all_zero.len.==.10);.....asse
ce00 72 74 28 61 6c 6c 5f 7a 65 72 6f 5b 35 5d 20 3d 3d 20 30 29 3b 0a 7d 0a 0a 2f 2f 20 75 73 65 20 rt(all_zero[5].==.0);.}..//.use.
ce20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 63 6f 64 65 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 compile-time.code.to.initialize.
ce40 61 6e 20 61 72 72 61 79 0a 76 61 72 20 66 61 6e 63 79 5f 61 72 72 61 79 20 3d 20 7b 0a 20 20 20 an.array.var.fancy_array.=.{....
ce60 20 76 61 72 20 69 6e 69 74 69 61 6c 5f 76 61 6c 75 65 3a 20 5b 31 30 5d 50 6f 69 6e 74 20 3d 20 .var.initial_value:.[10]Point.=.
ce80 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 66 6f 72 20 28 69 6e 69 74 69 61 6c 5f 76 61 6c 75 undefined;.....for.(initial_valu
cea0 65 29 20 7c 2a 70 74 2c 20 69 7c 20 7b 0a 20 20 20 20 20 20 20 20 2a 70 74 20 3d 20 50 6f 69 6e e).|*pt,.i|.{.........*pt.=.Poin
cec0 74 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2e 78 20 3d 20 69 33 32 28 69 29 2c 0a 20 20 20 t.{..............x.=.i32(i),....
cee0 20 20 20 20 20 20 20 20 20 2e 79 20 3d 20 69 33 32 28 69 29 20 2a 20 32 2c 0a 20 20 20 20 20 20 ..........y.=.i32(i).*.2,.......
cf00 20 20 7d 3b 0a 20 20 20 20 7d 0a 20 20 20 20 69 6e 69 74 69 61 6c 5f 76 61 6c 75 65 0a 7d 3b 0a ..};.....}.....initial_value.};.
cf20 63 6f 6e 73 74 20 50 6f 69 6e 74 20 3d 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 78 3a 20 69 33 const.Point.=.struct.{.....x:.i3
cf40 32 2c 0a 20 20 20 20 79 3a 20 69 33 32 2c 0a 7d 3b 0a 0a 74 65 73 74 20 22 63 6f 6d 70 69 6c 65 2,.....y:.i32,.};..test."compile
cf60 2d 74 69 6d 65 20 61 72 72 61 79 20 69 6e 69 74 61 6c 69 7a 61 74 69 6f 6e 22 20 7b 0a 20 20 20 -time.array.initalization".{....
cf80 20 61 73 73 65 72 74 28 66 61 6e 63 79 5f 61 72 72 61 79 5b 34 5d 2e 78 20 3d 3d 20 34 29 3b 0a .assert(fancy_array[4].x.==.4);.
cfa0 20 20 20 20 61 73 73 65 72 74 28 66 61 6e 63 79 5f 61 72 72 61 79 5b 34 5d 2e 79 20 3d 3d 20 38 ....assert(fancy_array[4].y.==.8
cfc0 29 3b 0a 7d 0a 0a 2f 2f 20 63 61 6c 6c 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 69 6e 69 74 );.}..//.call.a.function.to.init
cfe0 69 61 6c 69 7a 65 20 61 6e 20 61 72 72 61 79 0a 76 61 72 20 6d 6f 72 65 5f 70 6f 69 6e 74 73 20 ialize.an.array.var.more_points.
d000 3d 20 5b 5d 50 6f 69 6e 74 7b 6d 61 6b 65 50 6f 69 6e 74 28 33 29 7d 20 2a 2a 20 31 30 3b 0a 66 =.[]Point{makePoint(3)}.**.10;.f
d020 6e 20 6d 61 6b 65 50 6f 69 6e 74 28 78 3a 20 69 33 32 29 20 2d 26 67 74 3b 20 50 6f 69 6e 74 20 n.makePoint(x:.i32).-&gt;.Point.
d040 7b 0a 20 20 20 20 50 6f 69 6e 74 20 7b 0a 20 20 20 20 20 20 20 20 2e 78 20 3d 20 78 2c 0a 20 20 {.....Point.{..........x.=.x,...
d060 20 20 20 20 20 20 2e 79 20 3d 20 78 20 2a 20 32 2c 0a 20 20 20 20 7d 0a 7d 0a 74 65 73 74 20 22 .......y.=.x.*.2,.....}.}.test."
d080 61 72 72 61 79 20 69 6e 69 74 69 61 6c 69 7a 61 74 69 6f 6e 20 77 69 74 68 20 66 75 6e 63 74 69 array.initialization.with.functi
d0a0 6f 6e 20 63 61 6c 6c 73 22 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 6f 72 65 5f 70 6f 69 6e on.calls".{.....assert(more_poin
d0c0 74 73 5b 34 5d 2e 78 20 3d 3d 20 33 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 6f 72 65 5f 70 ts[4].x.==.3);.....assert(more_p
d0e0 6f 69 6e 74 73 5b 34 5d 2e 79 20 3d 3d 20 36 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 6f 72 oints[4].y.==.6);.....assert(mor
d100 65 5f 70 6f 69 6e 74 73 2e 6c 65 6e 20 3d 3d 20 31 30 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 e_points.len.==.10);.}</code></p
d120 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e re>.......<pre><code.class="sh">
d140 24 20 7a 69 67 20 74 65 73 74 20 61 72 72 61 79 73 2e 7a 69 67 0a 54 65 73 74 20 31 2f 34 20 69 $.zig.test.arrays.zig.Test.1/4.i
d160 74 65 72 61 74 65 20 6f 76 65 72 20 61 6e 20 61 72 72 61 79 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 terate.over.an.array...OK.Test.2
d180 2f 34 20 6d 6f 64 69 66 79 20 61 6e 20 61 72 72 61 79 2e 2e 2e 4f 4b 0a 54 65 73 74 20 33 2f 34 /4.modify.an.array...OK.Test.3/4
d1a0 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 61 72 72 61 79 20 69 6e 69 74 61 6c 69 7a 61 74 69 6f .compile-time.array.initalizatio
d1c0 6e 2e 2e 2e 4f 4b 0a 54 65 73 74 20 34 2f 34 20 61 72 72 61 79 20 69 6e 69 74 69 61 6c 69 7a 61 n...OK.Test.4/4.array.initializa
d1e0 74 69 6f 6e 20 77 69 74 68 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 2e 2e 2e 4f 4b 3c 2f 63 tion.with.function.calls...OK</c
d200 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 ode></pre>.......<p>See.also:</p
d220 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 >.......<ul>.........<li><a.href
d240 3d 22 23 66 6f 72 22 3e 66 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 ="#for">for</a></li>.........<li
d260 3e 3c 61 20 68 72 65 66 3d 22 23 73 6c 69 63 65 73 22 3e 53 6c 69 63 65 73 3c 2f 61 3e 3c 2f 6c ><a.href="#slices">Slices</a></l
d280 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 70 6f 69 i>.......</ul>.......<h2.id="poi
d2a0 6e 74 65 72 73 22 3e 50 6f 69 6e 74 65 72 73 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e nters">Pointers</h2>.......<pre>
d2c0 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d <code.class="zig">const.assert.=
d2e0 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 .@import("std").debug.assert;..t
d300 65 73 74 20 22 61 64 64 72 65 73 73 20 6f 66 20 73 79 6e 74 61 78 22 20 7b 0a 20 20 20 20 2f 2f est."address.of.syntax".{.....//
d320 20 47 65 74 20 74 68 65 20 61 64 64 72 65 73 73 20 6f 66 20 61 20 76 61 72 69 61 62 6c 65 3a 0a .Get.the.address.of.a.variable:.
d340 20 20 20 20 63 6f 6e 73 74 20 78 3a 20 69 33 32 20 3d 20 31 32 33 34 3b 0a 20 20 20 20 63 6f 6e ....const.x:.i32.=.1234;.....con
d360 73 74 20 78 5f 70 74 72 20 3d 20 26 61 6d 70 3b 78 3b 0a 0a 20 20 20 20 2f 2f 20 44 65 66 65 72 st.x_ptr.=.&amp;x;......//.Defer
d380 65 6e 63 65 20 61 20 70 6f 69 6e 74 65 72 3a 0a 20 20 20 20 61 73 73 65 72 74 28 2a 78 5f 70 74 ence.a.pointer:.....assert(*x_pt
d3a0 72 20 3d 3d 20 31 32 33 34 29 3b 0a 0a 20 20 20 20 2f 2f 20 57 68 65 6e 20 79 6f 75 20 67 65 74 r.==.1234);......//.When.you.get
d3c0 20 74 68 65 20 61 64 64 72 65 73 73 20 6f 66 20 61 20 63 6f 6e 73 74 20 76 61 72 69 61 62 6c 65 .the.address.of.a.const.variable
d3e0 2c 20 79 6f 75 20 67 65 74 20 61 20 63 6f 6e 73 74 20 70 6f 69 6e 74 65 72 2e 0a 20 20 20 20 61 ,.you.get.a.const.pointer......a
d400 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 78 5f 70 74 72 29 20 3d 3d 20 26 61 6d 70 3b 63 6f 6e ssert(@typeOf(x_ptr).==.&amp;con
d420 73 74 20 69 33 32 29 3b 0a 0a 20 20 20 20 2f 2f 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 st.i32);......//.If.you.want.to.
d440 6d 75 74 61 74 65 20 74 68 65 20 76 61 6c 75 65 2c 20 79 6f 75 27 64 20 6e 65 65 64 20 61 6e 20 mutate.the.value,.you'd.need.an.
d460 61 64 64 72 65 73 73 20 6f 66 20 61 20 6d 75 74 61 62 6c 65 20 76 61 72 69 61 62 6c 65 3a 0a 20 address.of.a.mutable.variable:..
d480 20 20 20 76 61 72 20 79 3a 20 69 33 32 20 3d 20 35 36 37 38 3b 0a 20 20 20 20 63 6f 6e 73 74 20 ...var.y:.i32.=.5678;.....const.
d4a0 79 5f 70 74 72 20 3d 20 26 61 6d 70 3b 79 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 y_ptr.=.&amp;y;.....assert(@type
d4c0 4f 66 28 79 5f 70 74 72 29 20 3d 3d 20 26 61 6d 70 3b 69 33 32 29 3b 0a 20 20 20 20 2a 79 5f 70 Of(y_ptr).==.&amp;i32);.....*y_p
d4e0 74 72 20 2b 3d 20 31 3b 0a 20 20 20 20 61 73 73 65 72 74 28 2a 79 5f 70 74 72 20 3d 3d 20 35 36 tr.+=.1;.....assert(*y_ptr.==.56
d500 37 39 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 70 6f 69 6e 74 65 72 20 61 72 72 61 79 20 61 63 63 65 79);.}..test."pointer.array.acce
d520 73 73 22 20 7b 0a 20 20 20 20 2f 2f 20 50 6f 69 6e 74 65 72 73 20 64 6f 20 6e 6f 74 20 73 75 70 ss".{.....//.Pointers.do.not.sup
d540 70 6f 72 74 20 70 6f 69 6e 74 65 72 20 61 72 69 74 68 6d 65 74 69 63 2e 20 49 66 20 79 6f 75 0a port.pointer.arithmetic..If.you.
d560 20 20 20 20 2f 2f 20 6e 65 65 64 20 73 75 63 68 20 61 20 74 68 69 6e 67 2c 20 75 73 65 20 61 72 ....//.need.such.a.thing,.use.ar
d580 72 61 79 20 69 6e 64 65 78 20 73 79 6e 74 61 78 3a 0a 0a 20 20 20 20 76 61 72 20 61 72 72 61 79 ray.index.syntax:......var.array
d5a0 20 3d 20 5b 5d 75 38 7b 31 2c 20 32 2c 20 33 2c 20 34 2c 20 35 2c 20 36 2c 20 37 2c 20 38 2c 20 .=.[]u8{1,.2,.3,.4,.5,.6,.7,.8,.
d5c0 39 2c 20 31 30 7d 3b 0a 20 20 20 20 63 6f 6e 73 74 20 70 74 72 20 3d 20 26 61 6d 70 3b 61 72 72 9,.10};.....const.ptr.=.&amp;arr
d5e0 61 79 5b 31 5d 3b 0a 0a 20 20 20 20 61 73 73 65 72 74 28 61 72 72 61 79 5b 32 5d 20 3d 3d 20 33 ay[1];......assert(array[2].==.3
d600 29 3b 0a 20 20 20 20 70 74 72 5b 31 5d 20 2b 3d 20 31 3b 0a 20 20 20 20 61 73 73 65 72 74 28 61 );.....ptr[1].+=.1;.....assert(a
d620 72 72 61 79 5b 32 5d 20 3d 3d 20 34 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 70 6f 69 6e 74 65 72 20 rray[2].==.4);.}..test."pointer.
d640 73 6c 69 63 69 6e 67 22 20 7b 0a 20 20 20 20 2f 2f 20 49 6e 20 5a 69 67 2c 20 77 65 20 70 72 65 slicing".{.....//.In.Zig,.we.pre
d660 66 65 72 20 75 73 69 6e 67 20 73 6c 69 63 65 73 20 6f 76 65 72 20 6e 75 6c 6c 2d 74 65 72 6d 69 fer.using.slices.over.null-termi
d680 6e 61 74 65 64 20 70 6f 69 6e 74 65 72 73 2e 0a 20 20 20 20 2f 2f 20 59 6f 75 20 63 61 6e 20 74 nated.pointers......//.You.can.t
d6a0 75 72 6e 20 61 20 70 6f 69 6e 74 65 72 20 69 6e 74 6f 20 61 20 73 6c 69 63 65 20 75 73 69 6e 67 urn.a.pointer.into.a.slice.using
d6c0 20 73 6c 69 63 65 20 73 79 6e 74 61 78 3a 0a 20 20 20 20 76 61 72 20 61 72 72 61 79 20 3d 20 5b .slice.syntax:.....var.array.=.[
d6e0 5d 75 38 7b 31 2c 20 32 2c 20 33 2c 20 34 2c 20 35 2c 20 36 2c 20 37 2c 20 38 2c 20 39 2c 20 31 ]u8{1,.2,.3,.4,.5,.6,.7,.8,.9,.1
d700 30 7d 3b 0a 20 20 20 20 63 6f 6e 73 74 20 70 74 72 20 3d 20 26 61 6d 70 3b 61 72 72 61 79 5b 31 0};.....const.ptr.=.&amp;array[1
d720 5d 3b 0a 20 20 20 20 63 6f 6e 73 74 20 73 6c 69 63 65 20 3d 20 70 74 72 5b 31 2e 2e 33 5d 3b 0a ];.....const.slice.=.ptr[1..3];.
d740 0a 20 20 20 20 61 73 73 65 72 74 28 73 6c 69 63 65 2e 70 74 72 20 3d 3d 20 26 61 6d 70 3b 70 74 .....assert(slice.ptr.==.&amp;pt
d760 72 5b 31 5d 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 73 6c 69 63 65 2e 6c 65 6e 20 3d 3d 20 32 r[1]);.....assert(slice.len.==.2
d780 29 3b 0a 0a 20 20 20 20 2f 2f 20 53 6c 69 63 65 73 20 68 61 76 65 20 62 6f 75 6e 64 73 20 63 68 );......//.Slices.have.bounds.ch
d7a0 65 63 6b 69 6e 67 20 61 6e 64 20 61 72 65 20 74 68 65 72 65 66 6f 72 65 20 70 72 6f 74 65 63 74 ecking.and.are.therefore.protect
d7c0 65 64 0a 20 20 20 20 2f 2f 20 61 67 61 69 6e 73 74 20 74 68 69 73 20 6b 69 6e 64 20 6f 66 20 75 ed.....//.against.this.kind.of.u
d7e0 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2e 20 54 68 69 73 20 69 73 20 6f 6e 65 20 72 ndefined.behavior..This.is.one.r
d800 65 61 73 6f 6e 0a 20 20 20 20 2f 2f 20 77 65 20 70 72 65 66 65 72 20 73 6c 69 63 65 73 20 74 6f eason.....//.we.prefer.slices.to
d820 20 70 6f 69 6e 74 65 72 73 2e 0a 20 20 20 20 61 73 73 65 72 74 28 61 72 72 61 79 5b 33 5d 20 3d .pointers......assert(array[3].=
d840 3d 20 34 29 3b 0a 20 20 20 20 73 6c 69 63 65 5b 31 5d 20 2b 3d 20 31 3b 0a 20 20 20 20 61 73 73 =.4);.....slice[1].+=.1;.....ass
d860 65 72 74 28 61 72 72 61 79 5b 33 5d 20 3d 3d 20 35 29 3b 0a 7d 0a 0a 63 6f 6d 70 74 69 6d 65 20 ert(array[3].==.5);.}..comptime.
d880 7b 0a 20 20 20 20 2f 2f 20 50 6f 69 6e 74 65 72 73 20 77 6f 72 6b 20 61 74 20 63 6f 6d 70 69 6c {.....//.Pointers.work.at.compil
d8a0 65 2d 74 69 6d 65 20 74 6f 6f 2c 20 61 73 20 6c 6f 6e 67 20 61 73 20 79 6f 75 20 64 6f 6e 27 74 e-time.too,.as.long.as.you.don't
d8c0 20 75 73 65 0a 20 20 20 20 2f 2f 20 40 70 74 72 43 61 73 74 2e 0a 20 20 20 20 76 61 72 20 78 3a .use.....//.@ptrCast......var.x:
d8e0 20 69 33 32 20 3d 20 31 3b 0a 20 20 20 20 63 6f 6e 73 74 20 70 74 72 20 3d 20 26 61 6d 70 3b 78 .i32.=.1;.....const.ptr.=.&amp;x
d900 3b 0a 20 20 20 20 2a 70 74 72 20 2b 3d 20 31 3b 0a 20 20 20 20 78 20 2b 3d 20 31 3b 0a 20 20 20 ;.....*ptr.+=.1;.....x.+=.1;....
d920 20 61 73 73 65 72 74 28 2a 70 74 72 20 3d 3d 20 33 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 40 70 74 .assert(*ptr.==.3);.}..test."@pt
d940 72 54 6f 49 6e 74 20 61 6e 64 20 40 69 6e 74 54 6f 50 74 72 22 20 7b 0a 20 20 20 20 2f 2f 20 54 rToInt.and.@intToPtr".{.....//.T
d960 6f 20 63 6f 6e 76 65 72 74 20 61 6e 20 69 6e 74 65 67 65 72 20 61 64 64 72 65 73 73 20 69 6e 74 o.convert.an.integer.address.int
d980 6f 20 61 20 70 6f 69 6e 74 65 72 2c 20 75 73 65 20 40 69 6e 74 54 6f 50 74 72 3a 0a 20 20 20 20 o.a.pointer,.use.@intToPtr:.....
d9a0 63 6f 6e 73 74 20 70 74 72 20 3d 20 40 69 6e 74 54 6f 50 74 72 28 26 61 6d 70 3b 69 33 32 2c 20 const.ptr.=.@intToPtr(&amp;i32,.
d9c0 30 78 64 65 61 64 62 65 65 66 29 3b 0a 0a 20 20 20 20 2f 2f 20 54 6f 20 63 6f 6e 76 65 72 74 20 0xdeadbeef);......//.To.convert.
d9e0 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e 20 69 6e 74 65 67 65 72 2c 20 75 73 65 20 40 70 74 a.pointer.to.an.integer,.use.@pt
da00 72 54 6f 49 6e 74 3a 0a 20 20 20 20 63 6f 6e 73 74 20 61 64 64 72 20 3d 20 40 70 74 72 54 6f 49 rToInt:.....const.addr.=.@ptrToI
da20 6e 74 28 70 74 72 29 3b 0a 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 61 64 64 nt(ptr);......assert(@typeOf(add
da40 72 29 20 3d 3d 20 75 73 69 7a 65 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 61 64 64 72 20 3d 3d r).==.usize);.....assert(addr.==
da60 20 30 78 64 65 61 64 62 65 65 66 29 3b 0a 7d 0a 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 .0xdeadbeef);.}..comptime.{.....
da80 2f 2f 20 5a 69 67 20 69 73 20 61 62 6c 65 20 74 6f 20 64 6f 20 74 68 69 73 20 61 74 20 63 6f 6d //.Zig.is.able.to.do.this.at.com
daa0 70 69 6c 65 2d 74 69 6d 65 2c 20 61 73 20 6c 6f 6e 67 20 61 73 0a 20 20 20 20 2f 2f 20 70 74 72 pile-time,.as.long.as.....//.ptr
dac0 20 69 73 20 6e 65 76 65 72 20 64 65 72 65 66 65 72 65 6e 63 65 64 2e 0a 20 20 20 20 63 6f 6e 73 .is.never.dereferenced......cons
dae0 74 20 70 74 72 20 3d 20 40 69 6e 74 54 6f 50 74 72 28 26 61 6d 70 3b 69 33 32 2c 20 30 78 64 65 t.ptr.=.@intToPtr(&amp;i32,.0xde
db00 61 64 62 65 65 66 29 3b 0a 20 20 20 20 63 6f 6e 73 74 20 61 64 64 72 20 3d 20 40 70 74 72 54 6f adbeef);.....const.addr.=.@ptrTo
db20 49 6e 74 28 70 74 72 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 61 64 64 Int(ptr);.....assert(@typeOf(add
db40 72 29 20 3d 3d 20 75 73 69 7a 65 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 61 64 64 72 20 3d 3d r).==.usize);.....assert(addr.==
db60 20 30 78 64 65 61 64 62 65 65 66 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 76 6f 6c 61 74 69 6c 65 22 .0xdeadbeef);.}..test."volatile"
db80 20 7b 0a 20 20 20 20 2f 2f 20 49 6e 20 5a 69 67 2c 20 6c 6f 61 64 73 20 61 6e 64 20 73 74 6f 72 .{.....//.In.Zig,.loads.and.stor
dba0 65 73 20 61 72 65 20 61 73 73 75 6d 65 64 20 74 6f 20 6e 6f 74 20 68 61 76 65 20 73 69 64 65 20 es.are.assumed.to.not.have.side.
dbc0 65 66 66 65 63 74 73 2e 0a 20 20 20 20 2f 2f 20 49 66 20 61 20 67 69 76 65 6e 20 6c 6f 61 64 20 effects......//.If.a.given.load.
dbe0 6f 72 20 73 74 6f 72 65 20 73 68 6f 75 6c 64 20 68 61 76 65 20 73 69 64 65 20 65 66 66 65 63 74 or.store.should.have.side.effect
dc00 73 2c 20 73 75 63 68 20 61 73 0a 20 20 20 20 2f 2f 20 4d 65 6d 6f 72 79 20 4d 61 70 70 65 64 20 s,.such.as.....//.Memory.Mapped.
dc20 49 6e 70 75 74 2f 4f 75 74 70 75 74 20 28 4d 4d 49 4f 29 2c 20 75 73 65 20 60 76 6f 6c 61 74 69 Input/Output.(MMIO),.use.`volati
dc40 6c 65 60 3a 0a 20 20 20 20 63 6f 6e 73 74 20 6d 6d 69 6f 5f 70 74 72 20 3d 20 40 69 6e 74 54 6f le`:.....const.mmio_ptr.=.@intTo
dc60 50 74 72 28 26 61 6d 70 3b 76 6f 6c 61 74 69 6c 65 20 75 38 2c 20 30 78 31 32 33 34 35 36 37 38 Ptr(&amp;volatile.u8,.0x12345678
dc80 29 3b 0a 0a 20 20 20 20 2f 2f 20 4e 6f 77 20 6c 6f 61 64 73 20 61 6e 64 20 73 74 6f 72 65 73 20 );......//.Now.loads.and.stores.
dca0 77 69 74 68 20 6d 6d 69 6f 5f 70 74 72 20 61 72 65 20 67 75 61 72 61 6e 74 65 65 64 20 74 6f 20 with.mmio_ptr.are.guaranteed.to.
dcc0 61 6c 6c 20 68 61 70 70 65 6e 0a 20 20 20 20 2f 2f 20 61 6e 64 20 69 6e 20 74 68 65 20 73 61 6d all.happen.....//.and.in.the.sam
dce0 65 20 6f 72 64 65 72 20 61 73 20 69 6e 20 73 6f 75 72 63 65 20 63 6f 64 65 2e 0a 20 20 20 20 61 e.order.as.in.source.code......a
dd00 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 6d 6d 69 6f 5f 70 74 72 29 20 3d 3d 20 26 61 6d 70 3b ssert(@typeOf(mmio_ptr).==.&amp;
dd20 76 6f 6c 61 74 69 6c 65 20 75 38 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 6e 75 6c 6c 61 62 6c 65 20 volatile.u8);.}..test."nullable.
dd40 70 6f 69 6e 74 65 72 73 22 20 7b 0a 20 20 20 20 2f 2f 20 50 6f 69 6e 74 65 72 73 20 63 61 6e 6e pointers".{.....//.Pointers.cann
dd60 6f 74 20 62 65 20 6e 75 6c 6c 2e 20 49 66 20 79 6f 75 20 77 61 6e 74 20 61 20 6e 75 6c 6c 20 70 ot.be.null..If.you.want.a.null.p
dd80 6f 69 6e 74 65 72 2c 20 75 73 65 20 74 68 65 20 6e 75 6c 6c 61 62 6c 65 0a 20 20 20 20 2f 2f 20 ointer,.use.the.nullable.....//.
dda0 70 72 65 66 69 78 20 60 3f 60 20 74 6f 20 6d 61 6b 65 20 74 68 65 20 70 6f 69 6e 74 65 72 20 74 prefix.`?`.to.make.the.pointer.t
ddc0 79 70 65 20 6e 75 6c 6c 61 62 6c 65 2e 0a 20 20 20 20 76 61 72 20 70 74 72 3a 20 3f 26 61 6d 70 ype.nullable......var.ptr:.?&amp
dde0 3b 69 33 32 20 3d 20 6e 75 6c 6c 3b 0a 0a 20 20 20 20 76 61 72 20 78 3a 20 69 33 32 20 3d 20 31 ;i32.=.null;......var.x:.i32.=.1
de00 3b 0a 20 20 20 20 70 74 72 20 3d 20 26 61 6d 70 3b 78 3b 0a 0a 20 20 20 20 61 73 73 65 72 74 28 ;.....ptr.=.&amp;x;......assert(
de20 2a 3f 3f 70 74 72 20 3d 3d 20 31 29 3b 0a 0a 20 20 20 20 2f 2f 20 4e 75 6c 6c 61 62 6c 65 20 70 *??ptr.==.1);......//.Nullable.p
de40 6f 69 6e 74 65 72 73 20 61 72 65 20 74 68 65 20 73 61 6d 65 20 73 69 7a 65 20 61 73 20 6e 6f 72 ointers.are.the.same.size.as.nor
de60 6d 61 6c 20 70 6f 69 6e 74 65 72 73 2c 20 62 65 63 61 75 73 65 20 70 6f 69 6e 74 65 72 0a 20 20 mal.pointers,.because.pointer...
de80 20 20 2f 2f 20 76 61 6c 75 65 20 30 20 69 73 20 75 73 65 64 20 61 73 20 74 68 65 20 6e 75 6c 6c ..//.value.0.is.used.as.the.null
dea0 20 76 61 6c 75 65 2e 0a 20 20 20 20 61 73 73 65 72 74 28 40 73 69 7a 65 4f 66 28 3f 26 61 6d 70 .value......assert(@sizeOf(?&amp
dec0 3b 69 33 32 29 20 3d 3d 20 40 73 69 7a 65 4f 66 28 26 61 6d 70 3b 69 33 32 29 29 3b 0a 7d 0a 0a ;i32).==.@sizeOf(&amp;i32));.}..
dee0 74 65 73 74 20 22 70 6f 69 6e 74 65 72 20 63 61 73 74 69 6e 67 22 20 7b 0a 20 20 20 20 2f 2f 20 test."pointer.casting".{.....//.
df00 54 6f 20 63 6f 6e 76 65 72 74 20 6f 6e 65 20 70 6f 69 6e 74 65 72 20 74 79 70 65 20 74 6f 20 61 To.convert.one.pointer.type.to.a
df20 6e 6f 74 68 65 72 2c 20 75 73 65 20 40 70 74 72 43 61 73 74 2e 20 54 68 69 73 20 69 73 20 61 6e nother,.use.@ptrCast..This.is.an
df40 20 75 6e 73 61 66 65 0a 20 20 20 20 2f 2f 20 6f 70 65 72 61 74 69 6f 6e 20 74 68 61 74 20 5a 69 .unsafe.....//.operation.that.Zi
df60 67 20 63 61 6e 6e 6f 74 20 70 72 6f 74 65 63 74 20 79 6f 75 20 61 67 61 69 6e 73 74 2e 20 55 73 g.cannot.protect.you.against..Us
df80 65 20 40 70 74 72 43 61 73 74 20 6f 6e 6c 79 20 77 68 65 6e 20 6f 74 68 65 72 0a 20 20 20 20 2f e.@ptrCast.only.when.other...../
dfa0 2f 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 61 72 65 20 6e 6f 74 20 70 6f 73 73 69 62 6c 65 2e 0a /.conversions.are.not.possible..
dfc0 20 20 20 20 63 6f 6e 73 74 20 62 79 74 65 73 20 3d 20 5b 5d 75 38 7b 30 78 31 32 2c 20 30 78 31 ....const.bytes.=.[]u8{0x12,.0x1
dfe0 32 2c 20 30 78 31 32 2c 20 30 78 31 32 7d 3b 0a 20 20 20 20 63 6f 6e 73 74 20 75 33 32 5f 70 74 2,.0x12,.0x12};.....const.u32_pt
e000 72 20 3d 20 40 70 74 72 43 61 73 74 28 26 61 6d 70 3b 63 6f 6e 73 74 20 75 33 32 2c 20 26 61 6d r.=.@ptrCast(&amp;const.u32,.&am
e020 70 3b 62 79 74 65 73 5b 30 5d 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 2a 75 33 32 5f 70 74 72 p;bytes[0]);.....assert(*u32_ptr
e040 20 3d 3d 20 30 78 31 32 31 32 31 32 31 32 29 3b 0a 0a 20 20 20 20 2f 2f 20 45 76 65 6e 20 74 68 .==.0x12121212);......//.Even.th
e060 69 73 20 65 78 61 6d 70 6c 65 20 69 73 20 63 6f 6e 74 72 69 76 65 64 20 2d 20 74 68 65 72 65 20 is.example.is.contrived.-.there.
e080 61 72 65 20 62 65 74 74 65 72 20 77 61 79 73 20 74 6f 20 64 6f 20 74 68 65 20 61 62 6f 76 65 20 are.better.ways.to.do.the.above.
e0a0 74 68 61 6e 0a 20 20 20 20 2f 2f 20 70 6f 69 6e 74 65 72 20 63 61 73 74 69 6e 67 2e 20 46 6f 72 than.....//.pointer.casting..For
e0c0 20 65 78 61 6d 70 6c 65 2c 20 75 73 69 6e 67 20 61 20 73 6c 69 63 65 20 6e 61 72 72 6f 77 69 6e .example,.using.a.slice.narrowin
e0e0 67 20 63 61 73 74 3a 0a 20 20 20 20 63 6f 6e 73 74 20 75 33 32 5f 76 61 6c 75 65 20 3d 20 28 5b g.cast:.....const.u32_value.=.([
e100 5d 63 6f 6e 73 74 20 75 33 32 29 28 62 79 74 65 73 5b 30 2e 2e 5d 29 5b 30 5d 3b 0a 20 20 20 20 ]const.u32)(bytes[0..])[0];.....
e120 61 73 73 65 72 74 28 75 33 32 5f 76 61 6c 75 65 20 3d 3d 20 30 78 31 32 31 32 31 32 31 32 29 3b assert(u32_value.==.0x12121212);
e140 0a 0a 20 20 20 20 2f 2f 20 41 6e 64 20 65 76 65 6e 20 61 6e 6f 74 68 65 72 20 77 61 79 2c 20 74 ......//.And.even.another.way,.t
e160 68 65 20 6d 6f 73 74 20 73 74 72 61 69 67 68 74 66 6f 72 77 61 72 64 20 77 61 79 20 74 6f 20 64 he.most.straightforward.way.to.d
e180 6f 20 69 74 3a 0a 20 20 20 20 61 73 73 65 72 74 28 40 62 69 74 43 61 73 74 28 75 33 32 2c 20 62 o.it:.....assert(@bitCast(u32,.b
e1a0 79 74 65 73 29 20 3d 3d 20 30 78 31 32 31 32 31 32 31 32 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 70 ytes).==.0x12121212);.}..test."p
e1c0 6f 69 6e 74 65 72 20 63 68 69 6c 64 20 74 79 70 65 22 20 7b 0a 20 20 20 20 2f 2f 20 70 6f 69 6e ointer.child.type".{.....//.poin
e1e0 74 65 72 20 74 79 70 65 73 20 68 61 76 65 20 61 20 60 63 68 69 6c 64 60 20 66 69 65 6c 64 20 77 ter.types.have.a.`child`.field.w
e200 68 69 63 68 20 74 65 6c 6c 73 20 79 6f 75 20 74 68 65 20 74 79 70 65 20 74 68 65 79 20 70 6f 69 hich.tells.you.the.type.they.poi
e220 6e 74 20 74 6f 2e 0a 20 20 20 20 61 73 73 65 72 74 28 28 26 61 6d 70 3b 75 33 32 29 2e 63 68 69 nt.to......assert((&amp;u32).chi
e240 6c 64 20 3d 3d 20 75 33 32 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 ld.==.u32);.}</code></pre>......
e260 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 74 65 73 .<pre><code.class="sh">$.zig.tes
e280 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 38 20 61 64 64 72 65 73 73 20 6f 66 20 73 t.test.zig.Test.1/8.address.of.s
e2a0 79 6e 74 61 78 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 2f 38 20 70 6f 69 6e 74 65 72 20 61 72 72 61 yntax...OK.Test.2/8.pointer.arra
e2c0 79 20 61 63 63 65 73 73 2e 2e 2e 4f 4b 0a 54 65 73 74 20 33 2f 38 20 70 6f 69 6e 74 65 72 20 73 y.access...OK.Test.3/8.pointer.s
e2e0 6c 69 63 69 6e 67 2e 2e 2e 4f 4b 0a 54 65 73 74 20 34 2f 38 20 40 70 74 72 54 6f 49 6e 74 20 61 licing...OK.Test.4/8.@ptrToInt.a
e300 6e 64 20 40 69 6e 74 54 6f 50 74 72 2e 2e 2e 4f 4b 0a 54 65 73 74 20 35 2f 38 20 76 6f 6c 61 74 nd.@intToPtr...OK.Test.5/8.volat
e320 69 6c 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 36 2f 38 20 6e 75 6c 6c 61 62 6c 65 20 70 6f 69 6e 74 ile...OK.Test.6/8.nullable.point
e340 65 72 73 2e 2e 2e 4f 4b 0a 54 65 73 74 20 37 2f 38 20 70 6f 69 6e 74 65 72 20 63 61 73 74 69 6e ers...OK.Test.7/8.pointer.castin
e360 67 2e 2e 2e 4f 4b 0a 54 65 73 74 20 38 2f 38 20 70 6f 69 6e 74 65 72 20 63 68 69 6c 64 20 74 79 g...OK.Test.8/8.pointer.child.ty
e380 70 65 2e 2e 2e 4f 4b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 pe...OK</code></pre>.......<h3.i
e3a0 64 3d 22 61 6c 69 67 6e 6d 65 6e 74 22 3e 41 6c 69 67 6e 6d 65 6e 74 3c 2f 68 33 3e 0a 20 20 20 d="alignment">Alignment</h3>....
e3c0 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 45 61 63 68 20 74 79 70 65 20 68 61 73 20 61 6e 20 3c 73 ...<p>.......Each.type.has.an.<s
e3e0 74 72 6f 6e 67 3e 61 6c 69 67 6e 6d 65 6e 74 3c 2f 73 74 72 6f 6e 67 3e 20 2d 20 61 20 6e 75 6d trong>alignment</strong>.-.a.num
e400 62 65 72 20 6f 66 20 62 79 74 65 73 20 73 75 63 68 20 74 68 61 74 2c 0a 20 20 20 20 20 20 77 68 ber.of.bytes.such.that,.......wh
e420 65 6e 20 61 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 74 79 70 65 20 69 73 20 6c 6f 61 64 65 64 en.a.value.of.the.type.is.loaded
e440 20 66 72 6f 6d 20 6f 72 20 73 74 6f 72 65 64 20 74 6f 20 6d 65 6d 6f 72 79 2c 0a 20 20 20 20 20 .from.or.stored.to.memory,......
e460 20 74 68 65 20 6d 65 6d 6f 72 79 20 61 64 64 72 65 73 73 20 6d 75 73 74 20 62 65 20 65 76 65 6e .the.memory.address.must.be.even
e480 6c 79 20 64 69 76 69 73 69 62 6c 65 20 62 79 20 74 68 69 73 20 6e 75 6d 62 65 72 2e 20 59 6f 75 ly.divisible.by.this.number..You
e4a0 20 63 61 6e 20 75 73 65 0a 20 20 20 20 20 20 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e .can.use.......<a.href="#builtin
e4c0 2d 61 6c 69 67 6e 4f 66 22 3e 40 61 6c 69 67 6e 4f 66 3c 2f 61 3e 20 74 6f 20 66 69 6e 64 20 6f -alignOf">@alignOf</a>.to.find.o
e4e0 75 74 20 74 68 69 73 20 76 61 6c 75 65 20 66 6f 72 20 61 6e 79 20 74 79 70 65 2e 0a 20 20 20 20 ut.this.value.for.any.type......
e500 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 41 6c 69 67 6e 6d 65 6e 74 ..</p>.......<p>.......Alignment
e520 20 64 65 70 65 6e 64 73 20 6f 6e 20 74 68 65 20 43 50 55 20 61 72 63 68 69 74 65 63 74 75 72 65 .depends.on.the.CPU.architecture
e540 2c 20 62 75 74 20 69 73 20 61 6c 77 61 79 73 20 61 20 70 6f 77 65 72 20 6f 66 20 74 77 6f 2c 20 ,.but.is.always.a.power.of.two,.
e560 61 6e 64 0a 20 20 20 20 20 20 6c 65 73 73 20 74 68 61 6e 20 3c 63 6f 64 65 3e 31 20 26 6c 74 3b and.......less.than.<code>1.&lt;
e580 26 6c 74 3b 20 32 39 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 &lt;.29</code>........</p>......
e5a0 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 20 5a 69 67 2c 20 61 20 70 6f 69 6e 74 65 72 20 74 79 70 .<p>.......In.Zig,.a.pointer.typ
e5c0 65 20 68 61 73 20 61 6e 20 61 6c 69 67 6e 6d 65 6e 74 20 76 61 6c 75 65 2e 20 49 66 20 74 68 65 e.has.an.alignment.value..If.the
e5e0 20 76 61 6c 75 65 20 69 73 20 65 71 75 61 6c 20 74 6f 20 74 68 65 0a 20 20 20 20 20 20 61 6c 69 .value.is.equal.to.the.......ali
e600 67 6e 6d 65 6e 74 20 6f 66 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 74 79 70 65 2c 20 69 gnment.of.the.underlying.type,.i
e620 74 20 63 61 6e 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 74 79 70 65 3a 0a t.can.be.omitted.from.the.type:.
e640 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 ......</p>.......<pre><code.clas
e660 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 s="zig">const.assert.=.@import("
e680 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 63 6f 6e 73 74 20 62 75 69 6c 74 69 std").debug.assert;.const.builti
e6a0 6e 20 3d 20 40 69 6d 70 6f 72 74 28 22 62 75 69 6c 74 69 6e 22 29 3b 0a 0a 74 65 73 74 20 22 76 n.=.@import("builtin");..test."v
e6c0 61 72 69 61 62 6c 65 20 61 6c 69 67 6e 6d 65 6e 74 22 20 7b 0a 20 20 20 20 76 61 72 20 78 3a 20 ariable.alignment".{.....var.x:.
e6e0 69 33 32 20 3d 20 31 32 33 34 3b 0a 20 20 20 20 63 6f 6e 73 74 20 61 6c 69 67 6e 5f 6f 66 5f 69 i32.=.1234;.....const.align_of_i
e700 33 32 20 3d 20 40 61 6c 69 67 6e 4f 66 28 40 74 79 70 65 4f 66 28 78 29 29 3b 0a 20 20 20 20 61 32.=.@alignOf(@typeOf(x));.....a
e720 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 26 61 6d 70 3b 78 29 20 3d 3d 20 26 61 6d 70 3b 69 33 ssert(@typeOf(&amp;x).==.&amp;i3
e740 32 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 26 61 6d 70 3b 69 33 32 20 3d 3d 20 26 61 6d 70 3b 2);.....assert(&amp;i32.==.&amp;
e760 61 6c 69 67 6e 28 61 6c 69 67 6e 5f 6f 66 5f 69 33 32 29 20 69 33 32 29 3b 0a 20 20 20 20 69 66 align(align_of_i32).i32);.....if
e780 20 28 62 75 69 6c 74 69 6e 2e 61 72 63 68 20 3d 3d 20 62 75 69 6c 74 69 6e 2e 41 72 63 68 2e 78 .(builtin.arch.==.builtin.Arch.x
e7a0 38 36 5f 36 34 29 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 28 26 61 6d 70 3b 69 33 86_64).{.........assert((&amp;i3
e7c0 32 29 2e 61 6c 69 67 6e 6d 65 6e 74 20 3d 3d 20 34 29 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 2).alignment.==.4);.....}.}</cod
e7e0 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 49 6e 20 74 68 65 20 73 61 6d 65 20 77 61 e></pre>.......<p>In.the.same.wa
e800 79 20 74 68 61 74 20 61 20 3c 63 6f 64 65 3e 26 61 6d 70 3b 69 33 32 3c 2f 63 6f 64 65 3e 20 63 y.that.a.<code>&amp;i32</code>.c
e820 61 6e 20 62 65 20 69 6d 70 6c 69 63 69 74 6c 79 20 63 61 73 74 20 74 6f 20 61 0a 20 20 20 20 20 an.be.implicitly.cast.to.a......
e840 20 3c 63 6f 64 65 3e 26 61 6d 70 3b 63 6f 6e 73 74 20 69 33 32 3c 2f 63 6f 64 65 3e 2c 20 61 20 .<code>&amp;const.i32</code>,.a.
e860 70 6f 69 6e 74 65 72 20 77 69 74 68 20 61 20 6c 61 72 67 65 72 20 61 6c 69 67 6e 6d 65 6e 74 20 pointer.with.a.larger.alignment.
e880 63 61 6e 20 62 65 20 69 6d 70 6c 69 63 69 74 6c 79 0a 20 20 20 20 20 20 63 61 73 74 20 74 6f 20 can.be.implicitly.......cast.to.
e8a0 61 20 70 6f 69 6e 74 65 72 20 77 69 74 68 20 61 20 73 6d 61 6c 6c 65 72 20 61 6c 69 67 6e 6d 65 a.pointer.with.a.smaller.alignme
e8c0 6e 74 2c 20 62 75 74 20 6e 6f 74 20 76 69 63 65 20 76 65 72 73 61 2e 0a 20 20 20 20 20 20 3c 2f nt,.but.not.vice.versa........</
e8e0 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 59 6f 75 20 63 61 6e 20 73 70 65 63 69 p>.......<p>.......You.can.speci
e900 66 79 20 61 6c 69 67 6e 6d 65 6e 74 20 6f 6e 20 76 61 72 69 61 62 6c 65 73 20 61 6e 64 20 66 75 fy.alignment.on.variables.and.fu
e920 6e 63 74 69 6f 6e 73 2e 20 49 66 20 79 6f 75 20 64 6f 20 74 68 69 73 2c 20 74 68 65 6e 0a 20 20 nctions..If.you.do.this,.then...
e940 20 20 20 20 70 6f 69 6e 74 65 72 73 20 74 6f 20 74 68 65 6d 20 67 65 74 20 74 68 65 20 73 70 65 ....pointers.to.them.get.the.spe
e960 63 69 66 69 65 64 20 61 6c 69 67 6e 6d 65 6e 74 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 cified.alignment:.......</p>....
e980 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 ...<pre><code.class="zig">const.
e9a0 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 assert.=.@import("std").debug.as
e9c0 73 65 72 74 3b 0a 0a 76 61 72 20 66 6f 6f 3a 20 75 38 20 61 6c 69 67 6e 28 34 29 20 3d 20 31 30 sert;..var.foo:.u8.align(4).=.10
e9e0 30 3b 0a 0a 74 65 73 74 20 22 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 20 61 6c 69 67 6e 6d 0;..test."global.variable.alignm
ea00 65 6e 74 22 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 26 61 6d 70 3b 66 ent".{.....assert(@typeOf(&amp;f
ea20 6f 6f 29 2e 61 6c 69 67 6e 6d 65 6e 74 20 3d 3d 20 34 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 oo).alignment.==.4);.....assert(
ea40 40 74 79 70 65 4f 66 28 26 61 6d 70 3b 66 6f 6f 29 20 3d 3d 20 26 61 6d 70 3b 61 6c 69 67 6e 28 @typeOf(&amp;foo).==.&amp;align(
ea60 34 29 20 75 38 29 3b 0a 20 20 20 20 63 6f 6e 73 74 20 73 6c 69 63 65 20 3d 20 28 26 61 6d 70 3b 4).u8);.....const.slice.=.(&amp;
ea80 66 6f 6f 29 5b 30 2e 2e 31 5d 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 73 foo)[0..1];.....assert(@typeOf(s
eaa0 6c 69 63 65 29 20 3d 3d 20 5b 5d 61 6c 69 67 6e 28 34 29 20 75 38 29 3b 0a 7d 0a 0a 66 6e 20 64 lice).==.[]align(4).u8);.}..fn.d
eac0 65 72 70 28 29 20 61 6c 69 67 6e 28 40 73 69 7a 65 4f 66 28 75 73 69 7a 65 29 20 2a 20 32 29 20 erp().align(@sizeOf(usize).*.2).
eae0 2d 26 67 74 3b 20 69 33 32 20 7b 20 31 32 33 34 20 7d 0a 66 6e 20 6e 6f 6f 70 31 28 29 20 61 6c -&gt;.i32.{.1234.}.fn.noop1().al
eb00 69 67 6e 28 31 29 20 7b 7d 0a 66 6e 20 6e 6f 6f 70 34 28 29 20 61 6c 69 67 6e 28 34 29 20 7b 7d ign(1).{}.fn.noop4().align(4).{}
eb20 0a 0a 74 65 73 74 20 22 66 75 6e 63 74 69 6f 6e 20 61 6c 69 67 6e 6d 65 6e 74 22 20 7b 0a 20 20 ..test."function.alignment".{...
eb40 20 20 61 73 73 65 72 74 28 64 65 72 70 28 29 20 3d 3d 20 31 32 33 34 29 3b 0a 20 20 20 20 61 73 ..assert(derp().==.1234);.....as
eb60 73 65 72 74 28 40 74 79 70 65 4f 66 28 6e 6f 6f 70 31 29 20 3d 3d 20 66 6e 28 29 20 61 6c 69 67 sert(@typeOf(noop1).==.fn().alig
eb80 6e 28 31 29 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 6e 6f 6f 70 34 29 n(1));.....assert(@typeOf(noop4)
eba0 20 3d 3d 20 66 6e 28 29 20 61 6c 69 67 6e 28 34 29 29 3b 0a 20 20 20 20 6e 6f 6f 70 31 28 29 3b .==.fn().align(4));.....noop1();
ebc0 0a 20 20 20 20 6e 6f 6f 70 34 28 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 .....noop4();.}</code></pre>....
ebe0 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 66 20 79 6f 75 20 68 61 76 65 20 61 20 70 6f 69 6e 74 ...<p>.......If.you.have.a.point
ec00 65 72 20 6f 72 20 61 20 73 6c 69 63 65 20 74 68 61 74 20 68 61 73 20 61 20 73 6d 61 6c 6c 20 61 er.or.a.slice.that.has.a.small.a
ec20 6c 69 67 6e 6d 65 6e 74 2c 20 62 75 74 20 79 6f 75 20 6b 6e 6f 77 20 74 68 61 74 20 69 74 20 61 lignment,.but.you.know.that.it.a
ec40 63 74 75 61 6c 6c 79 0a 20 20 20 20 20 20 68 61 73 20 61 20 62 69 67 67 65 72 20 61 6c 69 67 6e ctually.......has.a.bigger.align
ec60 6d 65 6e 74 2c 20 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 61 6c 69 67 ment,.use.<a.href="#builtin-alig
ec80 6e 43 61 73 74 22 3e 40 61 6c 69 67 6e 43 61 73 74 3c 2f 61 3e 20 74 6f 20 63 68 61 6e 67 65 20 nCast">@alignCast</a>.to.change.
eca0 74 68 65 0a 20 20 20 20 20 20 70 6f 69 6e 74 65 72 20 69 6e 74 6f 20 61 20 6d 6f 72 65 20 61 6c the.......pointer.into.a.more.al
ecc0 69 67 6e 65 64 20 70 6f 69 6e 74 65 72 2e 20 54 68 69 73 20 69 73 20 61 20 6e 6f 2d 6f 70 20 61 igned.pointer..This.is.a.no-op.a
ece0 74 20 72 75 6e 74 69 6d 65 2c 20 62 75 74 20 69 6e 73 65 72 74 73 20 61 0a 20 20 20 20 20 20 3c t.runtime,.but.inserts.a.......<
ed00 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 69 6e 63 6f 72 72 65 63 74 2d 70 6f 69 6e 74 65 72 a.href="#undef-incorrect-pointer
ed20 2d 61 6c 69 67 6e 6d 65 6e 74 22 3e 73 61 66 65 74 79 20 63 68 65 63 6b 3c 2f 61 3e 3a 0a 20 20 -alignment">safety.check</a>:...
ed40 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d ....</p>.......<pre><code.class=
ed60 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 "zig">const.assert.=.@import("st
ed80 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 20 22 70 6f 69 6e 74 65 72 d").debug.assert;..test."pointer
eda0 20 61 6c 69 67 6e 6d 65 6e 74 20 73 61 66 65 74 79 22 20 7b 0a 20 20 20 20 76 61 72 20 61 72 72 .alignment.safety".{.....var.arr
edc0 61 79 20 61 6c 69 67 6e 28 34 29 20 3d 20 5b 5d 75 33 32 7b 30 78 31 31 31 31 31 31 31 31 2c 20 ay.align(4).=.[]u32{0x11111111,.
ede0 30 78 31 31 31 31 31 31 31 31 7d 3b 0a 20 20 20 20 63 6f 6e 73 74 20 62 79 74 65 73 20 3d 20 28 0x11111111};.....const.bytes.=.(
ee00 5b 5d 75 38 29 28 61 72 72 61 79 5b 30 2e 2e 5d 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 66 6f []u8)(array[0..]);.....assert(fo
ee20 6f 28 62 79 74 65 73 29 20 3d 3d 20 30 78 31 31 31 31 31 31 31 31 29 3b 0a 7d 0a 66 6e 20 66 6f o(bytes).==.0x11111111);.}.fn.fo
ee40 6f 28 62 79 74 65 73 3a 20 5b 5d 75 38 29 20 2d 26 67 74 3b 20 75 33 32 20 7b 0a 20 20 20 20 63 o(bytes:.[]u8).-&gt;.u32.{.....c
ee60 6f 6e 73 74 20 73 6c 69 63 65 34 20 3d 20 62 79 74 65 73 5b 31 2e 2e 35 5d 3b 0a 20 20 20 20 63 onst.slice4.=.bytes[1..5];.....c
ee80 6f 6e 73 74 20 69 6e 74 5f 73 6c 69 63 65 20 3d 20 28 5b 5d 75 33 32 29 28 40 61 6c 69 67 6e 43 onst.int_slice.=.([]u32)(@alignC
eea0 61 73 74 28 34 2c 20 73 6c 69 63 65 34 29 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 69 6e 74 5f ast(4,.slice4));.....return.int_
eec0 73 6c 69 63 65 5b 30 5d 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c slice[0];.}</code></pre>.......<
eee0 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 74 65 73 74 20 pre><code.class="sh">$.zig.test.
ef00 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 70 6f 69 6e 74 65 72 20 61 6c 69 67 6e 6d test.zig.Test.1/1.pointer.alignm
ef20 65 6e 74 20 73 61 66 65 74 79 2e 2e 2e 69 6e 63 6f 72 72 65 63 74 20 61 6c 69 67 6e 6d 65 6e 74 ent.safety...incorrect.alignment
ef40 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 ./home/andy/dev/zig/build/lib/zi
ef60 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 7a 69 67 72 74 2e 7a 69 67 3a 31 36 3a 33 35 3a 20 30 g/std/special/zigrt.zig:16:35:.0
ef80 78 30 30 30 30 30 30 30 30 30 30 32 30 33 35 32 35 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a x0000000000203525.in.???.(test).
efa0 20 20 20 20 20 20 20 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 70 61 6e ........@import("std").debug.pan
efc0 69 63 28 22 7b 7d 22 2c 20 6d 65 73 73 61 67 65 5f 70 74 72 5b 30 2e 2e 6d 65 73 73 61 67 65 5f ic("{}",.message_ptr[0..message_
efe0 6c 65 6e 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 len]);..........................
f000 20 20 20 20 20 20 20 20 20 5e 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 .........^./home/andy/dev/zig/bu
f020 69 6c 64 2f 74 65 73 74 2e 7a 69 67 3a 31 30 3a 34 35 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 ild/test.zig:10:45:.0x0000000000
f040 32 30 33 35 65 63 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 20 20 63 6f 6e 73 74 20 69 2035ec.in.???.(test).....const.i
f060 6e 74 5f 73 6c 69 63 65 20 3d 20 28 5b 5d 75 33 32 29 28 40 61 6c 69 67 6e 43 61 73 74 28 34 2c nt_slice.=.([]u32)(@alignCast(4,
f080 20 73 6c 69 63 65 34 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .slice4));......................
f0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 2f 68 6f 6d 65 2f 61 .......................^./home/a
f0c0 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 74 65 73 74 2e 7a 69 67 3a 36 3a 31 35 3a ndy/dev/zig/build/test.zig:6:15:
f0e0 20 30 78 30 30 30 30 30 30 30 30 30 30 32 30 33 34 33 39 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 .0x0000000000203439.in.???.(test
f100 29 0a 20 20 20 20 61 73 73 65 72 74 28 66 6f 6f 28 62 79 74 65 73 29 20 3d 3d 20 30 78 31 31 31 ).....assert(foo(bytes).==.0x111
f120 31 31 31 31 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 2f 68 6f 6d 65 2f 61 6e 11111);...............^./home/an
f140 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 dy/dev/zig/build/lib/zig/std/spe
f160 63 69 61 6c 2f 74 65 73 74 5f 72 75 6e 6e 65 72 2e 7a 69 67 3a 39 3a 32 31 3a 20 30 78 30 30 30 cial/test_runner.zig:9:21:.0x000
f180 30 30 30 30 30 30 30 32 31 36 32 64 38 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 20 20 00000002162d8.in.???.(test).....
f1a0 20 20 20 20 74 65 73 74 5f 66 6e 2e 66 75 6e 63 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ....test_fn.func();.............
f1c0 20 20 20 20 20 20 20 20 5e 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 ........^./home/andy/dev/zig/bui
f1e0 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 ld/lib/zig/std/special/bootstrap
f200 2e 7a 69 67 3a 36 30 3a 32 31 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 31 36 31 39 37 20 69 .zig:60:21:.0x0000000000216197.i
f220 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 20 20 72 65 74 75 72 6e 20 72 6f 6f 74 2e 6d 61 69 n.???.(test).....return.root.mai
f240 6e 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 2f 68 6f 6d 65 n();.....................^./home
f260 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f /andy/dev/zig/build/lib/zig/std/
f280 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 34 37 3a 31 33 3a 20 30 78 30 special/bootstrap.zig:47:13:.0x0
f2a0 30 30 30 30 30 30 30 30 30 32 31 36 30 35 30 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 000000000216050.in.???.(test)...
f2c0 20 20 63 61 6c 6c 4d 61 69 6e 28 61 72 67 63 2c 20 61 72 67 76 2c 20 65 6e 76 70 29 20 25 25 20 ..callMain(argc,.argv,.envp).%%.
f2e0 73 74 64 2e 6f 73 2e 70 6f 73 69 78 2e 65 78 69 74 28 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 std.os.posix.exit(1);...........
f300 20 20 5e 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 ..^./home/andy/dev/zig/build/lib
f320 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 33 /zig/std/special/bootstrap.zig:3
f340 34 3a 32 35 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 31 35 66 61 30 20 69 6e 20 3f 3f 3f 20 4:25:.0x0000000000215fa0.in.???.
f360 28 74 65 73 74 29 0a 20 20 20 20 70 6f 73 69 78 43 61 6c 6c 4d 61 69 6e 41 6e 64 45 78 69 74 28 (test).....posixCallMainAndExit(
f380 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 0a 54 65 73 ).........................^..Tes
f3a0 74 73 20 66 61 69 6c 65 64 2e 20 55 73 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6d ts.failed..Use.the.following.com
f3c0 6d 61 6e 64 20 74 6f 20 72 65 70 72 6f 64 75 63 65 20 74 68 65 20 66 61 69 6c 75 72 65 3a 0a 2e mand.to.reproduce.the.failure:..
f3e0 2f 74 65 73 74 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d /test</code></pre>.......<h3.id=
f400 22 74 79 70 65 2d 62 61 73 65 64 2d 61 6c 69 61 73 2d 61 6e 61 6c 79 73 69 73 22 3e 54 79 70 65 "type-based-alias-analysis">Type
f420 20 42 61 73 65 64 20 41 6c 69 61 73 20 41 6e 61 6c 79 73 69 73 3c 2f 68 33 3e 0a 20 20 20 20 20 .Based.Alias.Analysis</h3>......
f440 20 3c 70 3e 5a 69 67 20 75 73 65 73 20 54 79 70 65 20 42 61 73 65 64 20 41 6c 69 61 73 20 41 6e .<p>Zig.uses.Type.Based.Alias.An
f460 61 6c 79 73 69 73 20 28 61 6c 73 6f 20 6b 6e 6f 77 6e 20 61 73 20 53 74 72 69 63 74 20 41 6c 69 alysis.(also.known.as.Strict.Ali
f480 61 73 69 6e 67 29 20 74 6f 0a 20 20 20 20 20 20 70 65 72 66 6f 72 6d 20 73 6f 6d 65 20 6f 70 74 asing).to.......perform.some.opt
f4a0 69 6d 69 7a 61 74 69 6f 6e 73 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 70 6f 69 6e imizations..This.means.that.poin
f4c0 74 65 72 73 20 6f 66 20 64 69 66 66 65 72 65 6e 74 20 74 79 70 65 73 20 6d 75 73 74 0a 20 20 20 ters.of.different.types.must....
f4e0 20 20 20 6e 6f 74 20 61 6c 69 61 73 20 74 68 65 20 73 61 6d 65 20 6d 65 6d 6f 72 79 2c 20 77 69 ...not.alias.the.same.memory,.wi
f500 74 68 20 74 68 65 20 65 78 63 65 70 74 69 6f 6e 20 6f 66 20 3c 63 6f 64 65 3e 75 38 3c 2f 63 6f th.the.exception.of.<code>u8</co
f520 64 65 3e 2e 20 50 6f 69 6e 74 65 72 73 20 74 6f 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 75 38 3c de>..Pointers.to.......<code>u8<
f540 2f 63 6f 64 65 3e 20 63 61 6e 20 61 6c 69 61 73 20 61 6e 79 20 6d 65 6d 6f 72 79 2e 0a 20 20 20 /code>.can.alias.any.memory.....
f560 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 41 73 20 61 6e 20 65 78 61 6d 70 6c 65 2c 20 ...</p>.......<p>As.an.example,.
f580 74 68 69 73 20 63 6f 64 65 20 70 72 6f 64 75 63 65 73 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 this.code.produces.undefined.beh
f5a0 61 76 69 6f 72 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 avior:</p>.......<pre><code.clas
f5c0 73 3d 22 7a 69 67 22 3e 2a 40 70 74 72 43 61 73 74 28 26 61 6d 70 3b 75 33 32 2c 20 66 33 32 28 s="zig">*@ptrCast(&amp;u32,.f32(
f5e0 31 32 2e 33 34 29 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 49 6e 12.34))</code></pre>.......<p>In
f600 73 74 65 61 64 2c 20 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 62 69 74 stead,.use.<a.href="#builtin-bit
f620 43 61 73 74 22 3e 40 62 69 74 43 61 73 74 3c 2f 61 3e 3a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c Cast">@bitCast</a>:.......<pre><
f640 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 62 69 74 43 61 73 74 28 75 33 32 2c 20 66 code.class="zig">@bitCast(u32,.f
f660 33 32 28 31 32 2e 33 34 29 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 32(12.34))</code></pre>.......<p
f680 3e 41 73 20 61 6e 20 61 64 64 65 64 20 62 65 6e 65 66 69 74 2c 20 74 68 65 20 3c 63 6f 64 65 3e >As.an.added.benefit,.the.<code>
f6a0 40 62 69 74 63 61 73 74 3c 2f 63 6f 64 65 3e 20 76 65 72 73 69 6f 6e 20 77 6f 72 6b 73 20 61 74 @bitcast</code>.version.works.at
f6c0 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 .compile-time.</p>.......<p>See.
f6e0 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 also:</p>.......<ul>.........<li
f700 3e 3c 61 20 68 72 65 66 3d 22 23 73 6c 69 63 65 73 22 3e 53 6c 69 63 65 73 3c 2f 61 3e 3c 2f 6c ><a.href="#slices">Slices</a></l
f720 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6d 65 6d 6f 72 79 22 i>.........<li><a.href="#memory"
f740 3e 4d 65 6d 6f 72 79 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 >Memory</a></li>.......</ul>....
f760 20 20 20 3c 68 32 20 69 64 3d 22 73 6c 69 63 65 73 22 3e 53 6c 69 63 65 73 3c 2f 68 32 3e 0a 20 ...<h2.id="slices">Slices</h2>..
f780 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 .....<pre><code.class="zig">cons
f7a0 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e t.assert.=.@import("std").debug.
f7c0 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 20 22 62 61 73 69 63 20 73 6c 69 63 65 73 22 20 7b 0a 20 assert;..test."basic.slices".{..
f7e0 20 20 20 76 61 72 20 61 72 72 61 79 20 3d 20 5b 5d 69 33 32 7b 31 2c 20 32 2c 20 33 2c 20 34 7d ...var.array.=.[]i32{1,.2,.3,.4}
f800 3b 0a 20 20 20 20 2f 2f 20 41 20 73 6c 69 63 65 20 69 73 20 61 20 70 6f 69 6e 74 65 72 20 61 6e ;.....//.A.slice.is.a.pointer.an
f820 64 20 61 20 6c 65 6e 67 74 68 2e 20 54 68 65 20 64 69 66 66 65 72 65 6e 63 65 20 62 65 74 77 65 d.a.length..The.difference.betwe
f840 65 6e 20 61 6e 20 61 72 72 61 79 20 61 6e 64 0a 20 20 20 20 2f 2f 20 61 20 73 6c 69 63 65 20 69 en.an.array.and.....//.a.slice.i
f860 73 20 74 68 61 74 20 74 68 65 20 61 72 72 61 79 27 73 20 6c 65 6e 67 74 68 20 69 73 20 70 61 72 s.that.the.array's.length.is.par
f880 74 20 6f 66 20 74 68 65 20 74 79 70 65 20 61 6e 64 20 6b 6e 6f 77 6e 20 61 74 0a 20 20 20 20 2f t.of.the.type.and.known.at...../
f8a0 2f 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 77 68 65 72 65 61 73 20 74 68 65 20 73 6c 69 63 /.compile-time,.whereas.the.slic
f8c0 65 27 73 20 6c 65 6e 67 74 68 20 69 73 20 6b 6e 6f 77 6e 20 61 74 20 72 75 6e 74 69 6d 65 2e 0a e's.length.is.known.at.runtime..
f8e0 20 20 20 20 2f 2f 20 42 6f 74 68 20 63 61 6e 20 62 65 20 61 63 63 65 73 73 65 64 20 77 69 74 68 ....//.Both.can.be.accessed.with
f900 20 74 68 65 20 60 6c 65 6e 60 20 66 69 65 6c 64 2e 0a 20 20 20 20 63 6f 6e 73 74 20 73 6c 69 63 .the.`len`.field......const.slic
f920 65 20 3d 20 61 72 72 61 79 5b 30 2e 2e 61 72 72 61 79 2e 6c 65 6e 5d 3b 0a 20 20 20 20 61 73 73 e.=.array[0..array.len];.....ass
f940 65 72 74 28 73 6c 69 63 65 2e 70 74 72 20 3d 3d 20 26 61 6d 70 3b 61 72 72 61 79 5b 30 5d 29 3b ert(slice.ptr.==.&amp;array[0]);
f960 0a 20 20 20 20 61 73 73 65 72 74 28 73 6c 69 63 65 2e 6c 65 6e 20 3d 3d 20 61 72 72 61 79 2e 6c .....assert(slice.len.==.array.l
f980 65 6e 29 3b 0a 0a 20 20 20 20 2f 2f 20 53 6c 69 63 65 73 20 68 61 76 65 20 61 72 72 61 79 20 62 en);......//.Slices.have.array.b
f9a0 6f 75 6e 64 73 20 63 68 65 63 6b 69 6e 67 2e 20 49 66 20 79 6f 75 20 74 72 79 20 74 6f 20 61 63 ounds.checking..If.you.try.to.ac
f9c0 63 65 73 73 20 73 6f 6d 65 74 68 69 6e 67 20 6f 75 74 0a 20 20 20 20 2f 2f 20 6f 66 20 62 6f 75 cess.something.out.....//.of.bou
f9e0 6e 64 73 2c 20 79 6f 75 27 6c 6c 20 67 65 74 20 61 20 73 61 66 65 74 79 20 63 68 65 63 6b 20 66 nds,.you'll.get.a.safety.check.f
fa00 61 69 6c 75 72 65 3a 0a 20 20 20 20 73 6c 69 63 65 5b 31 30 5d 20 2b 3d 20 31 3b 0a 7d 3c 2f 63 ailure:.....slice[10].+=.1;.}</c
fa20 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 ode></pre>.......<pre><code.clas
fa40 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 s="sh">$.zig.test.test.zig.Test.
fa60 31 2f 31 20 62 61 73 69 63 20 73 6c 69 63 65 73 2e 2e 2e 69 6e 64 65 78 20 6f 75 74 20 6f 66 20 1/1.basic.slices...index.out.of.
fa80 62 6f 75 6e 64 73 0a 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 7a 69 67 72 74 bounds.lib/zig/std/special/zigrt
faa0 2e 7a 69 67 3a 31 36 3a 33 35 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 30 33 34 35 35 20 69 .zig:16:35:.0x0000000000203455.i
fac0 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 20 20 20 20 20 20 40 69 6d 70 6f 72 74 28 22 73 74 n.???.(test).........@import("st
fae0 64 22 29 2e 64 65 62 75 67 2e 70 61 6e 69 63 28 22 7b 7d 22 2c 20 6d 65 73 73 61 67 65 5f 70 74 d").debug.panic("{}",.message_pt
fb00 72 5b 30 2e 2e 6d 65 73 73 61 67 65 5f 6c 65 6e 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 r[0..message_len]);.............
fb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 74 65 73 74 2e 7a 69 67 ......................^.test.zig
fb40 3a 31 35 3a 31 30 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 30 33 33 33 34 20 69 6e 20 3f 3f :15:10:.0x0000000000203334.in.??
fb60 3f 20 28 74 65 73 74 29 0a 20 20 20 20 73 6c 69 63 65 5b 31 30 5d 20 2b 3d 20 31 3b 0a 20 20 20 ?.(test).....slice[10].+=.1;....
fb80 20 20 20 20 20 20 5e 0a 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 74 65 73 74 ......^.lib/zig/std/special/test
fba0 5f 72 75 6e 6e 65 72 2e 7a 69 67 3a 39 3a 32 31 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 31 _runner.zig:9:21:.0x000000000021
fbc0 34 62 31 61 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 20 20 20 20 20 20 74 65 73 74 5f 4b1a.in.???.(test).........test_
fbe0 66 6e 2e 66 75 6e 63 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e fn.func();.....................^
fc00 0a 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a .lib/zig/std/special/bootstrap.z
fc20 69 67 3a 36 30 3a 32 31 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 31 34 39 65 37 20 69 6e 20 ig:60:21:.0x00000000002149e7.in.
fc40 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 20 20 72 65 74 75 72 6e 20 72 6f 6f 74 2e 6d 61 69 6e 28 ???.(test).....return.root.main(
fc60 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 6c 69 62 2f 7a 69 67 );.....................^.lib/zig
fc80 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 34 37 3a 31 33 /std/special/bootstrap.zig:47:13
fca0 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 31 34 38 61 30 20 69 6e 20 3f 3f 3f 20 28 74 65 73 :.0x00000000002148a0.in.???.(tes
fcc0 74 29 0a 20 20 20 20 63 61 6c 6c 4d 61 69 6e 28 61 72 67 63 2c 20 61 72 67 76 2c 20 65 6e 76 70 t).....callMain(argc,.argv,.envp
fce0 29 20 25 25 20 73 74 64 2e 6f 73 2e 70 6f 73 69 78 2e 65 78 69 74 28 31 29 3b 0a 20 20 20 20 20 ).%%.std.os.posix.exit(1);......
fd00 20 20 20 20 20 20 20 5e 0a 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f .......^.lib/zig/std/special/boo
fd20 74 73 74 72 61 70 2e 7a 69 67 3a 33 34 3a 32 35 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 31 tstrap.zig:34:25:.0x000000000021
fd40 34 37 66 30 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 20 20 70 6f 73 69 78 43 61 6c 6c 47f0.in.???.(test).....posixCall
fd60 4d 61 69 6e 41 6e 64 45 78 69 74 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 MainAndExit()...................
fd80 20 20 20 20 20 20 5e 0a 0a 54 65 73 74 73 20 66 61 69 6c 65 64 2e 20 55 73 65 20 74 68 65 20 66 ......^..Tests.failed..Use.the.f
fda0 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 72 65 70 72 6f 64 75 63 65 20 74 68 ollowing.command.to.reproduce.th
fdc0 65 20 66 61 69 6c 75 72 65 3a 0a 2e 2f 74 65 73 74 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 e.failure:../test</code></pre>..
fde0 20 20 20 20 20 3c 70 3e 54 68 69 73 20 69 73 20 6f 6e 65 20 72 65 61 73 6f 6e 20 77 65 20 70 72 .....<p>This.is.one.reason.we.pr
fe00 65 66 65 72 20 73 6c 69 63 65 73 20 74 6f 20 70 6f 69 6e 74 65 72 73 2e 3c 2f 70 3e 0a 20 20 20 efer.slices.to.pointers.</p>....
fe20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 ...<pre><code.class="zig">const.
fe40 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 assert.=.@import("std").debug.as
fe60 73 65 72 74 3b 0a 63 6f 6e 73 74 20 6d 65 6d 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 sert;.const.mem.=.@import("std")
fe80 2e 6d 65 6d 3b 0a 63 6f 6e 73 74 20 66 6d 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 .mem;.const.fmt.=.@import("std")
fea0 2e 66 6d 74 3b 0a 0a 74 65 73 74 20 22 75 73 69 6e 67 20 73 6c 69 63 65 73 20 66 6f 72 20 73 74 .fmt;..test."using.slices.for.st
fec0 72 69 6e 67 73 22 20 7b 0a 20 20 20 20 2f 2f 20 5a 69 67 20 68 61 73 20 6e 6f 20 63 6f 6e 63 65 rings".{.....//.Zig.has.no.conce
fee0 70 74 20 6f 66 20 73 74 72 69 6e 67 73 2e 20 53 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 73 20 61 pt.of.strings..String.literals.a
ff00 72 65 20 61 72 72 61 79 73 20 6f 66 20 75 38 2c 20 61 6e 64 0a 20 20 20 20 2f 2f 20 69 6e 20 67 re.arrays.of.u8,.and.....//.in.g
ff20 65 6e 65 72 61 6c 20 74 68 65 20 73 74 72 69 6e 67 20 74 79 70 65 20 69 73 20 5b 5d 75 38 20 28 eneral.the.string.type.is.[]u8.(
ff40 73 6c 69 63 65 20 6f 66 20 75 38 29 2e 0a 20 20 20 20 2f 2f 20 48 65 72 65 20 77 65 20 69 6d 70 slice.of.u8)......//.Here.we.imp
ff60 6c 69 63 69 74 6c 79 20 63 61 73 74 20 5b 35 5d 75 38 20 74 6f 20 5b 5d 63 6f 6e 73 74 20 75 38 licitly.cast.[5]u8.to.[]const.u8
ff80 0a 20 20 20 20 63 6f 6e 73 74 20 68 65 6c 6c 6f 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 20 3d 20 22 .....const.hello:.[]const.u8.=."
ffa0 68 65 6c 6c 6f 22 3b 0a 20 20 20 20 63 6f 6e 73 74 20 77 6f 72 6c 64 3a 20 5b 5d 63 6f 6e 73 74 hello";.....const.world:.[]const
ffc0 20 75 38 20 3d 20 22 e4 b8 96 e7 95 8c 22 3b 0a 0a 20 20 20 20 76 61 72 20 61 6c 6c 5f 74 6f 67 .u8.=."......";......var.all_tog
ffe0 65 74 68 65 72 3a 20 5b 31 30 30 5d 75 38 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 ether:.[100]u8.=.undefined;.....
10000 2f 2f 20 59 6f 75 20 63 61 6e 20 75 73 65 20 73 6c 69 63 65 20 73 79 6e 74 61 78 20 6f 6e 20 61 //.You.can.use.slice.syntax.on.a
10020 6e 20 61 72 72 61 79 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 6e 20 61 72 72 61 79 20 69 6e 74 6f n.array.to.convert.an.array.into
10040 20 61 20 73 6c 69 63 65 2e 0a 20 20 20 20 63 6f 6e 73 74 20 61 6c 6c 5f 74 6f 67 65 74 68 65 72 .a.slice......const.all_together
10060 5f 73 6c 69 63 65 20 3d 20 61 6c 6c 5f 74 6f 67 65 74 68 65 72 5b 30 2e 2e 5d 3b 0a 20 20 20 20 _slice.=.all_together[0..];.....
10080 2f 2f 20 53 74 72 69 6e 67 20 63 6f 6e 63 61 74 65 6e 61 74 69 6f 6e 20 65 78 61 6d 70 6c 65 3a //.String.concatenation.example:
100a0 0a 20 20 20 20 63 6f 6e 73 74 20 68 65 6c 6c 6f 5f 77 6f 72 6c 64 20 3d 20 66 6d 74 2e 62 75 66 .....const.hello_world.=.fmt.buf
100c0 50 72 69 6e 74 28 61 6c 6c 5f 74 6f 67 65 74 68 65 72 5f 73 6c 69 63 65 2c 20 22 7b 7d 20 7b 7d Print(all_together_slice,."{}.{}
100e0 22 2c 20 68 65 6c 6c 6f 2c 20 77 6f 72 6c 64 29 3b 0a 0a 20 20 20 20 2f 2f 20 47 65 6e 65 72 61 ",.hello,.world);......//.Genera
10100 6c 6c 79 2c 20 79 6f 75 20 63 61 6e 20 75 73 65 20 55 54 46 2d 38 20 61 6e 64 20 6e 6f 74 20 77 lly,.you.can.use.UTF-8.and.not.w
10120 6f 72 72 79 20 61 62 6f 75 74 20 77 68 65 74 68 65 72 20 73 6f 6d 65 74 68 69 6e 67 20 69 73 20 orry.about.whether.something.is.
10140 61 0a 20 20 20 20 2f 2f 20 73 74 72 69 6e 67 2e 20 49 66 20 79 6f 75 20 64 6f 6e 27 74 20 6e 65 a.....//.string..If.you.don't.ne
10160 65 64 20 74 6f 20 64 65 61 6c 20 77 69 74 68 20 69 6e 64 69 76 69 64 75 61 6c 20 63 68 61 72 61 ed.to.deal.with.individual.chara
10180 63 74 65 72 73 2c 20 6e 6f 20 6e 65 65 64 0a 20 20 20 20 2f 2f 20 74 6f 20 64 65 63 6f 64 65 2e cters,.no.need.....//.to.decode.
101a0 0a 20 20 20 20 61 73 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 68 65 6c 6c 6f 5f 77 6f .....assert(mem.eql(u8,.hello_wo
101c0 72 6c 64 2c 20 22 68 65 6c 6c 6f 20 e4 b8 96 e7 95 8c 22 29 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 rld,."hello......."));.}..test."
101e0 73 6c 69 63 65 20 70 6f 69 6e 74 65 72 22 20 7b 0a 20 20 20 20 76 61 72 20 61 72 72 61 79 3a 20 slice.pointer".{.....var.array:.
10200 5b 31 30 5d 75 38 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 63 6f 6e 73 74 20 70 74 [10]u8.=.undefined;.....const.pt
10220 72 20 3d 20 26 61 6d 70 3b 61 72 72 61 79 5b 30 5d 3b 0a 0a 20 20 20 20 2f 2f 20 59 6f 75 20 63 r.=.&amp;array[0];......//.You.c
10240 61 6e 20 75 73 65 20 73 6c 69 63 69 6e 67 20 73 79 6e 74 61 78 20 74 6f 20 63 6f 6e 76 65 72 74 an.use.slicing.syntax.to.convert
10260 20 61 20 70 6f 69 6e 74 65 72 20 69 6e 74 6f 20 61 20 73 6c 69 63 65 3a 0a 20 20 20 20 63 6f 6e .a.pointer.into.a.slice:.....con
10280 73 74 20 73 6c 69 63 65 20 3d 20 70 74 72 5b 30 2e 2e 35 5d 3b 0a 20 20 20 20 73 6c 69 63 65 5b st.slice.=.ptr[0..5];.....slice[
102a0 32 5d 20 3d 20 33 3b 0a 20 20 20 20 61 73 73 65 72 74 28 73 6c 69 63 65 5b 32 5d 20 3d 3d 20 33 2].=.3;.....assert(slice[2].==.3
102c0 29 3b 0a 20 20 20 20 2f 2f 20 54 68 65 20 73 6c 69 63 65 20 69 73 20 6d 75 74 61 62 6c 65 20 62 );.....//.The.slice.is.mutable.b
102e0 65 63 61 75 73 65 20 77 65 20 73 6c 69 63 65 64 20 61 20 6d 75 74 61 62 6c 65 20 70 6f 69 6e 74 ecause.we.sliced.a.mutable.point
10300 65 72 2e 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 73 6c 69 63 65 29 20 3d 3d er......assert(@typeOf(slice).==
10320 20 5b 5d 75 38 29 3b 0a 0a 20 20 20 20 2f 2f 20 59 6f 75 20 63 61 6e 20 61 6c 73 6f 20 73 6c 69 .[]u8);......//.You.can.also.sli
10340 63 65 20 61 20 73 6c 69 63 65 3a 0a 20 20 20 20 63 6f 6e 73 74 20 73 6c 69 63 65 32 20 3d 20 73 ce.a.slice:.....const.slice2.=.s
10360 6c 69 63 65 5b 32 2e 2e 33 5d 3b 0a 20 20 20 20 61 73 73 65 72 74 28 73 6c 69 63 65 32 2e 6c 65 lice[2..3];.....assert(slice2.le
10380 6e 20 3d 3d 20 31 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 73 6c 69 63 65 32 5b 30 5d 20 3d 3d n.==.1);.....assert(slice2[0].==
103a0 20 33 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 73 6c 69 63 65 20 77 69 64 65 6e 69 6e 67 22 20 7b 0a .3);.}..test."slice.widening".{.
103c0 20 20 20 20 2f 2f 20 5a 69 67 20 73 75 70 70 6f 72 74 73 20 73 6c 69 63 65 20 77 69 64 65 6e 69 ....//.Zig.supports.slice.wideni
103e0 6e 67 20 61 6e 64 20 73 6c 69 63 65 20 6e 61 72 72 6f 77 69 6e 67 2e 20 43 61 73 74 20 61 20 73 ng.and.slice.narrowing..Cast.a.s
10400 6c 69 63 65 20 6f 66 20 75 38 0a 20 20 20 20 2f 2f 20 74 6f 20 61 20 73 6c 69 63 65 20 6f 66 20 lice.of.u8.....//.to.a.slice.of.
10420 61 6e 79 74 68 69 6e 67 20 65 6c 73 65 2c 20 61 6e 64 20 5a 69 67 20 77 69 6c 6c 20 70 65 72 66 anything.else,.and.Zig.will.perf
10440 6f 72 6d 20 74 68 65 20 6c 65 6e 67 74 68 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0a 20 20 20 20 63 orm.the.length.conversion......c
10460 6f 6e 73 74 20 61 72 72 61 79 20 3d 20 5b 5d 75 38 7b 30 78 31 32 2c 20 30 78 31 32 2c 20 30 78 onst.array.=.[]u8{0x12,.0x12,.0x
10480 31 32 2c 20 30 78 31 32 2c 20 30 78 31 33 2c 20 30 78 31 33 2c 20 30 78 31 33 2c 20 30 78 31 33 12,.0x12,.0x13,.0x13,.0x13,.0x13
104a0 7d 3b 0a 20 20 20 20 63 6f 6e 73 74 20 73 6c 69 63 65 20 3d 20 28 5b 5d 63 6f 6e 73 74 20 75 33 };.....const.slice.=.([]const.u3
104c0 32 29 28 61 72 72 61 79 5b 30 2e 2e 5d 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 73 6c 69 63 65 2)(array[0..]);.....assert(slice
104e0 2e 6c 65 6e 20 3d 3d 20 32 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 73 6c 69 63 65 5b 30 5d 20 .len.==.2);.....assert(slice[0].
10500 3d 3d 20 30 78 31 32 31 32 31 32 31 32 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 73 6c 69 63 65 ==.0x12121212);.....assert(slice
10520 5b 31 5d 20 3d 3d 20 30 78 31 33 31 33 31 33 31 33 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 [1].==.0x13131313);.}</code></pr
10540 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 e>.......<pre><code.class="sh">$
10560 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 33 20 75 73 69 6e .zig.test.test.zig.Test.1/3.usin
10580 67 20 73 6c 69 63 65 73 20 66 6f 72 20 73 74 72 69 6e 67 73 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 g.slices.for.strings...OK.Test.2
105a0 2f 33 20 73 6c 69 63 65 20 70 6f 69 6e 74 65 72 2e 2e 2e 4f 4b 0a 54 65 73 74 20 33 2f 33 20 73 /3.slice.pointer...OK.Test.3/3.s
105c0 6c 69 63 65 20 77 69 64 65 6e 69 6e 67 2e 2e 2e 4f 4b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a lice.widening...OK</code></pre>.
105e0 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c ......<p>See.also:</p>.......<ul
10600 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 70 6f 69 6e 74 65 72 73 >.........<li><a.href="#pointers
10620 22 3e 50 6f 69 6e 74 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e ">Pointers</a></li>.........<li>
10640 3c 61 20 68 72 65 66 3d 22 23 66 6f 72 22 3e 66 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 <a.href="#for">for</a></li>.....
10660 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 61 72 72 61 79 73 22 3e 41 72 72 61 79 73 ....<li><a.href="#arrays">Arrays
10680 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 32 20 </a></li>.......</ul>.......<h2.
106a0 69 64 3d 22 73 74 72 75 63 74 22 3e 73 74 72 75 63 74 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 id="struct">struct</h2>.......<p
106c0 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2f 2f 20 44 65 63 6c 61 72 65 20 re><code.class="zig">//.Declare.
106e0 61 20 73 74 72 75 63 74 2e 0a 2f 2f 20 5a 69 67 20 67 69 76 65 73 20 6e 6f 20 67 75 61 72 61 6e a.struct..//.Zig.gives.no.guaran
10700 74 65 65 73 20 61 62 6f 75 74 20 74 68 65 20 6f 72 64 65 72 20 6f 66 20 66 69 65 6c 64 73 20 61 tees.about.the.order.of.fields.a
10720 6e 64 20 77 68 65 74 68 65 72 20 6f 72 0a 2f 2f 20 6e 6f 74 20 74 68 65 72 65 20 77 69 6c 6c 20 nd.whether.or.//.not.there.will.
10740 62 65 20 70 61 64 64 69 6e 67 2e 0a 63 6f 6e 73 74 20 50 6f 69 6e 74 20 3d 20 73 74 72 75 63 74 be.padding..const.Point.=.struct
10760 20 7b 0a 20 20 20 20 78 3a 20 66 33 32 2c 0a 20 20 20 20 79 3a 20 66 33 32 2c 0a 7d 3b 0a 0a 2f .{.....x:.f32,.....y:.f32,.};../
10780 2f 20 4d 61 79 62 65 20 77 65 20 77 61 6e 74 20 74 6f 20 70 61 73 73 20 69 74 20 74 6f 20 4f 70 /.Maybe.we.want.to.pass.it.to.Op
107a0 65 6e 47 4c 20 73 6f 20 77 65 20 77 61 6e 74 20 74 6f 20 62 65 20 70 61 72 74 69 63 75 6c 61 72 enGL.so.we.want.to.be.particular
107c0 20 61 62 6f 75 74 0a 2f 2f 20 68 6f 77 20 74 68 65 20 62 79 74 65 73 20 61 72 65 20 61 72 72 61 .about.//.how.the.bytes.are.arra
107e0 6e 67 65 64 2e 0a 63 6f 6e 73 74 20 50 6f 69 6e 74 32 20 3d 20 70 61 63 6b 65 64 20 73 74 72 75 nged..const.Point2.=.packed.stru
10800 63 74 20 7b 0a 20 20 20 20 78 3a 20 66 33 32 2c 0a 20 20 20 20 79 3a 20 66 33 32 2c 0a 7d 3b 0a ct.{.....x:.f32,.....y:.f32,.};.
10820 0a 0a 2f 2f 20 44 65 63 6c 61 72 65 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 61 20 73 74 ..//.Declare.an.instance.of.a.st
10840 72 75 63 74 2e 0a 63 6f 6e 73 74 20 70 20 3d 20 50 6f 69 6e 74 20 7b 0a 20 20 20 20 2e 78 20 3d ruct..const.p.=.Point.{......x.=
10860 20 30 2e 31 32 2c 0a 20 20 20 20 2e 79 20 3d 20 30 2e 33 34 2c 0a 7d 3b 0a 0a 2f 2f 20 4d 61 79 .0.12,......y.=.0.34,.};..//.May
10880 62 65 20 77 65 27 72 65 20 6e 6f 74 20 72 65 61 64 79 20 74 6f 20 66 69 6c 6c 20 6f 75 74 20 73 be.we're.not.ready.to.fill.out.s
108a0 6f 6d 65 20 6f 66 20 74 68 65 20 66 69 65 6c 64 73 2e 0a 76 61 72 20 70 32 20 3d 20 50 6f 69 6e ome.of.the.fields..var.p2.=.Poin
108c0 74 20 7b 0a 20 20 20 20 2e 78 20 3d 20 30 2e 31 32 2c 0a 20 20 20 20 2e 79 20 3d 20 75 6e 64 65 t.{......x.=.0.12,......y.=.unde
108e0 66 69 6e 65 64 2c 0a 7d 3b 0a 0a 2f 2f 20 53 74 72 75 63 74 73 20 63 61 6e 20 68 61 76 65 20 6d fined,.};..//.Structs.can.have.m
10900 65 74 68 6f 64 73 0a 2f 2f 20 53 74 72 75 63 74 20 6d 65 74 68 6f 64 73 20 61 72 65 20 6e 6f 74 ethods.//.Struct.methods.are.not
10920 20 73 70 65 63 69 61 6c 2c 20 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20 6e 61 6d 65 73 70 61 63 .special,.they.are.only.namespac
10940 65 64 0a 2f 2f 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 79 6f 75 20 63 61 6e 20 63 61 6c ed.//.functions.that.you.can.cal
10960 6c 20 77 69 74 68 20 64 6f 74 20 73 79 6e 74 61 78 2e 0a 63 6f 6e 73 74 20 56 65 63 33 20 3d 20 l.with.dot.syntax..const.Vec3.=.
10980 73 74 72 75 63 74 20 7b 0a 20 20 20 20 78 3a 20 66 33 32 2c 0a 20 20 20 20 79 3a 20 66 33 32 2c struct.{.....x:.f32,.....y:.f32,
109a0 0a 20 20 20 20 7a 3a 20 66 33 32 2c 0a 0a 20 20 20 20 70 75 62 20 66 6e 20 69 6e 69 74 28 78 3a .....z:.f32,......pub.fn.init(x:
109c0 20 66 33 32 2c 20 79 3a 20 66 33 32 2c 20 7a 3a 20 66 33 32 29 20 2d 26 67 74 3b 20 56 65 63 33 .f32,.y:.f32,.z:.f32).-&gt;.Vec3
109e0 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 56 65 63 33 20 7b 0a 20 20 20 20 20 20 20 .{.........return.Vec3.{........
10a00 20 20 20 20 20 2e 78 20 3d 20 78 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 2e 79 20 3d 20 79 2c ......x.=.x,..............y.=.y,
10a20 0a 20 20 20 20 20 20 20 20 20 20 20 20 2e 7a 20 3d 20 7a 2c 0a 20 20 20 20 20 20 20 20 7d 3b 0a ..............z.=.z,.........};.
10a40 20 20 20 20 7d 0a 0a 20 20 20 20 70 75 62 20 66 6e 20 64 6f 74 28 73 65 6c 66 3a 20 26 61 6d 70 ....}......pub.fn.dot(self:.&amp
10a60 3b 63 6f 6e 73 74 20 56 65 63 33 2c 20 6f 74 68 65 72 3a 20 26 61 6d 70 3b 63 6f 6e 73 74 20 56 ;const.Vec3,.other:.&amp;const.V
10a80 65 63 33 29 20 2d 26 67 74 3b 20 66 33 32 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 ec3).-&gt;.f32.{.........return.
10aa0 73 65 6c 66 2e 78 20 2a 20 6f 74 68 65 72 2e 78 20 2b 20 73 65 6c 66 2e 79 20 2a 20 6f 74 68 65 self.x.*.other.x.+.self.y.*.othe
10ac0 72 2e 79 20 2b 20 73 65 6c 66 2e 7a 20 2a 20 6f 74 68 65 72 2e 7a 3b 0a 20 20 20 20 7d 0a 7d 3b r.y.+.self.z.*.other.z;.....}.};
10ae0 0a 0a 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e ..const.assert.=.@import("std").
10b00 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 74 65 73 74 20 22 64 6f 74 20 70 72 6f 64 75 63 74 22 debug.assert;.test."dot.product"
10b20 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 76 31 20 3d 20 56 65 63 33 2e 69 6e 69 74 28 31 2e 30 2c .{.....const.v1.=.Vec3.init(1.0,
10b40 20 30 2e 30 2c 20 30 2e 30 29 3b 0a 20 20 20 20 63 6f 6e 73 74 20 76 32 20 3d 20 56 65 63 33 2e .0.0,.0.0);.....const.v2.=.Vec3.
10b60 69 6e 69 74 28 30 2e 30 2c 20 31 2e 30 2c 20 30 2e 30 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 init(0.0,.1.0,.0.0);.....assert(
10b80 76 31 2e 64 6f 74 28 76 32 29 20 3d 3d 20 30 2e 30 29 3b 0a 0a 20 20 20 20 2f 2f 20 4f 74 68 65 v1.dot(v2).==.0.0);......//.Othe
10ba0 72 20 74 68 61 6e 20 62 65 69 6e 67 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 63 61 6c 6c 20 77 r.than.being.available.to.call.w
10bc0 69 74 68 20 64 6f 74 20 73 79 6e 74 61 78 2c 20 73 74 72 75 63 74 20 6d 65 74 68 6f 64 73 20 61 ith.dot.syntax,.struct.methods.a
10be0 72 65 0a 20 20 20 20 2f 2f 20 6e 6f 74 20 73 70 65 63 69 61 6c 2e 20 59 6f 75 20 63 61 6e 20 72 re.....//.not.special..You.can.r
10c00 65 66 65 72 65 6e 63 65 20 74 68 65 6d 20 61 73 20 61 6e 79 20 6f 74 68 65 72 20 64 65 63 6c 61 eference.them.as.any.other.decla
10c20 72 61 74 69 6f 6e 20 69 6e 73 69 64 65 0a 20 20 20 20 2f 2f 20 74 68 65 20 73 74 72 75 63 74 3a ration.inside.....//.the.struct:
10c40 0a 20 20 20 20 61 73 73 65 72 74 28 56 65 63 33 2e 64 6f 74 28 76 31 2c 20 76 32 29 20 3d 3d 20 .....assert(Vec3.dot(v1,.v2).==.
10c60 30 2e 30 29 3b 0a 7d 0a 0a 2f 2f 20 53 74 72 75 63 74 73 20 63 61 6e 20 68 61 76 65 20 67 6c 6f 0.0);.}..//.Structs.can.have.glo
10c80 62 61 6c 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 2e 0a 2f 2f 20 53 74 72 75 63 74 73 20 63 61 6e bal.declarations..//.Structs.can
10ca0 20 68 61 76 65 20 30 20 66 69 65 6c 64 73 2e 0a 63 6f 6e 73 74 20 45 6d 70 74 79 20 3d 20 73 74 .have.0.fields..const.Empty.=.st
10cc0 72 75 63 74 20 7b 0a 20 20 20 20 70 75 62 20 63 6f 6e 73 74 20 50 49 20 3d 20 33 2e 31 34 3b 0a ruct.{.....pub.const.PI.=.3.14;.
10ce0 7d 3b 0a 74 65 73 74 20 22 73 74 72 75 63 74 20 6e 61 6d 65 73 70 61 63 65 64 20 76 61 72 69 61 };.test."struct.namespaced.varia
10d00 62 6c 65 22 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 45 6d 70 74 79 2e 50 49 20 3d 3d 20 33 2e ble".{.....assert(Empty.PI.==.3.
10d20 31 34 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 73 69 7a 65 4f 66 28 45 6d 70 74 79 29 20 3d 14);.....assert(@sizeOf(Empty).=
10d40 3d 20 30 29 3b 0a 0a 20 20 20 20 2f 2f 20 79 6f 75 20 63 61 6e 20 73 74 69 6c 6c 20 69 6e 73 74 =.0);......//.you.can.still.inst
10d60 61 6e 74 69 61 74 65 20 61 6e 20 65 6d 70 74 79 20 73 74 72 75 63 74 0a 20 20 20 20 63 6f 6e 73 antiate.an.empty.struct.....cons
10d80 74 20 64 6f 65 73 5f 6e 6f 74 68 69 6e 67 20 3d 20 45 6d 70 74 79 20 7b 7d 3b 0a 7d 0a 0a 2f 2f t.does_nothing.=.Empty.{};.}..//
10da0 20 73 74 72 75 63 74 20 66 69 65 6c 64 20 6f 72 64 65 72 20 69 73 20 64 65 74 65 72 6d 69 6e 65 .struct.field.order.is.determine
10dc0 64 20 62 79 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 66 6f 72 20 6f 70 74 69 6d 61 6c 20 70 65 d.by.the.compiler.for.optimal.pe
10de0 72 66 6f 72 6d 61 6e 63 65 2e 0a 2f 2f 20 68 6f 77 65 76 65 72 2c 20 79 6f 75 20 63 61 6e 20 73 rformance..//.however,.you.can.s
10e00 74 69 6c 6c 20 63 61 6c 63 75 6c 61 74 65 20 61 20 73 74 72 75 63 74 20 62 61 73 65 20 70 6f 69 till.calculate.a.struct.base.poi
10e20 6e 74 65 72 20 67 69 76 65 6e 20 61 20 66 69 65 6c 64 20 70 6f 69 6e 74 65 72 3a 0a 66 6e 20 73 nter.given.a.field.pointer:.fn.s
10e40 65 74 59 42 61 73 65 64 4f 6e 58 28 78 3a 20 26 61 6d 70 3b 66 33 32 2c 20 79 3a 20 66 33 32 29 etYBasedOnX(x:.&amp;f32,.y:.f32)
10e60 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 70 6f 69 6e 74 20 3d 20 40 66 69 65 6c 64 50 61 72 65 6e .{.....const.point.=.@fieldParen
10e80 74 50 74 72 28 50 6f 69 6e 74 2c 20 22 78 22 2c 20 78 29 3b 0a 20 20 20 20 70 6f 69 6e 74 2e 79 tPtr(Point,."x",.x);.....point.y
10ea0 20 3d 20 79 3b 0a 7d 0a 74 65 73 74 20 22 66 69 65 6c 64 20 70 61 72 65 6e 74 20 70 6f 69 6e 74 .=.y;.}.test."field.parent.point
10ec0 65 72 22 20 7b 0a 20 20 20 20 76 61 72 20 70 6f 69 6e 74 20 3d 20 50 6f 69 6e 74 20 7b 0a 20 20 er".{.....var.point.=.Point.{...
10ee0 20 20 20 20 20 20 2e 78 20 3d 20 30 2e 31 32 33 34 2c 0a 20 20 20 20 20 20 20 20 2e 79 20 3d 20 .......x.=.0.1234,..........y.=.
10f00 30 2e 35 36 37 38 2c 0a 20 20 20 20 7d 3b 0a 20 20 20 20 73 65 74 59 42 61 73 65 64 4f 6e 58 28 0.5678,.....};.....setYBasedOnX(
10f20 26 61 6d 70 3b 70 6f 69 6e 74 2e 78 2c 20 30 2e 39 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 70 &amp;point.x,.0.9);.....assert(p
10f40 6f 69 6e 74 2e 79 20 3d 3d 20 30 2e 39 29 3b 0a 7d 0a 0a 2f 2f 20 59 6f 75 20 63 61 6e 20 72 65 oint.y.==.0.9);.}..//.You.can.re
10f60 74 75 72 6e 20 61 20 73 74 72 75 63 74 20 66 72 6f 6d 20 61 20 66 75 6e 63 74 69 6f 6e 2e 20 54 turn.a.struct.from.a.function..T
10f80 68 69 73 20 69 73 20 68 6f 77 20 77 65 20 64 6f 20 67 65 6e 65 72 69 63 73 0a 2f 2f 20 69 6e 20 his.is.how.we.do.generics.//.in.
10fa0 5a 69 67 3a 0a 66 6e 20 4c 69 6e 6b 65 64 4c 69 73 74 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 Zig:.fn.LinkedList(comptime.T:.t
10fc0 79 70 65 29 20 2d 26 67 74 3b 20 74 79 70 65 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 73 74 72 ype).-&gt;.type.{.....return.str
10fe0 75 63 74 20 7b 0a 20 20 20 20 20 20 20 20 70 75 62 20 63 6f 6e 73 74 20 4e 6f 64 65 20 3d 20 73 uct.{.........pub.const.Node.=.s
11000 74 72 75 63 74 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 76 3a 20 3f 26 61 6d 70 3b truct.{.............prev:.?&amp;
11020 4e 6f 64 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 78 74 3a 20 3f 26 61 6d 70 3b 4e 6f Node,.............next:.?&amp;No
11040 64 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 3a 20 54 2c 0a 20 20 20 20 20 20 20 de,.............data:.T,........
11060 20 7d 3b 0a 0a 20 20 20 20 20 20 20 20 66 69 72 73 74 3a 20 3f 26 61 6d 70 3b 4e 6f 64 65 2c 0a .};..........first:.?&amp;Node,.
11080 20 20 20 20 20 20 20 20 6c 61 73 74 3a 20 20 3f 26 61 6d 70 3b 4e 6f 64 65 2c 0a 20 20 20 20 20 ........last:..?&amp;Node,......
110a0 20 20 20 6c 65 6e 3a 20 20 20 75 73 69 7a 65 2c 0a 20 20 20 20 7d 3b 0a 7d 0a 0a 74 65 73 74 20 ...len:...usize,.....};.}..test.
110c0 22 6c 69 6e 6b 65 64 20 6c 69 73 74 22 20 7b 0a 20 20 20 20 2f 2f 20 46 75 6e 63 74 69 6f 6e 73 "linked.list".{.....//.Functions
110e0 20 63 61 6c 6c 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 61 72 65 20 6d 65 6d 6f .called.at.compile-time.are.memo
11100 69 7a 65 64 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 79 6f 75 20 63 61 6e 0a 20 20 20 20 2f 2f 20 ized..This.means.you.can.....//.
11120 64 6f 20 74 68 69 73 3a 0a 20 20 20 20 61 73 73 65 72 74 28 4c 69 6e 6b 65 64 4c 69 73 74 28 69 do.this:.....assert(LinkedList(i
11140 33 32 29 20 3d 3d 20 4c 69 6e 6b 65 64 4c 69 73 74 28 69 33 32 29 29 3b 0a 0a 20 20 20 20 76 61 32).==.LinkedList(i32));......va
11160 72 20 6c 69 73 74 20 3d 20 4c 69 6e 6b 65 64 4c 69 73 74 28 69 33 32 29 20 7b 0a 20 20 20 20 20 r.list.=.LinkedList(i32).{......
11180 20 20 20 2e 66 69 72 73 74 20 3d 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 20 20 2e 6c 61 73 74 20 ....first.=.null,..........last.
111a0 3d 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 20 20 2e 6c 65 6e 20 3d 20 30 2c 0a 20 20 20 20 7d 3b =.null,..........len.=.0,.....};
111c0 0a 20 20 20 20 61 73 73 65 72 74 28 6c 69 73 74 2e 6c 65 6e 20 3d 3d 20 30 29 3b 0a 0a 20 20 20 .....assert(list.len.==.0);.....
111e0 20 2f 2f 20 53 69 6e 63 65 20 74 79 70 65 73 20 61 72 65 20 66 69 72 73 74 20 63 6c 61 73 73 20 .//.Since.types.are.first.class.
11200 76 61 6c 75 65 73 20 79 6f 75 20 63 61 6e 20 69 6e 73 74 61 6e 74 69 61 74 65 20 74 68 65 20 74 values.you.can.instantiate.the.t
11220 79 70 65 0a 20 20 20 20 2f 2f 20 62 79 20 61 73 73 69 67 6e 69 6e 67 20 69 74 20 74 6f 20 61 20 ype.....//.by.assigning.it.to.a.
11240 76 61 72 69 61 62 6c 65 3a 0a 20 20 20 20 63 6f 6e 73 74 20 4c 69 73 74 4f 66 49 6e 74 73 20 3d variable:.....const.ListOfInts.=
11260 20 4c 69 6e 6b 65 64 4c 69 73 74 28 69 33 32 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 4c 69 73 .LinkedList(i32);.....assert(Lis
11280 74 4f 66 49 6e 74 73 20 3d 3d 20 4c 69 6e 6b 65 64 4c 69 73 74 28 69 33 32 29 29 3b 0a 0a 20 20 tOfInts.==.LinkedList(i32));....
112a0 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 4c 69 73 74 4f 66 49 6e 74 73 2e 4e 6f 64 65 20 7b 0a 20 ..var.node.=.ListOfInts.Node.{..
112c0 20 20 20 20 20 20 20 2e 70 72 65 76 20 3d 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 20 20 2e 6e 65 ........prev.=.null,..........ne
112e0 78 74 20 3d 20 6e 75 6c 6c 2c 0a 20 20 20 20 20 20 20 20 2e 64 61 74 61 20 3d 20 31 32 33 34 2c xt.=.null,..........data.=.1234,
11300 0a 20 20 20 20 7d 3b 0a 20 20 20 20 76 61 72 20 6c 69 73 74 32 20 3d 20 4c 69 6e 6b 65 64 4c 69 .....};.....var.list2.=.LinkedLi
11320 73 74 28 69 33 32 29 20 7b 0a 20 20 20 20 20 20 20 20 2e 66 69 72 73 74 20 3d 20 26 61 6d 70 3b st(i32).{..........first.=.&amp;
11340 6e 6f 64 65 2c 0a 20 20 20 20 20 20 20 20 2e 6c 61 73 74 20 3d 20 26 61 6d 70 3b 6e 6f 64 65 2c node,..........last.=.&amp;node,
11360 0a 20 20 20 20 20 20 20 20 2e 6c 65 6e 20 3d 20 31 2c 0a 20 20 20 20 7d 3b 0a 20 20 20 20 61 73 ..........len.=.1,.....};.....as
11380 73 65 72 74 28 28 3f 3f 6c 69 73 74 32 2e 66 69 72 73 74 29 2e 64 61 74 61 20 3d 3d 20 31 32 33 sert((??list2.first).data.==.123
113a0 34 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 4);.}</code></pre>.......<pre><c
113c0 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 74 65 73 74 20 73 74 72 75 63 74 ode.class="sh">$.zig.test.struct
113e0 73 2e 7a 69 67 0a 54 65 73 74 20 31 2f 34 20 64 6f 74 20 70 72 6f 64 75 63 74 2e 2e 2e 4f 4b 0a s.zig.Test.1/4.dot.product...OK.
11400 54 65 73 74 20 32 2f 34 20 73 74 72 75 63 74 20 6e 61 6d 65 73 70 61 63 65 64 20 76 61 72 69 61 Test.2/4.struct.namespaced.varia
11420 62 6c 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 33 2f 34 20 66 69 65 6c 64 20 70 61 72 65 6e 74 20 70 ble...OK.Test.3/4.field.parent.p
11440 6f 69 6e 74 65 72 2e 2e 2e 4f 4b 0a 54 65 73 74 20 34 2f 34 20 6c 69 6e 6b 65 64 20 6c 69 73 74 ointer...OK.Test.4/4.linked.list
11460 2e 2e 2e 4f 4b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 ...OK</code></pre>.......<p>See.
11480 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 also:</p>.......<ul>.........<li
114a0 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d 70 74 69 6d 65 3c 2f 61 ><a.href="#comptime">comptime</a
114c0 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 ></li>.........<li><a.href="#bui
114e0 6c 74 69 6e 2d 66 69 65 6c 64 50 61 72 65 6e 74 50 74 72 22 3e 40 66 69 65 6c 64 50 61 72 65 6e ltin-fieldParentPtr">@fieldParen
11500 74 50 74 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 tPtr</a></li>.......</ul>.......
11520 3c 68 32 20 69 64 3d 22 65 6e 75 6d 22 3e 65 6e 75 6d 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 <h2.id="enum">enum</h2>.......<p
11540 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 re><code.class="zig">const.asser
11560 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b t.=.@import("std").debug.assert;
11580 0a 63 6f 6e 73 74 20 6d 65 6d 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 65 6d 3b .const.mem.=.@import("std").mem;
115a0 0a 0a 2f 2f 20 44 65 63 6c 61 72 65 20 61 6e 20 65 6e 75 6d 2e 0a 63 6f 6e 73 74 20 54 79 70 65 ..//.Declare.an.enum..const.Type
115c0 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 4f 6b 2c 0a 20 20 20 20 4e 6f 74 4f 6b 2c 0a 7d 3b 0a .=.enum.{.....Ok,.....NotOk,.};.
115e0 0a 2f 2f 20 45 6e 75 6d 73 20 61 72 65 20 73 75 6d 20 74 79 70 65 73 2c 20 61 6e 64 20 63 61 6e .//.Enums.are.sum.types,.and.can
11600 20 68 6f 6c 64 20 6d 6f 72 65 20 63 6f 6d 70 6c 65 78 20 64 61 74 61 20 6f 66 20 64 69 66 66 65 .hold.more.complex.data.of.diffe
11620 72 65 6e 74 20 74 79 70 65 73 2e 0a 63 6f 6e 73 74 20 43 6f 6d 70 6c 65 78 54 79 70 65 20 3d 20 rent.types..const.ComplexType.=.
11640 65 6e 75 6d 20 7b 0a 20 20 20 20 4f 6b 3a 20 75 38 2c 0a 20 20 20 20 4e 6f 74 4f 6b 3a 20 76 6f enum.{.....Ok:.u8,.....NotOk:.vo
11660 69 64 2c 0a 7d 3b 0a 0a 2f 2f 20 44 65 63 6c 61 72 65 20 61 20 73 70 65 63 69 66 69 63 20 69 6e id,.};..//.Declare.a.specific.in
11680 73 74 61 6e 63 65 20 6f 66 20 74 68 65 20 65 6e 75 6d 20 76 61 72 69 61 6e 74 2e 0a 63 6f 6e 73 stance.of.the.enum.variant..cons
116a0 74 20 63 20 3d 20 43 6f 6d 70 6c 65 78 54 79 70 65 2e 4f 6b 20 7b 20 30 20 7d 3b 0a 0a 2f 2f 20 t.c.=.ComplexType.Ok.{.0.};..//.
116c0 54 68 65 20 6f 72 64 69 6e 61 6c 20 76 61 6c 75 65 20 6f 66 20 61 20 73 69 6d 70 6c 65 20 65 6e The.ordinal.value.of.a.simple.en
116e0 75 6d 20 77 69 74 68 20 6e 6f 20 64 61 74 61 20 6d 65 6d 62 65 72 73 20 63 61 6e 20 62 65 0a 2f um.with.no.data.members.can.be./
11700 2f 20 72 65 74 72 69 65 76 65 64 20 62 79 20 61 20 73 69 6d 70 6c 65 20 63 61 73 74 2e 0a 2f 2f /.retrieved.by.a.simple.cast..//
11720 20 54 68 65 20 76 61 6c 75 65 20 73 74 61 72 74 73 20 66 72 6f 6d 20 30 2c 20 63 6f 75 6e 74 69 .The.value.starts.from.0,.counti
11740 6e 67 20 75 70 20 66 6f 72 20 65 61 63 68 20 6d 65 6d 62 65 72 2e 0a 63 6f 6e 73 74 20 56 61 6c ng.up.for.each.member..const.Val
11760 75 65 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 5a 65 72 6f 2c 0a 20 20 20 20 4f 6e 65 2c 0a 20 ue.=.enum.{.....Zero,.....One,..
11780 20 20 20 54 77 6f 2c 0a 7d 3b 0a 74 65 73 74 20 22 65 6e 75 6d 20 6f 72 64 69 6e 61 6c 20 76 61 ...Two,.};.test."enum.ordinal.va
117a0 6c 75 65 22 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 75 73 69 7a 65 28 56 61 6c 75 65 2e 5a 65 lue".{.....assert(usize(Value.Ze
117c0 72 6f 29 20 3d 3d 20 30 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 75 73 69 7a 65 28 56 61 6c 75 ro).==.0);.....assert(usize(Valu
117e0 65 2e 4f 6e 65 29 20 3d 3d 20 31 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 75 73 69 7a 65 28 56 e.One).==.1);.....assert(usize(V
11800 61 6c 75 65 2e 54 77 6f 29 20 3d 3d 20 32 29 3b 0a 7d 0a 0a 2f 2f 20 45 6e 75 6d 73 20 63 61 6e alue.Two).==.2);.}..//.Enums.can
11820 20 68 61 76 65 20 6d 65 74 68 6f 64 73 2c 20 74 68 65 20 73 61 6d 65 20 61 73 20 73 74 72 75 63 .have.methods,.the.same.as.struc
11840 74 73 2e 0a 2f 2f 20 45 6e 75 6d 20 6d 65 74 68 6f 64 73 20 61 72 65 20 6e 6f 74 20 73 70 65 63 ts..//.Enum.methods.are.not.spec
11860 69 61 6c 2c 20 74 68 65 79 20 61 72 65 20 6f 6e 6c 79 20 6e 61 6d 65 73 70 61 63 65 64 0a 2f 2f ial,.they.are.only.namespaced.//
11880 20 66 75 6e 63 74 69 6f 6e 73 20 74 68 61 74 20 79 6f 75 20 63 61 6e 20 63 61 6c 6c 20 77 69 74 .functions.that.you.can.call.wit
118a0 68 20 64 6f 74 20 73 79 6e 74 61 78 2e 0a 63 6f 6e 73 74 20 53 75 69 74 20 3d 20 65 6e 75 6d 20 h.dot.syntax..const.Suit.=.enum.
118c0 7b 0a 20 20 20 20 43 6c 75 62 73 2c 0a 20 20 20 20 53 70 61 64 65 73 2c 0a 20 20 20 20 44 69 61 {.....Clubs,.....Spades,.....Dia
118e0 6d 6f 6e 64 73 2c 0a 20 20 20 20 48 65 61 72 74 73 2c 0a 0a 20 20 20 20 70 75 62 20 66 6e 20 6f monds,.....Hearts,......pub.fn.o
11900 72 64 69 6e 61 6c 28 73 65 6c 66 3a 20 26 61 6d 70 3b 63 6f 6e 73 74 20 53 75 69 74 29 20 2d 26 rdinal(self:.&amp;const.Suit).-&
11920 67 74 3b 20 75 38 20 7b 0a 20 20 20 20 20 20 20 20 75 38 28 2a 73 65 6c 66 29 0a 20 20 20 20 7d gt;.u8.{.........u8(*self).....}
11940 0a 7d 3b 0a 74 65 73 74 20 22 65 6e 75 6d 20 6d 65 74 68 6f 64 22 20 7b 0a 20 20 20 20 63 6f 6e .};.test."enum.method".{.....con
11960 73 74 20 70 20 3d 20 53 75 69 74 2e 53 70 61 64 65 73 3b 0a 20 20 20 20 61 73 73 65 72 74 28 70 st.p.=.Suit.Spades;.....assert(p
11980 2e 6f 72 64 69 6e 61 6c 28 29 20 3d 3d 20 31 29 3b 0a 7d 0a 0a 2f 2f 20 41 6e 20 65 6e 75 6d 20 .ordinal().==.1);.}..//.An.enum.
119a0 76 61 72 69 61 6e 74 20 6f 66 20 64 69 66 66 65 72 65 6e 74 20 74 79 70 65 73 20 63 61 6e 20 62 variant.of.different.types.can.b
119c0 65 20 73 77 69 74 63 68 65 64 20 75 70 6f 6e 2e 0a 2f 2f 20 54 68 65 20 61 73 73 6f 63 69 61 74 e.switched.upon..//.The.associat
119e0 65 64 20 64 61 74 61 20 63 61 6e 20 62 65 20 72 65 74 72 69 65 76 65 64 20 75 73 69 6e 67 20 60 ed.data.can.be.retrieved.using.`
11a00 7c 2e 2e 2e 7c 60 20 73 79 6e 74 61 78 2e 0a 2f 2f 0a 2f 2f 20 41 20 76 6f 69 64 20 74 79 70 65 |...|`.syntax..//.//.A.void.type
11a20 20 69 73 20 6e 6f 74 20 72 65 71 75 69 72 65 64 20 6f 6e 20 61 20 74 61 67 2d 6f 6e 6c 79 20 6d .is.not.required.on.a.tag-only.m
11a40 65 6d 62 65 72 2e 0a 63 6f 6e 73 74 20 46 6f 6f 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 53 74 ember..const.Foo.=.enum.{.....St
11a60 72 69 6e 67 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 2c 0a 20 20 20 20 4e 75 6d 62 65 72 3a 20 75 36 ring:.[]const.u8,.....Number:.u6
11a80 34 2c 0a 20 20 20 20 4e 6f 6e 65 2c 0a 7d 3b 0a 74 65 73 74 20 22 65 6e 75 6d 20 76 61 72 69 61 4,.....None,.};.test."enum.varia
11aa0 6e 74 20 73 77 69 74 63 68 22 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 70 20 3d 20 46 6f 6f 2e 4e nt.switch".{.....const.p.=.Foo.N
11ac0 75 6d 62 65 72 20 7b 20 35 34 20 7d 3b 0a 20 20 20 20 63 6f 6e 73 74 20 77 68 61 74 5f 69 73 5f umber.{.54.};.....const.what_is_
11ae0 69 74 20 3d 20 73 77 69 74 63 68 20 28 70 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 43 61 70 it.=.switch.(p).{.........//.Cap
11b00 74 75 72 65 20 62 79 20 72 65 66 65 72 65 6e 63 65 0a 20 20 20 20 20 20 20 20 46 6f 6f 2e 53 74 ture.by.reference.........Foo.St
11b20 72 69 6e 67 20 3d 26 67 74 3b 20 7c 2a 78 7c 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 74 ring.=&gt;.|*x|.{............."t
11b40 68 69 73 20 69 73 20 61 20 73 74 72 69 6e 67 22 0a 20 20 20 20 20 20 20 20 7d 2c 0a 0a 20 20 20 his.is.a.string".........},.....
11b60 20 20 20 20 20 2f 2f 20 43 61 70 74 75 72 65 20 62 79 20 76 61 6c 75 65 0a 20 20 20 20 20 20 20 .....//.Capture.by.value........
11b80 20 46 6f 6f 2e 4e 75 6d 62 65 72 20 3d 26 67 74 3b 20 7c 78 7c 20 7b 0a 20 20 20 20 20 20 20 20 .Foo.Number.=&gt;.|x|.{.........
11ba0 20 20 20 20 22 74 68 69 73 20 69 73 20 61 20 6e 75 6d 62 65 72 22 0a 20 20 20 20 20 20 20 20 7d ...."this.is.a.number".........}
11bc0 2c 0a 0a 20 20 20 20 20 20 20 20 46 6f 6f 2e 4e 6f 6e 65 20 3d 26 67 74 3b 20 7b 0a 20 20 20 20 ,..........Foo.None.=&gt;.{.....
11be0 20 20 20 20 20 20 20 20 22 74 68 69 73 20 69 73 20 61 20 6e 6f 6e 65 22 0a 20 20 20 20 20 20 20 ........"this.is.a.none"........
11c00 20 7d 0a 20 20 20 20 7d 3b 0a 7d 0a 0a 2f 2f 20 54 68 65 20 40 65 6e 75 6d 54 61 67 4e 61 6d 65 .}.....};.}..//.The.@enumTagName
11c20 20 61 6e 64 20 40 6d 65 6d 62 65 72 43 6f 75 6e 74 20 62 75 69 6c 74 69 6e 20 66 75 6e 63 74 69 .and.@memberCount.builtin.functi
11c40 6f 6e 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 0a 2f 2f 20 74 68 65 20 73 74 72 69 6e 67 ons.can.be.used.to.//.the.string
11c60 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 61 6e 64 20 6e 75 6d 62 65 72 20 6f 66 20 6d 65 .representation.and.number.of.me
11c80 6d 62 65 72 73 20 72 65 73 70 65 63 74 69 76 65 6c 79 2e 0a 63 6f 6e 73 74 20 42 75 69 6c 74 69 mbers.respectively..const.Builti
11ca0 6e 54 79 70 65 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 41 3a 20 66 33 32 2c 0a 20 20 20 20 42 nType.=.enum.{.....A:.f32,.....B
11cc0 3a 20 75 33 32 2c 0a 20 20 20 20 43 2c 0a 7d 3b 0a 0a 74 65 73 74 20 22 65 6e 75 6d 20 62 75 69 :.u32,.....C,.};..test."enum.bui
11ce0 6c 74 69 6e 73 22 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c 20 ltins".{.....assert(mem.eql(u8,.
11d00 40 65 6e 75 6d 54 61 67 4e 61 6d 65 28 42 75 69 6c 74 69 6e 54 79 70 65 2e 41 20 7b 20 30 20 7d @enumTagName(BuiltinType.A.{.0.}
11d20 29 2c 20 22 41 22 29 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 65 6d 2e 65 71 6c 28 75 38 2c ),."A"));.....assert(mem.eql(u8,
11d40 20 40 65 6e 75 6d 54 61 67 4e 61 6d 65 28 42 75 69 6c 74 69 6e 54 79 70 65 2e 43 29 2c 20 22 43 .@enumTagName(BuiltinType.C),."C
11d60 22 29 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 40 6d 65 6d 62 65 72 43 6f 75 6e 74 28 42 75 69 "));.....assert(@memberCount(Bui
11d80 6c 74 69 6e 54 79 70 65 29 20 3d 3d 20 33 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a ltinType).==.3);.}</code></pre>.
11da0 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 ......<pre><code.class="sh">$.zi
11dc0 67 20 74 65 73 74 20 65 6e 75 6d 2e 7a 69 67 0a 54 65 73 74 20 31 2f 34 20 65 6e 75 6d 20 6f 72 g.test.enum.zig.Test.1/4.enum.or
11de0 64 69 6e 61 6c 20 76 61 6c 75 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 2f 34 20 65 6e 75 6d 20 6d dinal.value...OK.Test.2/4.enum.m
11e00 65 74 68 6f 64 2e 2e 2e 4f 4b 0a 54 65 73 74 20 33 2f 34 20 65 6e 75 6d 20 76 61 72 69 61 6e 74 ethod...OK.Test.3/4.enum.variant
11e20 20 73 77 69 74 63 68 2e 2e 2e 4f 4b 0a 54 65 73 74 20 34 2f 34 20 65 6e 75 6d 20 62 75 69 6c 74 .switch...OK.Test.4/4.enum.built
11e40 69 6e 73 2e 2e 2e 4f 4b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a ins...OK</code></pre>.......<p>.
11e60 20 20 20 20 20 20 45 6e 75 6d 73 20 61 72 65 20 67 65 6e 65 72 61 74 65 64 20 61 73 20 61 20 73 ......Enums.are.generated.as.a.s
11e80 74 72 75 63 74 20 77 69 74 68 20 61 20 74 61 67 20 66 69 65 6c 64 20 61 6e 64 20 75 6e 69 6f 6e truct.with.a.tag.field.and.union
11ea0 20 66 69 65 6c 64 2e 20 5a 69 67 0a 20 20 20 20 20 20 73 6f 72 74 73 20 74 68 65 20 6f 72 64 65 .field..Zig.......sorts.the.orde
11ec0 72 20 6f 66 20 74 68 65 20 74 61 67 20 61 6e 64 20 75 6e 69 6f 6e 20 66 69 65 6c 64 20 62 79 20 r.of.the.tag.and.union.field.by.
11ee0 74 68 65 20 6c 61 72 67 65 73 74 20 61 6c 69 67 6e 6d 65 6e 74 2e 0a 20 20 20 20 20 20 3c 2f 70 the.largest.alignment........</p
11f00 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c >.......<p>See.also:</p>.......<
11f20 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 ul>.........<li><a.href="#builti
11f40 6e 2d 65 6e 75 6d 54 61 67 4e 61 6d 65 22 3e 40 65 6e 75 6d 54 61 67 4e 61 6d 65 3c 2f 61 3e 3c n-enumTagName">@enumTagName</a><
11f60 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 /li>.........<li><a.href="#built
11f80 69 6e 2d 6d 65 6d 62 65 72 43 6f 75 6e 74 22 3e 40 6d 65 6d 62 65 72 43 6f 75 6e 74 3c 2f 61 3e in-memberCount">@memberCount</a>
11fa0 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 </li>.......</ul>.......<h2.id="
11fc0 73 77 69 74 63 68 22 3e 73 77 69 74 63 68 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c switch">switch</h2>.......<pre><
11fe0 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 code.class="zig">const.assert.=.
12000 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 63 6f 6e @import("std").debug.assert;.con
12020 73 74 20 62 75 69 6c 74 69 6e 20 3d 20 40 69 6d 70 6f 72 74 28 22 62 75 69 6c 74 69 6e 22 29 3b st.builtin.=.@import("builtin");
12040 0a 0a 74 65 73 74 20 22 73 77 69 74 63 68 20 73 69 6d 70 6c 65 22 20 7b 0a 20 20 20 20 63 6f 6e ..test."switch.simple".{.....con
12060 73 74 20 61 3a 20 75 36 34 20 3d 20 31 30 3b 0a 20 20 20 20 63 6f 6e 73 74 20 7a 7a 3a 20 75 36 st.a:.u64.=.10;.....const.zz:.u6
12080 34 20 3d 20 31 30 33 3b 0a 0a 20 20 20 20 2f 2f 20 41 6c 6c 20 62 72 61 6e 63 68 65 73 20 6f 66 4.=.103;......//.All.branches.of
120a0 20 61 20 73 77 69 74 63 68 20 65 78 70 72 65 73 73 69 6f 6e 20 6d 75 73 74 20 62 65 20 61 62 6c .a.switch.expression.must.be.abl
120c0 65 20 74 6f 20 62 65 20 63 6f 65 72 63 65 64 20 74 6f 20 61 0a 20 20 20 20 2f 2f 20 63 6f 6d 6d e.to.be.coerced.to.a.....//.comm
120e0 6f 6e 20 74 79 70 65 2e 0a 20 20 20 20 2f 2f 0a 20 20 20 20 2f 2f 20 42 72 61 6e 63 68 65 73 20 on.type......//.....//.Branches.
12100 63 61 6e 6e 6f 74 20 66 61 6c 6c 74 68 72 6f 75 67 68 2e 20 49 66 20 66 61 6c 6c 74 68 72 6f 75 cannot.fallthrough..If.fallthrou
12120 67 68 20 62 65 68 61 76 69 6f 72 20 69 73 20 64 65 73 69 72 65 64 2c 20 63 6f 6d 62 69 6e 65 0a gh.behavior.is.desired,.combine.
12140 20 20 20 20 2f 2f 20 74 68 65 20 63 61 73 65 73 20 61 6e 64 20 75 73 65 20 61 6e 20 69 66 2e 0a ....//.the.cases.and.use.an.if..
12160 20 20 20 20 63 6f 6e 73 74 20 62 20 3d 20 73 77 69 74 63 68 20 28 61 29 20 7b 0a 20 20 20 20 20 ....const.b.=.switch.(a).{......
12180 20 20 20 2f 2f 20 4d 75 6c 74 69 70 6c 65 20 63 61 73 65 73 20 63 61 6e 20 62 65 20 63 6f 6d 62 ...//.Multiple.cases.can.be.comb
121a0 69 6e 65 64 20 76 69 61 20 61 20 27 2c 27 0a 20 20 20 20 20 20 20 20 31 2c 20 32 2c 20 33 20 3d ined.via.a.','.........1,.2,.3.=
121c0 26 67 74 3b 20 30 2c 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 52 61 6e 67 65 73 20 63 61 6e 20 62 &gt;.0,..........//.Ranges.can.b
121e0 65 20 73 70 65 63 69 66 69 65 64 20 75 73 69 6e 67 20 74 68 65 20 2e 2e 2e 20 73 79 6e 74 61 78 e.specified.using.the.....syntax
12200 2e 20 54 68 65 73 65 20 61 72 65 20 69 6e 63 6c 75 73 69 76 65 0a 20 20 20 20 20 20 20 20 2f 2f ..These.are.inclusive.........//
12220 20 62 6f 74 68 20 65 6e 64 73 2e 0a 20 20 20 20 20 20 20 20 35 20 2e 2e 2e 20 31 30 30 20 3d 26 .both.ends..........5.....100.=&
12240 67 74 3b 20 31 2c 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 42 72 61 6e 63 68 65 73 20 63 61 6e 20 gt;.1,..........//.Branches.can.
12260 62 65 20 61 72 62 69 74 72 61 72 69 6c 79 20 63 6f 6d 70 6c 65 78 2e 0a 20 20 20 20 20 20 20 20 be.arbitrarily.complex..........
12280 31 30 31 20 3d 26 67 74 3b 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 63 3a 101.=&gt;.{.............const.c:
122a0 20 75 36 34 20 3d 20 35 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 20 2a 20 32 20 2b 20 31 0a .u64.=.5;.............c.*.2.+.1.
122c0 20 20 20 20 20 20 20 20 7d 2c 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 53 77 69 74 63 68 69 6e 67 ........},..........//.Switching
122e0 20 6f 6e 20 61 72 62 69 74 72 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e 73 20 69 73 20 61 6c 6c .on.arbitrary.expressions.is.all
12300 6f 77 65 64 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 65 0a 20 20 20 20 20 20 20 20 2f 2f 20 65 owed.as.long.as.the.........//.e
12320 78 70 72 65 73 73 69 6f 6e 20 69 73 20 6b 6e 6f 77 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 xpression.is.known.at.compile-ti
12340 6d 65 2e 0a 20 20 20 20 20 20 20 20 7a 7a 20 3d 26 67 74 3b 20 7a 7a 2c 0a 20 20 20 20 20 20 20 me..........zz.=&gt;.zz,........
12360 20 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 64 3a .comptime.{.............const.d:
12380 20 75 33 32 20 3d 20 35 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 65 3a 20 75 .u32.=.5;.............const.e:.u
123a0 33 32 20 3d 20 31 30 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 20 2b 20 65 0a 20 20 20 20 32.=.100;.............d.+.e.....
123c0 20 20 20 20 7d 20 3d 26 67 74 3b 20 31 30 37 2c 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65 ....}.=&gt;.107,..........//.The
123e0 20 65 6c 73 65 20 62 72 61 6e 63 68 20 63 61 74 63 68 65 73 20 65 76 65 72 79 74 68 69 6e 67 20 .else.branch.catches.everything.
12400 6e 6f 74 20 61 6c 72 65 61 64 79 20 63 61 70 74 75 72 65 64 2e 0a 20 20 20 20 20 20 20 20 2f 2f not.already.captured..........//
12420 20 45 6c 73 65 20 62 72 61 6e 63 68 65 73 20 61 72 65 20 6d 61 6e 64 61 74 6f 72 79 20 75 6e 6c .Else.branches.are.mandatory.unl
12440 65 73 73 20 74 68 65 20 65 6e 74 69 72 65 20 72 61 6e 67 65 20 6f 66 20 76 61 6c 75 65 73 0a 20 ess.the.entire.range.of.values..
12460 20 20 20 20 20 20 20 2f 2f 20 69 73 20 68 61 6e 64 6c 65 64 2e 0a 20 20 20 20 20 20 20 20 65 6c .......//.is.handled..........el
12480 73 65 20 3d 26 67 74 3b 20 39 2c 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 20 61 73 73 65 72 74 28 62 se.=&gt;.9,.....};......assert(b
124a0 20 3d 3d 20 31 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 73 77 69 74 63 68 20 65 6e 75 6d 22 20 7b 0a .==.1);.}..test."switch.enum".{.
124c0 20 20 20 20 63 6f 6e 73 74 20 49 74 65 6d 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 20 20 20 20 ....const.Item.=.enum.{.........
124e0 41 3a 20 75 33 32 2c 0a 20 20 20 20 20 20 20 20 43 3a 20 73 74 72 75 63 74 20 7b 20 78 3a 20 75 A:.u32,.........C:.struct.{.x:.u
12500 38 2c 20 79 3a 20 75 38 20 7d 2c 0a 20 20 20 20 20 20 20 20 44 2c 0a 20 20 20 20 7d 3b 0a 0a 20 8,.y:.u8.},.........D,.....};...
12520 20 20 20 76 61 72 20 61 20 3d 20 49 74 65 6d 2e 41 20 7b 20 33 20 7d 3b 0a 0a 20 20 20 20 2f 2f ...var.a.=.Item.A.{.3.};......//
12540 20 53 77 69 74 63 68 69 6e 67 20 6f 6e 20 6d 6f 72 65 20 63 6f 6d 70 6c 65 78 20 65 6e 75 6d 73 .Switching.on.more.complex.enums
12560 20 69 73 20 61 6c 6c 6f 77 65 64 2e 0a 20 20 20 20 63 6f 6e 73 74 20 62 20 3d 20 73 77 69 74 63 .is.allowed......const.b.=.switc
12580 68 20 28 61 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 41 20 63 61 70 74 75 72 65 20 67 72 6f h.(a).{.........//.A.capture.gro
125a0 75 70 20 69 73 20 61 6c 6c 6f 77 65 64 20 6f 6e 20 61 20 6d 61 74 63 68 2c 20 61 6e 64 20 77 69 up.is.allowed.on.a.match,.and.wi
125c0 6c 6c 20 72 65 74 75 72 6e 20 74 68 65 20 65 6e 75 6d 0a 20 20 20 20 20 20 20 20 2f 2f 20 76 61 ll.return.the.enum.........//.va
125e0 6c 75 65 20 6d 61 74 63 68 65 64 2e 0a 20 20 20 20 20 20 20 20 49 74 65 6d 2e 41 20 3d 26 67 74 lue.matched..........Item.A.=&gt
12600 3b 20 7c 69 74 65 6d 7c 20 69 74 65 6d 2c 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 41 20 72 65 66 ;.|item|.item,..........//.A.ref
12620 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 6d 61 74 63 68 65 64 20 76 61 6c 75 65 20 63 61 6e 20 erence.to.the.matched.value.can.
12640 62 65 20 6f 62 74 61 69 6e 65 64 20 75 73 69 6e 67 20 60 2a 60 20 73 79 6e 74 61 78 2e 0a 20 20 be.obtained.using.`*`.syntax....
12660 20 20 20 20 20 20 49 74 65 6d 2e 43 20 3d 26 67 74 3b 20 7c 2a 69 74 65 6d 7c 20 7b 0a 20 20 20 ......Item.C.=&gt;.|*item|.{....
12680 20 20 20 20 20 20 20 20 20 28 2a 69 74 65 6d 29 2e 78 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20 .........(*item).x.+=.1;........
126a0 20 20 20 20 20 36 0a 20 20 20 20 20 20 20 20 7d 2c 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 6f .....6.........},..........//.No
126c0 20 65 6c 73 65 20 69 73 20 72 65 71 75 69 72 65 64 20 69 66 20 74 68 65 20 74 79 70 65 73 20 63 .else.is.required.if.the.types.c
126e0 61 73 65 73 20 77 61 73 20 65 78 68 61 75 73 74 69 76 65 6c 79 20 68 61 6e 64 6c 65 64 0a 20 20 ases.was.exhaustively.handled...
12700 20 20 20 20 20 20 49 74 65 6d 2e 44 20 3d 26 67 74 3b 20 38 2c 0a 20 20 20 20 7d 3b 0a 0a 20 20 ......Item.D.=&gt;.8,.....};....
12720 20 20 61 73 73 65 72 74 28 62 20 3d 3d 20 33 29 3b 0a 7d 0a 0a 2f 2f 20 53 77 69 74 63 68 20 65 ..assert(b.==.3);.}..//.Switch.e
12740 78 70 72 65 73 73 69 6f 6e 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 6f 75 74 73 69 64 65 20 61 xpressions.can.be.used.outside.a
12760 20 66 75 6e 63 74 69 6f 6e 3a 0a 63 6f 6e 73 74 20 6f 73 5f 6d 73 67 20 3d 20 73 77 69 74 63 68 .function:.const.os_msg.=.switch
12780 20 28 62 75 69 6c 74 69 6e 2e 6f 73 29 20 7b 0a 20 20 20 20 62 75 69 6c 74 69 6e 2e 4f 73 2e 6c .(builtin.os).{.....builtin.Os.l
127a0 69 6e 75 78 20 3d 26 67 74 3b 20 22 77 65 20 66 6f 75 6e 64 20 61 20 6c 69 6e 75 78 20 75 73 65 inux.=&gt;."we.found.a.linux.use
127c0 72 22 2c 0a 20 20 20 20 65 6c 73 65 20 3d 26 67 74 3b 20 22 6e 6f 74 20 61 20 6c 69 6e 75 78 20 r",.....else.=&gt;."not.a.linux.
127e0 75 73 65 72 22 2c 0a 7d 3b 0a 0a 2f 2f 20 49 6e 73 69 64 65 20 61 20 66 75 6e 63 74 69 6f 6e 2c user",.};..//.Inside.a.function,
12800 20 73 77 69 74 63 68 20 73 74 61 74 65 6d 65 6e 74 73 20 69 6d 70 6c 69 63 69 74 6c 79 20 61 72 .switch.statements.implicitly.ar
12820 65 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 0a 2f 2f 20 65 76 61 6c 75 61 74 65 64 20 69 66 20 74 e.compile-time.//.evaluated.if.t
12840 68 65 20 74 61 72 67 65 74 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 63 6f 6d 70 69 6c 65 2d he.target.expression.is.compile-
12860 74 69 6d 65 20 6b 6e 6f 77 6e 2e 0a 74 65 73 74 20 22 73 77 69 74 63 68 20 69 6e 73 69 64 65 20 time.known..test."switch.inside.
12880 66 75 6e 63 74 69 6f 6e 22 20 7b 0a 20 20 20 20 73 77 69 74 63 68 20 28 62 75 69 6c 74 69 6e 2e function".{.....switch.(builtin.
128a0 6f 73 29 20 7b 0a 20 20 20 20 20 20 20 20 62 75 69 6c 74 69 6e 2e 4f 73 2e 77 69 6e 64 6f 77 73 os).{.........builtin.Os.windows
128c0 20 3d 26 67 74 3b 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4f 6e 20 61 6e 20 4f 53 .=&gt;.{.............//.On.an.OS
128e0 20 6f 74 68 65 72 20 74 68 61 6e 20 77 69 6e 64 6f 77 73 2c 20 62 6c 6f 63 6b 20 69 73 20 6e 6f .other.than.windows,.block.is.no
12900 74 20 65 76 65 6e 20 61 6e 61 6c 79 7a 65 64 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 t.even.analyzed,.............//.
12920 73 6f 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 20 69 73 20 6e 6f 74 20 74 72 69 so.this.compile.error.is.not.tri
12940 67 67 65 72 65 64 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4f 6e 20 77 69 6e 64 6f 77 ggered..............//.On.window
12960 73 20 74 68 69 73 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 20 77 6f 75 6c 64 20 62 65 20 74 72 s.this.compile.error.would.be.tr
12980 69 67 67 65 72 65 64 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 63 6f 6d 70 69 6c 65 45 72 72 iggered..............@compileErr
129a0 6f 72 28 22 77 69 6e 64 6f 77 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 22 29 3b 0a 20 20 20 or("windows.not.supported");....
129c0 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20 3d 26 67 74 3b 20 7b 7d 2c 0a 20 .....},.........else.=&gt;.{},..
129e0 20 20 20 7d 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e ...};.}</code></pre>.......<pre>
12a00 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 74 65 73 74 20 73 77 69 74 <code.class="sh">$.zig.test.swit
12a20 63 68 2e 7a 69 67 0a 54 65 73 74 20 31 2f 32 20 73 77 69 74 63 68 20 73 69 6d 70 6c 65 2e 2e 2e ch.zig.Test.1/2.switch.simple...
12a40 4f 4b 0a 54 65 73 74 20 32 2f 32 20 73 77 69 74 63 68 20 65 6e 75 6d 2e 2e 2e 4f 4b 0a 54 65 73 OK.Test.2/2.switch.enum...OK.Tes
12a60 74 20 33 2f 33 20 73 77 69 74 63 68 20 69 6e 73 69 64 65 20 66 75 6e 63 74 69 6f 6e 2e 2e 2e 4f t.3/3.switch.inside.function...O
12a80 4b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f K</code></pre>.......<p>See.also
12aa0 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 :</p>.......<ul>.........<li><a.
12ac0 68 72 65 66 3d 22 23 63 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d 70 74 69 6d 65 3c 2f 61 3e 3c 2f 6c href="#comptime">comptime</a></l
12ae0 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 65 6e 75 6d 22 3e 65 i>.........<li><a.href="#enum">e
12b00 6e 75 6d 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 num</a></li>.........<li><a.href
12b20 3d 22 23 62 75 69 6c 74 69 6e 2d 63 6f 6d 70 69 6c 65 45 72 72 6f 72 22 3e 40 63 6f 6d 70 69 6c ="#builtin-compileError">@compil
12b40 65 45 72 72 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 eError</a></li>.........<li><a.h
12b60 72 65 66 3d 22 23 63 6f 6d 70 69 6c 65 2d 76 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 ref="#compile-variables">Compile
12b80 20 56 61 72 69 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a .Variables</a></li>.......</ul>.
12ba0 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 77 68 69 6c 65 22 3e 77 68 69 6c 65 3c 2f 68 32 3e 0a ......<h2.id="while">while</h2>.
12bc0 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e ......<pre><code.class="zig">con
12be0 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 st.assert.=.@import("std").debug
12c00 2e 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 20 22 77 68 69 6c 65 20 62 61 73 69 63 22 20 7b 0a 20 .assert;..test."while.basic".{..
12c20 20 20 20 2f 2f 20 41 20 77 68 69 6c 65 20 6c 6f 6f 70 20 69 73 20 75 73 65 64 20 74 6f 20 72 65 ...//.A.while.loop.is.used.to.re
12c40 70 65 61 74 65 64 6c 79 20 65 78 65 63 75 74 65 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 75 peatedly.execute.an.expression.u
12c60 6e 74 69 6c 0a 20 20 20 20 2f 2f 20 73 6f 6d 65 20 63 6f 6e 64 69 74 69 6f 6e 20 69 73 20 6e 6f ntil.....//.some.condition.is.no
12c80 20 6c 6f 6e 67 65 72 20 74 72 75 65 2e 0a 20 20 20 20 76 61 72 20 69 3a 20 75 73 69 7a 65 20 3d .longer.true......var.i:.usize.=
12ca0 20 30 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 69 20 26 6c 74 3b 20 31 30 29 20 7b 0a 20 20 20 20 .0;.....while.(i.&lt;.10).{.....
12cc0 20 20 20 20 69 20 2b 3d 20 31 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 69 20 3d ....i.+=.1;.....}.....assert(i.=
12ce0 3d 20 31 30 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 77 68 69 6c 65 20 62 72 65 61 6b 22 20 7b 0a 20 =.10);.}..test."while.break".{..
12d00 20 20 20 2f 2f 20 59 6f 75 20 63 61 6e 20 75 73 65 20 62 72 65 61 6b 20 74 6f 20 65 78 69 74 20 ...//.You.can.use.break.to.exit.
12d20 61 20 77 68 69 6c 65 20 6c 6f 6f 70 20 65 61 72 6c 79 2e 0a 20 20 20 20 76 61 72 20 69 3a 20 75 a.while.loop.early......var.i:.u
12d40 73 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 74 72 75 65 29 20 7b 0a 20 20 20 size.=.0;.....while.(true).{....
12d60 20 20 20 20 20 69 66 20 28 69 20 3d 3d 20 31 30 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 .....if.(i.==.10).............br
12d80 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 69 20 2b 3d 20 31 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 eak;.........i.+=.1;.....}.....a
12da0 73 73 65 72 74 28 69 20 3d 3d 20 31 30 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 77 68 69 6c 65 20 63 ssert(i.==.10);.}..test."while.c
12dc0 6f 6e 74 69 6e 75 65 22 20 7b 0a 20 20 20 20 2f 2f 20 59 6f 75 20 63 61 6e 20 75 73 65 20 63 6f ontinue".{.....//.You.can.use.co
12de0 6e 74 69 6e 75 65 20 74 6f 20 6a 75 6d 70 20 62 61 63 6b 20 74 6f 20 74 68 65 20 62 65 67 69 6e ntinue.to.jump.back.to.the.begin
12e00 6e 69 6e 67 20 6f 66 20 74 68 65 20 6c 6f 6f 70 2e 0a 20 20 20 20 76 61 72 20 69 3a 20 75 73 69 ning.of.the.loop......var.i:.usi
12e20 7a 65 20 3d 20 30 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 74 72 75 65 29 20 7b 0a 20 20 20 20 20 ze.=.0;.....while.(true).{......
12e40 20 20 20 69 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 20 26 6c 74 3b 20 31 30 ...i.+=.1;.........if.(i.&lt;.10
12e60 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 20 20 20 20 20 ).............continue;.........
12e80 62 72 65 61 6b 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 69 20 3d 3d 20 31 30 29 break;.....}.....assert(i.==.10)
12ea0 3b 0a 7d 0a 0a 74 65 73 74 20 22 77 68 69 6c 65 20 6c 6f 6f 70 20 63 6f 6e 74 69 6e 75 61 74 69 ;.}..test."while.loop.continuati
12ec0 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e 22 20 7b 0a 20 20 20 20 2f 2f 20 59 6f 75 20 63 61 6e 20 on.expression".{.....//.You.can.
12ee0 67 69 76 65 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 74 6f 20 74 68 65 20 77 68 69 6c 65 20 give.an.expression.to.the.while.
12f00 6c 6f 6f 70 20 74 6f 20 65 78 65 63 75 74 65 20 77 68 65 6e 0a 20 20 20 20 2f 2f 20 74 68 65 20 loop.to.execute.when.....//.the.
12f20 6c 6f 6f 70 20 69 73 20 63 6f 6e 74 69 6e 75 65 64 2e 20 54 68 69 73 20 69 73 20 72 65 73 70 65 loop.is.continued..This.is.respe
12f40 63 74 65 64 20 62 79 20 74 68 65 20 63 6f 6e 74 69 6e 75 65 20 63 6f 6e 74 72 6f 6c 20 66 6c 6f cted.by.the.continue.control.flo
12f60 77 2e 0a 20 20 20 20 76 61 72 20 69 3a 20 75 73 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 77 68 69 w......var.i:.usize.=.0;.....whi
12f80 6c 65 20 28 69 20 26 6c 74 3b 20 31 30 29 20 3a 20 28 69 20 2b 3d 20 31 29 20 7b 7d 0a 20 20 20 le.(i.&lt;.10).:.(i.+=.1).{}....
12fa0 20 61 73 73 65 72 74 28 69 20 3d 3d 20 31 30 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 77 68 69 6c 65 .assert(i.==.10);.}..test."while
12fc0 20 6c 6f 6f 70 20 63 6f 6e 74 69 6e 75 61 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e 2c 20 6d .loop.continuation.expression,.m
12fe0 6f 72 65 20 63 6f 6d 70 6c 69 63 61 74 65 64 22 20 7b 0a 20 20 20 20 2f 2f 20 4d 6f 72 65 20 63 ore.complicated".{.....//.More.c
13000 6f 6d 70 6c 65 78 20 62 6c 6f 63 6b 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 61 6e 20 omplex.blocks.can.be.used.as.an.
13020 65 78 70 72 65 73 73 69 6f 6e 20 69 6e 20 74 68 65 20 6c 6f 6f 70 20 63 6f 6e 74 69 6e 75 65 0a expression.in.the.loop.continue.
13040 20 20 20 20 2f 2f 20 65 78 70 72 65 73 73 69 6f 6e 2e 0a 20 20 20 20 76 61 72 20 69 31 3a 20 75 ....//.expression......var.i1:.u
13060 73 69 7a 65 20 3d 20 31 3b 0a 20 20 20 20 76 61 72 20 6a 31 3a 20 75 73 69 7a 65 20 3d 20 31 3b size.=.1;.....var.j1:.usize.=.1;
13080 0a 20 20 20 20 77 68 69 6c 65 20 28 69 31 20 2a 20 6a 31 20 26 6c 74 3b 20 32 30 30 30 29 20 3a .....while.(i1.*.j1.&lt;.2000).:
130a0 20 28 7b 20 69 31 20 2a 3d 20 32 3b 20 6a 31 20 2a 3d 20 33 3b 20 7d 29 20 7b 0a 20 20 20 20 20 .({.i1.*=.2;.j1.*=.3;.}).{......
130c0 20 20 20 63 6f 6e 73 74 20 6d 79 5f 69 6a 31 20 3d 20 69 31 20 2a 20 6a 31 3b 0a 20 20 20 20 20 ...const.my_ij1.=.i1.*.j1;......
130e0 20 20 20 61 73 73 65 72 74 28 6d 79 5f 69 6a 31 20 26 6c 74 3b 20 32 30 30 30 29 3b 0a 20 20 20 ...assert(my_ij1.&lt;.2000);....
13100 20 7d 0a 7d 0a 0a 74 65 73 74 20 22 77 68 69 6c 65 20 65 6c 73 65 22 20 7b 0a 20 20 20 20 61 73 .}.}..test."while.else".{.....as
13120 73 65 72 74 28 72 61 6e 67 65 48 61 73 4e 75 6d 62 65 72 28 30 2c 20 31 30 2c 20 35 29 29 3b 0a sert(rangeHasNumber(0,.10,.5));.
13140 20 20 20 20 61 73 73 65 72 74 28 21 72 61 6e 67 65 48 61 73 4e 75 6d 62 65 72 28 30 2c 20 31 30 ....assert(!rangeHasNumber(0,.10
13160 2c 20 31 35 29 29 3b 0a 7d 0a 0a 66 6e 20 72 61 6e 67 65 48 61 73 4e 75 6d 62 65 72 28 62 65 67 ,.15));.}..fn.rangeHasNumber(beg
13180 69 6e 3a 20 75 73 69 7a 65 2c 20 65 6e 64 3a 20 75 73 69 7a 65 2c 20 6e 75 6d 62 65 72 3a 20 75 in:.usize,.end:.usize,.number:.u
131a0 73 69 7a 65 29 20 2d 26 67 74 3b 20 62 6f 6f 6c 20 7b 0a 20 20 20 20 76 61 72 20 69 20 3d 20 62 size).-&gt;.bool.{.....var.i.=.b
131c0 65 67 69 6e 3b 0a 20 20 20 20 2f 2f 20 57 68 69 6c 65 20 6c 6f 6f 70 73 20 61 72 65 20 65 78 70 egin;.....//.While.loops.are.exp
131e0 72 65 73 73 69 6f 6e 73 2e 20 54 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 65 78 70 72 ressions..The.result.of.the.expr
13200 65 73 73 69 6f 6e 20 69 73 20 74 68 65 0a 20 20 20 20 2f 2f 20 72 65 73 75 6c 74 20 6f 66 20 74 ession.is.the.....//.result.of.t
13220 68 65 20 65 6c 73 65 20 63 6c 61 75 73 65 20 6f 66 20 61 20 77 68 69 6c 65 20 6c 6f 6f 70 2c 20 he.else.clause.of.a.while.loop,.
13240 77 68 69 63 68 20 69 73 20 65 78 65 63 75 74 65 64 20 77 68 65 6e 0a 20 20 20 20 2f 2f 20 74 68 which.is.executed.when.....//.th
13260 65 20 63 6f 6e 64 69 74 69 6f 6e 20 6f 66 20 74 68 65 20 77 68 69 6c 65 20 6c 6f 6f 70 20 69 73 e.condition.of.the.while.loop.is
13280 20 74 65 73 74 65 64 20 61 73 20 66 61 6c 73 65 2e 0a 20 20 20 20 72 65 74 75 72 6e 20 77 68 69 .tested.as.false......return.whi
132a0 6c 65 20 28 69 20 26 6c 74 3b 20 65 6e 64 29 20 3a 20 28 69 20 2b 3d 20 31 29 20 7b 0a 20 20 20 le.(i.&lt;.end).:.(i.+=.1).{....
132c0 20 20 20 20 20 69 66 20 28 69 20 3d 3d 20 6e 75 6d 62 65 72 29 20 7b 0a 20 20 20 20 20 20 20 20 .....if.(i.==.number).{.........
132e0 20 20 20 20 2f 2f 20 62 72 65 61 6b 20 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 6c 69 6b 65 20 72 ....//.break.expressions,.like.r
13300 65 74 75 72 6e 20 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 61 63 63 65 70 74 20 61 20 76 61 6c 75 eturn.expressions,.accept.a.valu
13320 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 70 61 72 61 6d 65 74 65 72 2e 20 54 68 69 73 e.............//.parameter..This
13340 20 69 73 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 74 68 65 20 77 68 69 6c 65 20 65 78 70 72 .is.the.result.of.the.while.expr
13360 65 73 73 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 57 68 65 6e 20 79 6f 75 20 ession..............//.When.you.
13380 62 72 65 61 6b 20 66 72 6f 6d 20 61 20 77 68 69 6c 65 20 6c 6f 6f 70 2c 20 74 68 65 20 65 6c 73 break.from.a.while.loop,.the.els
133a0 65 20 62 72 61 6e 63 68 20 69 73 20 6e 6f 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 65 e.branch.is.not.............//.e
133c0 76 61 6c 75 61 74 65 64 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 20 74 72 75 65 valuated..............break.true
133e0 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 ;.........}.....}.else.{........
13400 20 66 61 6c 73 65 0a 20 20 20 20 7d 0a 7d 0a 0a 74 65 73 74 20 22 77 68 69 6c 65 20 6e 75 6c 6c .false.....}.}..test."while.null
13420 20 63 61 70 74 75 72 65 22 20 7b 0a 20 20 20 20 2f 2f 20 4a 75 73 74 20 6c 69 6b 65 20 69 66 20 .capture".{.....//.Just.like.if.
13440 65 78 70 72 65 73 73 69 6f 6e 73 2c 20 77 68 69 6c 65 20 6c 6f 6f 70 73 20 63 61 6e 20 74 61 6b expressions,.while.loops.can.tak
13460 65 20 61 20 6e 75 6c 6c 61 62 6c 65 20 61 73 20 74 68 65 0a 20 20 20 20 2f 2f 20 63 6f 6e 64 69 e.a.nullable.as.the.....//.condi
13480 74 69 6f 6e 20 61 6e 64 20 63 61 70 74 75 72 65 20 74 68 65 20 70 61 79 6c 6f 61 64 2e 20 57 68 tion.and.capture.the.payload..Wh
134a0 65 6e 20 6e 75 6c 6c 20 69 73 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 74 68 65 20 6c 6f 6f 70 0a en.null.is.encountered.the.loop.
134c0 20 20 20 20 2f 2f 20 65 78 69 74 73 2e 0a 20 20 20 20 76 61 72 20 73 75 6d 31 3a 20 75 33 32 20 ....//.exits......var.sum1:.u32.
134e0 3d 20 30 3b 0a 20 20 20 20 6e 75 6d 62 65 72 73 5f 6c 65 66 74 20 3d 20 33 3b 0a 20 20 20 20 77 =.0;.....numbers_left.=.3;.....w
13500 68 69 6c 65 20 28 65 76 65 6e 74 75 61 6c 6c 79 4e 75 6c 6c 53 65 71 75 65 6e 63 65 28 29 29 20 hile.(eventuallyNullSequence()).
13520 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 73 75 6d 31 20 2b 3d 20 76 61 6c 75 65 3b |value|.{.........sum1.+=.value;
13540 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 73 75 6d 31 20 3d 3d 20 33 29 3b 0a 0a 20 .....}.....assert(sum1.==.3);...
13560 20 20 20 2f 2f 20 54 68 65 20 65 6c 73 65 20 62 72 61 6e 63 68 20 69 73 20 61 6c 6c 6f 77 65 64 ...//.The.else.branch.is.allowed
13580 20 6f 6e 20 6e 75 6c 6c 61 62 6c 65 20 69 74 65 72 61 74 69 6f 6e 2e 20 49 6e 20 74 68 69 73 20 .on.nullable.iteration..In.this.
135a0 63 61 73 65 2c 20 69 74 20 77 69 6c 6c 0a 20 20 20 20 2f 2f 20 62 65 20 65 78 65 63 75 74 65 64 case,.it.will.....//.be.executed
135c0 20 6f 6e 20 74 68 65 20 66 69 72 73 74 20 6e 75 6c 6c 20 76 61 6c 75 65 20 65 6e 63 6f 75 6e 74 .on.the.first.null.value.encount
135e0 65 72 65 64 2e 0a 20 20 20 20 76 61 72 20 73 75 6d 32 3a 20 75 33 32 20 3d 20 30 3b 0a 20 20 20 ered......var.sum2:.u32.=.0;....
13600 20 6e 75 6d 62 65 72 73 5f 6c 65 66 74 20 3d 20 33 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 65 76 .numbers_left.=.3;.....while.(ev
13620 65 6e 74 75 61 6c 6c 79 4e 75 6c 6c 53 65 71 75 65 6e 63 65 28 29 29 20 7c 76 61 6c 75 65 7c 20 entuallyNullSequence()).|value|.
13640 7b 0a 20 20 20 20 20 20 20 20 73 75 6d 32 20 2b 3d 20 76 61 6c 75 65 3b 0a 20 20 20 20 7d 20 65 {.........sum2.+=.value;.....}.e
13660 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 73 75 6d 31 20 3d 3d 20 33 29 3b lse.{.........assert(sum1.==.3);
13680 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 4a 75 73 74 20 6c 69 6b 65 20 69 66 20 65 78 70 72 .....}......//.Just.like.if.expr
136a0 65 73 73 69 6f 6e 73 2c 20 77 68 69 6c 65 20 6c 6f 6f 70 73 20 63 61 6e 20 61 6c 73 6f 20 74 61 essions,.while.loops.can.also.ta
136c0 6b 65 20 61 6e 20 65 72 72 6f 72 20 75 6e 69 6f 6e 20 61 73 0a 20 20 20 20 2f 2f 20 74 68 65 20 ke.an.error.union.as.....//.the.
136e0 63 6f 6e 64 69 74 69 6f 6e 20 61 6e 64 20 63 61 70 74 75 72 65 20 74 68 65 20 70 61 79 6c 6f 61 condition.and.capture.the.payloa
13700 64 20 6f 72 20 74 68 65 20 65 72 72 6f 72 20 63 6f 64 65 2e 20 57 68 65 6e 20 74 68 65 0a 20 20 d.or.the.error.code..When.the...
13720 20 20 2f 2f 20 63 6f 6e 64 69 74 69 6f 6e 20 72 65 73 75 6c 74 73 20 69 6e 20 61 6e 20 65 72 72 ..//.condition.results.in.an.err
13740 6f 72 20 63 6f 64 65 20 74 68 65 20 65 6c 73 65 20 62 72 61 6e 63 68 20 69 73 20 65 76 61 6c 75 or.code.the.else.branch.is.evalu
13760 61 74 65 64 20 61 6e 64 0a 20 20 20 20 2f 2f 20 74 68 65 20 6c 6f 6f 70 20 69 73 20 66 69 6e 69 ated.and.....//.the.loop.is.fini
13780 73 68 65 64 2e 0a 20 20 20 20 76 61 72 20 73 75 6d 33 3a 20 75 33 32 20 3d 20 30 3b 0a 20 20 20 shed......var.sum3:.u32.=.0;....
137a0 20 6e 75 6d 62 65 72 73 5f 6c 65 66 74 20 3d 20 33 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 65 76 .numbers_left.=.3;.....while.(ev
137c0 65 6e 74 75 61 6c 6c 79 45 72 72 6f 72 53 65 71 75 65 6e 63 65 28 29 29 20 7c 76 61 6c 75 65 7c entuallyErrorSequence()).|value|
137e0 20 7b 0a 20 20 20 20 20 20 20 20 73 75 6d 33 20 2b 3d 20 76 61 6c 75 65 3b 0a 20 20 20 20 7d 20 .{.........sum3.+=.value;.....}.
13800 65 6c 73 65 20 7c 65 72 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 65 72 72 20 else.|err|.{.........assert(err.
13820 3d 3d 20 65 72 72 6f 72 2e 52 65 61 63 68 65 64 5a 65 72 6f 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a ==.error.ReachedZero);.....}.}..
13840 76 61 72 20 6e 75 6d 62 65 72 73 5f 6c 65 66 74 3a 20 75 33 32 20 3d 20 75 6e 64 65 66 69 6e 65 var.numbers_left:.u32.=.undefine
13860 64 3b 0a 66 6e 20 65 76 65 6e 74 75 61 6c 6c 79 4e 75 6c 6c 53 65 71 75 65 6e 63 65 28 29 20 2d d;.fn.eventuallyNullSequence().-
13880 26 67 74 3b 20 3f 75 33 32 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 69 66 20 28 6e 75 6d 62 65 &gt;.?u32.{.....return.if.(numbe
138a0 72 73 5f 6c 65 66 74 20 3d 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 6e 75 6c 6c 0a 20 20 20 rs_left.==.0).{.........null....
138c0 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 6e 75 6d 62 65 72 73 5f 6c 65 66 74 20 2d .}.else.{.........numbers_left.-
138e0 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 6e 75 6d 62 65 72 73 5f 6c 65 66 74 0a 20 20 20 20 7d 0a =.1;.........numbers_left.....}.
13900 7d 0a 65 72 72 6f 72 20 52 65 61 63 68 65 64 5a 65 72 6f 3b 0a 66 6e 20 65 76 65 6e 74 75 61 6c }.error.ReachedZero;.fn.eventual
13920 6c 79 45 72 72 6f 72 53 65 71 75 65 6e 63 65 28 29 20 2d 26 67 74 3b 20 25 75 33 32 20 7b 0a 20 lyErrorSequence().-&gt;.%u32.{..
13940 20 20 20 72 65 74 75 72 6e 20 69 66 20 28 6e 75 6d 62 65 72 73 5f 6c 65 66 74 20 3d 3d 20 30 29 ...return.if.(numbers_left.==.0)
13960 20 7b 0a 20 20 20 20 20 20 20 20 65 72 72 6f 72 2e 52 65 61 63 68 65 64 5a 65 72 6f 0a 20 20 20 .{.........error.ReachedZero....
13980 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 6e 75 6d 62 65 72 73 5f 6c 65 66 74 20 2d .}.else.{.........numbers_left.-
139a0 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 6e 75 6d 62 65 72 73 5f 6c 65 66 74 0a 20 20 20 20 7d 0a =.1;.........numbers_left.....}.
139c0 7d 0a 0a 74 65 73 74 20 22 69 6e 6c 69 6e 65 20 77 68 69 6c 65 20 6c 6f 6f 70 22 20 7b 0a 20 20 }..test."inline.while.loop".{...
139e0 20 20 2f 2f 20 57 68 69 6c 65 20 6c 6f 6f 70 73 20 63 61 6e 20 62 65 20 69 6e 6c 69 6e 65 64 2e ..//.While.loops.can.be.inlined.
13a00 20 54 68 69 73 20 63 61 75 73 65 73 20 74 68 65 20 6c 6f 6f 70 20 74 6f 20 62 65 20 75 6e 72 6f .This.causes.the.loop.to.be.unro
13a20 6c 6c 65 64 2c 20 77 68 69 63 68 0a 20 20 20 20 2f 2f 20 61 6c 6c 6f 77 73 20 74 68 65 20 63 6f lled,.which.....//.allows.the.co
13a40 64 65 20 74 6f 20 64 6f 20 73 6f 6d 65 20 74 68 69 6e 67 73 20 77 68 69 63 68 20 6f 6e 6c 79 20 de.to.do.some.things.which.only.
13a60 77 6f 72 6b 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2c 0a 20 20 20 20 2f 2f 20 73 75 63 work.at.compile.time,.....//.suc
13a80 68 20 61 73 20 75 73 65 20 74 79 70 65 73 20 61 73 20 66 69 72 73 74 20 63 6c 61 73 73 20 76 61 h.as.use.types.as.first.class.va
13aa0 6c 75 65 73 2e 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 76 61 72 20 69 20 3d 20 30 3b 0a 20 20 lues......comptime.var.i.=.0;...
13ac0 20 20 76 61 72 20 73 75 6d 3a 20 75 73 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 69 6e 6c 69 6e 65 ..var.sum:.usize.=.0;.....inline
13ae0 20 77 68 69 6c 65 20 28 69 20 26 6c 74 3b 20 33 29 20 3a 20 28 69 20 2b 3d 20 31 29 20 7b 0a 20 .while.(i.&lt;.3).:.(i.+=.1).{..
13b00 20 20 20 20 20 20 20 63 6f 6e 73 74 20 54 20 3d 20 73 77 69 74 63 68 20 28 69 29 20 7b 0a 20 20 .......const.T.=.switch.(i).{...
13b20 20 20 20 20 20 20 20 20 20 20 30 20 3d 26 67 74 3b 20 66 33 32 2c 0a 20 20 20 20 20 20 20 20 20 ..........0.=&gt;.f32,..........
13b40 20 20 20 31 20 3d 26 67 74 3b 20 69 38 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 32 20 3d 26 67 ...1.=&gt;.i8,.............2.=&g
13b60 74 3b 20 62 6f 6f 6c 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 3d 26 67 74 3b 20 t;.bool,.............else.=&gt;.
13b80 75 6e 72 65 61 63 68 61 62 6c 65 2c 0a 20 20 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 20 20 20 20 unreachable,.........};.........
13ba0 73 75 6d 20 2b 3d 20 74 79 70 65 4e 61 6d 65 4c 65 6e 67 74 68 28 54 29 3b 0a 20 20 20 20 7d 0a sum.+=.typeNameLength(T);.....}.
13bc0 20 20 20 20 61 73 73 65 72 74 28 73 75 6d 20 3d 3d 20 39 29 3b 0a 7d 0a 0a 66 6e 20 74 79 70 65 ....assert(sum.==.9);.}..fn.type
13be0 4e 61 6d 65 4c 65 6e 67 74 68 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 29 20 2d 26 67 NameLength(comptime.T:.type).-&g
13c00 74 3b 20 75 73 69 7a 65 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 40 74 79 70 65 4e 61 6d 65 28 t;.usize.{.....return.@typeName(
13c20 54 29 2e 6c 65 6e 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 T).len;.}</code></pre>.......<pr
13c40 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 77 68 69 6c 65 2e 7a e><code.class="sh">$.zig.while.z
13c60 69 67 0a 54 65 73 74 20 31 2f 38 20 77 68 69 6c 65 20 62 61 73 69 63 2e 2e 2e 4f 4b 0a 54 65 73 ig.Test.1/8.while.basic...OK.Tes
13c80 74 20 32 2f 38 20 77 68 69 6c 65 20 62 72 65 61 6b 2e 2e 2e 4f 4b 0a 54 65 73 74 20 33 2f 38 20 t.2/8.while.break...OK.Test.3/8.
13ca0 77 68 69 6c 65 20 63 6f 6e 74 69 6e 75 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 34 2f 38 20 77 68 69 while.continue...OK.Test.4/8.whi
13cc0 6c 65 20 6c 6f 6f 70 20 63 6f 6e 74 69 6e 75 61 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e 2e le.loop.continuation.expression.
13ce0 2e 2e 4f 4b 0a 54 65 73 74 20 35 2f 38 20 77 68 69 6c 65 20 6c 6f 6f 70 20 63 6f 6e 74 69 6e 75 ..OK.Test.5/8.while.loop.continu
13d00 61 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e 2c 20 6d 6f 72 65 20 63 6f 6d 70 6c 69 63 61 74 ation.expression,.more.complicat
13d20 65 64 2e 2e 2e 4f 4b 0a 54 65 73 74 20 36 2f 38 20 77 68 69 6c 65 20 65 6c 73 65 2e 2e 2e 4f 4b ed...OK.Test.6/8.while.else...OK
13d40 0a 54 65 73 74 20 37 2f 38 20 77 68 69 6c 65 20 6e 75 6c 6c 20 63 61 70 74 75 72 65 2e 2e 2e 4f .Test.7/8.while.null.capture...O
13d60 4b 0a 54 65 73 74 20 38 2f 38 20 69 6e 6c 69 6e 65 20 77 68 69 6c 65 20 6c 6f 6f 70 2e 2e 2e 4f K.Test.8/8.inline.while.loop...O
13d80 4b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f K</code></pre>.......<p>See.also
13da0 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 :</p>.......<ul>.........<li><a.
13dc0 68 72 65 66 3d 22 23 69 66 22 3e 69 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c href="#if">if</a></li>.........<
13de0 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6e 75 6c 6c 61 62 6c 65 73 22 3e 4e 75 6c 6c 61 62 6c 65 li><a.href="#nullables">Nullable
13e00 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 s</a></li>.........<li><a.href="
13e20 23 65 72 72 6f 72 73 22 3e 45 72 72 6f 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 #errors">Errors</a></li>........
13e40 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d 70 74 69 6d .<li><a.href="#comptime">comptim
13e60 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 e</a></li>.........<li><a.href="
13e80 23 75 6e 72 65 61 63 68 61 62 6c 65 22 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 61 3e 3c 2f 6c #unreachable">unreachable</a></l
13ea0 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 66 6f 72 i>.......</ul>.......<h2.id="for
13ec0 22 3e 66 6f 72 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 ">for</h2>.......<pre><code.clas
13ee0 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 s="zig">const.assert.=.@import("
13f00 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 20 22 66 6f 72 20 62 std").debug.assert;..test."for.b
13f20 61 73 69 63 73 22 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 69 74 65 6d 73 20 3d 20 5b 5d 69 33 32 asics".{.....const.items.=.[]i32
13f40 20 7b 20 34 2c 20 35 2c 20 33 2c 20 34 2c 20 30 20 7d 3b 0a 20 20 20 20 76 61 72 20 73 75 6d 3a .{.4,.5,.3,.4,.0.};.....var.sum:
13f60 20 69 33 32 20 3d 20 30 3b 0a 0a 20 20 20 20 2f 2f 20 46 6f 72 20 6c 6f 6f 70 73 20 69 74 65 72 .i32.=.0;......//.For.loops.iter
13f80 61 74 65 20 6f 76 65 72 20 73 6c 69 63 65 73 20 61 6e 64 20 61 72 72 61 79 73 2e 0a 20 20 20 20 ate.over.slices.and.arrays......
13fa0 66 6f 72 20 28 69 74 65 6d 73 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f for.(items).|value|.{.........//
13fc0 20 42 72 65 61 6b 20 61 6e 64 20 63 6f 6e 74 69 6e 75 65 20 61 72 65 20 73 75 70 70 6f 72 74 65 .Break.and.continue.are.supporte
13fe0 64 2e 0a 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 30 29 20 7b 0a 20 20 20 d..........if.(value.==.0).{....
14000 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 .........continue;.........}....
14020 20 20 20 20 20 73 75 6d 20 2b 3d 20 76 61 6c 75 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 .....sum.+=.value;.....}.....ass
14040 65 72 74 28 73 75 6d 20 3d 3d 20 31 36 29 3b 0a 0a 20 20 20 20 2f 2f 20 54 6f 20 69 74 65 72 61 ert(sum.==.16);......//.To.itera
14060 74 65 20 6f 76 65 72 20 61 20 70 6f 72 74 69 6f 6e 20 6f 66 20 61 20 73 6c 69 63 65 2c 20 72 65 te.over.a.portion.of.a.slice,.re
14080 73 6c 69 63 65 2e 0a 20 20 20 20 66 6f 72 20 28 69 74 65 6d 73 5b 30 2e 2e 31 5d 29 20 7c 76 61 slice......for.(items[0..1]).|va
140a0 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 73 75 6d 20 2b 3d 20 76 61 6c 75 65 3b 0a 20 20 20 lue|.{.........sum.+=.value;....
140c0 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 73 75 6d 20 3d 3d 20 32 30 29 3b 0a 0a 20 20 20 20 2f .}.....assert(sum.==.20);....../
140e0 2f 20 54 6f 20 61 63 63 65 73 73 20 74 68 65 20 69 6e 64 65 78 20 6f 66 20 69 74 65 72 61 74 69 /.To.access.the.index.of.iterati
14100 6f 6e 2c 20 73 70 65 63 69 66 79 20 61 20 73 65 63 6f 6e 64 20 63 61 70 74 75 72 65 20 76 61 6c on,.specify.a.second.capture.val
14120 75 65 2e 0a 20 20 20 20 2f 2f 20 54 68 69 73 20 69 73 20 7a 65 72 6f 2d 69 6e 64 65 78 65 64 2e ue......//.This.is.zero-indexed.
14140 0a 20 20 20 20 76 61 72 20 73 75 6d 32 3a 20 69 33 32 20 3d 20 30 3b 0a 20 20 20 20 66 6f 72 20 .....var.sum2:.i32.=.0;.....for.
14160 28 69 74 65 6d 73 29 20 7c 76 61 6c 75 65 2c 20 69 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 (items).|value,.i|.{.........ass
14180 65 72 74 28 40 74 79 70 65 4f 66 28 69 29 20 3d 3d 20 75 73 69 7a 65 29 3b 0a 20 20 20 20 20 20 ert(@typeOf(i).==.usize);.......
141a0 20 20 73 75 6d 32 20 2b 3d 20 69 33 32 28 69 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65 ..sum2.+=.i32(i);.....}.....asse
141c0 72 74 28 73 75 6d 32 20 3d 3d 20 31 30 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 66 6f 72 20 72 65 66 rt(sum2.==.10);.}..test."for.ref
141e0 65 72 65 6e 63 65 22 20 7b 0a 20 20 20 20 76 61 72 20 69 74 65 6d 73 20 3d 20 5b 5d 69 33 32 20 erence".{.....var.items.=.[]i32.
14200 7b 20 33 2c 20 34 2c 20 32 20 7d 3b 0a 0a 20 20 20 20 2f 2f 20 49 74 65 72 61 74 65 20 6f 76 65 {.3,.4,.2.};......//.Iterate.ove
14220 72 20 74 68 65 20 73 6c 69 63 65 20 62 79 20 72 65 66 65 72 65 6e 63 65 20 62 79 0a 20 20 20 20 r.the.slice.by.reference.by.....
14240 2f 2f 20 73 70 65 63 69 66 79 69 6e 67 20 74 68 61 74 20 74 68 65 20 63 61 70 74 75 72 65 20 76 //.specifying.that.the.capture.v
14260 61 6c 75 65 20 69 73 20 61 20 70 6f 69 6e 74 65 72 2e 0a 20 20 20 20 66 6f 72 20 28 69 74 65 6d alue.is.a.pointer......for.(item
14280 73 29 20 7c 2a 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 2a 76 61 6c 75 65 20 2b 3d 20 s).|*value|.{.........*value.+=.
142a0 31 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 61 73 73 65 72 74 28 69 74 65 6d 73 5b 30 5d 20 3d 3d 1;.....}......assert(items[0].==
142c0 20 34 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 69 74 65 6d 73 5b 31 5d 20 3d 3d 20 35 29 3b 0a .4);.....assert(items[1].==.5);.
142e0 20 20 20 20 61 73 73 65 72 74 28 69 74 65 6d 73 5b 32 5d 20 3d 3d 20 33 29 3b 0a 7d 0a 0a 74 65 ....assert(items[2].==.3);.}..te
14300 73 74 20 22 66 6f 72 20 65 6c 73 65 22 20 7b 0a 20 20 20 20 2f 2f 20 46 6f 72 20 61 6c 6c 6f 77 st."for.else".{.....//.For.allow
14320 73 20 61 6e 20 65 6c 73 65 20 61 74 74 61 63 68 65 64 20 74 6f 20 69 74 2c 20 74 68 65 20 73 61 s.an.else.attached.to.it,.the.sa
14340 6d 65 20 61 73 20 61 20 77 68 69 6c 65 20 6c 6f 6f 70 2e 0a 20 20 20 20 76 61 72 20 69 74 65 6d me.as.a.while.loop......var.item
14360 73 20 3d 20 5b 5d 3f 69 33 32 20 7b 20 33 2c 20 34 2c 20 6e 75 6c 6c 2c 20 35 20 7d 3b 0a 0a 20 s.=.[]?i32.{.3,.4,.null,.5.};...
14380 20 20 20 2f 2f 20 46 6f 72 20 6c 6f 6f 70 73 20 63 61 6e 20 61 6c 73 6f 20 62 65 20 75 73 65 64 ...//.For.loops.can.also.be.used
143a0 20 61 73 20 65 78 70 72 65 73 73 69 6f 6e 73 2e 0a 20 20 20 20 76 61 72 20 73 75 6d 3a 20 69 33 .as.expressions......var.sum:.i3
143c0 32 20 3d 20 30 3b 0a 20 20 20 20 63 6f 6e 73 74 20 72 65 73 75 6c 74 20 3d 20 66 6f 72 20 28 69 2.=.0;.....const.result.=.for.(i
143e0 74 65 6d 73 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 tems).|value|.{.........if.(valu
14400 65 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 20 39 e.==.null).{.............break.9
14420 3b 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 ;.........}.else.{.............s
14440 75 6d 20 2b 3d 20 3f 3f 76 61 6c 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 20 65 um.+=.??value;.........}.....}.e
14460 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 73 75 6d 20 3d 3d 20 37 29 3b 0a lse.{.........assert(sum.==.7);.
14480 20 20 20 20 20 20 20 20 73 75 6d 0a 20 20 20 20 7d 3b 0a 7d 0a 0a 0a 74 65 73 74 20 22 69 6e 6c ........sum.....};.}...test."inl
144a0 69 6e 65 20 66 6f 72 20 6c 6f 6f 70 22 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 6e 75 6d 73 20 3d ine.for.loop".{.....const.nums.=
144c0 20 5b 5d 69 33 32 7b 32 2c 20 34 2c 20 36 7d 3b 0a 20 20 20 20 2f 2f 20 46 6f 72 20 6c 6f 6f 70 .[]i32{2,.4,.6};.....//.For.loop
144e0 73 20 63 61 6e 20 62 65 20 69 6e 6c 69 6e 65 64 2e 20 54 68 69 73 20 63 61 75 73 65 73 20 74 68 s.can.be.inlined..This.causes.th
14500 65 20 6c 6f 6f 70 20 74 6f 20 62 65 20 75 6e 72 6f 6c 6c 65 64 2c 20 77 68 69 63 68 0a 20 20 20 e.loop.to.be.unrolled,.which....
14520 20 2f 2f 20 61 6c 6c 6f 77 73 20 74 68 65 20 63 6f 64 65 20 74 6f 20 64 6f 20 73 6f 6d 65 20 74 .//.allows.the.code.to.do.some.t
14540 68 69 6e 67 73 20 77 68 69 63 68 20 6f 6e 6c 79 20 77 6f 72 6b 20 61 74 20 63 6f 6d 70 69 6c 65 hings.which.only.work.at.compile
14560 20 74 69 6d 65 2c 0a 20 20 20 20 2f 2f 20 73 75 63 68 20 61 73 20 75 73 65 20 74 79 70 65 73 20 .time,.....//.such.as.use.types.
14580 61 73 20 66 69 72 73 74 20 63 6c 61 73 73 20 76 61 6c 75 65 73 2e 0a 20 20 20 20 2f 2f 20 54 68 as.first.class.values......//.Th
145a0 65 20 63 61 70 74 75 72 65 20 76 61 6c 75 65 20 61 6e 64 20 69 74 65 72 61 74 6f 72 20 76 61 6c e.capture.value.and.iterator.val
145c0 75 65 20 6f 66 20 69 6e 6c 69 6e 65 64 20 66 6f 72 20 6c 6f 6f 70 73 20 61 72 65 0a 20 20 20 20 ue.of.inlined.for.loops.are.....
145e0 2f 2f 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6b 6e 6f 77 6e 2e 0a 20 20 20 20 76 61 72 20 73 //.compile-time.known......var.s
14600 75 6d 3a 20 75 73 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 69 6e 6c 69 6e 65 20 66 6f 72 20 28 6e um:.usize.=.0;.....inline.for.(n
14620 75 6d 73 29 20 7c 69 7c 20 7b 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 54 20 3d 20 73 77 69 ums).|i|.{.........const.T.=.swi
14640 74 63 68 20 28 69 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 32 20 3d 26 67 74 3b 20 66 33 tch.(i).{.............2.=&gt;.f3
14660 32 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 34 20 3d 26 67 74 3b 20 69 38 2c 0a 20 20 20 20 20 2,.............4.=&gt;.i8,......
14680 20 20 20 20 20 20 20 36 20 3d 26 67 74 3b 20 62 6f 6f 6c 2c 0a 20 20 20 20 20 20 20 20 20 20 20 .......6.=&gt;.bool,............
146a0 20 65 6c 73 65 20 3d 26 67 74 3b 20 75 6e 72 65 61 63 68 61 62 6c 65 2c 0a 20 20 20 20 20 20 20 .else.=&gt;.unreachable,........
146c0 20 7d 3b 0a 20 20 20 20 20 20 20 20 73 75 6d 20 2b 3d 20 74 79 70 65 4e 61 6d 65 4c 65 6e 67 74 .};.........sum.+=.typeNameLengt
146e0 68 28 54 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 73 75 6d 20 3d 3d 20 39 29 h(T);.....}.....assert(sum.==.9)
14700 3b 0a 7d 0a 0a 66 6e 20 74 79 70 65 4e 61 6d 65 4c 65 6e 67 74 68 28 63 6f 6d 70 74 69 6d 65 20 ;.}..fn.typeNameLength(comptime.
14720 54 3a 20 74 79 70 65 29 20 2d 26 67 74 3b 20 75 73 69 7a 65 20 7b 0a 20 20 20 20 72 65 74 75 72 T:.type).-&gt;.usize.{.....retur
14740 6e 20 40 74 79 70 65 4e 61 6d 65 28 54 29 2e 6c 65 6e 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 n.@typeName(T).len;.}</code></pr
14760 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 e>.......<pre><code.class="sh">$
14780 20 7a 69 67 20 74 65 73 74 20 66 6f 72 2e 7a 69 67 0a 54 65 73 74 20 31 2f 34 20 66 6f 72 20 62 .zig.test.for.zig.Test.1/4.for.b
147a0 61 73 69 63 73 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 2f 34 20 66 6f 72 20 72 65 66 65 72 65 6e 63 asics...OK.Test.2/4.for.referenc
147c0 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 33 2f 34 20 66 6f 72 20 65 6c 73 65 2e 2e 2e 4f 4b 0a 54 65 e...OK.Test.3/4.for.else...OK.Te
147e0 73 74 20 34 2f 34 20 69 6e 6c 69 6e 65 20 66 6f 72 20 6c 6f 6f 70 2e 2e 2e 4f 4b 3c 2f 63 6f 64 st.4/4.inline.for.loop...OK</cod
14800 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a e></pre>.......<p>See.also:</p>.
14820 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 ......<ul>.........<li><a.href="
14840 23 77 68 69 6c 65 22 3e 77 68 69 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c #while">while</a></li>.........<
14860 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d 70 74 69 6d 65 3c li><a.href="#comptime">comptime<
14880 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 61 /a></li>.........<li><a.href="#a
148a0 72 72 61 79 73 22 3e 41 72 72 61 79 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c rrays">Arrays</a></li>.........<
148c0 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 73 6c 69 63 65 73 22 3e 53 6c 69 63 65 73 3c 2f 61 3e 3c li><a.href="#slices">Slices</a><
148e0 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 69 /li>.......</ul>.......<h2.id="i
14900 66 22 3e 69 66 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 f">if</h2>.......<pre><code.clas
14920 73 3d 22 7a 69 67 22 3e 2f 2f 20 49 66 20 65 78 70 72 65 73 73 69 6f 6e 73 20 68 61 76 65 20 74 s="zig">//.If.expressions.have.t
14940 68 72 65 65 20 75 73 65 73 2c 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 74 68 65 20 hree.uses,.corresponding.to.the.
14960 74 68 72 65 65 20 74 79 70 65 73 3a 0a 2f 2f 20 2a 20 62 6f 6f 6c 0a 2f 2f 20 2a 20 3f 54 0a 2f three.types:.//.*.bool.//.*.?T./
14980 2f 20 2a 20 25 54 0a 0a 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 /.*.%T..const.assert.=.@import("
149a0 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 20 22 69 66 20 62 6f std").debug.assert;..test."if.bo
149c0 6f 6c 65 61 6e 22 20 7b 0a 20 20 20 20 2f 2f 20 49 66 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 olean".{.....//.If.expressions.t
149e0 65 73 74 20 62 6f 6f 6c 65 61 6e 20 63 6f 6e 64 69 74 69 6f 6e 73 2e 0a 20 20 20 20 63 6f 6e 73 est.boolean.conditions......cons
14a00 74 20 61 3a 20 75 33 32 20 3d 20 35 3b 0a 20 20 20 20 63 6f 6e 73 74 20 62 3a 20 75 33 32 20 3d t.a:.u32.=.5;.....const.b:.u32.=
14a20 20 34 3b 0a 20 20 20 20 69 66 20 28 61 20 21 3d 20 62 29 20 7b 0a 20 20 20 20 20 20 20 20 61 73 .4;.....if.(a.!=.b).{.........as
14a40 73 65 72 74 28 74 72 75 65 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 61 20 3d 3d 20 sert(true);.....}.else.if.(a.==.
14a60 39 29 20 7b 0a 20 20 20 20 20 20 20 20 75 6e 72 65 61 63 68 61 62 6c 65 0a 20 20 20 20 7d 20 65 9).{.........unreachable.....}.e
14a80 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 75 6e 72 65 61 63 68 61 62 6c 65 0a 20 20 20 20 7d 0a lse.{.........unreachable.....}.
14aa0 0a 20 20 20 20 2f 2f 20 49 66 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 72 65 20 75 73 65 64 20 .....//.If.expressions.are.used.
14ac0 69 6e 73 74 65 61 64 20 6f 66 20 61 20 74 65 72 6e 61 72 79 20 65 78 70 72 65 73 73 69 6f 6e 2e instead.of.a.ternary.expression.
14ae0 0a 20 20 20 20 63 6f 6e 73 74 20 72 65 73 75 6c 74 20 3d 20 69 66 20 28 61 20 21 3d 20 62 29 20 .....const.result.=.if.(a.!=.b).
14b00 34 37 20 65 6c 73 65 20 33 30 38 39 3b 0a 20 20 20 20 61 73 73 65 72 74 28 72 65 73 75 6c 74 20 47.else.3089;.....assert(result.
14b20 3d 3d 20 34 37 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 69 66 20 6e 75 6c 6c 61 62 6c 65 22 20 7b 0a ==.47);.}..test."if.nullable".{.
14b40 20 20 20 20 2f 2f 20 49 66 20 65 78 70 72 65 73 73 69 6f 6e 73 20 74 65 73 74 20 66 6f 72 20 6e ....//.If.expressions.test.for.n
14b60 75 6c 6c 2e 0a 0a 20 20 20 20 63 6f 6e 73 74 20 61 3a 20 3f 75 33 32 20 3d 20 30 3b 0a 20 20 20 ull.......const.a:.?u32.=.0;....
14b80 20 69 66 20 28 61 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 .if.(a).|value|.{.........assert
14ba0 28 76 61 6c 75 65 20 3d 3d 20 30 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 (value.==.0);.....}.else.{......
14bc0 20 20 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 63 6f 6e 73 74 ...unreachable;.....}......const
14be0 20 62 3a 20 3f 75 33 32 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 20 69 66 20 28 62 29 20 7c 76 61 6c .b:.?u32.=.null;.....if.(b).|val
14c00 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 7d ue|.{.........unreachable;.....}
14c20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 74 72 75 65 29 3b 0a 20 20 .else.{.........assert(true);...
14c40 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 54 68 65 20 65 6c 73 65 20 69 73 20 6e 6f 74 20 72 65 71 75 ..}......//.The.else.is.not.requ
14c60 69 72 65 64 2e 0a 20 20 20 20 69 66 20 28 61 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 ired......if.(a).|value|.{......
14c80 20 20 20 61 73 73 65 72 74 28 76 61 6c 75 65 20 3d 3d 20 30 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 ...assert(value.==.0);.....}....
14ca0 20 20 2f 2f 20 54 6f 20 74 65 73 74 20 61 67 61 69 6e 73 74 20 6e 75 6c 6c 20 6f 6e 6c 79 2c 20 ..//.To.test.against.null.only,.
14cc0 75 73 65 20 74 68 65 20 62 69 6e 61 72 79 20 65 71 75 61 6c 69 74 79 20 6f 70 65 72 61 74 6f 72 use.the.binary.equality.operator
14ce0 2e 0a 20 20 20 20 69 66 20 28 62 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 61 ......if.(b.==.null).{.........a
14d00 73 73 65 72 74 28 74 72 75 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 41 63 63 65 73 ssert(true);.....}......//.Acces
14d20 73 20 74 68 65 20 76 61 6c 75 65 20 62 79 20 72 65 66 65 72 65 6e 63 65 20 75 73 69 6e 67 20 61 s.the.value.by.reference.using.a
14d40 20 70 6f 69 6e 74 65 72 20 63 61 70 74 75 72 65 2e 0a 20 20 20 20 76 61 72 20 63 3a 20 3f 75 33 .pointer.capture......var.c:.?u3
14d60 32 20 3d 20 33 3b 0a 20 20 20 20 69 66 20 28 63 29 20 7c 2a 76 61 6c 75 65 7c 20 7b 0a 20 20 20 2.=.3;.....if.(c).|*value|.{....
14d80 20 20 20 20 20 2a 76 61 6c 75 65 20 3d 20 32 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 28 .....*value.=.2;.....}......if.(
14da0 63 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 76 61 6c 75 c).|value|.{.........assert(valu
14dc0 65 20 3d 3d 20 32 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 75 6e e.==.2);.....}.else.{.........un
14de0 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 65 72 72 6f 72 20 42 61 64 56 61 6c reachable;.....}.}..error.BadVal
14e00 75 65 3b 0a 65 72 72 6f 72 20 4c 65 73 73 42 61 64 56 61 6c 75 65 3b 0a 74 65 73 74 20 22 69 66 ue;.error.LessBadValue;.test."if
14e20 20 65 72 72 6f 72 20 75 6e 69 6f 6e 22 20 7b 0a 20 20 20 20 2f 2f 20 49 66 20 65 78 70 72 65 73 .error.union".{.....//.If.expres
14e40 73 69 6f 6e 73 20 74 65 73 74 20 66 6f 72 20 65 72 72 6f 72 73 2e 0a 20 20 20 20 2f 2f 20 4e 6f sions.test.for.errors......//.No
14e60 74 65 20 74 68 65 20 7c 65 72 72 7c 20 63 61 70 74 75 72 65 20 6f 6e 20 74 68 65 20 65 6c 73 65 te.the.|err|.capture.on.the.else
14e80 2e 0a 0a 20 20 20 20 63 6f 6e 73 74 20 61 3a 20 25 75 33 32 20 3d 20 30 3b 0a 20 20 20 20 69 66 .......const.a:.%u32.=.0;.....if
14ea0 20 28 61 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 76 61 .(a).|value|.{.........assert(va
14ec0 6c 75 65 20 3d 3d 20 30 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7c 65 72 72 7c 20 7b 0a 20 20 lue.==.0);.....}.else.|err|.{...
14ee0 20 20 20 20 20 20 75 6e 72 65 61 63 68 61 62 6c 65 0a 20 20 20 20 7d 0a 0a 20 20 20 20 63 6f 6e ......unreachable.....}......con
14f00 73 74 20 62 3a 20 25 75 33 32 20 3d 20 65 72 72 6f 72 2e 42 61 64 56 61 6c 75 65 3b 0a 20 20 20 st.b:.%u32.=.error.BadValue;....
14f20 20 69 66 20 28 62 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 75 6e 72 65 61 63 .if.(b).|value|.{.........unreac
14f40 68 61 62 6c 65 0a 20 20 20 20 7d 20 65 6c 73 65 20 7c 65 72 72 7c 20 7b 0a 20 20 20 20 20 20 20 hable.....}.else.|err|.{........
14f60 20 61 73 73 65 72 74 28 65 72 72 20 3d 3d 20 65 72 72 6f 72 2e 42 61 64 56 61 6c 75 65 29 3b 0a .assert(err.==.error.BadValue);.
14f80 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 54 68 65 20 65 6c 73 65 20 61 6e 64 20 7c 65 72 72 7c ....}......//.The.else.and.|err|
14fa0 20 63 61 70 74 75 72 65 20 69 73 20 73 74 72 69 63 74 6c 79 20 72 65 71 75 69 72 65 64 2e 0a 20 .capture.is.strictly.required...
14fc0 20 20 20 69 66 20 28 61 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 ...if.(a).|value|.{.........asse
14fe0 72 74 28 76 61 6c 75 65 20 3d 3d 20 30 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7c 5f 7c 20 7b rt(value.==.0);.....}.else.|_|.{
15000 7d 0a 0a 20 20 20 20 2f 2f 20 54 6f 20 63 68 65 63 6b 20 6f 6e 6c 79 20 74 68 65 20 65 72 72 6f }......//.To.check.only.the.erro
15020 72 20 76 61 6c 75 65 2c 20 75 73 65 20 61 6e 20 65 6d 70 74 79 20 62 6c 6f 63 6b 20 65 78 70 72 r.value,.use.an.empty.block.expr
15040 65 73 73 69 6f 6e 2e 0a 20 20 20 20 69 66 20 28 62 29 20 7c 5f 7c 20 7b 7d 20 65 6c 73 65 20 7c ession......if.(b).|_|.{}.else.|
15060 65 72 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 65 72 72 20 3d 3d 20 65 72 72 err|.{.........assert(err.==.err
15080 6f 72 2e 42 61 64 56 61 6c 75 65 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 41 63 63 65 or.BadValue);.....}......//.Acce
150a0 73 73 20 74 68 65 20 76 61 6c 75 65 20 62 79 20 72 65 66 65 72 65 6e 63 65 20 75 73 69 6e 67 20 ss.the.value.by.reference.using.
150c0 61 20 70 6f 69 6e 74 65 72 20 63 61 70 74 75 72 65 2e 0a 20 20 20 20 76 61 72 20 63 3a 20 25 75 a.pointer.capture......var.c:.%u
150e0 33 32 20 3d 20 33 3b 0a 20 20 20 20 69 66 20 28 63 29 20 7c 2a 76 61 6c 75 65 7c 20 7b 0a 20 20 32.=.3;.....if.(c).|*value|.{...
15100 20 20 20 20 20 20 2a 76 61 6c 75 65 20 3d 20 39 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7c 65 72 ......*value.=.9;.....}.else.|er
15120 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 75 6e 72 65 61 63 68 61 62 6c 65 0a 20 20 20 20 7d 0a 0a r|.{.........unreachable.....}..
15140 20 20 20 20 69 66 20 28 63 29 20 7c 76 61 6c 75 65 7c 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 ....if.(c).|value|.{.........ass
15160 65 72 74 28 76 61 6c 75 65 20 3d 3d 20 39 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7c 65 72 72 ert(value.==.9);.....}.else.|err
15180 7c 20 7b 0a 20 20 20 20 20 20 20 20 75 6e 72 65 61 63 68 61 62 6c 65 0a 20 20 20 20 7d 0a 7d 3c |.{.........unreachable.....}.}<
151a0 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c /code></pre>.......<pre><code.cl
151c0 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 74 65 73 74 20 69 66 2e 7a 69 67 0a 54 65 73 74 20 ass="sh">$.zig.test.if.zig.Test.
151e0 31 2f 33 20 69 66 20 62 6f 6f 6c 65 61 6e 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 2f 33 20 69 66 20 1/3.if.boolean...OK.Test.2/3.if.
15200 6e 75 6c 6c 61 62 6c 65 2e 2e 2e 4f 4b 0a 54 65 73 74 20 33 2f 33 20 69 66 20 65 72 72 6f 72 20 nullable...OK.Test.3/3.if.error.
15220 75 6e 69 6f 6e 2e 2e 2e 4f 4b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 union...OK</code></pre>.......<p
15240 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 >See.also:</p>.......<ul>.......
15260 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 6e 75 6c 6c 61 62 6c 65 73 22 3e 4e 75 6c 6c 61 ..<li><a.href="#nullables">Nulla
15280 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 bles</a></li>.........<li><a.hre
152a0 66 3d 22 23 65 72 72 6f 72 73 22 3e 45 72 72 6f 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 f="#errors">Errors</a></li>.....
152c0 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 67 6f 74 6f 22 3e 67 6f 74 6f ..</ul>.......<h2.id="goto">goto
152e0 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 </h2>.......<pre><code.class="zi
15300 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 g">const.assert.=.@import("std")
15320 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 74 65 73 74 20 22 67 6f 74 6f 22 20 7b 0a 20 20 .debug.assert;..test."goto".{...
15340 20 20 76 61 72 20 76 61 6c 75 65 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 67 6f 74 6f 20 6c 61 ..var.value.=.false;.....goto.la
15360 62 65 6c 3b 0a 20 20 20 20 76 61 6c 75 65 20 3d 20 74 72 75 65 3b 0a 0a 6c 61 62 65 6c 3a 0a 20 bel;.....value.=.true;..label:..
15380 20 20 20 61 73 73 65 72 74 28 76 61 6c 75 65 20 3d 3d 20 66 61 6c 73 65 29 3b 0a 7d 0a 3c 2f 63 ...assert(value.==.false);.}.</c
153a0 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 ode></pre>.......<pre><code.clas
153c0 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 74 65 73 74 20 67 6f 74 6f 2e 7a 69 67 0a 54 65 73 74 20 s="sh">$.zig.test.goto.zig.Test.
153e0 31 2f 31 20 67 6f 74 6f 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 3c 70 3e 4e 1/1.goto...OK.</code></pre>.<p>N
15400 6f 74 65 20 74 68 61 74 20 74 68 65 72 65 20 61 72 65 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 ote.that.there.are.<a.href="http
15420 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 7a 69 67 2d 6c 61 6e 67 2f 7a 69 67 2f 69 73 73 75 s://github.com/zig-lang/zig/issu
15440 65 73 2f 33 34 36 22 3e 70 6c 61 6e 73 20 74 6f 20 72 65 6d 6f 76 65 20 67 6f 74 6f 3c 2f 61 3e es/346">plans.to.remove.goto</a>
15460 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 64 65 66 65 72 22 3e 64 65 66 65 72 3c </p>.......<h2.id="defer">defer<
15480 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 /h2>.......<pre><code.class="zig
154a0 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e ">const.assert.=.@import("std").
154c0 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 63 6f 6e 73 74 20 70 72 69 6e 74 66 20 3d 20 40 69 6d debug.assert;.const.printf.=.@im
154e0 70 6f 72 74 28 22 73 74 64 22 29 2e 69 6f 2e 73 74 64 6f 75 74 2e 70 72 69 6e 74 66 3b 0a 0a 2f port("std").io.stdout.printf;../
15500 2f 20 64 65 66 65 72 20 77 69 6c 6c 20 65 78 65 63 75 74 65 20 61 6e 20 65 78 70 72 65 73 73 69 /.defer.will.execute.an.expressi
15520 6f 6e 20 61 74 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 63 6f on.at.the.end.of.the.current.sco
15540 70 65 2e 0a 66 6e 20 64 65 66 65 72 45 78 61 6d 70 6c 65 28 29 20 2d 26 67 74 3b 20 75 73 69 7a pe..fn.deferExample().-&gt;.usiz
15560 65 20 7b 0a 20 20 20 20 76 61 72 20 61 3a 20 75 73 69 7a 65 20 3d 20 31 3b 0a 0a 20 20 20 20 7b e.{.....var.a:.usize.=.1;......{
15580 0a 20 20 20 20 20 20 20 20 64 65 66 65 72 20 61 20 3d 20 32 3b 0a 20 20 20 20 20 20 20 20 61 20 .........defer.a.=.2;.........a.
155a0 3d 20 31 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 73 73 65 72 74 28 61 20 3d 3d 20 32 29 3b 0a 0a =.1;.....}.....assert(a.==.2);..
155c0 20 20 20 20 61 20 3d 20 35 3b 0a 20 20 20 20 61 0a 7d 0a 0a 74 65 73 74 20 22 64 65 66 65 72 20 ....a.=.5;.....a.}..test."defer.
155e0 62 61 73 69 63 73 22 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 64 65 66 65 72 45 78 61 6d 70 6c basics".{.....assert(deferExampl
15600 65 28 29 20 3d 3d 20 35 29 3b 0a 7d 0a 0a 2f 2f 20 49 66 20 6d 75 6c 74 69 70 6c 65 20 64 65 66 e().==.5);.}..//.If.multiple.def
15620 65 72 20 73 74 61 74 65 6d 65 6e 74 73 20 61 72 65 20 73 70 65 63 69 66 69 65 64 2c 20 74 68 65 er.statements.are.specified,.the
15640 79 20 77 69 6c 6c 20 62 65 20 65 78 65 63 75 74 65 64 20 69 6e 0a 2f 2f 20 74 68 65 20 72 65 76 y.will.be.executed.in.//.the.rev
15660 65 72 73 65 20 6f 72 64 65 72 20 74 68 65 79 20 77 65 72 65 20 72 75 6e 2e 0a 66 6e 20 64 65 66 erse.order.they.were.run..fn.def
15680 65 72 55 6e 77 69 6e 64 45 78 61 6d 70 6c 65 28 29 20 7b 0a 20 20 20 20 25 25 70 72 69 6e 74 66 erUnwindExample().{.....%%printf
156a0 28 22 5c 6e 22 29 3b 0a 0a 20 20 20 20 64 65 66 65 72 20 7b 0a 20 20 20 20 20 20 20 20 25 25 70 ("\n");......defer.{.........%%p
156c0 72 69 6e 74 66 28 22 31 20 22 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 64 65 66 65 72 20 7b 0a 20 rintf("1.");.....}.....defer.{..
156e0 20 20 20 20 20 20 20 25 25 70 72 69 6e 74 66 28 22 32 20 22 29 3b 0a 20 20 20 20 7d 0a 20 20 20 .......%%printf("2.");.....}....
15700 20 69 66 20 28 66 61 6c 73 65 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 64 65 66 65 72 73 20 .if.(false).{.........//.defers.
15720 61 72 65 20 6e 6f 74 20 72 75 6e 20 69 66 20 74 68 65 79 20 61 72 65 20 6e 65 76 65 72 20 65 78 are.not.run.if.they.are.never.ex
15740 65 63 75 74 65 64 2e 0a 20 20 20 20 20 20 20 20 64 65 66 65 72 20 7b 0a 20 20 20 20 20 20 20 20 ecuted..........defer.{.........
15760 20 20 20 20 25 25 70 72 69 6e 74 66 28 22 33 20 22 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 ....%%printf("3.");.........}...
15780 20 20 7d 0a 7d 0a 0a 74 65 73 74 20 22 64 65 66 65 72 20 75 6e 77 69 6e 64 69 6e 67 22 20 7b 0a ..}.}..test."defer.unwinding".{.
157a0 20 20 20 20 64 65 66 65 72 55 6e 77 69 6e 64 45 78 61 6d 70 6c 65 28 29 0a 7d 0a 0a 2f 2f 20 54 ....deferUnwindExample().}..//.T
157c0 68 65 20 25 64 65 66 65 72 20 6b 65 79 77 6f 72 64 20 69 73 20 73 69 6d 69 6c 61 72 20 74 6f 20 he.%defer.keyword.is.similar.to.
157e0 64 65 66 65 72 2c 20 62 75 74 20 77 69 6c 6c 20 6f 6e 6c 79 20 65 78 65 63 75 74 65 20 69 66 20 defer,.but.will.only.execute.if.
15800 74 68 65 0a 2f 2f 20 73 63 6f 70 65 20 72 65 74 75 72 6e 73 20 77 69 74 68 20 61 6e 20 65 72 72 the.//.scope.returns.with.an.err
15820 6f 72 2e 0a 2f 2f 0a 2f 2f 20 54 68 69 73 20 69 73 20 65 73 70 65 63 69 61 6c 6c 79 20 75 73 65 or..//.//.This.is.especially.use
15840 66 75 6c 20 69 6e 20 61 6c 6c 6f 77 69 6e 67 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 63 6c ful.in.allowing.a.function.to.cl
15860 65 61 6e 20 75 70 20 70 72 6f 70 65 72 6c 79 0a 2f 2f 20 6f 6e 20 65 72 72 6f 72 2c 20 61 6e 64 ean.up.properly.//.on.error,.and
15880 20 72 65 70 6c 61 63 65 73 20 67 6f 74 6f 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67 20 74 61 .replaces.goto.error.handling.ta
158a0 63 74 69 63 73 20 61 73 20 73 65 65 6e 20 69 6e 20 63 2e 0a 65 72 72 6f 72 20 44 65 66 65 72 45 ctics.as.seen.in.c..error.DeferE
158c0 72 72 6f 72 3b 0a 66 6e 20 64 65 66 65 72 45 72 72 6f 72 45 78 61 6d 70 6c 65 28 69 73 5f 65 72 rror;.fn.deferErrorExample(is_er
158e0 72 6f 72 3a 20 62 6f 6f 6c 29 20 2d 26 67 74 3b 20 25 76 6f 69 64 20 7b 0a 20 20 20 20 25 25 70 ror:.bool).-&gt;.%void.{.....%%p
15900 72 69 6e 74 66 28 22 5c 6e 73 74 61 72 74 20 6f 66 20 66 75 6e 63 74 69 6f 6e 5c 6e 22 29 3b 0a rintf("\nstart.of.function\n");.
15920 0a 20 20 20 20 2f 2f 20 54 68 69 73 20 77 69 6c 6c 20 61 6c 77 61 79 73 20 62 65 20 65 78 65 63 .....//.This.will.always.be.exec
15940 75 74 65 64 20 6f 6e 20 65 78 69 74 0a 20 20 20 20 64 65 66 65 72 20 7b 0a 20 20 20 20 20 20 20 uted.on.exit.....defer.{........
15960 20 25 25 70 72 69 6e 74 66 28 22 65 6e 64 20 6f 66 20 66 75 6e 63 74 69 6f 6e 5c 6e 22 29 3b 0a .%%printf("end.of.function\n");.
15980 20 20 20 20 7d 0a 0a 20 20 20 20 25 64 65 66 65 72 20 7b 0a 20 20 20 20 20 20 20 20 25 25 70 72 ....}......%defer.{.........%%pr
159a0 69 6e 74 66 28 22 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 6e 20 65 72 72 6f 72 21 5c 6e 22 29 3b intf("encountered.an.error!\n");
159c0 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 28 69 73 5f 65 72 72 6f 72 29 20 7b 0a 20 20 20 20 .....}......if.(is_error).{.....
159e0 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 6f 72 2e 44 65 66 65 72 45 72 72 6f 72 3b 0a 20 20 20 ....return.error.DeferError;....
15a00 20 7d 0a 7d 0a 0a 74 65 73 74 20 22 25 64 65 66 65 72 20 75 6e 77 69 6e 64 69 6e 67 22 20 7b 0a .}.}..test."%defer.unwinding".{.
15a20 20 20 20 20 5f 20 3d 20 64 65 66 65 72 45 72 72 6f 72 45 78 61 6d 70 6c 65 28 66 61 6c 73 65 29 ...._.=.deferErrorExample(false)
15a40 3b 0a 20 20 20 20 5f 20 3d 20 64 65 66 65 72 45 72 72 6f 72 45 78 61 6d 70 6c 65 28 74 72 75 65 ;....._.=.deferErrorExample(true
15a60 29 3b 0a 7d 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 );.}.</code></pre>.......<pre><c
15a80 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 74 65 73 74 20 64 65 66 65 72 2e ode.class="sh">$.zig.test.defer.
15aa0 7a 69 67 0a 54 65 73 74 20 31 2f 33 20 64 65 66 65 72 20 62 61 73 69 63 73 2e 2e 2e 4f 4b 0a 54 zig.Test.1/3.defer.basics...OK.T
15ac0 65 73 74 20 32 2f 33 20 64 65 66 65 72 20 75 6e 77 69 6e 64 69 6e 67 2e 2e 2e 0a 32 20 31 20 4f est.2/3.defer.unwinding....2.1.O
15ae0 4b 0a 54 65 73 74 20 33 2f 33 20 25 64 65 66 65 72 20 75 6e 77 69 6e 64 69 6e 67 2e 2e 2e 0a 73 K.Test.3/3.%defer.unwinding....s
15b00 74 61 72 74 20 6f 66 20 66 75 6e 63 74 69 6f 6e 0a 65 6e 64 20 6f 66 20 66 75 6e 63 74 69 6f 6e tart.of.function.end.of.function
15b20 0a 0a 73 74 61 72 74 20 6f 66 20 66 75 6e 63 74 69 6f 6e 0a 65 6e 63 6f 75 6e 74 65 72 65 64 20 ..start.of.function.encountered.
15b40 61 6e 20 65 72 72 6f 72 21 0a 65 6e 64 20 6f 66 20 66 75 6e 63 74 69 6f 6e 0a 4f 4b 0a 3c 2f 63 an.error!.end.of.function.OK.</c
15b60 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 ode></pre>.......<p>See.also:</p
15b80 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 >.......<ul>.........<li><a.href
15ba0 3d 22 23 65 72 72 6f 72 73 22 3e 45 72 72 6f 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 ="#errors">Errors</a></li>......
15bc0 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 75 6e 72 65 61 63 68 61 62 6c 65 .</ul>.......<h2.id="unreachable
15be0 22 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 ">unreachable</h2>.......<p>....
15c00 20 20 20 49 6e 20 3c 63 6f 64 65 3e 44 65 62 75 67 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 3c 63 6f ...In.<code>Debug</code>.and.<co
15c20 64 65 3e 52 65 6c 65 61 73 65 53 61 66 65 3c 2f 63 6f 64 65 3e 20 6d 6f 64 65 2c 20 61 6e 64 20 de>ReleaseSafe</code>.mode,.and.
15c40 77 68 65 6e 20 75 73 69 6e 67 20 3c 63 6f 64 65 3e 7a 69 67 20 74 65 73 74 3c 2f 63 6f 64 65 3e when.using.<code>zig.test</code>
15c60 2c 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e ,.......<code>unreachable</code>
15c80 20 65 6d 69 74 73 20 61 20 63 61 6c 6c 20 74 6f 20 3c 63 6f 64 65 3e 70 61 6e 69 63 3c 2f 63 6f .emits.a.call.to.<code>panic</co
15ca0 64 65 3e 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 72 65 61 63 68 de>.with.the.message.<code>reach
15cc0 65 64 20 75 6e 72 65 61 63 68 61 62 6c 65 20 63 6f 64 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 ed.unreachable.code</code>......
15ce0 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 20 3c 63 6f 64 65 3e ..</p>.......<p>.......In.<code>
15d00 52 65 6c 65 61 73 65 46 61 73 74 3c 2f 63 6f 64 65 3e 20 6d 6f 64 65 2c 20 74 68 65 20 6f 70 74 ReleaseFast</code>.mode,.the.opt
15d20 69 6d 69 7a 65 72 20 75 73 65 73 20 74 68 65 20 61 73 73 75 6d 70 74 69 6f 6e 20 74 68 61 74 20 imizer.uses.the.assumption.that.
15d40 3c 63 6f 64 65 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e 20 63 6f 64 65 0a 20 20 <code>unreachable</code>.code...
15d60 20 20 20 20 77 69 6c 6c 20 6e 65 76 65 72 20 62 65 20 68 69 74 20 74 6f 20 70 65 72 66 6f 72 6d ....will.never.be.hit.to.perform
15d80 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 2e 20 48 6f 77 65 76 65 72 2c 20 3c 63 6f 64 65 3e 7a .optimizations..However,.<code>z
15da0 69 67 20 74 65 73 74 3c 2f 63 6f 64 65 3e 20 65 76 65 6e 20 69 6e 20 3c 63 6f 64 65 3e 52 65 6c ig.test</code>.even.in.<code>Rel
15dc0 65 61 73 65 46 61 73 74 3c 2f 63 6f 64 65 3e 20 6d 6f 64 65 0a 20 20 20 20 20 20 73 74 69 6c 6c easeFast</code>.mode.......still
15de0 20 65 6d 69 74 73 20 3c 63 6f 64 65 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e 20 .emits.<code>unreachable</code>.
15e00 61 73 20 63 61 6c 6c 73 20 74 6f 20 3c 63 6f 64 65 3e 70 61 6e 69 63 3c 2f 63 6f 64 65 3e 2e 0a as.calls.to.<code>panic</code>..
15e20 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 75 6e 72 65 61 63 68 ......</p>.......<h3.id="unreach
15e40 61 62 6c 65 2d 62 61 73 69 63 73 22 3e 42 61 73 69 63 73 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c able-basics">Basics</h3>.......<
15e60 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2f 2f 20 75 6e 72 65 61 63 68 pre><code.class="zig">//.unreach
15e80 61 62 6c 65 20 69 73 20 75 73 65 64 20 74 6f 20 61 73 73 65 72 74 20 74 68 61 74 20 63 6f 6e 74 able.is.used.to.assert.that.cont
15ea0 72 6f 6c 20 66 6c 6f 77 20 77 69 6c 6c 20 6e 65 76 65 72 20 68 61 70 70 65 6e 20 75 70 6f 6e 20 rol.flow.will.never.happen.upon.
15ec0 61 0a 2f 2f 20 70 61 72 74 69 63 75 6c 61 72 20 6c 6f 63 61 74 69 6f 6e 3a 0a 74 65 73 74 20 22 a.//.particular.location:.test."
15ee0 62 61 73 69 63 20 6d 61 74 68 22 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 78 20 3d 20 31 3b 0a 20 basic.math".{.....const.x.=.1;..
15f00 20 20 20 63 6f 6e 73 74 20 79 20 3d 20 32 3b 0a 20 20 20 20 69 66 20 28 78 20 2b 20 79 20 21 3d ...const.y.=.2;.....if.(x.+.y.!=
15f20 20 33 29 20 7b 0a 20 20 20 20 20 20 20 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 7d .3).{.........unreachable;.....}
15f40 0a 7d 0a 0a 2f 2f 20 69 6e 20 66 61 63 74 2c 20 74 68 69 73 20 69 73 20 68 6f 77 20 61 73 73 65 .}..//.in.fact,.this.is.how.asse
15f60 72 74 20 69 73 20 69 6d 70 6c 65 6d 65 6e 74 65 64 3a 0a 66 6e 20 61 73 73 65 72 74 28 6f 6b 3a rt.is.implemented:.fn.assert(ok:
15f80 20 62 6f 6f 6c 29 20 7b 0a 20 20 20 20 69 66 20 28 21 6f 6b 29 20 75 6e 72 65 61 63 68 61 62 6c .bool).{.....if.(!ok).unreachabl
15fa0 65 3b 20 2f 2f 20 61 73 73 65 72 74 69 6f 6e 20 66 61 69 6c 75 72 65 0a 7d 0a 0a 2f 2f 20 54 68 e;.//.assertion.failure.}..//.Th
15fc0 69 73 20 74 65 73 74 20 77 69 6c 6c 20 66 61 69 6c 20 62 65 63 61 75 73 65 20 77 65 20 68 69 74 is.test.will.fail.because.we.hit
15fe0 20 75 6e 72 65 61 63 68 61 62 6c 65 2e 0a 74 65 73 74 20 22 74 68 69 73 20 77 69 6c 6c 20 66 61 .unreachable..test."this.will.fa
16000 69 6c 22 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 66 61 6c 73 65 29 3b 0a 7d 3c 2f 63 6f 64 65 il".{.....assert(false);.}</code
16020 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 ></pre>.......<pre><code.class="
16040 73 68 22 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 32 sh">$.zig.test.test.zig.Test.1/2
16060 20 62 61 73 69 63 20 6d 61 74 68 2e 2e 2e 4f 4b 0a 54 65 73 74 20 32 2f 32 20 74 68 69 73 20 77 .basic.math...OK.Test.2/2.this.w
16080 69 6c 6c 20 66 61 69 6c 2e 2e 2e 72 65 61 63 68 65 64 20 75 6e 72 65 61 63 68 61 62 6c 65 20 63 ill.fail...reached.unreachable.c
160a0 6f 64 65 0a 74 65 73 74 2e 7a 69 67 3a 31 33 3a 31 34 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 ode.test.zig:13:14:.0x0000000000
160c0 32 30 33 33 61 63 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 20 20 69 66 20 28 21 6f 6b 2033ac.in.???.(test).....if.(!ok
160e0 29 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 20 2f 2f 20 61 73 73 65 72 74 69 6f 6e 20 66 61 69 6c ).unreachable;.//.assertion.fail
16100 75 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 74 65 73 74 2e 7a 69 67 3a 31 38 3a 31 ure..............^.test.zig:18:1
16120 31 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 30 33 32 39 62 20 69 6e 20 3f 3f 3f 20 28 74 65 1:.0x000000000020329b.in.???.(te
16140 73 74 29 0a 20 20 20 20 61 73 73 65 72 74 28 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 st).....assert(false);..........
16160 20 5e 0a 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 74 65 73 74 5f 72 75 6e 6e .^.lib/zig/std/special/test_runn
16180 65 72 2e 7a 69 67 3a 39 3a 32 31 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 31 34 61 37 61 20 er.zig:9:21:.0x0000000000214a7a.
161a0 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 20 20 20 20 20 20 74 65 73 74 5f 66 6e 2e 66 75 in.???.(test).........test_fn.fu
161c0 6e 63 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 6c 69 62 2f nc();.....................^.lib/
161e0 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 36 30 zig/std/special/bootstrap.zig:60
16200 3a 32 31 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 31 34 39 34 37 20 69 6e 20 3f 3f 3f 20 28 :21:.0x0000000000214947.in.???.(
16220 74 65 73 74 29 0a 20 20 20 20 72 65 74 75 72 6e 20 72 6f 6f 74 2e 6d 61 69 6e 28 29 3b 0a 20 20 test).....return.root.main();...
16240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 6c 69 62 2f 7a 69 67 2f 73 74 64 2f ..................^.lib/zig/std/
16260 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 34 37 3a 31 33 3a 20 30 78 30 special/bootstrap.zig:47:13:.0x0
16280 30 30 30 30 30 30 30 30 30 32 31 34 38 30 30 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 000000000214800.in.???.(test)...
162a0 20 20 63 61 6c 6c 4d 61 69 6e 28 61 72 67 63 2c 20 61 72 67 76 2c 20 65 6e 76 70 29 20 25 25 20 ..callMain(argc,.argv,.envp).%%.
162c0 73 74 64 2e 6f 73 2e 70 6f 73 69 78 2e 65 78 69 74 28 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 std.os.posix.exit(1);...........
162e0 20 20 5e 0a 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 ..^.lib/zig/std/special/bootstra
16300 70 2e 7a 69 67 3a 33 34 3a 32 35 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 31 34 37 35 30 20 p.zig:34:25:.0x0000000000214750.
16320 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 20 20 70 6f 73 69 78 43 61 6c 6c 4d 61 69 6e 41 in.???.(test).....posixCallMainA
16340 6e 64 45 78 69 74 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ndExit()........................
16360 20 5e 0a 0a 54 65 73 74 73 20 66 61 69 6c 65 64 2e 20 55 73 65 20 74 68 65 20 66 6f 6c 6c 6f 77 .^..Tests.failed..Use.the.follow
16380 69 6e 67 20 63 6f 6d 6d 61 6e 64 20 74 6f 20 72 65 70 72 6f 64 75 63 65 20 74 68 65 20 66 61 69 ing.command.to.reproduce.the.fai
163a0 6c 75 72 65 3a 0a 2e 2f 74 65 73 74 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 lure:../test</code></pre>.......
163c0 3c 68 33 20 69 64 3d 22 75 6e 72 65 61 63 68 61 62 6c 65 2d 63 6f 6d 70 74 69 6d 65 22 3e 41 74 <h3.id="unreachable-comptime">At
163e0 20 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 .Compile-Time</h3>.......<pre><c
16400 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 ode.class="zig">const.assert.=.@
16420 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 63 6f 6d import("std").debug.assert;..com
16440 70 74 69 6d 65 20 7b 0a 20 20 20 20 2f 2f 20 54 68 65 20 74 79 70 65 20 6f 66 20 75 6e 72 65 61 ptime.{.....//.The.type.of.unrea
16460 63 68 61 62 6c 65 20 69 73 20 6e 6f 72 65 74 75 72 6e 2e 0a 0a 20 20 20 20 2f 2f 20 48 6f 77 65 chable.is.noreturn.......//.Howe
16480 76 65 72 20 74 68 69 73 20 61 73 73 65 72 74 69 6f 6e 20 77 69 6c 6c 20 73 74 69 6c 6c 20 66 61 ver.this.assertion.will.still.fa
164a0 69 6c 20 62 65 63 61 75 73 65 0a 20 20 20 20 2f 2f 20 65 76 61 6c 75 61 74 69 6e 67 20 75 6e 72 il.because.....//.evaluating.unr
164c0 65 61 63 68 61 62 6c 65 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 69 73 20 61 20 63 6f eachable.at.compile-time.is.a.co
164e0 6d 70 69 6c 65 20 65 72 72 6f 72 2e 0a 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 mpile.error.......assert(@typeOf
16500 28 75 6e 72 65 61 63 68 61 62 6c 65 29 20 3d 3d 20 6e 6f 72 65 74 75 72 6e 29 3b 0a 7d 3c 2f 63 (unreachable).==.noreturn);.}</c
16520 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 ode></pre>.......<pre><code.clas
16540 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 2e 7a 69 67 0a s="sh">$.zig.build-obj.test.zig.
16560 74 65 73 74 2e 7a 69 67 3a 39 3a 31 32 3a 20 65 72 72 6f 72 3a 20 75 6e 72 65 61 63 68 61 62 6c test.zig:9:12:.error:.unreachabl
16580 65 20 63 6f 64 65 0a 20 20 20 20 61 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 75 6e 72 65 61 63 e.code.....assert(@typeOf(unreac
165a0 68 61 62 6c 65 29 20 3d 3d 20 6e 6f 72 65 74 75 72 6e 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 hable).==.noreturn);............
165c0 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f ^</code></pre>.......<p>See.also
165e0 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 :</p>.......<ul>.........<li><a.
16600 68 72 65 66 3d 22 23 7a 69 67 2d 74 65 73 74 22 3e 5a 69 67 20 54 65 73 74 3c 2f 61 3e 3c 2f 6c href="#zig-test">Zig.Test</a></l
16620 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 64 2d 6d i>.........<li><a.href="#build-m
16640 6f 64 65 22 3e 42 75 69 6c 64 20 4d 6f 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 ode">Build.Mode</a></li>........
16660 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d 70 74 69 6d .<li><a.href="#comptime">comptim
16680 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 32 e</a></li>.......</ul>.......<h2
166a0 20 69 64 3d 22 6e 6f 72 65 74 75 72 6e 22 3e 6e 6f 72 65 74 75 72 6e 3c 2f 68 32 3e 0a 20 20 20 .id="noreturn">noreturn</h2>....
166c0 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 6e 6f 72 65 74 75 72 6e 3c 2f 63 6f 64 ...<p>.......<code>noreturn</cod
166e0 65 3e 20 69 73 20 74 68 65 20 74 79 70 65 20 6f 66 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 e>.is.the.type.of:.......</p>...
16700 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 62 72 65 61 6b ....<ul>.........<li><code>break
16720 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 </code></li>.........<li><code>c
16740 6f 6e 74 69 6e 75 65 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e ontinue</code></li>.........<li>
16760 3c 63 6f 64 65 3e 67 6f 74 6f 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c <code>goto</code></li>.........<
16780 6c 69 3e 3c 63 6f 64 65 3e 72 65 74 75 72 6e 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 li><code>return</code></li>.....
167a0 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e ....<li><code>unreachable</code>
167c0 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 77 68 69 6c 65 20 28 74 </li>.........<li><code>while.(t
167e0 72 75 65 29 20 7b 7d 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a rue).{}</code></li>.......</ul>.
16800 20 20 20 20 20 20 3c 70 3e 57 68 65 6e 20 72 65 73 6f 6c 76 69 6e 67 20 74 79 70 65 73 20 74 6f ......<p>When.resolving.types.to
16820 67 65 74 68 65 72 2c 20 73 75 63 68 20 61 73 20 3c 63 6f 64 65 3e 69 66 3c 2f 63 6f 64 65 3e 20 gether,.such.as.<code>if</code>.
16840 63 6c 61 75 73 65 73 20 6f 72 20 3c 63 6f 64 65 3e 73 77 69 74 63 68 3c 2f 63 6f 64 65 3e 20 70 clauses.or.<code>switch</code>.p
16860 72 6f 6e 67 73 2c 0a 20 20 20 20 20 20 74 68 65 20 3c 63 6f 64 65 3e 6e 6f 72 65 74 75 72 6e 3c rongs,.......the.<code>noreturn<
16880 2f 63 6f 64 65 3e 20 74 79 70 65 20 69 73 20 63 6f 6d 70 61 74 69 62 6c 65 20 77 69 74 68 20 65 /code>.type.is.compatible.with.e
168a0 76 65 72 79 20 6f 74 68 65 72 20 74 79 70 65 2e 20 43 6f 6e 73 69 64 65 72 3a 0a 20 20 20 20 20 very.other.type..Consider:......
168c0 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 .</p>.......<pre><code.class="zi
168e0 67 22 3e 66 6e 20 66 6f 6f 28 63 6f 6e 64 69 74 69 6f 6e 3a 20 62 6f 6f 6c 2c 20 62 3a 20 75 33 g">fn.foo(condition:.bool,.b:.u3
16900 32 29 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 61 20 3d 20 69 66 20 28 63 6f 6e 64 69 74 69 6f 6e 2).{.....const.a.=.if.(condition
16920 29 20 62 20 65 6c 73 65 20 72 65 74 75 72 6e 3b 0a 20 20 20 20 62 61 72 28 61 29 3b 0a 7d 0a 0a ).b.else.return;.....bar(a);.}..
16940 65 78 74 65 72 6e 20 66 6e 20 62 61 72 28 76 61 6c 75 65 3a 20 75 33 32 29 3b 3c 2f 63 6f 64 65 extern.fn.bar(value:.u32);</code
16960 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 41 6e 6f 74 68 65 72 20 75 73 65 20 63 61 73 ></pre>.......<p>Another.use.cas
16980 65 20 66 6f 72 20 3c 63 6f 64 65 3e 6e 6f 72 65 74 75 72 6e 3c 2f 63 6f 64 65 3e 20 69 73 20 74 e.for.<code>noreturn</code>.is.t
169a0 68 65 20 3c 63 6f 64 65 3e 65 78 69 74 3c 2f 63 6f 64 65 3e 20 66 75 6e 63 74 69 6f 6e 3a 3c 2f he.<code>exit</code>.function:</
169c0 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e p>.......<pre><code.class="zig">
169e0 70 75 62 20 65 78 74 65 72 6e 20 22 6b 65 72 6e 65 6c 33 32 22 20 73 74 64 63 61 6c 6c 63 63 20 pub.extern."kernel32".stdcallcc.
16a00 66 6e 20 45 78 69 74 50 72 6f 63 65 73 73 28 65 78 69 74 5f 63 6f 64 65 3a 20 63 5f 75 69 6e 74 fn.ExitProcess(exit_code:.c_uint
16a20 29 20 2d 26 67 74 3b 20 6e 6f 72 65 74 75 72 6e 3b 0a 0a 66 6e 20 66 6f 6f 28 29 20 7b 0a 20 20 ).-&gt;.noreturn;..fn.foo().{...
16a40 20 20 63 6f 6e 73 74 20 76 61 6c 75 65 20 3d 20 62 61 72 28 29 20 25 25 20 45 78 69 74 50 72 6f ..const.value.=.bar().%%.ExitPro
16a60 63 65 73 73 28 31 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 76 61 6c 75 65 20 3d 3d 20 31 32 33 cess(1);.....assert(value.==.123
16a80 34 29 3b 0a 7d 0a 0a 66 6e 20 62 61 72 28 29 20 2d 26 67 74 3b 20 25 75 33 32 20 7b 0a 20 20 20 4);.}..fn.bar().-&gt;.%u32.{....
16aa0 20 72 65 74 75 72 6e 20 31 32 33 34 3b 0a 7d 0a 0a 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 .return.1234;.}..const.assert.=.
16ac0 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 3c 2f 63 6f @import("std").debug.assert;</co
16ae0 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 66 75 6e 63 74 69 6f 6e de></pre>.......<h2.id="function
16b00 73 22 3e 46 75 6e 63 74 69 6f 6e 73 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f s">Functions</h2>.......<pre><co
16b20 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 de.class="zig">const.assert.=.@i
16b40 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 2f 2f 20 46 mport("std").debug.assert;..//.F
16b60 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 64 65 63 6c 61 72 65 64 20 6c 69 6b 65 20 74 68 69 73 0a unctions.are.declared.like.this.
16b80 2f 2f 20 54 68 65 20 6c 61 73 74 20 65 78 70 72 65 73 73 69 6f 6e 20 69 6e 20 74 68 65 20 66 75 //.The.last.expression.in.the.fu
16ba0 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20 72 65 74 75 72 6e nction.can.be.used.as.the.return
16bc0 20 76 61 6c 75 65 2e 0a 66 6e 20 61 64 64 28 61 3a 20 69 38 2c 20 62 3a 20 69 38 29 20 2d 26 67 .value..fn.add(a:.i8,.b:.i8).-&g
16be0 74 3b 20 69 38 20 7b 0a 20 20 20 20 69 66 20 28 61 20 3d 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 t;.i8.{.....if.(a.==.0).{.......
16c00 20 20 2f 2f 20 59 6f 75 20 63 61 6e 20 73 74 69 6c 6c 20 72 65 74 75 72 6e 20 6d 61 6e 75 61 6c ..//.You.can.still.return.manual
16c20 6c 79 20 69 66 20 6e 65 65 64 65 64 2e 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 3b 0a ly.if.needed..........return.b;.
16c40 20 20 20 20 7d 0a 0a 20 20 20 20 61 20 2b 20 62 0a 7d 0a 0a 2f 2f 20 54 68 65 20 65 78 70 6f 72 ....}......a.+.b.}..//.The.expor
16c60 74 20 73 70 65 63 69 66 69 65 72 20 6d 61 6b 65 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 65 78 74 t.specifier.makes.a.function.ext
16c80 65 72 6e 61 6c 6c 79 20 76 69 73 69 62 6c 65 20 69 6e 20 74 68 65 20 67 65 6e 65 72 61 74 65 64 ernally.visible.in.the.generated
16ca0 0a 2f 2f 20 6f 62 6a 65 63 74 20 66 69 6c 65 2c 20 61 6e 64 20 6d 61 6b 65 73 20 69 74 20 75 73 .//.object.file,.and.makes.it.us
16cc0 65 20 74 68 65 20 43 20 41 42 49 2e 0a 65 78 70 6f 72 74 20 66 6e 20 73 75 62 28 61 3a 20 69 38 e.the.C.ABI..export.fn.sub(a:.i8
16ce0 2c 20 62 3a 20 69 38 29 20 2d 26 67 74 3b 20 69 38 20 7b 20 61 20 2d 20 62 20 7d 0a 0a 2f 2f 20 ,.b:.i8).-&gt;.i8.{.a.-.b.}..//.
16d00 54 68 65 20 65 78 74 65 72 6e 20 73 70 65 63 69 66 69 65 72 20 69 73 20 75 73 65 64 20 74 6f 20 The.extern.specifier.is.used.to.
16d20 64 65 63 6c 61 72 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 declare.a.function.that.will.be.
16d40 72 65 73 6f 6c 76 65 64 0a 2f 2f 20 61 74 20 6c 69 6e 6b 20 74 69 6d 65 2c 20 77 68 65 6e 20 6c resolved.//.at.link.time,.when.l
16d60 69 6e 6b 69 6e 67 20 73 74 61 74 69 63 61 6c 6c 79 2c 20 6f 72 20 61 74 20 72 75 6e 74 69 6d 65 inking.statically,.or.at.runtime
16d80 2c 20 77 68 65 6e 20 6c 69 6e 6b 69 6e 67 0a 2f 2f 20 64 79 6e 61 6d 69 63 61 6c 6c 79 2e 0a 2f ,.when.linking.//.dynamically../
16da0 2f 20 54 68 65 20 73 74 64 63 61 6c 6c 63 63 20 73 70 65 63 69 66 69 65 72 20 63 68 61 6e 67 65 /.The.stdcallcc.specifier.change
16dc0 73 20 74 68 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 6f 66 20 74 68 65 20 s.the.calling.convention.of.the.
16de0 66 75 6e 63 74 69 6f 6e 2e 0a 65 78 74 65 72 6e 20 22 6b 65 72 6e 65 6c 33 32 22 20 73 74 64 63 function..extern."kernel32".stdc
16e00 61 6c 6c 63 63 20 66 6e 20 45 78 69 74 50 72 6f 63 65 73 73 28 65 78 69 74 5f 63 6f 64 65 3a 20 allcc.fn.ExitProcess(exit_code:.
16e20 75 33 32 29 20 2d 26 67 74 3b 20 6e 6f 72 65 74 75 72 6e 3b 0a 65 78 74 65 72 6e 20 22 63 22 20 u32).-&gt;.noreturn;.extern."c".
16e40 66 6e 20 61 74 61 6e 32 28 61 3a 20 66 36 34 2c 20 62 3a 20 66 36 34 29 20 2d 26 67 74 3b 20 66 fn.atan2(a:.f64,.b:.f64).-&gt;.f
16e60 36 34 3b 0a 0a 2f 2f 20 63 6f 6c 64 63 63 20 6d 61 6b 65 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 64;..//.coldcc.makes.a.function.
16e80 75 73 65 20 74 68 65 20 63 6f 6c 64 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f 6e 2e use.the.cold.calling.convention.
16ea0 0a 63 6f 6c 64 63 63 20 66 6e 20 61 62 6f 72 74 28 29 20 2d 26 67 74 3b 20 6e 6f 72 65 74 75 72 .coldcc.fn.abort().-&gt;.noretur
16ec0 6e 20 7b 0a 20 20 20 20 77 68 69 6c 65 20 28 74 72 75 65 29 20 7b 7d 0a 7d 0a 0a 2f 2f 20 6e 61 n.{.....while.(true).{}.}..//.na
16ee0 6b 65 64 63 63 20 6d 61 6b 65 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 6e 6f 74 20 68 61 76 65 20 kedcc.makes.a.function.not.have.
16f00 61 6e 79 20 66 75 6e 63 74 69 6f 6e 20 70 72 6f 6c 6f 67 75 65 20 6f 72 20 65 70 69 6c 6f 67 75 any.function.prologue.or.epilogu
16f20 65 2e 0a 2f 2f 20 54 68 69 73 20 63 61 6e 20 62 65 20 75 73 65 66 75 6c 20 77 68 65 6e 20 69 6e e..//.This.can.be.useful.when.in
16f40 74 65 67 72 61 74 69 6e 67 20 77 69 74 68 20 61 73 73 65 6d 62 6c 79 2e 0a 6e 61 6b 65 64 63 63 tegrating.with.assembly..nakedcc
16f60 20 66 6e 20 5f 73 74 61 72 74 28 29 20 2d 26 67 74 3b 20 6e 6f 72 65 74 75 72 6e 20 7b 0a 20 20 .fn._start().-&gt;.noreturn.{...
16f80 20 20 61 62 6f 72 74 28 29 3b 0a 7d 0a 0a 2f 2f 20 54 68 65 20 70 75 62 20 73 70 65 63 69 66 69 ..abort();.}..//.The.pub.specifi
16fa0 65 72 20 61 6c 6c 6f 77 73 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 62 65 20 76 69 73 er.allows.the.function.to.be.vis
16fc0 69 62 6c 65 20 77 68 65 6e 20 69 6d 70 6f 72 74 69 6e 67 2e 0a 2f 2f 20 41 6e 6f 74 68 65 72 20 ible.when.importing..//.Another.
16fe0 66 69 6c 65 20 63 61 6e 20 75 73 65 20 40 69 6d 70 6f 72 74 20 61 6e 64 20 63 61 6c 6c 20 73 75 file.can.use.@import.and.call.su
17000 62 32 0a 70 75 62 20 66 6e 20 73 75 62 32 28 61 3a 20 69 38 2c 20 62 3a 20 69 38 29 20 2d 26 67 b2.pub.fn.sub2(a:.i8,.b:.i8).-&g
17020 74 3b 20 69 38 20 7b 20 61 20 2d 20 62 20 7d 0a 0a 2f 2f 20 46 75 6e 63 74 69 6f 6e 73 20 63 61 t;.i8.{.a.-.b.}..//.Functions.ca
17040 6e 20 62 65 20 75 73 65 64 20 61 73 20 76 61 6c 75 65 73 20 61 6e 64 20 61 72 65 20 65 71 75 69 n.be.used.as.values.and.are.equi
17060 76 61 6c 65 6e 74 20 74 6f 20 70 6f 69 6e 74 65 72 73 2e 0a 63 6f 6e 73 74 20 63 61 6c 6c 32 5f valent.to.pointers..const.call2_
17080 6f 70 20 3d 20 66 6e 20 28 61 3a 20 69 38 2c 20 62 3a 20 69 38 29 20 2d 26 67 74 3b 20 69 38 3b op.=.fn.(a:.i8,.b:.i8).-&gt;.i8;
170a0 0a 66 6e 20 64 6f 5f 6f 70 28 66 6e 5f 63 61 6c 6c 3a 20 63 61 6c 6c 32 5f 6f 70 2c 20 6f 70 31 .fn.do_op(fn_call:.call2_op,.op1
170c0 3a 20 69 38 2c 20 6f 70 32 3a 20 69 38 29 20 2d 26 67 74 3b 20 69 38 20 7b 0a 20 20 20 20 66 6e :.i8,.op2:.i8).-&gt;.i8.{.....fn
170e0 5f 63 61 6c 6c 28 6f 70 31 2c 20 6f 70 32 29 0a 7d 0a 0a 74 65 73 74 20 22 66 75 6e 63 74 69 6f _call(op1,.op2).}..test."functio
17100 6e 22 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 64 6f 5f 6f 70 28 61 64 64 2c 20 35 2c 20 36 29 n".{.....assert(do_op(add,.5,.6)
17120 20 3d 3d 20 31 31 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 64 6f 5f 6f 70 28 73 75 62 32 2c 20 .==.11);.....assert(do_op(sub2,.
17140 35 2c 20 36 29 20 3d 3d 20 2d 31 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 5,.6).==.-1);.}</code></pre>....
17160 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 74 ...<pre><code.class="sh">$.zig.t
17180 65 73 74 20 66 75 6e 63 74 69 6f 6e 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 66 75 6e 63 74 69 est.function.zig.Test.1/1.functi
171a0 6f 6e 2e 2e 2e 4f 4b 0a 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 46 on...OK.</code></pre>.......<p>F
171c0 75 6e 63 74 69 6f 6e 20 76 61 6c 75 65 73 20 61 72 65 20 6c 69 6b 65 20 70 6f 69 6e 74 65 72 73 unction.values.are.like.pointers
171e0 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 :</p>.......<pre><code.class="zi
17200 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 g">const.assert.=.@import("std")
17220 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 61 .debug.assert;..comptime.{.....a
17240 73 73 65 72 74 28 40 74 79 70 65 4f 66 28 66 6f 6f 29 20 3d 3d 20 66 6e 28 29 29 3b 0a 20 20 20 ssert(@typeOf(foo).==.fn());....
17260 20 61 73 73 65 72 74 28 40 73 69 7a 65 4f 66 28 66 6e 28 29 29 20 3d 3d 20 40 73 69 7a 65 4f 66 .assert(@sizeOf(fn()).==.@sizeOf
17280 28 3f 66 6e 28 29 29 29 3b 0a 7d 0a 0a 66 6e 20 66 6f 6f 28 29 20 7b 20 7d 3c 2f 63 6f 64 65 3e (?fn()));.}..fn.foo().{.}</code>
172a0 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 </pre>.......<pre><code.class="s
172c0 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 2e 7a 69 67 3c 2f 63 6f 64 h">$.zig.build-obj.test.zig</cod
172e0 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 66 75 6e 63 74 69 6f 6e 73 e></pre>.......<h3.id="functions
17300 2d 62 79 2d 76 61 6c 2d 70 61 72 61 6d 73 22 3e 50 61 73 73 2d 62 79 2d 76 61 6c 75 65 20 50 61 -by-val-params">Pass-by-value.Pa
17320 72 61 6d 65 74 65 72 73 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e rameters</h3>.......<p>.......In
17340 20 5a 69 67 2c 20 73 74 72 75 63 74 73 2c 20 75 6e 69 6f 6e 73 2c 20 61 6e 64 20 65 6e 75 6d 73 .Zig,.structs,.unions,.and.enums
17360 20 77 69 74 68 20 70 61 79 6c 6f 61 64 73 20 63 61 6e 6e 6f 74 20 62 65 20 70 61 73 73 65 64 20 .with.payloads.cannot.be.passed.
17380 62 79 20 76 61 6c 75 65 0a 20 20 20 20 20 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 by.value.......to.a.function....
173a0 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d ....</p>.......<pre><code.class=
173c0 22 7a 69 67 22 3e 63 6f 6e 73 74 20 46 6f 6f 20 3d 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 78 "zig">const.Foo.=.struct.{.....x
173e0 3a 20 69 33 32 2c 0a 7d 3b 0a 0a 66 6e 20 62 61 72 28 66 6f 6f 3a 20 46 6f 6f 29 20 7b 7d 0a 0a :.i32,.};..fn.bar(foo:.Foo).{}..
17400 65 78 70 6f 72 74 20 66 6e 20 65 6e 74 72 79 28 29 20 7b 0a 20 20 20 20 62 61 72 28 46 6f 6f 20 export.fn.entry().{.....bar(Foo.
17420 7b 2e 78 20 3d 20 31 32 2c 7d 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 {.x.=.12,});.}</code></pre>.....
17440 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 2e 2f 7a 69 67 20 ..<pre><code.class="sh">$../zig.
17460 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 2e 7a 69 67 20 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 build-obj.test.zig../home/andy/d
17480 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 31 33 3a 20 65 72 72 6f ev/zig/build/test.zig:5:13:.erro
174a0 72 3a 20 74 79 70 65 20 27 46 6f 6f 27 20 69 73 20 6e 6f 74 20 63 6f 70 79 61 62 6c 65 3b 20 63 r:.type.'Foo'.is.not.copyable;.c
174c0 61 6e 6e 6f 74 20 70 61 73 73 20 62 79 20 76 61 6c 75 65 0a 66 6e 20 62 61 72 28 66 6f 6f 3a 20 annot.pass.by.value.fn.bar(foo:.
174e0 46 6f 6f 29 20 7b 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 Foo).{}.............^</code></pr
17500 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 73 74 65 61 64 2c 20 6f 6e 65 20 e>.......<p>.......Instead,.one.
17520 6d 75 73 74 20 75 73 65 20 3c 63 6f 64 65 3e 26 61 6d 70 3b 63 6f 6e 73 74 3c 2f 63 6f 64 65 3e must.use.<code>&amp;const</code>
17540 2e 20 5a 69 67 20 61 6c 6c 6f 77 73 20 69 6d 70 6c 69 63 69 74 6c 79 20 63 61 73 74 69 6e 67 20 ..Zig.allows.implicitly.casting.
17560 73 6f 6d 65 74 68 69 6e 67 0a 20 20 20 20 20 20 74 6f 20 61 20 63 6f 6e 73 74 20 70 6f 69 6e 74 something.......to.a.const.point
17580 65 72 20 74 6f 20 69 74 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e er.to.it:.......</p>.......<pre>
175a0 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 46 6f 6f 20 3d 20 73 74 <code.class="zig">const.Foo.=.st
175c0 72 75 63 74 20 7b 0a 20 20 20 20 78 3a 20 69 33 32 2c 0a 7d 3b 0a 0a 66 6e 20 62 61 72 28 66 6f ruct.{.....x:.i32,.};..fn.bar(fo
175e0 6f 3a 20 26 61 6d 70 3b 63 6f 6e 73 74 20 46 6f 6f 29 20 7b 7d 0a 0a 65 78 70 6f 72 74 20 66 6e o:.&amp;const.Foo).{}..export.fn
17600 20 65 6e 74 72 79 28 29 20 7b 0a 20 20 20 20 62 61 72 28 46 6f 6f 20 7b 2e 78 20 3d 20 31 32 2c .entry().{.....bar(Foo.{.x.=.12,
17620 7d 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 });.}</code></pre>.......<p>....
17640 20 20 20 48 6f 77 65 76 65 72 2c 0a 20 20 20 20 20 20 74 68 65 20 43 20 41 42 49 20 64 6f 65 73 ...However,.......the.C.ABI.does
17660 20 61 6c 6c 6f 77 20 70 61 73 73 69 6e 67 20 73 74 72 75 63 74 73 20 61 6e 64 20 75 6e 69 6f 6e .allow.passing.structs.and.union
17680 73 20 62 79 20 76 61 6c 75 65 2e 20 53 6f 20 66 75 6e 63 74 69 6f 6e 73 20 77 68 69 63 68 0a 20 s.by.value..So.functions.which..
176a0 20 20 20 20 20 75 73 65 20 74 68 65 20 43 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 6e 74 69 6f .....use.the.C.calling.conventio
176c0 6e 20 6d 61 79 20 70 61 73 73 20 73 74 72 75 63 74 73 20 61 6e 64 20 75 6e 69 6f 6e 73 20 62 79 n.may.pass.structs.and.unions.by
176e0 20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d .value........</p>.......<h2.id=
17700 22 65 72 72 6f 72 73 22 3e 45 72 72 6f 72 73 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 "errors">Errors</h2>.......<p>..
17720 20 20 20 20 20 4f 6e 65 20 6f 66 20 74 68 65 20 64 69 73 74 69 6e 67 75 69 73 68 69 6e 67 20 66 .....One.of.the.distinguishing.f
17740 65 61 74 75 72 65 73 20 6f 66 20 5a 69 67 20 69 73 20 69 74 73 20 65 78 63 65 70 74 69 6f 6e 20 eatures.of.Zig.is.its.exception.
17760 68 61 6e 64 6c 69 6e 67 20 73 74 72 61 74 65 67 79 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 handling.strategy........</p>...
17780 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 41 6d 6f 6e 67 20 74 68 65 20 74 6f 70 20 6c 65 76 65 ....<p>.......Among.the.top.leve
177a0 6c 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 61 76 61 69 6c 61 62 6c 65 20 69 73 20 74 68 65 20 l.declarations.available.is.the.
177c0 65 72 72 6f 72 20 76 61 6c 75 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 3a 0a 20 20 20 20 20 20 3c error.value.declaration:.......<
177e0 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 /p>.......<pre><code.class="zig"
17800 3e 65 72 72 6f 72 20 46 69 6c 65 4e 6f 74 46 6f 75 6e 64 3b 0a 65 72 72 6f 72 20 4f 75 74 4f 66 >error.FileNotFound;.error.OutOf
17820 4d 65 6d 6f 72 79 3b 0a 65 72 72 6f 72 20 55 6e 65 78 70 65 63 74 65 64 54 6f 6b 65 6e 3b 3c 2f Memory;.error.UnexpectedToken;</
17840 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 73 code></pre>.......<p>.......Thes
17860 65 20 65 72 72 6f 72 20 76 61 6c 75 65 73 20 61 72 65 20 61 73 73 69 67 6e 65 64 20 61 6e 20 75 e.error.values.are.assigned.an.u
17880 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 20 67 72 65 61 74 65 72 20 74 68 nsigned.integer.value.greater.th
178a0 61 6e 20 30 20 61 74 0a 20 20 20 20 20 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 20 59 6f 75 20 an.0.at.......compile.time..You.
178c0 61 72 65 20 61 6c 6c 6f 77 65 64 20 74 6f 20 64 65 63 6c 61 72 65 20 74 68 65 20 73 61 6d 65 20 are.allowed.to.declare.the.same.
178e0 65 72 72 6f 72 20 76 61 6c 75 65 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 63 65 2c 0a 20 20 20 20 error.value.more.than.once,.....
17900 20 20 61 6e 64 20 69 66 20 79 6f 75 20 64 6f 2c 20 69 74 20 67 65 74 73 20 61 73 73 69 67 6e 65 ..and.if.you.do,.it.gets.assigne
17920 64 20 74 68 65 20 73 61 6d 65 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 d.the.same.integer.value........
17940 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 59 6f 75 20 63 61 6e 20 72 65 66 </p>.......<p>.......You.can.ref
17960 65 72 20 74 6f 20 74 68 65 73 65 20 65 72 72 6f 72 20 76 61 6c 75 65 73 20 77 69 74 68 20 74 68 er.to.these.error.values.with.th
17980 65 20 65 72 72 6f 72 20 6e 61 6d 65 73 70 61 63 65 20 73 75 63 68 20 61 73 0a 20 20 20 20 20 20 e.error.namespace.such.as.......
179a0 3c 63 6f 64 65 3e 65 72 72 6f 72 2e 46 69 6c 65 4e 6f 74 46 6f 75 6e 64 3c 2f 63 6f 64 65 3e 2e <code>error.FileNotFound</code>.
179c0 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 45 61 63 68 .......</p>.......<p>.......Each
179e0 20 65 72 72 6f 72 20 76 61 6c 75 65 20 61 63 72 6f 73 73 20 74 68 65 20 65 6e 74 69 72 65 20 63 .error.value.across.the.entire.c
17a00 6f 6d 70 69 6c 61 74 69 6f 6e 20 75 6e 69 74 20 67 65 74 73 20 61 20 75 6e 69 71 75 65 20 69 6e ompilation.unit.gets.a.unique.in
17a20 74 65 67 65 72 2c 0a 20 20 20 20 20 20 61 6e 64 20 74 68 69 73 20 64 65 74 65 72 6d 69 6e 65 73 teger,.......and.this.determines
17a40 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 70 75 72 65 20 65 72 72 6f 72 20 74 79 70 65 .the.size.of.the.pure.error.type
17a60 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 ........</p>.......<p>.......The
17a80 20 70 75 72 65 20 65 72 72 6f 72 20 74 79 70 65 20 69 73 20 6f 6e 65 20 6f 66 20 74 68 65 20 65 .pure.error.type.is.one.of.the.e
17aa0 72 72 6f 72 20 76 61 6c 75 65 73 2c 20 61 6e 64 20 69 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79 rror.values,.and.in.the.same.way
17ac0 20 74 68 61 74 20 70 6f 69 6e 74 65 72 73 0a 20 20 20 20 20 20 63 61 6e 6e 6f 74 20 62 65 20 6e .that.pointers.......cannot.be.n
17ae0 75 6c 6c 2c 20 61 20 70 75 72 65 20 65 72 72 6f 72 20 69 73 20 61 6c 77 61 79 73 20 61 6e 20 65 ull,.a.pure.error.is.always.an.e
17b00 72 72 6f 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 rror........</p>.......<pre><cod
17b20 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 70 75 72 65 5f 65 72 72 6f 72 20 3d e.class="zig">const.pure_error.=
17b40 20 65 72 72 6f 72 2e 46 69 6c 65 4e 6f 74 46 6f 75 6e 64 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 .error.FileNotFound;</code></pre
17b60 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4d 6f 73 74 20 6f 66 20 74 68 65 20 74 69 >.......<p>.......Most.of.the.ti
17b80 6d 65 20 79 6f 75 20 77 69 6c 6c 20 6e 6f 74 20 66 69 6e 64 20 79 6f 75 72 73 65 6c 66 20 75 73 me.you.will.not.find.yourself.us
17ba0 69 6e 67 20 61 20 70 75 72 65 20 65 72 72 6f 72 20 74 79 70 65 2e 20 49 6e 73 74 65 61 64 2c 0a ing.a.pure.error.type..Instead,.
17bc0 20 20 20 20 20 20 6c 69 6b 65 6c 79 20 79 6f 75 20 77 69 6c 6c 20 62 65 20 75 73 69 6e 67 20 74 ......likely.you.will.be.using.t
17be0 68 65 20 65 72 72 6f 72 20 75 6e 69 6f 6e 20 74 79 70 65 2e 20 54 68 69 73 20 69 73 20 77 68 65 he.error.union.type..This.is.whe
17c00 6e 20 79 6f 75 20 74 61 6b 65 20 61 20 6e 6f 72 6d 61 6c 20 74 79 70 65 2c 0a 20 20 20 20 20 20 n.you.take.a.normal.type,.......
17c20 61 6e 64 20 70 72 65 66 69 78 20 69 74 20 77 69 74 68 20 74 68 65 20 3c 63 6f 64 65 3e 25 3c 2f and.prefix.it.with.the.<code>%</
17c40 63 6f 64 65 3e 20 6f 70 65 72 61 74 6f 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 code>.operator........</p>......
17c60 20 3c 70 3e 0a 20 20 20 20 20 20 48 65 72 65 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 6f .<p>.......Here.is.a.function.to
17c80 20 70 61 72 73 65 20 61 20 73 74 72 69 6e 67 20 69 6e 74 6f 20 61 20 36 34 2d 62 69 74 20 69 6e .parse.a.string.into.a.64-bit.in
17ca0 74 65 67 65 72 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f teger:.......</p>.......<pre><co
17cc0 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 65 72 72 6f 72 20 49 6e 76 61 6c 69 64 43 68 61 72 de.class="zig">error.InvalidChar
17ce0 3b 0a 65 72 72 6f 72 20 4f 76 65 72 66 6c 6f 77 3b 0a 0a 70 75 62 20 66 6e 20 70 61 72 73 65 55 ;.error.Overflow;..pub.fn.parseU
17d00 36 34 28 62 75 66 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 2c 20 72 61 64 69 78 3a 20 75 38 29 20 2d 64(buf:.[]const.u8,.radix:.u8).-
17d20 26 67 74 3b 20 25 75 36 34 20 7b 0a 20 20 20 20 76 61 72 20 78 3a 20 75 36 34 20 3d 20 30 3b 0a &gt;.%u64.{.....var.x:.u64.=.0;.
17d40 0a 20 20 20 20 66 6f 72 20 28 62 75 66 29 20 7c 63 7c 20 7b 0a 20 20 20 20 20 20 20 20 63 6f 6e .....for.(buf).|c|.{.........con
17d60 73 74 20 64 69 67 69 74 20 3d 20 63 68 61 72 54 6f 44 69 67 69 74 28 63 29 3b 0a 0a 20 20 20 20 st.digit.=.charToDigit(c);......
17d80 20 20 20 20 69 66 20 28 64 69 67 69 74 20 26 67 74 3b 3d 20 72 61 64 69 78 29 20 7b 0a 20 20 20 ....if.(digit.&gt;=.radix).{....
17da0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 6f 72 2e 49 6e 76 61 6c 69 64 43 68 61 .........return.error.InvalidCha
17dc0 72 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 78 20 2a 3d 20 72 61 r;.........}..........//.x.*=.ra
17de0 64 69 78 0a 20 20 20 20 20 20 20 20 69 66 20 28 40 6d 75 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 dix.........if.(@mulWithOverflow
17e00 28 75 36 34 2c 20 78 2c 20 72 61 64 69 78 2c 20 26 61 6d 70 3b 78 29 29 20 7b 0a 20 20 20 20 20 (u64,.x,.radix,.&amp;x)).{......
17e20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 6f 72 2e 4f 76 65 72 66 6c 6f 77 3b 0a 20 20 .......return.error.Overflow;...
17e40 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 20 20 2f 2f 20 78 20 2b 3d 20 64 69 67 69 74 0a 20 ......}..........//.x.+=.digit..
17e60 20 20 20 20 20 20 20 69 66 20 28 40 61 64 64 57 69 74 68 4f 76 65 72 66 6c 6f 77 28 75 36 34 2c .......if.(@addWithOverflow(u64,
17e80 20 78 2c 20 64 69 67 69 74 2c 20 26 61 6d 70 3b 78 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 .x,.digit,.&amp;x)).{...........
17ea0 20 20 72 65 74 75 72 6e 20 65 72 72 6f 72 2e 4f 76 65 72 66 6c 6f 77 3b 0a 20 20 20 20 20 20 20 ..return.error.Overflow;........
17ec0 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 78 3b 0a 7d 3c 2f 63 6f 64 65 3e .}.....}......return.x;.}</code>
17ee0 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4e 6f 74 69 63 65 20 74 68 </pre>.......<p>.......Notice.th
17f00 65 20 72 65 74 75 72 6e 20 74 79 70 65 20 69 73 20 3c 63 6f 64 65 3e 25 75 36 34 3c 2f 63 6f 64 e.return.type.is.<code>%u64</cod
17f20 65 3e 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 66 75 6e 63 74 69 6f 6e e>..This.means.that.the.function
17f40 0a 20 20 20 20 20 20 65 69 74 68 65 72 20 72 65 74 75 72 6e 73 20 61 6e 20 75 6e 73 69 67 6e 65 .......either.returns.an.unsigne
17f60 64 20 36 34 20 62 69 74 20 69 6e 74 65 67 65 72 2c 20 6f 72 20 61 6e 20 65 72 72 6f 72 2e 0a 20 d.64.bit.integer,.or.an.error...
17f80 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 57 69 74 68 69 6e .....</p>.......<p>.......Within
17fa0 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 64 65 66 69 6e 69 74 69 6f 6e 2c 20 79 6f 75 20 63 61 .the.function.definition,.you.ca
17fc0 6e 20 73 65 65 20 73 6f 6d 65 20 72 65 74 75 72 6e 20 73 74 61 74 65 6d 65 6e 74 73 20 74 68 61 n.see.some.return.statements.tha
17fe0 74 20 72 65 74 75 72 6e 0a 20 20 20 20 20 20 61 20 70 75 72 65 20 65 72 72 6f 72 2c 20 61 6e 64 t.return.......a.pure.error,.and
18000 20 61 74 20 74 68 65 20 62 6f 74 74 6f 6d 20 61 20 72 65 74 75 72 6e 20 73 74 61 74 65 6d 65 6e .at.the.bottom.a.return.statemen
18020 74 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 61 20 3c 63 6f 64 65 3e 75 36 34 3c 2f 63 6f 64 65 t.that.returns.a.<code>u64</code
18040 3e 2e 0a 20 20 20 20 20 20 42 6f 74 68 20 74 79 70 65 73 20 69 6d 70 6c 69 63 69 74 6c 79 20 63 >........Both.types.implicitly.c
18060 61 73 74 20 74 6f 20 3c 63 6f 64 65 3e 25 75 36 34 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 ast.to.<code>%u64</code>........
18080 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 57 68 61 74 20 69 74 20 6c 6f 6f </p>.......<p>.......What.it.loo
180a0 6b 73 20 6c 69 6b 65 20 74 6f 20 75 73 65 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 76 61 72 ks.like.to.use.this.function.var
180c0 69 65 73 20 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 77 68 61 74 20 79 6f 75 27 72 65 0a 20 20 20 ies.depending.on.what.you're....
180e0 20 20 20 74 72 79 69 6e 67 20 74 6f 20 64 6f 2e 20 4f 6e 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c ...trying.to.do..One.of.the.foll
18100 6f 77 69 6e 67 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 owing:.......</p>.......<ul>....
18120 20 20 20 20 20 3c 6c 69 3e 59 6f 75 20 77 61 6e 74 20 74 6f 20 70 72 6f 76 69 64 65 20 61 20 64 .....<li>You.want.to.provide.a.d
18140 65 66 61 75 6c 74 20 76 61 6c 75 65 20 69 66 20 69 74 20 72 65 74 75 72 6e 65 64 20 61 6e 20 65 efault.value.if.it.returned.an.e
18160 72 72 6f 72 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 49 66 20 69 74 20 72 65 74 rror.</li>.........<li>If.it.ret
18180 75 72 6e 65 64 20 61 6e 20 65 72 72 6f 72 20 74 68 65 6e 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 urned.an.error.then.you.want.to.
181a0 72 65 74 75 72 6e 20 74 68 65 20 73 61 6d 65 20 65 72 72 6f 72 2e 3c 2f 6c 69 3e 0a 20 20 20 20 return.the.same.error.</li>.....
181c0 20 20 20 20 3c 6c 69 3e 59 6f 75 20 6b 6e 6f 77 20 77 69 74 68 20 63 6f 6d 70 6c 65 74 65 20 63 ....<li>You.know.with.complete.c
181e0 65 72 74 61 69 6e 74 79 20 69 74 20 77 69 6c 6c 20 6e 6f 74 20 72 65 74 75 72 6e 20 61 6e 20 65 ertainty.it.will.not.return.an.e
18200 72 72 6f 72 2c 20 73 6f 20 77 61 6e 74 20 74 6f 20 75 6e 63 6f 6e 64 69 74 69 6f 6e 61 6c 6c 79 rror,.so.want.to.unconditionally
18220 20 75 6e 77 72 61 70 20 69 74 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 59 6f 75 .unwrap.it.</li>.........<li>You
18240 20 77 61 6e 74 20 74 6f 20 74 61 6b 65 20 61 20 64 69 66 66 65 72 65 6e 74 20 61 63 74 69 6f 6e .want.to.take.a.different.action
18260 20 66 6f 72 20 65 61 63 68 20 70 6f 73 73 69 62 6c 65 20 65 72 72 6f 72 2e 3c 2f 6c 69 3e 0a 20 .for.each.possible.error.</li>..
18280 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 49 66 20 79 6f 75 20 77 61 6e 74 20 .....</ul>.......<p>If.you.want.
182a0 74 6f 20 70 72 6f 76 69 64 65 20 61 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 2c 20 79 6f 75 20 to.provide.a.default.value,.you.
182c0 63 61 6e 20 75 73 65 20 74 68 65 20 3c 63 6f 64 65 3e 25 25 3c 2f 63 6f 64 65 3e 20 62 69 6e 61 can.use.the.<code>%%</code>.bina
182e0 72 79 20 6f 70 65 72 61 74 6f 72 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 ry.operator:</p>.......<pre><cod
18300 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e 20 64 6f 41 54 68 69 6e 67 28 73 74 72 3a 20 5b e.class="zig">fn.doAThing(str:.[
18320 5d 75 38 29 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 6e 75 6d 62 65 72 20 3d 20 70 61 72 73 65 55 ]u8).{.....const.number.=.parseU
18340 36 34 28 73 74 72 2c 20 31 30 29 20 25 25 20 31 33 3b 0a 20 20 20 20 2f 2f 20 2e 2e 2e 0a 7d 3c 64(str,.10).%%.13;.....//.....}<
18360 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 20 /code></pre>.......<p>.......In.
18380 74 68 69 73 20 63 6f 64 65 2c 20 3c 63 6f 64 65 3e 6e 75 6d 62 65 72 3c 2f 63 6f 64 65 3e 20 77 this.code,.<code>number</code>.w
183a0 69 6c 6c 20 62 65 20 65 71 75 61 6c 20 74 6f 20 74 68 65 20 73 75 63 63 65 73 73 66 75 6c 6c 79 ill.be.equal.to.the.successfully
183c0 20 70 61 72 73 65 64 20 73 74 72 69 6e 67 2c 20 6f 72 0a 20 20 20 20 20 20 61 20 64 65 66 61 75 .parsed.string,.or.......a.defau
183e0 6c 74 20 76 61 6c 75 65 20 6f 66 20 31 33 2e 20 54 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 20 lt.value.of.13..The.type.of.the.
18400 72 69 67 68 74 20 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74 68 65 20 62 69 6e 61 72 79 20 3c 63 right.hand.side.of.the.binary.<c
18420 6f 64 65 3e 25 25 3c 2f 63 6f 64 65 3e 20 6f 70 65 72 61 74 6f 72 20 6d 75 73 74 0a 20 20 20 20 ode>%%</code>.operator.must.....
18440 20 20 6d 61 74 63 68 20 74 68 65 20 75 6e 77 72 61 70 70 65 64 20 65 72 72 6f 72 20 75 6e 69 6f ..match.the.unwrapped.error.unio
18460 6e 20 74 79 70 65 2c 20 6f 72 20 62 65 20 6f 66 20 74 79 70 65 20 3c 63 6f 64 65 3e 6e 6f 72 65 n.type,.or.be.of.type.<code>nore
18480 74 75 72 6e 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 turn</code>........</p>.......<p
184a0 3e 4c 65 74 27 73 20 73 61 79 20 79 6f 75 20 77 61 6e 74 65 64 20 74 6f 20 72 65 74 75 72 6e 20 >Let's.say.you.wanted.to.return.
184c0 74 68 65 20 65 72 72 6f 72 20 69 66 20 79 6f 75 20 67 6f 74 20 6f 6e 65 2c 20 6f 74 68 65 72 77 the.error.if.you.got.one,.otherw
184e0 69 73 65 20 63 6f 6e 74 69 6e 75 65 20 77 69 74 68 20 74 68 65 0a 20 20 20 20 20 20 66 75 6e 63 ise.continue.with.the.......func
18500 74 69 6f 6e 20 6c 6f 67 69 63 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 tion.logic:</p>.......<pre><code
18520 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e 20 64 6f 41 54 68 69 6e 67 28 73 74 72 3a 20 5b 5d .class="zig">fn.doAThing(str:.[]
18540 75 38 29 20 2d 26 67 74 3b 20 25 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 6e 75 6d 62 u8).-&gt;.%void.{.....const.numb
18560 65 72 20 3d 20 70 61 72 73 65 55 36 34 28 73 74 72 2c 20 31 30 29 20 25 25 20 7c 65 72 72 7c 20 er.=.parseU64(str,.10).%%.|err|.
18580 72 65 74 75 72 6e 20 65 72 72 3b 0a 20 20 20 20 2f 2f 20 2e 2e 2e 0a 7d 3c 2f 63 6f 64 65 3e 3c return.err;.....//.....}</code><
185a0 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 20 20 54 68 65 72 65 20 69 73 /pre>.......<p>.........There.is
185c0 20 61 20 73 68 6f 72 74 63 75 74 20 66 6f 72 20 74 68 69 73 2e 20 54 68 65 20 3c 63 6f 64 65 3e .a.shortcut.for.this..The.<code>
185e0 25 72 65 74 75 72 6e 3c 2f 63 6f 64 65 3e 20 65 78 70 72 65 73 73 69 6f 6e 3a 0a 20 20 20 20 20 %return</code>.expression:......
18600 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 .</p>.......<pre><code.class="zi
18620 67 22 3e 66 6e 20 64 6f 41 54 68 69 6e 67 28 73 74 72 3a 20 5b 5d 75 38 29 20 2d 26 67 74 3b 20 g">fn.doAThing(str:.[]u8).-&gt;.
18640 25 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 6e 75 6d 62 65 72 20 3d 20 25 72 65 74 75 %void.{.....const.number.=.%retu
18660 72 6e 20 70 61 72 73 65 55 36 34 28 73 74 72 2c 20 31 30 29 3b 0a 20 20 20 20 2f 2f 20 2e 2e 2e rn.parseU64(str,.10);.....//....
18680 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 .}</code></pre>.......<p>.......
186a0 3c 63 6f 64 65 3e 25 72 65 74 75 72 6e 3c 2f 63 6f 64 65 3e 20 65 76 61 6c 75 61 74 65 73 20 61 <code>%return</code>.evaluates.a
186c0 6e 20 65 72 72 6f 72 20 75 6e 69 6f 6e 20 65 78 70 72 65 73 73 69 6f 6e 2e 20 49 66 20 69 74 20 n.error.union.expression..If.it.
186e0 69 73 20 61 6e 20 65 72 72 6f 72 2c 20 69 74 20 72 65 74 75 72 6e 73 0a 20 20 20 20 20 20 66 72 is.an.error,.it.returns.......fr
18700 6f 6d 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 74 68 65 om.the.current.function.with.the
18720 20 73 61 6d 65 20 65 72 72 6f 72 2e 20 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 20 65 78 70 72 .same.error..Otherwise,.the.expr
18740 65 73 73 69 6f 6e 20 72 65 73 75 6c 74 73 20 69 6e 0a 20 20 20 20 20 20 74 68 65 20 75 6e 77 72 ession.results.in.......the.unwr
18760 61 70 70 65 64 20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 apped.value........</p>.......<p
18780 3e 0a 20 20 20 20 20 20 20 20 4d 61 79 62 65 20 79 6f 75 20 6b 6e 6f 77 20 77 69 74 68 20 63 6f >.........Maybe.you.know.with.co
187a0 6d 70 6c 65 74 65 20 63 65 72 74 61 69 6e 74 79 20 74 68 61 74 20 61 6e 20 65 78 70 72 65 73 73 mplete.certainty.that.an.express
187c0 69 6f 6e 20 77 69 6c 6c 20 6e 65 76 65 72 20 62 65 20 61 6e 20 65 72 72 6f 72 2e 0a 20 20 20 20 ion.will.never.be.an.error......
187e0 20 20 20 20 49 6e 20 74 68 69 73 20 63 61 73 65 20 79 6f 75 20 63 61 6e 20 64 6f 20 74 68 69 73 ....In.this.case.you.can.do.this
18800 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c :.......</p>.......<pre><code.cl
18820 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 6e 75 6d 62 65 72 20 3d 20 70 61 72 73 65 55 36 ass="zig">const.number.=.parseU6
18840 34 28 22 31 32 33 34 22 2c 20 31 30 29 20 25 25 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 3c 2f 63 4("1234",.10).%%.unreachable;</c
18860 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 48 65 72 65 20 ode></pre>.......<p>.......Here.
18880 77 65 20 6b 6e 6f 77 20 66 6f 72 20 73 75 72 65 20 74 68 61 74 20 22 31 32 33 34 22 20 77 69 6c we.know.for.sure.that."1234".wil
188a0 6c 20 70 61 72 73 65 20 73 75 63 63 65 73 73 66 75 6c 6c 79 2e 20 53 6f 20 77 65 20 70 75 74 20 l.parse.successfully..So.we.put.
188c0 74 68 65 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 the.......<code>unreachable</cod
188e0 65 3e 20 76 61 6c 75 65 20 6f 6e 20 74 68 65 20 72 69 67 68 74 20 68 61 6e 64 20 73 69 64 65 2e e>.value.on.the.right.hand.side.
18900 20 3c 63 6f 64 65 3e 75 6e 72 65 61 63 68 61 62 6c 65 3c 2f 63 6f 64 65 3e 20 67 65 6e 65 72 61 .<code>unreachable</code>.genera
18920 74 65 73 0a 20 20 20 20 20 20 61 20 70 61 6e 69 63 20 69 6e 20 44 65 62 75 67 20 61 6e 64 20 52 tes.......a.panic.in.Debug.and.R
18940 65 6c 65 61 73 65 53 61 66 65 20 6d 6f 64 65 73 20 61 6e 64 20 75 6e 64 65 66 69 6e 65 64 20 62 eleaseSafe.modes.and.undefined.b
18960 65 68 61 76 69 6f 72 20 69 6e 20 52 65 6c 65 61 73 65 46 61 73 74 20 6d 6f 64 65 2e 20 53 6f 2c ehavior.in.ReleaseFast.mode..So,
18980 20 77 68 69 6c 65 20 77 65 27 72 65 20 64 65 62 75 67 67 69 6e 67 20 74 68 65 0a 20 20 20 20 20 .while.we're.debugging.the......
189a0 20 61 70 70 6c 69 63 61 74 69 6f 6e 2c 20 69 66 20 74 68 65 72 65 20 3c 65 6d 3e 77 61 73 3c 2f .application,.if.there.<em>was</
189c0 65 6d 3e 20 61 20 73 75 72 70 72 69 73 65 20 65 72 72 6f 72 20 68 65 72 65 2c 20 74 68 65 20 61 em>.a.surprise.error.here,.the.a
189e0 70 70 6c 69 63 61 74 69 6f 6e 20 77 6f 75 6c 64 20 63 72 61 73 68 0a 20 20 20 20 20 20 61 70 70 pplication.would.crash.......app
18a00 72 6f 70 72 69 61 74 65 6c 79 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e ropriately........</p>.......<p>
18a20 41 67 61 69 6e 20 74 68 65 72 65 20 69 73 20 61 20 73 79 6e 74 61 63 74 69 63 20 73 68 6f 72 74 Again.there.is.a.syntactic.short
18a40 63 75 74 20 66 6f 72 20 74 68 69 73 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f cut.for.this:</p>.......<pre><co
18a60 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 6e 75 6d 62 65 72 20 3d 20 25 25 de.class="zig">const.number.=.%%
18a80 70 61 72 73 65 55 36 34 28 22 31 32 33 34 22 2c 20 31 30 29 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 parseU64("1234",.10);</code></pr
18aa0 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 3c 63 6f 64 65 3e 25 25 3c e>.......<p>.......The.<code>%%<
18ac0 2f 63 6f 64 65 3e 20 3c 65 6d 3e 70 72 65 66 69 78 3c 2f 65 6d 3e 20 6f 70 65 72 61 74 6f 72 20 /code>.<em>prefix</em>.operator.
18ae0 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 is.equivalent.to.<code.class="zi
18b00 67 22 3e 65 78 70 72 65 73 73 69 6f 6e 20 25 25 20 7c 65 72 72 7c 20 72 65 74 75 72 6e 20 65 72 g">expression.%%.|err|.return.er
18b20 72 3c 2f 63 6f 64 65 3e 2e 20 49 74 20 75 6e 77 72 61 70 73 20 61 6e 20 65 72 72 6f 72 20 75 6e r</code>..It.unwraps.an.error.un
18b40 69 6f 6e 20 74 79 70 65 2c 0a 20 20 20 20 20 20 61 6e 64 20 70 61 6e 69 63 73 20 69 6e 20 64 65 ion.type,.......and.panics.in.de
18b60 62 75 67 20 6d 6f 64 65 20 69 66 20 74 68 65 20 76 61 6c 75 65 20 77 61 73 20 61 6e 20 65 72 72 bug.mode.if.the.value.was.an.err
18b80 6f 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 46 or........</p>.......<p>.......F
18ba0 69 6e 61 6c 6c 79 2c 20 79 6f 75 20 6d 61 79 20 77 61 6e 74 20 74 6f 20 74 61 6b 65 20 61 20 64 inally,.you.may.want.to.take.a.d
18bc0 69 66 66 65 72 65 6e 74 20 61 63 74 69 6f 6e 20 66 6f 72 20 65 76 65 72 79 20 73 69 74 75 61 74 ifferent.action.for.every.situat
18be0 69 6f 6e 2e 20 46 6f 72 20 74 68 61 74 2c 20 77 65 20 63 6f 6d 62 69 6e 65 0a 20 20 20 20 20 20 ion..For.that,.we.combine.......
18c00 74 68 65 20 3c 63 6f 64 65 3e 69 66 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 3c 63 6f 64 65 3e 73 77 the.<code>if</code>.and.<code>sw
18c20 69 74 63 68 3c 2f 63 6f 64 65 3e 20 65 78 70 72 65 73 73 69 6f 6e 3a 0a 20 20 20 20 20 20 3c 2f itch</code>.expression:.......</
18c40 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e p>.......<pre><code.class="zig">
18c60 66 6e 20 64 6f 41 54 68 69 6e 67 28 73 74 72 3a 20 5b 5d 75 38 29 20 7b 0a 20 20 20 20 69 66 20 fn.doAThing(str:.[]u8).{.....if.
18c80 28 70 61 72 73 65 55 36 34 28 73 74 72 2c 20 31 30 29 29 20 7c 6e 75 6d 62 65 72 7c 20 7b 0a 20 (parseU64(str,.10)).|number|.{..
18ca0 20 20 20 20 20 20 20 64 6f 53 6f 6d 65 74 68 69 6e 67 57 69 74 68 4e 75 6d 62 65 72 28 6e 75 6d .......doSomethingWithNumber(num
18cc0 62 65 72 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7c 65 72 72 7c 20 73 77 69 74 63 68 20 28 65 ber);.....}.else.|err|.switch.(e
18ce0 72 72 29 20 7b 0a 20 20 20 20 20 20 20 20 65 72 72 6f 72 2e 4f 76 65 72 66 6c 6f 77 20 3d 26 67 rr).{.........error.Overflow.=&g
18d00 74 3b 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 68 61 6e 64 6c 65 20 6f 76 65 72 66 t;.{.............//.handle.overf
18d20 6c 6f 77 2e 2e 2e 0a 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 2f 2f 20 77 65 20 low............},.........//.we.
18d40 70 72 6f 6d 69 73 65 20 74 68 61 74 20 49 6e 76 61 6c 69 64 43 68 61 72 20 77 6f 6e 27 74 20 68 promise.that.InvalidChar.won't.h
18d60 61 70 70 65 6e 20 28 6f 72 20 63 72 61 73 68 20 69 6e 20 64 65 62 75 67 20 6d 6f 64 65 20 69 66 appen.(or.crash.in.debug.mode.if
18d80 20 69 74 20 64 6f 65 73 29 0a 20 20 20 20 20 20 20 20 65 72 72 6f 72 2e 49 6e 76 61 6c 69 64 43 .it.does).........error.InvalidC
18da0 68 61 72 20 3d 26 67 74 3b 20 75 6e 72 65 61 63 68 61 62 6c 65 2c 0a 20 20 20 20 7d 0a 7d 3c 2f har.=&gt;.unreachable,.....}.}</
18dc0 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 code></pre>.......<p>.......The.
18de0 6f 74 68 65 72 20 63 6f 6d 70 6f 6e 65 6e 74 20 74 6f 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e other.component.to.error.handlin
18e00 67 20 69 73 20 64 65 66 65 72 20 73 74 61 74 65 6d 65 6e 74 73 2e 0a 20 20 20 20 20 20 49 6e 20 g.is.defer.statements........In.
18e20 61 64 64 69 74 69 6f 6e 20 74 6f 20 61 6e 20 75 6e 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 3c 63 6f addition.to.an.unconditional.<co
18e40 64 65 3e 64 65 66 65 72 3c 2f 63 6f 64 65 3e 2c 20 5a 69 67 20 68 61 73 20 3c 63 6f 64 65 3e 25 de>defer</code>,.Zig.has.<code>%
18e60 64 65 66 65 72 3c 2f 63 6f 64 65 3e 2c 0a 20 20 20 20 20 20 77 68 69 63 68 20 65 76 61 6c 75 61 defer</code>,.......which.evalua
18e80 74 65 73 20 74 68 65 20 64 65 66 65 72 72 65 64 20 65 78 70 72 65 73 73 69 6f 6e 20 6f 6e 20 62 tes.the.deferred.expression.on.b
18ea0 6c 6f 63 6b 20 65 78 69 74 20 70 61 74 68 20 69 66 20 61 6e 64 20 6f 6e 6c 79 20 69 66 0a 20 20 lock.exit.path.if.and.only.if...
18ec0 20 20 20 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 65 64 20 77 69 74 68 20 61 ....the.function.returned.with.a
18ee0 6e 20 65 72 72 6f 72 20 66 72 6f 6d 20 74 68 65 20 62 6c 6f 63 6b 2e 0a 20 20 20 20 20 20 3c 2f n.error.from.the.block........</
18f00 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 45 78 61 6d 70 6c 65 3a 0a 20 20 20 20 p>.......<p>.......Example:.....
18f20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a ..</p>.......<pre><code.class="z
18f40 69 67 22 3e 66 6e 20 63 72 65 61 74 65 46 6f 6f 28 70 61 72 61 6d 3a 20 69 33 32 29 20 2d 26 67 ig">fn.createFoo(param:.i32).-&g
18f60 74 3b 20 25 46 6f 6f 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 66 6f 6f 20 3d 20 25 72 65 74 75 72 t;.%Foo.{.....const.foo.=.%retur
18f80 6e 20 74 72 79 54 6f 41 6c 6c 6f 63 61 74 65 46 6f 6f 28 29 3b 0a 20 20 20 20 2f 2f 20 6e 6f 77 n.tryToAllocateFoo();.....//.now
18fa0 20 77 65 20 68 61 76 65 20 61 6c 6c 6f 63 61 74 65 64 20 66 6f 6f 2e 20 77 65 20 6e 65 65 64 20 .we.have.allocated.foo..we.need.
18fc0 74 6f 20 66 72 65 65 20 69 74 20 69 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 66 61 69 6c 73 to.free.it.if.the.function.fails
18fe0 2e 0a 20 20 20 20 2f 2f 20 62 75 74 20 77 65 20 77 61 6e 74 20 74 6f 20 72 65 74 75 72 6e 20 69 ......//.but.we.want.to.return.i
19000 74 20 69 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 73 75 63 63 65 65 64 73 2e 0a 20 20 20 20 t.if.the.function.succeeds......
19020 25 64 65 66 65 72 20 64 65 61 6c 6c 6f 63 61 74 65 46 6f 6f 28 66 6f 6f 29 3b 0a 0a 20 20 20 20 %defer.deallocateFoo(foo);......
19040 63 6f 6e 73 74 20 74 6d 70 5f 62 75 66 20 3d 20 61 6c 6c 6f 63 61 74 65 54 6d 70 42 75 66 66 65 const.tmp_buf.=.allocateTmpBuffe
19060 72 28 29 20 3f 3f 20 72 65 74 75 72 6e 20 65 72 72 6f 72 2e 4f 75 74 4f 66 4d 65 6d 6f 72 79 3b r().??.return.error.OutOfMemory;
19080 0a 20 20 20 20 2f 2f 20 74 6d 70 5f 62 75 66 20 69 73 20 74 72 75 6c 79 20 61 20 74 65 6d 70 6f .....//.tmp_buf.is.truly.a.tempo
190a0 72 61 72 79 20 72 65 73 6f 75 72 63 65 2c 20 61 6e 64 20 77 65 20 66 6f 72 20 73 75 72 65 20 77 rary.resource,.and.we.for.sure.w
190c0 61 6e 74 20 74 6f 20 63 6c 65 61 6e 20 69 74 20 75 70 0a 20 20 20 20 2f 2f 20 62 65 66 6f 72 65 ant.to.clean.it.up.....//.before
190e0 20 74 68 69 73 20 62 6c 6f 63 6b 20 6c 65 61 76 65 73 20 73 63 6f 70 65 0a 20 20 20 20 64 65 66 .this.block.leaves.scope.....def
19100 65 72 20 64 65 61 6c 6c 6f 63 61 74 65 54 6d 70 42 75 66 66 65 72 28 74 6d 70 5f 62 75 66 29 3b er.deallocateTmpBuffer(tmp_buf);
19120 0a 0a 20 20 20 20 69 66 20 28 70 61 72 61 6d 20 26 67 74 3b 20 31 33 33 37 29 20 72 65 74 75 72 ......if.(param.&gt;.1337).retur
19140 6e 20 65 72 72 6f 72 2e 49 6e 76 61 6c 69 64 50 61 72 61 6d 3b 0a 0a 20 20 20 20 2f 2f 20 68 65 n.error.InvalidParam;......//.he
19160 72 65 20 74 68 65 20 25 64 65 66 65 72 20 77 69 6c 6c 20 6e 6f 74 20 72 75 6e 20 73 69 6e 63 65 re.the.%defer.will.not.run.since
19180 20 77 65 27 72 65 20 72 65 74 75 72 6e 69 6e 67 20 73 75 63 63 65 73 73 20 66 72 6f 6d 20 74 68 .we're.returning.success.from.th
191a0 65 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 20 20 2f 2f 20 62 75 74 20 74 68 65 20 64 65 66 65 72 e.function......//.but.the.defer
191c0 20 77 69 6c 6c 20 72 75 6e 21 0a 20 20 20 20 72 65 74 75 72 6e 20 66 6f 6f 3b 0a 7d 3c 2f 63 6f .will.run!.....return.foo;.}</co
191e0 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 6e 65 de></pre>.......<p>.......The.ne
19200 61 74 20 74 68 69 6e 67 20 61 62 6f 75 74 20 74 68 69 73 20 69 73 20 74 68 61 74 20 79 6f 75 20 at.thing.about.this.is.that.you.
19220 67 65 74 20 72 6f 62 75 73 74 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67 20 77 69 74 68 6f 75 get.robust.error.handling.withou
19240 74 0a 20 20 20 20 20 20 74 68 65 20 76 65 72 62 6f 73 69 74 79 20 61 6e 64 20 63 6f 67 6e 69 74 t.......the.verbosity.and.cognit
19260 69 76 65 20 6f 76 65 72 68 65 61 64 20 6f 66 20 74 72 79 69 6e 67 20 74 6f 20 6d 61 6b 65 20 73 ive.overhead.of.trying.to.make.s
19280 75 72 65 20 65 76 65 72 79 20 65 78 69 74 20 70 61 74 68 0a 20 20 20 20 20 20 69 73 20 63 6f 76 ure.every.exit.path.......is.cov
192a0 65 72 65 64 2e 20 54 68 65 20 64 65 61 6c 6c 6f 63 61 74 69 6f 6e 20 63 6f 64 65 20 69 73 20 61 ered..The.deallocation.code.is.a
192c0 6c 77 61 79 73 20 64 69 72 65 63 74 6c 79 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 68 65 20 61 6c 6c lways.directly.following.the.all
192e0 6f 63 61 74 69 6f 6e 20 63 6f 64 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c ocation.code........</p>.......<
19300 70 3e 0a 20 20 20 20 20 20 41 20 63 6f 75 70 6c 65 20 6f 66 20 6f 74 68 65 72 20 74 69 64 62 69 p>.......A.couple.of.other.tidbi
19320 74 73 20 61 62 6f 75 74 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67 3a 0a 20 20 20 20 20 20 3c ts.about.error.handling:.......<
19340 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 54 68 65 73 65 /p>.......<ul>.........<li>These
19360 20 70 72 69 6d 69 74 69 76 65 73 20 67 69 76 65 20 65 6e 6f 75 67 68 20 65 78 70 72 65 73 73 69 .primitives.give.enough.expressi
19380 76 65 6e 65 73 73 20 74 68 61 74 20 69 74 27 73 20 63 6f 6d 70 6c 65 74 65 6c 79 20 70 72 61 63 veness.that.it's.completely.prac
193a0 74 69 63 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 68 61 76 65 20 66 61 69 6c 69 6e tical.............to.have.failin
193c0 67 20 74 6f 20 63 68 65 63 6b 20 66 6f 72 20 61 6e 20 65 72 72 6f 72 20 62 65 20 61 20 63 6f 6d g.to.check.for.an.error.be.a.com
193e0 70 69 6c 65 20 65 72 72 6f 72 2e 20 49 66 20 79 6f 75 20 72 65 61 6c 6c 79 20 77 61 6e 74 0a 20 pile.error..If.you.really.want..
19400 20 20 20 20 20 20 20 20 20 20 20 74 6f 20 69 67 6e 6f 72 65 20 74 68 65 20 65 72 72 6f 72 2c 20 ...........to.ignore.the.error,.
19420 79 6f 75 20 63 61 6e 20 75 73 65 20 74 68 65 20 3c 63 6f 64 65 3e 25 25 3c 2f 63 6f 64 65 3e 20 you.can.use.the.<code>%%</code>.
19440 70 72 65 66 69 78 20 6f 70 65 72 61 74 6f 72 20 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 prefix.operator.and.............
19460 67 65 74 20 74 68 65 20 61 64 64 65 64 20 62 65 6e 65 66 69 74 20 6f 66 20 63 72 61 73 68 69 6e get.the.added.benefit.of.crashin
19480 67 20 69 6e 20 44 65 62 75 67 20 61 6e 64 20 52 65 6c 65 61 73 65 53 61 66 65 20 6d 6f 64 65 73 g.in.Debug.and.ReleaseSafe.modes
194a0 20 69 66 20 79 6f 75 72 20 61 73 73 75 6d 70 74 69 6f 6e 20 77 61 73 20 77 72 6f 6e 67 2e 0a 20 .if.your.assumption.was.wrong...
194c0 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 .......</li>.........<li>.......
194e0 20 20 20 20 53 69 6e 63 65 20 5a 69 67 20 75 6e 64 65 72 73 74 61 6e 64 73 20 65 72 72 6f 72 20 ....Since.Zig.understands.error.
19500 74 79 70 65 73 2c 20 69 74 20 63 61 6e 20 70 72 65 2d 77 65 69 67 68 74 20 62 72 61 6e 63 68 65 types,.it.can.pre-weight.branche
19520 73 20 69 6e 20 66 61 76 6f 72 20 6f 66 0a 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 73 20 6e s.in.favor.of...........errors.n
19540 6f 74 20 6f 63 63 75 72 69 6e 67 2e 20 4a 75 73 74 20 61 20 73 6d 61 6c 6c 20 6f 70 74 69 6d 69 ot.occuring..Just.a.small.optimi
19560 7a 61 74 69 6f 6e 20 62 65 6e 65 66 69 74 20 74 68 61 74 20 69 73 20 6e 6f 74 20 61 76 61 69 6c zation.benefit.that.is.not.avail
19580 61 62 6c 65 0a 20 20 20 20 20 20 20 20 20 20 69 6e 20 6f 74 68 65 72 20 6c 61 6e 67 75 61 67 65 able...........in.other.language
195a0 73 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 s..........</li>.......</ul>....
195c0 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 ...<p>See.also:</p>.......<ul>..
195e0 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 64 65 66 65 72 22 3e 64 65 66 65 .......<li><a.href="#defer">defe
19600 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 r</a></li>.........<li><a.href="
19620 23 69 66 22 3e 69 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 #if">if</a></li>.........<li><a.
19640 68 72 65 66 3d 22 23 73 77 69 74 63 68 22 3e 73 77 69 74 63 68 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 href="#switch">switch</a></li>..
19660 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 6e 75 6c 6c 61 62 6c .....</ul>.......<h2.id="nullabl
19680 65 73 22 3e 4e 75 6c 6c 61 62 6c 65 73 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 es">Nullables</h2>.......<p>....
196a0 20 20 20 4f 6e 65 20 61 72 65 61 20 74 68 61 74 20 5a 69 67 20 70 72 6f 76 69 64 65 73 20 73 61 ...One.area.that.Zig.provides.sa
196c0 66 65 74 79 20 77 69 74 68 6f 75 74 20 63 6f 6d 70 72 6f 6d 69 73 69 6e 67 20 65 66 66 69 63 69 fety.without.compromising.effici
196e0 65 6e 63 79 20 6f 72 0a 20 20 20 20 20 20 72 65 61 64 61 62 69 6c 69 74 79 20 69 73 20 77 69 74 ency.or.......readability.is.wit
19700 68 20 74 68 65 20 6e 75 6c 6c 61 62 6c 65 20 74 79 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a h.the.nullable.type........</p>.
19720 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 71 75 65 73 74 69 6f 6e 20 6d 61 72 ......<p>.......The.question.mar
19740 6b 20 73 79 6d 62 6f 6c 69 7a 65 73 20 74 68 65 20 6e 75 6c 6c 61 62 6c 65 20 74 79 70 65 2e 20 k.symbolizes.the.nullable.type..
19760 59 6f 75 20 63 61 6e 20 63 6f 6e 76 65 72 74 20 61 20 74 79 70 65 20 74 6f 20 61 20 6e 75 6c 6c You.can.convert.a.type.to.a.null
19780 61 62 6c 65 0a 20 20 20 20 20 20 74 79 70 65 20 62 79 20 70 75 74 74 69 6e 67 20 61 20 71 75 65 able.......type.by.putting.a.que
197a0 73 74 69 6f 6e 20 6d 61 72 6b 20 69 6e 20 66 72 6f 6e 74 20 6f 66 20 69 74 2c 20 6c 69 6b 65 20 stion.mark.in.front.of.it,.like.
197c0 74 68 69 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 this:.......</p>.......<pre><cod
197e0 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2f 2f 20 6e 6f 72 6d 61 6c 20 69 6e 74 65 67 65 72 0a e.class="zig">//.normal.integer.
19800 63 6f 6e 73 74 20 6e 6f 72 6d 61 6c 5f 69 6e 74 3a 20 69 33 32 20 3d 20 31 32 33 34 3b 0a 0a 2f const.normal_int:.i32.=.1234;../
19820 2f 20 6e 75 6c 6c 61 62 6c 65 20 69 6e 74 65 67 65 72 0a 63 6f 6e 73 74 20 6e 75 6c 6c 61 62 6c /.nullable.integer.const.nullabl
19840 65 5f 69 6e 74 3a 20 3f 69 33 32 20 3d 20 35 36 37 38 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e e_int:.?i32.=.5678;</code></pre>
19860 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4e 6f 77 20 74 68 65 20 76 61 72 69 61 62 6c .......<p>.......Now.the.variabl
19880 65 20 3c 63 6f 64 65 3e 6e 75 6c 6c 61 62 6c 65 5f 69 6e 74 3c 2f 63 6f 64 65 3e 20 63 6f 75 6c e.<code>nullable_int</code>.coul
198a0 64 20 62 65 20 61 6e 20 3c 63 6f 64 65 3e 69 33 32 3c 2f 63 6f 64 65 3e 2c 20 6f 72 20 3c 63 6f d.be.an.<code>i32</code>,.or.<co
198c0 64 65 3e 6e 75 6c 6c 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 de>null</code>........</p>......
198e0 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 73 74 65 61 64 20 6f 66 20 69 6e 74 65 67 65 72 73 2c 20 .<p>.......Instead.of.integers,.
19900 6c 65 74 27 73 20 74 61 6c 6b 20 61 62 6f 75 74 20 70 6f 69 6e 74 65 72 73 2e 20 4e 75 6c 6c 20 let's.talk.about.pointers..Null.
19920 72 65 66 65 72 65 6e 63 65 73 20 61 72 65 20 74 68 65 20 73 6f 75 72 63 65 20 6f 66 20 6d 61 6e references.are.the.source.of.man
19940 79 20 72 75 6e 74 69 6d 65 0a 20 20 20 20 20 20 65 78 63 65 70 74 69 6f 6e 73 2c 20 61 6e 64 20 y.runtime.......exceptions,.and.
19960 65 76 65 6e 20 73 74 61 6e 64 20 61 63 63 75 73 65 64 20 6f 66 20 62 65 69 6e 67 0a 20 20 20 20 even.stand.accused.of.being.....
19980 20 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f 77 77 77 2e 6c 75 63 69 64 63 68 61 72 ..<a.href="https://www.lucidchar
199a0 74 2e 63 6f 6d 2f 74 65 63 68 62 6c 6f 67 2f 32 30 31 35 2f 30 38 2f 33 31 2f 74 68 65 2d 77 6f t.com/techblog/2015/08/31/the-wo
199c0 72 73 74 2d 6d 69 73 74 61 6b 65 2d 6f 66 2d 63 6f 6d 70 75 74 65 72 2d 73 63 69 65 6e 63 65 2f rst-mistake-of-computer-science/
199e0 22 3e 74 68 65 20 77 6f 72 73 74 20 6d 69 73 74 61 6b 65 20 6f 66 20 63 6f 6d 70 75 74 65 72 20 ">the.worst.mistake.of.computer.
19a00 73 63 69 65 6e 63 65 3c 2f 61 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 science</a>........</p>.......<p
19a20 3e 5a 69 67 20 64 6f 65 73 20 6e 6f 74 20 68 61 76 65 20 74 68 65 6d 2e 3c 2f 70 3e 0a 20 20 20 >Zig.does.not.have.them.</p>....
19a40 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 73 74 65 61 64 2c 20 79 6f 75 20 63 61 6e 20 75 73 ...<p>.......Instead,.you.can.us
19a60 65 20 61 20 6e 75 6c 6c 61 62 6c 65 20 70 6f 69 6e 74 65 72 2e 20 54 68 69 73 20 73 65 63 72 65 e.a.nullable.pointer..This.secre
19a80 74 6c 79 20 63 6f 6d 70 69 6c 65 73 20 64 6f 77 6e 20 74 6f 20 61 20 6e 6f 72 6d 61 6c 20 70 6f tly.compiles.down.to.a.normal.po
19aa0 69 6e 74 65 72 2c 0a 20 20 20 20 20 20 73 69 6e 63 65 20 77 65 20 6b 6e 6f 77 20 77 65 20 63 61 inter,.......since.we.know.we.ca
19ac0 6e 20 75 73 65 20 30 20 61 73 20 74 68 65 20 6e 75 6c 6c 20 76 61 6c 75 65 20 66 6f 72 20 74 68 n.use.0.as.the.null.value.for.th
19ae0 65 20 6e 75 6c 6c 61 62 6c 65 20 74 79 70 65 2e 20 42 75 74 20 74 68 65 20 63 6f 6d 70 69 6c 65 e.nullable.type..But.the.compile
19b00 72 0a 20 20 20 20 20 20 63 61 6e 20 63 68 65 63 6b 20 79 6f 75 72 20 77 6f 72 6b 20 61 6e 64 20 r.......can.check.your.work.and.
19b20 6d 61 6b 65 20 73 75 72 65 20 79 6f 75 20 64 6f 6e 27 74 20 61 73 73 69 67 6e 20 6e 75 6c 6c 20 make.sure.you.don't.assign.null.
19b40 74 6f 20 73 6f 6d 65 74 68 69 6e 67 20 74 68 61 74 20 63 61 6e 27 74 20 62 65 20 6e 75 6c 6c 2e to.something.that.can't.be.null.
19b60 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 79 70 69 .......</p>.......<p>.......Typi
19b80 63 61 6c 6c 79 20 74 68 65 20 64 6f 77 6e 73 69 64 65 20 6f 66 20 6e 6f 74 20 68 61 76 69 6e 67 cally.the.downside.of.not.having
19ba0 20 6e 75 6c 6c 20 69 73 20 74 68 61 74 20 69 74 20 6d 61 6b 65 73 20 74 68 65 20 63 6f 64 65 20 .null.is.that.it.makes.the.code.
19bc0 6d 6f 72 65 20 76 65 72 62 6f 73 65 20 74 6f 0a 20 20 20 20 20 20 77 72 69 74 65 2e 20 42 75 74 more.verbose.to.......write..But
19be0 2c 20 6c 65 74 27 73 20 63 6f 6d 70 61 72 65 20 73 6f 6d 65 20 65 71 75 69 76 61 6c 65 6e 74 20 ,.let's.compare.some.equivalent.
19c00 43 20 63 6f 64 65 20 61 6e 64 20 5a 69 67 20 63 6f 64 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a C.code.and.Zig.code........</p>.
19c20 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 61 73 6b 3a 20 63 61 6c 6c 20 6d 61 6c 6c 6f ......<p>.......Task:.call.mallo
19c40 63 2c 20 69 66 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 6e 75 6c 6c 2c 20 72 65 74 75 72 6e c,.if.the.result.is.null,.return
19c60 20 6e 75 6c 6c 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 43 20 63 6f 64 .null........</p>.......<p>C.cod
19c80 65 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 63 22 e</p>.......<pre><code.class="c"
19ca0 3e 2f 2f 20 6d 61 6c 6c 6f 63 20 70 72 6f 74 6f 74 79 70 65 20 69 6e 63 6c 75 64 65 64 20 66 6f >//.malloc.prototype.included.fo
19cc0 72 20 72 65 66 65 72 65 6e 63 65 0a 76 6f 69 64 20 2a 6d 61 6c 6c 6f 63 28 73 69 7a 65 5f 74 20 r.reference.void.*malloc(size_t.
19ce0 73 69 7a 65 29 3b 0a 0a 73 74 72 75 63 74 20 46 6f 6f 20 2a 64 6f 5f 61 5f 74 68 69 6e 67 28 76 size);..struct.Foo.*do_a_thing(v
19d00 6f 69 64 29 20 7b 0a 20 20 20 20 63 68 61 72 20 2a 70 74 72 20 3d 20 6d 61 6c 6c 6f 63 28 31 32 oid).{.....char.*ptr.=.malloc(12
19d20 33 34 29 3b 0a 20 20 20 20 69 66 20 28 21 70 74 72 29 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 34);.....if.(!ptr).return.NULL;.
19d40 20 20 20 20 2f 2f 20 2e 2e 2e 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 ....//.....}</code></pre>.......
19d60 3c 70 3e 5a 69 67 20 63 6f 64 65 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 <p>Zig.code</p>.......<pre><code
19d80 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2f 2f 20 6d 61 6c 6c 6f 63 20 70 72 6f 74 6f 74 79 70 65 .class="zig">//.malloc.prototype
19da0 20 69 6e 63 6c 75 64 65 64 20 66 6f 72 20 72 65 66 65 72 65 6e 63 65 0a 65 78 74 65 72 6e 20 66 .included.for.reference.extern.f
19dc0 6e 20 6d 61 6c 6c 6f 63 28 73 69 7a 65 3a 20 73 69 7a 65 5f 74 29 20 2d 26 67 74 3b 20 3f 26 61 n.malloc(size:.size_t).-&gt;.?&a
19de0 6d 70 3b 75 38 3b 0a 0a 66 6e 20 64 6f 41 54 68 69 6e 67 28 29 20 2d 26 67 74 3b 20 3f 26 61 6d mp;u8;..fn.doAThing().-&gt;.?&am
19e00 70 3b 46 6f 6f 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 70 74 72 20 3d 20 6d 61 6c 6c 6f 63 28 31 p;Foo.{.....const.ptr.=.malloc(1
19e20 32 33 34 29 20 3f 3f 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0a 20 20 20 20 2f 2f 20 2e 2e 2e 0a 234).??.return.null;.....//.....
19e40 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 20 }</code></pre>.......<p>........
19e60 20 48 65 72 65 2c 20 5a 69 67 20 69 73 20 61 74 20 6c 65 61 73 74 20 61 73 20 63 6f 6e 76 65 6e .Here,.Zig.is.at.least.as.conven
19e80 69 65 6e 74 2c 20 69 66 20 6e 6f 74 20 6d 6f 72 65 2c 20 74 68 61 6e 20 43 2e 20 41 6e 64 2c 20 ient,.if.not.more,.than.C..And,.
19ea0 74 68 65 20 74 79 70 65 20 6f 66 20 22 70 74 72 22 0a 20 20 20 20 20 20 20 20 69 73 20 3c 63 6f the.type.of."ptr".........is.<co
19ec0 64 65 3e 26 61 6d 70 3b 75 38 3c 2f 63 6f 64 65 3e 20 3c 65 6d 3e 6e 6f 74 3c 2f 65 6d 3e 20 3c de>&amp;u8</code>.<em>not</em>.<
19ee0 63 6f 64 65 3e 3f 26 61 6d 70 3b 75 38 3c 2f 63 6f 64 65 3e 2e 20 54 68 65 20 3c 63 6f 64 65 3e code>?&amp;u8</code>..The.<code>
19f00 3f 3f 3c 2f 63 6f 64 65 3e 20 6f 70 65 72 61 74 6f 72 0a 20 20 20 20 20 20 20 20 75 6e 77 72 61 ??</code>.operator.........unwra
19f20 70 70 65 64 20 74 68 65 20 6e 75 6c 6c 61 62 6c 65 20 74 79 70 65 20 61 6e 64 20 74 68 65 72 65 pped.the.nullable.type.and.there
19f40 66 6f 72 65 20 3c 63 6f 64 65 3e 70 74 72 3c 2f 63 6f 64 65 3e 20 69 73 20 67 75 61 72 61 6e 74 fore.<code>ptr</code>.is.guarant
19f60 65 65 64 20 74 6f 20 62 65 20 6e 6f 6e 2d 6e 75 6c 6c 20 65 76 65 72 79 77 68 65 72 65 0a 20 20 eed.to.be.non-null.everywhere...
19f80 20 20 20 20 20 20 69 74 20 69 73 20 75 73 65 64 20 69 6e 20 74 68 65 20 66 75 6e 63 74 69 6f 6e ......it.is.used.in.the.function
19fa0 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 20 20 54 ........</p>.......<p>.........T
19fc0 68 65 20 6f 74 68 65 72 20 66 6f 72 6d 20 6f 66 20 63 68 65 63 6b 69 6e 67 20 61 67 61 69 6e 73 he.other.form.of.checking.agains
19fe0 74 20 4e 55 4c 4c 20 79 6f 75 20 6d 69 67 68 74 20 73 65 65 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 t.NULL.you.might.see.looks.like.
1a000 74 68 69 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 this:.......</p>.......<pre><cod
1a020 65 20 63 6c 61 73 73 3d 22 63 22 3e 76 6f 69 64 20 64 6f 5f 61 5f 74 68 69 6e 67 28 73 74 72 75 e.class="c">void.do_a_thing(stru
1a040 63 74 20 46 6f 6f 20 2a 66 6f 6f 29 20 7b 0a 20 20 20 20 2f 2f 20 64 6f 20 73 6f 6d 65 20 73 74 ct.Foo.*foo).{.....//.do.some.st
1a060 75 66 66 0a 0a 20 20 20 20 69 66 20 28 66 6f 6f 29 20 7b 0a 20 20 20 20 20 20 20 20 64 6f 5f 73 uff......if.(foo).{.........do_s
1a080 6f 6d 65 74 68 69 6e 67 5f 77 69 74 68 5f 66 6f 6f 28 66 6f 6f 29 3b 0a 20 20 20 20 7d 0a 0a 20 omething_with_foo(foo);.....}...
1a0a0 20 20 20 2f 2f 20 64 6f 20 73 6f 6d 65 20 73 74 75 66 66 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 ...//.do.some.stuff.}</code></pr
1a0c0 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 20 20 49 6e 20 5a 69 67 20 79 6f 75 20 e>.......<p>.........In.Zig.you.
1a0e0 63 61 6e 20 61 63 63 6f 6d 70 6c 69 73 68 20 74 68 65 20 73 61 6d 65 20 74 68 69 6e 67 3a 0a 20 can.accomplish.the.same.thing:..
1a100 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 .....</p>.......<pre><code.class
1a120 3d 22 7a 69 67 22 3e 66 6e 20 64 6f 41 54 68 69 6e 67 28 6e 75 6c 6c 61 62 6c 65 5f 66 6f 6f 3a ="zig">fn.doAThing(nullable_foo:
1a140 20 3f 26 61 6d 70 3b 46 6f 6f 29 20 7b 0a 20 20 20 20 2f 2f 20 64 6f 20 73 6f 6d 65 20 73 74 75 .?&amp;Foo).{.....//.do.some.stu
1a160 66 66 0a 0a 20 20 20 20 69 66 20 28 63 6f 6e 73 74 20 66 6f 6f 20 3f 3d 20 6e 75 6c 6c 61 62 6c ff......if.(const.foo.?=.nullabl
1a180 65 5f 66 6f 6f 29 20 7b 0a 20 20 20 20 20 20 64 6f 53 6f 6d 65 74 68 69 6e 67 57 69 74 68 46 6f e_foo).{.......doSomethingWithFo
1a1a0 6f 28 66 6f 6f 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2f 20 64 6f 20 73 6f 6d 65 20 73 74 o(foo);.....}......//.do.some.st
1a1c0 75 66 66 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 uff.}</code></pre>.......<p>....
1a1e0 20 20 20 4f 6e 63 65 20 61 67 61 69 6e 2c 20 74 68 65 20 6e 6f 74 61 62 6c 65 20 74 68 69 6e 67 ...Once.again,.the.notable.thing
1a200 20 68 65 72 65 20 69 73 20 74 68 61 74 20 69 6e 73 69 64 65 20 74 68 65 20 69 66 20 62 6c 6f 63 .here.is.that.inside.the.if.bloc
1a220 6b 2c 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 66 6f 6f 3c 2f 63 6f 64 65 3e 20 69 73 20 6e 6f 20 k,.......<code>foo</code>.is.no.
1a240 6c 6f 6e 67 65 72 20 61 20 6e 75 6c 6c 61 62 6c 65 20 70 6f 69 6e 74 65 72 2c 20 69 74 20 69 73 longer.a.nullable.pointer,.it.is
1a260 20 61 20 70 6f 69 6e 74 65 72 2c 20 77 68 69 63 68 0a 20 20 20 20 20 20 63 61 6e 6e 6f 74 20 62 .a.pointer,.which.......cannot.b
1a280 65 20 6e 75 6c 6c 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 e.null........</p>.......<p>....
1a2a0 20 20 20 4f 6e 65 20 62 65 6e 65 66 69 74 20 74 6f 20 74 68 69 73 20 69 73 20 74 68 61 74 20 66 ...One.benefit.to.this.is.that.f
1a2c0 75 6e 63 74 69 6f 6e 73 20 77 68 69 63 68 20 74 61 6b 65 20 70 6f 69 6e 74 65 72 73 20 61 73 20 unctions.which.take.pointers.as.
1a2e0 61 72 67 75 6d 65 6e 74 73 20 63 61 6e 0a 20 20 20 20 20 20 62 65 20 61 6e 6e 6f 74 61 74 65 64 arguments.can.......be.annotated
1a300 20 77 69 74 68 20 74 68 65 20 22 6e 6f 6e 6e 75 6c 6c 22 20 61 74 74 72 69 62 75 74 65 20 2d 20 .with.the."nonnull".attribute.-.
1a320 3c 63 6f 64 65 3e 5f 5f 61 74 74 72 69 62 75 74 65 5f 5f 28 28 6e 6f 6e 6e 75 6c 6c 29 29 3c 2f <code>__attribute__((nonnull))</
1a340 63 6f 64 65 3e 20 69 6e 0a 20 20 20 20 20 20 3c 61 20 68 72 65 66 3d 22 68 74 74 70 73 3a 2f 2f code>.in.......<a.href="https://
1a360 67 63 63 2e 67 6e 75 2e 6f 72 67 2f 6f 6e 6c 69 6e 65 64 6f 63 73 2f 67 63 63 2d 34 2e 30 2e 30 gcc.gnu.org/onlinedocs/gcc-4.0.0
1a380 2f 67 63 63 2f 46 75 6e 63 74 69 6f 6e 2d 41 74 74 72 69 62 75 74 65 73 2e 68 74 6d 6c 22 3e 47 /gcc/Function-Attributes.html">G
1a3a0 43 43 3c 2f 61 3e 2e 0a 20 20 20 20 20 20 54 68 65 20 6f 70 74 69 6d 69 7a 65 72 20 63 61 6e 20 CC</a>........The.optimizer.can.
1a3c0 73 6f 6d 65 74 69 6d 65 73 20 6d 61 6b 65 20 62 65 74 74 65 72 20 64 65 63 69 73 69 6f 6e 73 20 sometimes.make.better.decisions.
1a3e0 6b 6e 6f 77 69 6e 67 20 74 68 61 74 20 70 6f 69 6e 74 65 72 20 61 72 67 75 6d 65 6e 74 73 0a 20 knowing.that.pointer.arguments..
1a400 20 20 20 20 20 63 61 6e 6e 6f 74 20 62 65 20 6e 75 6c 6c 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a .....cannot.be.null........</p>.
1a420 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 63 61 73 74 69 6e 67 22 3e 43 61 73 74 69 6e 67 3c 2f ......<h2.id="casting">Casting</
1a440 68 32 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 70 6c 61 69 6e 20 69 6d 70 6c 69 h2>.......<p>TODO:.explain.impli
1a460 63 69 74 20 76 73 20 65 78 70 6c 69 63 69 74 20 63 61 73 74 69 6e 67 3c 2f 70 3e 0a 20 20 20 20 cit.vs.explicit.casting</p>.....
1a480 20 20 3c 70 3e 54 4f 44 4f 3a 20 72 65 73 6f 6c 76 65 20 70 65 65 72 20 74 79 70 65 73 20 62 75 ..<p>TODO:.resolve.peer.types.bu
1a4a0 69 6c 74 69 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 74 72 75 6e 63 61 74 iltin</p>.......<p>TODO:.truncat
1a4c0 65 20 62 75 69 6c 74 69 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 62 69 74 e.builtin</p>.......<p>TODO:.bit
1a4e0 63 61 73 74 20 62 75 69 6c 74 69 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 cast.builtin</p>.......<p>TODO:.
1a500 69 6e 74 20 74 6f 20 70 74 72 20 62 75 69 6c 74 69 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e int.to.ptr.builtin</p>.......<p>
1a520 54 4f 44 4f 3a 20 70 74 72 20 74 6f 20 69 6e 74 20 62 75 69 6c 74 69 6e 3c 2f 70 3e 0a 20 20 20 TODO:.ptr.to.int.builtin</p>....
1a540 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 70 74 72 63 61 73 74 20 62 75 69 6c 74 69 6e 3c 2f 70 3e 0a ...<p>TODO:.ptrcast.builtin</p>.
1a560 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 70 6c 61 69 6e 20 6e 75 6d 62 65 72 20 6c 69 ......<p>TODO:.explain.number.li
1a580 74 65 72 61 6c 73 20 76 73 20 63 6f 6e 63 72 65 74 65 20 74 79 70 65 73 3c 2f 70 3e 0a 20 20 20 terals.vs.concrete.types</p>....
1a5a0 20 20 20 3c 68 32 20 69 64 3d 22 76 6f 69 64 22 3e 76 6f 69 64 3c 2f 68 32 3e 0a 20 20 20 20 20 ...<h2.id="void">void</h2>......
1a5c0 20 3c 70 3e 54 4f 44 4f 3a 20 61 73 73 69 67 6e 69 6e 67 20 76 6f 69 64 20 68 61 73 20 6e 6f 20 .<p>TODO:.assigning.void.has.no.
1a5e0 63 6f 64 65 67 65 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 68 61 73 68 6d codegen</p>.......<p>TODO:.hashm
1a600 61 70 20 77 69 74 68 20 76 6f 69 64 20 62 65 63 6f 6d 65 73 20 61 20 73 65 74 3c 2f 70 3e 0a 20 ap.with.void.becomes.a.set</p>..
1a620 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 64 69 66 66 65 72 65 6e 63 65 20 62 65 74 77 65 65 6e .....<p>TODO:.difference.between
1a640 20 63 5f 76 6f 69 64 20 61 6e 64 20 76 6f 69 64 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f .c_void.and.void</p>.......<p>TO
1a660 44 4f 3a 20 76 6f 69 64 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 72 65 74 75 72 6e 20 76 DO:.void.is.the.default.return.v
1a680 61 6c 75 65 20 6f 66 20 66 75 6e 63 74 69 6f 6e 73 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 alue.of.functions</p>.......<p>T
1a6a0 4f 44 4f 3a 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 71 75 69 72 65 20 61 73 73 69 67 6e 69 6e 67 ODO:.functions.require.assigning
1a6c0 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 32 20 .the.return.value</p>.......<h2.
1a6e0 69 64 3d 22 74 68 69 73 22 3e 74 68 69 73 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 id="this">this</h2>.......<p>TOD
1a700 4f 3a 20 65 78 61 6d 70 6c 65 20 6f 66 20 74 68 69 73 20 72 65 66 65 72 72 69 6e 67 20 74 6f 20 O:.example.of.this.referring.to.
1a720 53 65 6c 66 20 73 74 72 75 63 74 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 Self.struct</p>.......<p>TODO:.e
1a740 78 61 6d 70 6c 65 20 6f 66 20 74 68 69 73 20 72 65 66 65 72 72 69 6e 67 20 74 6f 20 72 65 63 75 xample.of.this.referring.to.recu
1a760 72 73 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f rsion.function</p>.......<p>TODO
1a780 3a 20 65 78 61 6d 70 6c 65 20 6f 66 20 74 68 69 73 20 72 65 66 65 72 72 69 6e 67 20 74 6f 20 62 :.example.of.this.referring.to.b
1a7a0 61 73 69 63 20 62 6c 6f 63 6b 20 66 6f 72 20 40 73 65 74 44 65 62 75 67 53 61 66 65 74 79 3c 2f asic.block.for.@setDebugSafety</
1a7c0 70 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 63 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d 70 74 p>.......<h2.id="comptime">compt
1a7e0 69 6d 65 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 20 70 6c 61 ime</h2>.......<p>.......Zig.pla
1a800 63 65 73 20 69 6d 70 6f 72 74 61 6e 63 65 20 6f 6e 20 74 68 65 20 63 6f 6e 63 65 70 74 20 6f 66 ces.importance.on.the.concept.of
1a820 20 77 68 65 74 68 65 72 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 6b 6e 6f 77 6e 20 .whether.an.expression.is.known.
1a840 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 0a 20 20 20 20 20 20 54 68 65 72 65 20 61 72 65 at.compile-time........There.are
1a860 20 61 20 66 65 77 20 64 69 66 66 65 72 65 6e 74 20 70 6c 61 63 65 73 20 74 68 69 73 20 63 6f 6e .a.few.different.places.this.con
1a880 63 65 70 74 20 69 73 20 75 73 65 64 2c 20 61 6e 64 20 74 68 65 73 65 20 62 75 69 6c 64 69 6e 67 cept.is.used,.and.these.building
1a8a0 20 62 6c 6f 63 6b 73 20 61 72 65 20 75 73 65 64 0a 20 20 20 20 20 20 74 6f 20 6b 65 65 70 20 74 .blocks.are.used.......to.keep.t
1a8c0 68 65 20 6c 61 6e 67 75 61 67 65 20 73 6d 61 6c 6c 2c 20 72 65 61 64 61 62 6c 65 2c 20 61 6e 64 he.language.small,.readable,.and
1a8e0 20 70 6f 77 65 72 66 75 6c 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 .powerful........</p>.......<h3.
1a900 69 64 3d 22 69 6e 74 72 6f 64 75 63 69 6e 67 2d 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2d 63 6f 6e id="introducing-compile-time-con
1a920 63 65 70 74 22 3e 49 6e 74 72 6f 64 75 63 69 6e 67 20 74 68 65 20 43 6f 6d 70 69 6c 65 2d 54 69 cept">Introducing.the.Compile-Ti
1a940 6d 65 20 43 6f 6e 63 65 70 74 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 68 34 20 69 64 3d 22 63 6f me.Concept</h3>.......<h4.id="co
1a960 6d 70 69 6c 65 2d 74 69 6d 65 2d 70 61 72 61 6d 65 74 65 72 73 22 3e 43 6f 6d 70 69 6c 65 2d 54 mpile-time-parameters">Compile-T
1a980 69 6d 65 20 50 61 72 61 6d 65 74 65 72 73 3c 2f 68 34 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 ime.Parameters</h4>.......<p>...
1a9a0 20 20 20 20 43 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 70 61 72 61 6d 65 74 65 72 73 20 69 73 20 68 ....Compile-time.parameters.is.h
1a9c0 6f 77 20 5a 69 67 20 69 6d 70 6c 65 6d 65 6e 74 73 20 67 65 6e 65 72 69 63 73 2e 20 49 74 20 69 ow.Zig.implements.generics..It.i
1a9e0 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 64 75 63 6b 20 74 79 70 69 6e 67 2e 0a 20 20 20 20 s.compile-time.duck.typing......
1aa00 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a ..</p>.......<pre><code.class="z
1aa20 69 67 22 3e 66 6e 20 6d 61 78 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 61 3a 20 ig">fn.max(comptime.T:.type,.a:.
1aa40 54 2c 20 62 3a 20 54 29 20 2d 26 67 74 3b 20 54 20 7b 0a 20 20 20 20 69 66 20 28 61 20 26 67 74 T,.b:.T).-&gt;.T.{.....if.(a.&gt
1aa60 3b 20 62 29 20 61 20 65 6c 73 65 20 62 0a 7d 0a 66 6e 20 67 69 6d 6d 65 54 68 65 42 69 67 67 65 ;.b).a.else.b.}.fn.gimmeTheBigge
1aa80 72 46 6c 6f 61 74 28 61 3a 20 66 33 32 2c 20 62 3a 20 66 33 32 29 20 2d 26 67 74 3b 20 66 33 32 rFloat(a:.f32,.b:.f32).-&gt;.f32
1aaa0 20 7b 0a 20 20 20 20 6d 61 78 28 66 33 32 2c 20 61 2c 20 62 29 0a 7d 0a 66 6e 20 67 69 6d 6d 65 .{.....max(f32,.a,.b).}.fn.gimme
1aac0 54 68 65 42 69 67 67 65 72 49 6e 74 65 67 65 72 28 61 3a 20 75 36 34 2c 20 62 3a 20 75 36 34 29 TheBiggerInteger(a:.u64,.b:.u64)
1aae0 20 2d 26 67 74 3b 20 75 36 34 20 7b 0a 20 20 20 20 6d 61 78 28 75 36 34 2c 20 61 2c 20 62 29 0a .-&gt;.u64.{.....max(u64,.a,.b).
1ab00 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 }</code></pre>.......<p>.......I
1ab20 6e 20 5a 69 67 2c 20 74 79 70 65 73 20 61 72 65 20 66 69 72 73 74 2d 63 6c 61 73 73 20 63 69 74 n.Zig,.types.are.first-class.cit
1ab40 69 7a 65 6e 73 2e 20 54 68 65 79 20 63 61 6e 20 62 65 20 61 73 73 69 67 6e 65 64 20 74 6f 20 76 izens..They.can.be.assigned.to.v
1ab60 61 72 69 61 62 6c 65 73 2c 20 70 61 73 73 65 64 20 61 73 20 70 61 72 61 6d 65 74 65 72 73 20 74 ariables,.passed.as.parameters.t
1ab80 6f 20 66 75 6e 63 74 69 6f 6e 73 2c 0a 20 20 20 20 20 20 61 6e 64 20 72 65 74 75 72 6e 65 64 20 o.functions,.......and.returned.
1aba0 66 72 6f 6d 20 66 75 6e 63 74 69 6f 6e 73 2e 20 48 6f 77 65 76 65 72 2c 20 74 68 65 79 20 63 61 from.functions..However,.they.ca
1abc0 6e 20 6f 6e 6c 79 20 62 65 20 75 73 65 64 20 69 6e 20 65 78 70 72 65 73 73 69 6f 6e 73 20 77 68 n.only.be.used.in.expressions.wh
1abe0 69 63 68 20 61 72 65 20 6b 6e 6f 77 6e 20 61 74 20 3c 65 6d 3e 63 6f 6d 70 69 6c 65 2d 74 69 6d ich.are.known.at.<em>compile-tim
1ac00 65 3c 2f 65 6d 3e 2c 0a 20 20 20 20 20 20 77 68 69 63 68 20 69 73 20 77 68 79 20 74 68 65 20 70 e</em>,.......which.is.why.the.p
1ac20 61 72 61 6d 65 74 65 72 20 3c 63 6f 64 65 3e 54 3c 2f 63 6f 64 65 3e 20 69 6e 20 74 68 65 20 61 arameter.<code>T</code>.in.the.a
1ac40 62 6f 76 65 20 73 6e 69 70 70 65 74 20 6d 75 73 74 20 62 65 20 6d 61 72 6b 65 64 20 77 69 74 68 bove.snippet.must.be.marked.with
1ac60 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f .<code>comptime</code>........</
1ac80 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 41 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 p>.......<p>.......A.<code>compt
1aca0 69 6d 65 3c 2f 63 6f 64 65 3e 20 70 61 72 61 6d 65 74 65 72 20 6d 65 61 6e 73 20 74 68 61 74 3a ime</code>.parameter.means.that:
1acc0 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c .......</p>.......<ul>.........<
1ace0 6c 69 3e 41 74 20 74 68 65 20 63 61 6c 6c 73 69 74 65 2c 20 74 68 65 20 76 61 6c 75 65 20 6d 75 li>At.the.callsite,.the.value.mu
1ad00 73 74 20 62 65 20 6b 6e 6f 77 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 6f 72 20 st.be.known.at.compile-time,.or.
1ad20 69 74 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 2e 3c 2f 6c 69 3e 0a 20 20 20 20 it.is.a.compile.error.</li>.....
1ad40 20 20 20 20 3c 6c 69 3e 49 6e 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 64 65 66 69 6e 69 74 69 ....<li>In.the.function.definiti
1ad60 6f 6e 2c 20 74 68 65 20 76 61 6c 75 65 20 69 73 20 6b 6e 6f 77 6e 20 61 74 20 63 6f 6d 70 69 6c on,.the.value.is.known.at.compil
1ad80 65 2d 74 69 6d 65 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c e-time.</li>.......</ul>.......<
1ada0 70 3e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 46 6f p>.......</p>.......<p>.......Fo
1adc0 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 77 65 20 77 65 72 65 20 74 6f 20 69 6e 74 72 6f 64 75 r.example,.if.we.were.to.introdu
1ade0 63 65 20 61 6e 6f 74 68 65 72 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 61 62 6f 76 65 ce.another.function.to.the.above
1ae00 20 73 6e 69 70 70 65 74 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e .snippet:.......</p>.......<pre>
1ae20 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e 20 6d 61 78 28 63 6f 6d 70 74 69 6d <code.class="zig">fn.max(comptim
1ae40 65 20 54 3a 20 74 79 70 65 2c 20 61 3a 20 54 2c 20 62 3a 20 54 29 20 2d 26 67 74 3b 20 54 20 7b e.T:.type,.a:.T,.b:.T).-&gt;.T.{
1ae60 0a 20 20 20 20 69 66 20 28 61 20 26 67 74 3b 20 62 29 20 61 20 65 6c 73 65 20 62 0a 7d 0a 66 6e .....if.(a.&gt;.b).a.else.b.}.fn
1ae80 20 6c 65 74 73 54 72 79 54 6f 50 61 73 73 41 52 75 6e 74 69 6d 65 54 79 70 65 28 63 6f 6e 64 69 .letsTryToPassARuntimeType(condi
1aea0 74 69 6f 6e 3a 20 62 6f 6f 6c 29 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 72 65 73 75 6c 74 20 3d tion:.bool).{.....const.result.=
1aec0 20 6d 61 78 28 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 64 69 74 69 6f 6e 29 20 66 33 32 .max(.........if.(condition).f32
1aee0 20 65 6c 73 65 20 75 36 34 2c 0a 20 20 20 20 20 20 20 20 31 32 33 34 2c 0a 20 20 20 20 20 20 20 .else.u64,.........1234,........
1af00 20 35 36 37 38 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e .5678);.}</code></pre>.......<p>
1af20 0a 20 20 20 20 20 20 54 68 65 6e 20 77 65 20 67 65 74 20 74 68 69 73 20 72 65 73 75 6c 74 20 66 .......Then.we.get.this.result.f
1af40 72 6f 6d 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 rom.the.compiler:.......</p>....
1af60 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 2e 2f 74 65 73 74 2e ...<pre><code.class="sh">./test.
1af80 7a 69 67 3a 36 3a 39 3a 20 65 72 72 6f 72 3a 20 75 6e 61 62 6c 65 20 74 6f 20 65 76 61 6c 75 61 zig:6:9:.error:.unable.to.evalua
1afa0 74 65 20 63 6f 6e 73 74 61 6e 74 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 69 te.constant.expression.........i
1afc0 66 20 28 63 6f 6e 64 69 74 69 6f 6e 29 20 66 33 32 20 65 6c 73 65 20 75 36 34 2c 0a 20 20 20 20 f.(condition).f32.else.u64,.....
1afe0 20 20 20 20 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 ....^</code></pre>.......<p>....
1b000 20 20 20 54 68 69 73 20 69 73 20 61 6e 20 65 72 72 6f 72 20 62 65 63 61 75 73 65 20 74 68 65 20 ...This.is.an.error.because.the.
1b020 70 72 6f 67 72 61 6d 6d 65 72 20 61 74 74 65 6d 70 74 65 64 20 74 6f 20 70 61 73 73 20 61 20 76 programmer.attempted.to.pass.a.v
1b040 61 6c 75 65 20 6f 6e 6c 79 20 6b 6e 6f 77 6e 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 20 20 alue.only.known.at.run-time.....
1b060 20 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20 77 68 69 63 68 20 65 78 70 65 63 74 73 20 61 20 ..to.a.function.which.expects.a.
1b080 76 61 6c 75 65 20 6b 6e 6f 77 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 0a 20 20 20 value.known.at.compile-time.....
1b0a0 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 41 6e 6f 74 68 65 72 20 ...</p>.......<p>.......Another.
1b0c0 77 61 79 20 74 6f 20 67 65 74 20 61 6e 20 65 72 72 6f 72 20 69 73 20 69 66 20 77 65 20 70 61 73 way.to.get.an.error.is.if.we.pas
1b0e0 73 20 61 20 74 79 70 65 20 74 68 61 74 20 76 69 6f 6c 61 74 65 73 20 74 68 65 20 74 79 70 65 20 s.a.type.that.violates.the.type.
1b100 63 68 65 63 6b 65 72 20 77 68 65 6e 20 74 68 65 0a 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 checker.when.the.......function.
1b120 69 73 20 61 6e 61 6c 79 7a 65 64 2e 20 54 68 69 73 20 69 73 20 77 68 61 74 20 69 74 20 6d 65 61 is.analyzed..This.is.what.it.mea
1b140 6e 73 20 74 6f 20 68 61 76 65 20 3c 65 6d 3e 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 64 75 63 6b ns.to.have.<em>compile-time.duck
1b160 20 74 79 70 69 6e 67 3c 2f 65 6d 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c .typing</em>........</p>.......<
1b180 70 3e 0a 20 20 20 20 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e p>.......For.example:.......</p>
1b1a0 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e .......<pre><code.class="zig">fn
1b1c0 20 6d 61 78 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 61 3a 20 54 2c 20 62 3a 20 .max(comptime.T:.type,.a:.T,.b:.
1b1e0 54 29 20 2d 26 67 74 3b 20 54 20 7b 0a 20 20 20 20 69 66 20 28 61 20 26 67 74 3b 20 62 29 20 61 T).-&gt;.T.{.....if.(a.&gt;.b).a
1b200 20 65 6c 73 65 20 62 0a 7d 0a 66 6e 20 6c 65 74 73 54 72 79 54 6f 43 6f 6d 70 61 72 65 42 6f 6f .else.b.}.fn.letsTryToCompareBoo
1b220 6c 73 28 61 3a 20 62 6f 6f 6c 2c 20 62 3a 20 62 6f 6f 6c 29 20 2d 26 67 74 3b 20 62 6f 6f 6c 20 ls(a:.bool,.b:.bool).-&gt;.bool.
1b240 7b 0a 20 20 20 20 6d 61 78 28 62 6f 6f 6c 2c 20 61 2c 20 62 29 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f {.....max(bool,.a,.b).}</code></
1b260 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 63 6f 64 65 20 70 72 pre>.......<p>.......The.code.pr
1b280 6f 64 75 63 65 73 20 74 68 69 73 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 3a 0a 20 20 20 20 20 oduces.this.error.message:......
1b2a0 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 3e 2e 2f 74 65 73 74 2e 7a 69 .</p>.......<pre><code>./test.zi
1b2c0 67 3a 32 3a 31 31 3a 20 65 72 72 6f 72 3a 20 6f 70 65 72 61 74 6f 72 20 6e 6f 74 20 61 6c 6c 6f g:2:11:.error:.operator.not.allo
1b2e0 77 65 64 20 66 6f 72 20 74 79 70 65 20 27 62 6f 6f 6c 27 0a 20 20 20 20 69 66 20 28 61 20 26 67 wed.for.type.'bool'.....if.(a.&g
1b300 74 3b 20 62 29 20 61 20 65 6c 73 65 20 62 0a 20 20 20 20 20 20 20 20 20 20 5e 0a 2e 2f 74 65 73 t;.b).a.else.b...........^../tes
1b320 74 2e 7a 69 67 3a 35 3a 38 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 t.zig:5:8:.note:.called.from.her
1b340 65 0a 20 20 20 20 6d 61 78 28 62 6f 6f 6c 2c 20 61 2c 20 62 29 0a 20 20 20 20 20 20 5e 3c 2f 63 e.....max(bool,.a,.b).......^</c
1b360 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4f 6e 20 74 68 ode></pre>.......<p>.......On.th
1b380 65 20 66 6c 69 70 20 73 69 64 65 2c 20 69 6e 73 69 64 65 20 74 68 65 20 66 75 6e 63 74 69 6f 6e e.flip.side,.inside.the.function
1b3a0 20 64 65 66 69 6e 69 74 69 6f 6e 20 77 69 74 68 20 74 68 65 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 .definition.with.the.<code>compt
1b3c0 69 6d 65 3c 2f 63 6f 64 65 3e 20 70 61 72 61 6d 65 74 65 72 2c 20 74 68 65 0a 20 20 20 20 20 20 ime</code>.parameter,.the.......
1b3e0 76 61 6c 75 65 20 69 73 20 6b 6e 6f 77 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 20 value.is.known.at.compile-time..
1b400 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 77 65 20 61 63 74 75 61 6c 6c 79 20 63 6f 75 6c This.means.that.we.actually.coul
1b420 64 20 6d 61 6b 65 20 74 68 69 73 20 77 6f 72 6b 20 66 6f 72 20 74 68 65 20 62 6f 6f 6c 20 74 79 d.make.this.work.for.the.bool.ty
1b440 70 65 0a 20 20 20 20 20 20 69 66 20 77 65 20 77 61 6e 74 65 64 20 74 6f 3a 0a 20 20 20 20 20 20 pe.......if.we.wanted.to:.......
1b460 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 </p>.......<pre><code.class="zig
1b480 22 3e 66 6e 20 6d 61 78 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 61 3a 20 54 2c ">fn.max(comptime.T:.type,.a:.T,
1b4a0 20 62 3a 20 54 29 20 2d 26 67 74 3b 20 54 20 7b 0a 20 20 20 20 69 66 20 28 54 20 3d 3d 20 62 6f .b:.T).-&gt;.T.{.....if.(T.==.bo
1b4c0 6f 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 20 6f 72 20 62 3b 0a 20 20 20 ol).{.........return.a.or.b;....
1b4e0 20 7d 20 65 6c 73 65 20 69 66 20 28 61 20 26 67 74 3b 20 62 29 20 7b 0a 20 20 20 20 20 20 20 20 .}.else.if.(a.&gt;.b).{.........
1b500 72 65 74 75 72 6e 20 61 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 72 return.a;.....}.else.{.........r
1b520 65 74 75 72 6e 20 62 3b 0a 20 20 20 20 7d 0a 7d 0a 66 6e 20 6c 65 74 73 54 72 79 54 6f 43 6f 6d eturn.b;.....}.}.fn.letsTryToCom
1b540 70 61 72 65 42 6f 6f 6c 73 28 61 3a 20 62 6f 6f 6c 2c 20 62 3a 20 62 6f 6f 6c 29 20 2d 26 67 74 pareBools(a:.bool,.b:.bool).-&gt
1b560 3b 20 62 6f 6f 6c 20 7b 0a 20 20 20 20 6d 61 78 28 62 6f 6f 6c 2c 20 61 2c 20 62 29 0a 7d 3c 2f ;.bool.{.....max(bool,.a,.b).}</
1b580 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 code></pre>.......<p>.......This
1b5a0 20 77 6f 72 6b 73 20 62 65 63 61 75 73 65 20 5a 69 67 20 69 6d 70 6c 69 63 69 74 6c 79 20 69 6e .works.because.Zig.implicitly.in
1b5c0 6c 69 6e 65 73 20 3c 63 6f 64 65 3e 69 66 3c 2f 63 6f 64 65 3e 20 65 78 70 72 65 73 73 69 6f 6e lines.<code>if</code>.expression
1b5e0 73 20 77 68 65 6e 20 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e 0a 20 20 20 20 20 20 69 73 20 6b 6e s.when.the.condition.......is.kn
1b600 6f 77 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 61 6e 64 20 74 68 65 20 63 6f 6d own.at.compile-time,.and.the.com
1b620 70 69 6c 65 72 20 67 75 61 72 61 6e 74 65 65 73 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 73 6b piler.guarantees.that.it.will.sk
1b640 69 70 20 61 6e 61 6c 79 73 69 73 20 6f 66 0a 20 20 20 20 20 20 74 68 65 20 62 72 61 6e 63 68 20 ip.analysis.of.......the.branch.
1b660 6e 6f 74 20 74 61 6b 65 6e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a not.taken........</p>.......<p>.
1b680 20 20 20 20 20 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 61 63 74 75 61 6c ......This.means.that.the.actual
1b6a0 20 66 75 6e 63 74 69 6f 6e 20 67 65 6e 65 72 61 74 65 64 20 66 6f 72 20 3c 63 6f 64 65 3e 6d 61 .function.generated.for.<code>ma
1b6c0 78 3c 2f 63 6f 64 65 3e 20 69 6e 20 74 68 69 73 20 73 69 74 75 61 74 69 6f 6e 20 6c 6f 6f 6b 73 x</code>.in.this.situation.looks
1b6e0 20 6c 69 6b 65 0a 20 20 20 20 20 20 74 68 69 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 .like.......this:.......</p>....
1b700 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e 20 6d 61 78 ...<pre><code.class="zig">fn.max
1b720 28 61 3a 20 62 6f 6f 6c 2c 20 62 3a 20 62 6f 6f 6c 29 20 2d 26 67 74 3b 20 62 6f 6f 6c 20 7b 0a (a:.bool,.b:.bool).-&gt;.bool.{.
1b740 20 20 20 20 72 65 74 75 72 6e 20 61 20 6f 72 20 62 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 ....return.a.or.b;.}</code></pre
1b760 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 41 6c 6c 20 74 68 65 20 63 6f 64 65 20 74 >.......<p>.......All.the.code.t
1b780 68 61 74 20 64 65 61 6c 74 20 77 69 74 68 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6b 6e 6f 77 hat.dealt.with.compile-time.know
1b7a0 6e 20 76 61 6c 75 65 73 20 69 73 20 65 6c 69 6d 69 6e 61 74 65 64 20 61 6e 64 20 77 65 20 61 72 n.values.is.eliminated.and.we.ar
1b7c0 65 20 6c 65 66 74 20 77 69 74 68 20 6f 6e 6c 79 0a 20 20 20 20 20 20 74 68 65 20 6e 65 63 65 73 e.left.with.only.......the.neces
1b7e0 73 61 72 79 20 72 75 6e 2d 74 69 6d 65 20 63 6f 64 65 20 74 6f 20 61 63 63 6f 6d 70 6c 69 73 68 sary.run-time.code.to.accomplish
1b800 20 74 68 65 20 74 61 73 6b 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a .the.task........</p>.......<p>.
1b820 20 20 20 20 20 20 54 68 69 73 20 77 6f 72 6b 73 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 66 6f ......This.works.the.same.way.fo
1b840 72 20 3c 63 6f 64 65 3e 73 77 69 74 63 68 3c 2f 63 6f 64 65 3e 20 65 78 70 72 65 73 73 69 6f 6e r.<code>switch</code>.expression
1b860 73 20 2d 20 74 68 65 79 20 61 72 65 20 69 6d 70 6c 69 63 69 74 6c 79 20 69 6e 6c 69 6e 65 64 0a s.-.they.are.implicitly.inlined.
1b880 20 20 20 20 20 20 77 68 65 6e 20 74 68 65 20 74 61 72 67 65 74 20 65 78 70 72 65 73 73 69 6f 6e ......when.the.target.expression
1b8a0 20 69 73 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6b 6e 6f 77 6e 2e 0a 20 20 20 20 20 20 3c 2f .is.compile-time.known........</
1b8c0 70 3e 0a 20 20 20 20 20 20 3c 68 34 20 69 64 3d 22 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2d 76 61 p>.......<h4.id="compile-time-va
1b8e0 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 20 56 61 72 69 61 62 6c 65 73 3c riables">Compile-Time.Variables<
1b900 2f 68 34 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 20 5a 69 67 2c 20 74 68 65 /h4>.......<p>.......In.Zig,.the
1b920 20 70 72 6f 67 72 61 6d 6d 65 72 20 63 61 6e 20 6c 61 62 65 6c 20 76 61 72 69 61 62 6c 65 73 20 .programmer.can.label.variables.
1b940 61 73 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 3c 2f 63 6f 64 65 3e 2e 20 54 68 69 73 20 67 as.<code>comptime</code>..This.g
1b960 75 61 72 61 6e 74 65 65 73 20 74 6f 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 0a 20 20 20 20 20 20 uarantees.to.the.compiler.......
1b980 74 68 61 74 20 65 76 65 72 79 20 6c 6f 61 64 20 61 6e 64 20 73 74 6f 72 65 20 6f 66 20 74 68 65 that.every.load.and.store.of.the
1b9a0 20 76 61 72 69 61 62 6c 65 20 69 73 20 70 65 72 66 6f 72 6d 65 64 20 61 74 20 63 6f 6d 70 69 6c .variable.is.performed.at.compil
1b9c0 65 2d 74 69 6d 65 2e 20 41 6e 79 20 76 69 6f 6c 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 72 65 e-time..Any.violation.of.this.re
1b9e0 73 75 6c 74 73 20 69 6e 20 61 0a 20 20 20 20 20 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 2e 0a sults.in.a.......compile.error..
1ba00 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 ......</p>.......<p>.......This.
1ba20 63 6f 6d 62 69 6e 65 64 20 77 69 74 68 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 77 65 20 63 combined.with.the.fact.that.we.c
1ba40 61 6e 20 3c 63 6f 64 65 3e 69 6e 6c 69 6e 65 3c 2f 63 6f 64 65 3e 20 6c 6f 6f 70 73 20 61 6c 6c an.<code>inline</code>.loops.all
1ba60 6f 77 73 20 75 73 20 74 6f 20 77 72 69 74 65 0a 20 20 20 20 20 20 61 20 66 75 6e 63 74 69 6f 6e ows.us.to.write.......a.function
1ba80 20 77 68 69 63 68 20 69 73 20 70 61 72 74 69 61 6c 6c 79 20 65 76 61 6c 75 61 74 65 64 20 61 74 .which.is.partially.evaluated.at
1baa0 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 61 6e 64 20 70 61 72 74 69 61 6c 6c 79 20 61 74 20 72 .compile-time.and.partially.at.r
1bac0 75 6e 2d 74 69 6d 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 un-time........</p>.......<p>...
1bae0 20 20 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 ....For.example:.......</p>.....
1bb00 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 ..<pre><code.class="zig">const.a
1bb20 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 ssert.=.@import("std").debug.ass
1bb40 65 72 74 3b 0a 0a 63 6f 6e 73 74 20 43 6d 64 46 6e 20 3d 20 73 74 72 75 63 74 20 7b 0a 20 20 20 ert;..const.CmdFn.=.struct.{....
1bb60 20 6e 61 6d 65 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 2c 0a 20 20 20 20 66 75 6e 63 3a 20 66 6e 28 .name:.[]const.u8,.....func:.fn(
1bb80 69 33 32 29 20 2d 26 67 74 3b 20 69 33 32 2c 0a 7d 3b 0a 0a 63 6f 6e 73 74 20 63 6d 64 5f 66 6e i32).-&gt;.i32,.};..const.cmd_fn
1bba0 73 20 3d 20 5b 5d 43 6d 64 46 6e 7b 0a 20 20 20 20 43 6d 64 46 6e 20 7b 2e 6e 61 6d 65 20 3d 20 s.=.[]CmdFn{.....CmdFn.{.name.=.
1bbc0 22 6f 6e 65 22 2c 20 2e 66 75 6e 63 20 3d 20 6f 6e 65 7d 2c 0a 20 20 20 20 43 6d 64 46 6e 20 7b "one",..func.=.one},.....CmdFn.{
1bbe0 2e 6e 61 6d 65 20 3d 20 22 74 77 6f 22 2c 20 2e 66 75 6e 63 20 3d 20 74 77 6f 7d 2c 0a 20 20 20 .name.=."two",..func.=.two},....
1bc00 20 43 6d 64 46 6e 20 7b 2e 6e 61 6d 65 20 3d 20 22 74 68 72 65 65 22 2c 20 2e 66 75 6e 63 20 3d .CmdFn.{.name.=."three",..func.=
1bc20 20 74 68 72 65 65 7d 2c 0a 7d 3b 0a 66 6e 20 6f 6e 65 28 76 61 6c 75 65 3a 20 69 33 32 29 20 2d .three},.};.fn.one(value:.i32).-
1bc40 26 67 74 3b 20 69 33 32 20 7b 20 76 61 6c 75 65 20 2b 20 31 20 7d 0a 66 6e 20 74 77 6f 28 76 61 &gt;.i32.{.value.+.1.}.fn.two(va
1bc60 6c 75 65 3a 20 69 33 32 29 20 2d 26 67 74 3b 20 69 33 32 20 7b 20 76 61 6c 75 65 20 2b 20 32 20 lue:.i32).-&gt;.i32.{.value.+.2.
1bc80 7d 0a 66 6e 20 74 68 72 65 65 28 76 61 6c 75 65 3a 20 69 33 32 29 20 2d 26 67 74 3b 20 69 33 32 }.fn.three(value:.i32).-&gt;.i32
1bca0 20 7b 20 76 61 6c 75 65 20 2b 20 33 20 7d 0a 0a 66 6e 20 70 65 72 66 6f 72 6d 46 6e 28 63 6f 6d .{.value.+.3.}..fn.performFn(com
1bcc0 70 74 69 6d 65 20 70 72 65 66 69 78 5f 63 68 61 72 3a 20 75 38 2c 20 73 74 61 72 74 5f 76 61 6c ptime.prefix_char:.u8,.start_val
1bce0 75 65 3a 20 69 33 32 29 20 2d 26 67 74 3b 20 69 33 32 20 7b 0a 20 20 20 20 76 61 72 20 72 65 73 ue:.i32).-&gt;.i32.{.....var.res
1bd00 75 6c 74 3a 20 69 33 32 20 3d 20 73 74 61 72 74 5f 76 61 6c 75 65 3b 0a 20 20 20 20 63 6f 6d 70 ult:.i32.=.start_value;.....comp
1bd20 74 69 6d 65 20 76 61 72 20 69 20 3d 20 30 3b 0a 20 20 20 20 69 6e 6c 69 6e 65 20 77 68 69 6c 65 time.var.i.=.0;.....inline.while
1bd40 20 28 69 20 26 6c 74 3b 20 63 6d 64 5f 66 6e 73 2e 6c 65 6e 29 20 3a 20 28 69 20 2b 3d 20 31 29 .(i.&lt;.cmd_fns.len).:.(i.+=.1)
1bd60 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 63 6d 64 5f 66 6e 73 5b 69 5d 2e 6e 61 6d 65 5b 30 .{.........if.(cmd_fns[i].name[0
1bd80 5d 20 3d 3d 20 70 72 65 66 69 78 5f 63 68 61 72 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ].==.prefix_char).{.............
1bda0 72 65 73 75 6c 74 20 3d 20 63 6d 64 5f 66 6e 73 5b 69 5d 2e 66 75 6e 63 28 72 65 73 75 6c 74 29 result.=.cmd_fns[i].func(result)
1bdc0 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 ;.........}.....}.....return.res
1bde0 75 6c 74 3b 0a 7d 0a 0a 74 65 73 74 20 22 70 65 72 66 6f 72 6d 20 66 6e 22 20 7b 0a 20 20 20 20 ult;.}..test."perform.fn".{.....
1be00 61 73 73 65 72 74 28 70 65 72 66 6f 72 6d 46 6e 28 27 74 27 2c 20 31 29 20 3d 3d 20 36 29 3b 0a assert(performFn('t',.1).==.6);.
1be20 20 20 20 20 61 73 73 65 72 74 28 70 65 72 66 6f 72 6d 46 6e 28 27 6f 27 2c 20 30 29 20 3d 3d 20 ....assert(performFn('o',.0).==.
1be40 31 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 70 65 72 66 6f 72 6d 46 6e 28 27 77 27 2c 20 39 39 1);.....assert(performFn('w',.99
1be60 29 20 3d 3d 20 39 39 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c ).==.99);.}</code></pre>.......<
1be80 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 65 78 61 6d 70 6c 65 20 69 73 20 61 20 62 69 74 20 63 p>.......This.example.is.a.bit.c
1bea0 6f 6e 74 72 69 76 65 64 2c 20 62 65 63 61 75 73 65 20 74 68 65 20 63 6f 6d 70 69 6c 65 2d 74 69 ontrived,.because.the.compile-ti
1bec0 6d 65 20 65 76 61 6c 75 61 74 69 6f 6e 20 63 6f 6d 70 6f 6e 65 6e 74 20 69 73 20 75 6e 6e 65 63 me.evaluation.component.is.unnec
1bee0 65 73 73 61 72 79 3b 0a 20 20 20 20 20 20 74 68 69 73 20 63 6f 64 65 20 77 6f 75 6c 64 20 77 6f essary;.......this.code.would.wo
1bf00 72 6b 20 66 69 6e 65 20 69 66 20 69 74 20 77 61 73 20 61 6c 6c 20 64 6f 6e 65 20 61 74 20 72 75 rk.fine.if.it.was.all.done.at.ru
1bf20 6e 2d 74 69 6d 65 2e 20 42 75 74 20 69 74 20 64 6f 65 73 20 65 6e 64 20 75 70 20 67 65 6e 65 72 n-time..But.it.does.end.up.gener
1bf40 61 74 69 6e 67 0a 20 20 20 20 20 20 64 69 66 66 65 72 65 6e 74 20 63 6f 64 65 2e 20 49 6e 20 74 ating.......different.code..In.t
1bf60 68 69 73 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 3c 63 6f 64 65 3e his.example,.the.function.<code>
1bf80 70 65 72 66 6f 72 6d 46 6e 3c 2f 63 6f 64 65 3e 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 74 68 performFn</code>.is.generated.th
1bfa0 72 65 65 20 64 69 66 66 65 72 65 6e 74 20 74 69 6d 65 73 2c 0a 20 20 20 20 20 20 66 6f 72 20 74 ree.different.times,.......for.t
1bfc0 68 65 20 64 69 66 66 65 72 65 6e 74 20 76 61 6c 75 65 73 20 6f 66 20 3c 63 6f 64 65 3e 70 72 65 he.different.values.of.<code>pre
1bfe0 66 69 78 5f 63 68 61 72 3c 2f 63 6f 64 65 3e 20 70 72 6f 76 69 64 65 64 3a 0a 20 20 20 20 20 20 fix_char</code>.provided:.......
1c000 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 </p>.......<pre><code.class="zig
1c020 22 3e 2f 2f 20 46 72 6f 6d 20 74 68 65 20 6c 69 6e 65 3a 0a 2f 2f 20 61 73 73 65 72 74 28 70 65 ">//.From.the.line:.//.assert(pe
1c040 72 66 6f 72 6d 46 6e 28 27 74 27 2c 20 31 29 20 3d 3d 20 36 29 3b 0a 66 6e 20 70 65 72 66 6f 72 rformFn('t',.1).==.6);.fn.perfor
1c060 6d 46 6e 28 73 74 61 72 74 5f 76 61 6c 75 65 3a 20 69 33 32 29 20 2d 26 67 74 3b 20 69 33 32 20 mFn(start_value:.i32).-&gt;.i32.
1c080 7b 0a 20 20 20 20 76 61 72 20 72 65 73 75 6c 74 3a 20 69 33 32 20 3d 20 73 74 61 72 74 5f 76 61 {.....var.result:.i32.=.start_va
1c0a0 6c 75 65 3b 0a 20 20 20 20 72 65 73 75 6c 74 20 3d 20 74 77 6f 28 72 65 73 75 6c 74 29 3b 0a 20 lue;.....result.=.two(result);..
1c0c0 20 20 20 72 65 73 75 6c 74 20 3d 20 74 68 72 65 65 28 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 72 ...result.=.three(result);.....r
1c0e0 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 2f 2f 20 46 72 6f 6d 20 74 68 65 20 6c 69 6e eturn.result;.}..//.From.the.lin
1c100 65 3a 0a 2f 2f 20 61 73 73 65 72 74 28 70 65 72 66 6f 72 6d 46 6e 28 27 6f 27 2c 20 30 29 20 3d e:.//.assert(performFn('o',.0).=
1c120 3d 20 31 29 3b 0a 66 6e 20 70 65 72 66 6f 72 6d 46 6e 28 73 74 61 72 74 5f 76 61 6c 75 65 3a 20 =.1);.fn.performFn(start_value:.
1c140 69 33 32 29 20 2d 26 67 74 3b 20 69 33 32 20 7b 0a 20 20 20 20 76 61 72 20 72 65 73 75 6c 74 3a i32).-&gt;.i32.{.....var.result:
1c160 20 69 33 32 20 3d 20 73 74 61 72 74 5f 76 61 6c 75 65 3b 0a 20 20 20 20 72 65 73 75 6c 74 20 3d .i32.=.start_value;.....result.=
1c180 20 6f 6e 65 28 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b .one(result);.....return.result;
1c1a0 0a 7d 0a 0a 2f 2f 20 46 72 6f 6d 20 74 68 65 20 6c 69 6e 65 3a 0a 2f 2f 20 61 73 73 65 72 74 28 .}..//.From.the.line:.//.assert(
1c1c0 70 65 72 66 6f 72 6d 46 6e 28 27 77 27 2c 20 39 39 29 20 3d 3d 20 39 39 29 3b 0a 66 6e 20 70 65 performFn('w',.99).==.99);.fn.pe
1c1e0 72 66 6f 72 6d 46 6e 28 73 74 61 72 74 5f 76 61 6c 75 65 3a 20 69 33 32 29 20 2d 26 67 74 3b 20 rformFn(start_value:.i32).-&gt;.
1c200 69 33 32 20 7b 0a 20 20 20 20 76 61 72 20 72 65 73 75 6c 74 3a 20 69 33 32 20 3d 20 73 74 61 72 i32.{.....var.result:.i32.=.star
1c220 74 5f 76 61 6c 75 65 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 3c 2f 63 t_value;.....return.result;.}</c
1c240 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4e 6f 74 65 20 ode></pre>.......<p>.......Note.
1c260 74 68 61 74 20 74 68 69 73 20 68 61 70 70 65 6e 73 20 65 76 65 6e 20 69 6e 20 61 20 64 65 62 75 that.this.happens.even.in.a.debu
1c280 67 20 62 75 69 6c 64 3b 20 69 6e 20 61 20 72 65 6c 65 61 73 65 20 62 75 69 6c 64 20 74 68 65 73 g.build;.in.a.release.build.thes
1c2a0 65 20 67 65 6e 65 72 61 74 65 64 20 66 75 6e 63 74 69 6f 6e 73 20 73 74 69 6c 6c 0a 20 20 20 20 e.generated.functions.still.....
1c2c0 20 20 70 61 73 73 20 74 68 72 6f 75 67 68 20 72 69 67 6f 72 6f 75 73 20 4c 4c 56 4d 20 6f 70 74 ..pass.through.rigorous.LLVM.opt
1c2e0 69 6d 69 7a 61 74 69 6f 6e 73 2e 20 54 68 65 20 69 6d 70 6f 72 74 61 6e 74 20 74 68 69 6e 67 20 imizations..The.important.thing.
1c300 74 6f 20 6e 6f 74 65 2c 20 68 6f 77 65 76 65 72 2c 20 69 73 20 6e 6f 74 20 74 68 61 74 20 74 68 to.note,.however,.is.not.that.th
1c320 69 73 0a 20 20 20 20 20 20 69 73 20 61 20 77 61 79 20 74 6f 20 77 72 69 74 65 20 6d 6f 72 65 20 is.......is.a.way.to.write.more.
1c340 6f 70 74 69 6d 69 7a 65 64 20 63 6f 64 65 2c 20 62 75 74 20 74 68 61 74 20 69 74 20 69 73 20 61 optimized.code,.but.that.it.is.a
1c360 20 77 61 79 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 77 68 61 74 20 3c 65 6d 3e .way.to.make.sure.that.what.<em>
1c380 73 68 6f 75 6c 64 3c 2f 65 6d 3e 20 68 61 70 70 65 6e 0a 20 20 20 20 20 20 61 74 20 63 6f 6d 70 should</em>.happen.......at.comp
1c3a0 69 6c 65 2d 74 69 6d 65 2c 20 3c 65 6d 3e 64 6f 65 73 3c 2f 65 6d 3e 20 68 61 70 70 65 6e 20 61 ile-time,.<em>does</em>.happen.a
1c3c0 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 20 54 68 69 73 20 63 61 74 63 68 65 73 20 6d 6f 72 t.compile-time..This.catches.mor
1c3e0 65 20 65 72 72 6f 72 73 20 61 6e 64 20 61 73 20 64 65 6d 6f 6e 73 74 72 61 74 65 64 0a 20 20 20 e.errors.and.as.demonstrated....
1c400 20 20 20 6c 61 74 65 72 20 69 6e 20 74 68 69 73 20 61 72 74 69 63 6c 65 2c 20 61 6c 6c 6f 77 73 ...later.in.this.article,.allows
1c420 20 65 78 70 72 65 73 73 69 76 65 6e 65 73 73 20 74 68 61 74 20 69 6e 20 6f 74 68 65 72 20 6c 61 .expressiveness.that.in.other.la
1c440 6e 67 75 61 67 65 73 20 72 65 71 75 69 72 65 73 20 75 73 69 6e 67 20 6d 61 63 72 6f 73 2c 0a 20 nguages.requires.using.macros,..
1c460 20 20 20 20 20 67 65 6e 65 72 61 74 65 64 20 63 6f 64 65 2c 20 6f 72 20 61 20 70 72 65 70 72 6f .....generated.code,.or.a.prepro
1c480 63 65 73 73 6f 72 20 74 6f 20 61 63 63 6f 6d 70 6c 69 73 68 2e 0a 20 20 20 20 20 20 3c 2f 70 3e cessor.to.accomplish........</p>
1c4a0 0a 20 20 20 20 20 20 3c 68 34 20 69 64 3d 22 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2d 65 78 70 72 .......<h4.id="compile-time-expr
1c4c0 65 73 73 69 6f 6e 73 22 3e 43 6f 6d 70 69 6c 65 2d 54 69 6d 65 20 45 78 70 72 65 73 73 69 6f 6e essions">Compile-Time.Expression
1c4e0 73 3c 2f 68 34 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 20 5a 69 67 2c 20 69 s</h4>.......<p>.......In.Zig,.i
1c500 74 20 6d 61 74 74 65 72 73 20 77 68 65 74 68 65 72 20 61 20 67 69 76 65 6e 20 65 78 70 72 65 73 t.matters.whether.a.given.expres
1c520 73 69 6f 6e 20 69 73 20 6b 6e 6f 77 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6f 72 sion.is.known.at.compile-time.or
1c540 20 72 75 6e 2d 74 69 6d 65 2e 20 41 20 70 72 6f 67 72 61 6d 6d 65 72 20 63 61 6e 0a 20 20 20 20 .run-time..A.programmer.can.....
1c560 20 20 75 73 65 20 61 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 3c 2f 63 6f 64 65 3e 20 65 78 ..use.a.<code>comptime</code>.ex
1c580 70 72 65 73 73 69 6f 6e 20 74 6f 20 67 75 61 72 61 6e 74 65 65 20 74 68 61 74 20 74 68 65 20 65 pression.to.guarantee.that.the.e
1c5a0 78 70 72 65 73 73 69 6f 6e 20 77 69 6c 6c 20 62 65 20 65 76 61 6c 75 61 74 65 64 20 61 74 20 63 xpression.will.be.evaluated.at.c
1c5c0 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 0a 20 20 20 20 20 20 49 66 20 74 68 69 73 20 63 61 6e 6e 6f ompile-time........If.this.canno
1c5e0 74 20 62 65 20 61 63 63 6f 6d 70 6c 69 73 68 65 64 2c 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 t.be.accomplished,.the.compiler.
1c600 77 69 6c 6c 20 65 6d 69 74 20 61 6e 20 65 72 72 6f 72 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 3a will.emit.an.error..For.example:
1c620 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 .......</p>.......<pre><code.cla
1c640 73 73 3d 22 7a 69 67 22 3e 65 78 74 65 72 6e 20 66 6e 20 65 78 69 74 28 29 20 2d 26 67 74 3b 20 ss="zig">extern.fn.exit().-&gt;.
1c660 75 6e 72 65 61 63 68 61 62 6c 65 3b 0a 0a 66 6e 20 66 6f 6f 28 29 20 7b 0a 20 20 20 20 63 6f 6d unreachable;..fn.foo().{.....com
1c680 70 74 69 6d 65 20 7b 0a 20 20 20 20 20 20 20 20 65 78 69 74 28 29 3b 0a 20 20 20 20 7d 0a 7d 3c ptime.{.........exit();.....}.}<
1c6a0 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 3e 2e 2f /code></pre>.......<pre><code>./
1c6c0 74 65 73 74 2e 7a 69 67 3a 35 3a 39 3a 20 65 72 72 6f 72 3a 20 75 6e 61 62 6c 65 20 74 6f 20 65 test.zig:5:9:.error:.unable.to.e
1c6e0 76 61 6c 75 61 74 65 20 63 6f 6e 73 74 61 6e 74 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 valuate.constant.expression.....
1c700 20 20 20 20 65 78 69 74 28 29 3b 0a 20 20 20 20 20 20 20 20 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 ....exit();.........^</code></pr
1c720 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 74 20 64 6f 65 73 6e 27 74 20 6d 61 e>.......<p>.......It.doesn't.ma
1c740 6b 65 20 73 65 6e 73 65 20 74 68 61 74 20 61 20 70 72 6f 67 72 61 6d 20 63 6f 75 6c 64 20 63 61 ke.sense.that.a.program.could.ca
1c760 6c 6c 20 3c 63 6f 64 65 3e 65 78 69 74 28 29 3c 2f 63 6f 64 65 3e 20 28 6f 72 20 61 6e 79 20 6f ll.<code>exit()</code>.(or.any.o
1c780 74 68 65 72 20 65 78 74 65 72 6e 61 6c 20 66 75 6e 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 61 74 ther.external.function).......at
1c7a0 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 73 6f 20 74 68 69 73 20 69 73 20 61 20 63 6f 6d 70 .compile-time,.so.this.is.a.comp
1c7c0 69 6c 65 20 65 72 72 6f 72 2e 20 48 6f 77 65 76 65 72 2c 20 61 20 3c 63 6f 64 65 3e 63 6f 6d 70 ile.error..However,.a.<code>comp
1c7e0 74 69 6d 65 3c 2f 63 6f 64 65 3e 20 65 78 70 72 65 73 73 69 6f 6e 20 64 6f 65 73 20 6d 75 63 68 time</code>.expression.does.much
1c800 0a 20 20 20 20 20 20 6d 6f 72 65 20 74 68 61 6e 20 73 6f 6d 65 74 69 6d 65 73 20 63 61 75 73 65 .......more.than.sometimes.cause
1c820 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 .a.compile.error........</p>....
1c840 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 57 69 74 68 69 6e 20 61 20 3c 63 6f 64 65 3e 63 6f 6d 70 ...<p>.......Within.a.<code>comp
1c860 74 69 6d 65 3c 2f 63 6f 64 65 3e 20 65 78 70 72 65 73 73 69 6f 6e 3a 0a 20 20 20 20 20 20 3c 2f time</code>.expression:.......</
1c880 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 41 6c 6c 20 76 61 p>.......<ul>.........<li>All.va
1c8a0 72 69 61 62 6c 65 73 20 61 72 65 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 3c 2f 63 6f 64 65 riables.are.<code>comptime</code
1c8c0 3e 20 76 61 72 69 61 62 6c 65 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 41 6c >.variables.</li>.........<li>Al
1c8e0 6c 20 3c 63 6f 64 65 3e 69 66 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 77 68 69 6c 65 3c 2f l.<code>if</code>,.<code>while</
1c900 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 66 6f 72 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 73 code>,.<code>for</code>,.<code>s
1c920 77 69 74 63 68 3c 2f 63 6f 64 65 3e 2c 20 61 6e 64 20 3c 63 6f 64 65 3e 67 6f 74 6f 3c 2f 63 6f witch</code>,.and.<code>goto</co
1c940 64 65 3e 0a 20 20 20 20 20 20 20 20 20 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 72 65 20 65 76 de>...........expressions.are.ev
1c960 61 6c 75 61 74 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 6f 72 20 65 6d 69 74 aluated.at.compile-time,.or.emit
1c980 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 20 69 66 20 74 68 69 73 20 69 73 20 6e 6f 74 20 .a.compile.error.if.this.is.not.
1c9a0 70 6f 73 73 69 62 6c 65 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 41 6c 6c 20 66 possible.</li>.........<li>All.f
1c9c0 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 73 20 63 61 75 73 65 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 unction.calls.cause.the.compiler
1c9e0 20 74 6f 20 69 6e 74 65 72 70 72 65 74 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 61 74 20 63 6f .to.interpret.the.function.at.co
1ca00 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 65 6d 69 74 74 69 6e 67 20 61 0a 20 20 20 20 20 20 20 20 20 mpile-time,.emitting.a..........
1ca20 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 20 69 66 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 74 .compile.error.if.the.function.t
1ca40 72 69 65 73 20 74 6f 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 74 68 61 74 20 68 61 73 20 67 6c ries.to.do.something.that.has.gl
1ca60 6f 62 61 6c 20 72 75 6e 2d 74 69 6d 65 20 73 69 64 65 20 65 66 66 65 63 74 73 2e 3c 2f 6c 69 3e obal.run-time.side.effects.</li>
1ca80 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 .......</ul>.......<p>.......Thi
1caa0 73 20 6d 65 61 6e 73 20 74 68 61 74 20 61 20 70 72 6f 67 72 61 6d 6d 65 72 20 63 61 6e 20 63 72 s.means.that.a.programmer.can.cr
1cac0 65 61 74 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 77 68 69 63 68 20 69 73 20 63 61 6c 6c 65 64 20 eate.a.function.which.is.called.
1cae0 62 6f 74 68 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 61 6e 64 20 72 75 6e 2d 74 69 6d both.at.compile-time.and.run-tim
1cb00 65 2c 20 77 69 74 68 0a 20 20 20 20 20 20 6e 6f 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 74 6f e,.with.......no.modification.to
1cb20 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 72 65 71 75 69 72 65 64 2e 0a 20 20 20 20 20 20 3c 2f .the.function.required........</
1cb40 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4c 65 74 27 73 20 6c 6f 6f 6b 20 61 74 p>.......<p>.......Let's.look.at
1cb60 20 61 6e 20 65 78 61 6d 70 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 .an.example:.......</p>.......<p
1cb80 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 re><code.class="zig">const.asser
1cba0 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b t.=.@import("std").debug.assert;
1cbc0 0a 0a 66 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 3a 20 75 33 32 29 20 2d 26 67 74 3b ..fn.fibonacci(index:.u32).-&gt;
1cbe0 20 75 33 32 20 7b 0a 20 20 20 20 69 66 20 28 69 6e 64 65 78 20 26 6c 74 3b 20 32 29 20 72 65 74 .u32.{.....if.(index.&lt;.2).ret
1cc00 75 72 6e 20 69 6e 64 65 78 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 urn.index;.....return.fibonacci(
1cc20 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 index.-.1).+.fibonacci(index.-.2
1cc40 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 66 69 62 6f 6e 61 63 63 69 22 20 7b 0a 20 20 20 20 2f 2f 20 );.}..test."fibonacci".{.....//.
1cc60 74 65 73 74 20 66 69 62 6f 6e 61 63 63 69 20 61 74 20 72 75 6e 2d 74 69 6d 65 0a 20 20 20 20 61 test.fibonacci.at.run-time.....a
1cc80 73 73 65 72 74 28 66 69 62 6f 6e 61 63 63 69 28 37 29 20 3d 3d 20 31 33 29 3b 0a 0a 20 20 20 20 ssert(fibonacci(7).==.13);......
1cca0 2f 2f 20 74 65 73 74 20 66 69 62 6f 6e 61 63 63 69 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d //.test.fibonacci.at.compile-tim
1ccc0 65 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 e.....comptime.{.........assert(
1cce0 66 69 62 6f 6e 61 63 63 69 28 37 29 20 3d 3d 20 31 33 29 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f fibonacci(7).==.13);.....}.}</co
1cd00 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 3e 24 20 7a 69 67 de></pre>.......<pre><code>$.zig
1cd20 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 74 65 73 74 46 69 62 6f .test.test.zig.Test.1/1.testFibo
1cd40 6e 61 63 63 69 2e 2e 2e 4f 4b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 nacci...OK</code></pre>.......<p
1cd60 3e 0a 20 20 20 20 20 20 49 6d 61 67 69 6e 65 20 69 66 20 77 65 20 68 61 64 20 66 6f 72 67 6f 74 >.......Imagine.if.we.had.forgot
1cd80 74 65 6e 20 74 68 65 20 62 61 73 65 20 63 61 73 65 20 6f 66 20 74 68 65 20 72 65 63 75 72 73 69 ten.the.base.case.of.the.recursi
1cda0 76 65 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 74 72 69 65 64 20 74 6f 20 72 75 6e 20 74 68 65 ve.function.and.tried.to.run.the
1cdc0 20 74 65 73 74 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 .tests:.......</p>.......<pre><c
1cde0 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 ode.class="zig">const.assert.=.@
1ce00 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a 0a 66 6e 20 import("std").debug.assert;..fn.
1ce20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 3a 20 75 33 32 29 20 2d 26 67 74 3b 20 75 33 32 20 fibonacci(index:.u32).-&gt;.u32.
1ce40 7b 0a 20 20 20 20 2f 2f 69 66 20 28 69 6e 64 65 78 20 26 6c 74 3b 20 32 29 20 72 65 74 75 72 6e {.....//if.(index.&lt;.2).return
1ce60 20 69 6e 64 65 78 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 .index;.....return.fibonacci(ind
1ce80 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a ex.-.1).+.fibonacci(index.-.2);.
1cea0 7d 0a 0a 74 65 73 74 20 22 66 69 62 6f 6e 61 63 63 69 22 20 7b 0a 20 20 20 20 63 6f 6d 70 74 69 }..test."fibonacci".{.....compti
1cec0 6d 65 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 66 69 62 6f 6e 61 63 63 69 28 37 29 me.{.........assert(fibonacci(7)
1cee0 20 3d 3d 20 31 33 29 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 .==.13);.....}.}</code></pre>...
1cf00 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 3e 24 20 7a 69 67 20 74 65 73 74 20 74 65 73 74 2e 7a ....<pre><code>$.zig.test.test.z
1cf20 69 67 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 38 3a 20 65 72 72 6f 72 3a 20 6f 70 65 72 61 ig../test.zig:3:28:.error:.opera
1cf40 74 69 6f 6e 20 63 61 75 73 65 64 20 6f 76 65 72 66 6c 6f 77 0a 20 20 20 20 72 65 74 75 72 6e 20 tion.caused.overflow.....return.
1cf60 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 fibonacci(index.-.1).+.fibonacci
1cf80 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (index.-.2);....................
1cfa0 20 20 20 20 20 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 31 3a 20 6e 6f 74 65 3a 20 .......^../test.zig:3:21:.note:.
1cfc0 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f called.from.here.....return.fibo
1cfe0 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 nacci(index.-.1).+.fibonacci(ind
1d000 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 2e ex.-.2);.....................^..
1d020 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 31 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 64 20 66 72 6f /test.zig:3:21:.note:.called.fro
1d040 6d 20 68 65 72 65 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 m.here.....return.fibonacci(inde
1d060 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 x.-.1).+.fibonacci(index.-.2);..
1d080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a ...................^../test.zig:
1d0a0 33 3a 32 31 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 20 20 3:21:.note:.called.from.here....
1d0c0 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 .return.fibonacci(index.-.1).+.f
1d0e0 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ibonacci(index.-.2);............
1d100 20 20 20 20 20 20 20 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 31 3a 20 6e 6f 74 65 .........^../test.zig:3:21:.note
1d120 3a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 :.called.from.here.....return.fi
1d140 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 bonacci(index.-.1).+.fibonacci(i
1d160 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e ndex.-.2);.....................^
1d180 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 31 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 64 20 66 ../test.zig:3:21:.note:.called.f
1d1a0 72 6f 6d 20 68 65 72 65 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e rom.here.....return.fibonacci(in
1d1c0 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b dex.-.1).+.fibonacci(index.-.2);
1d1e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 .....................^../test.zi
1d200 67 3a 33 3a 32 31 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 g:3:21:.note:.called.from.here..
1d220 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b ...return.fibonacci(index.-.1).+
1d240 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 .fibonacci(index.-.2);..........
1d260 20 20 20 20 20 20 20 20 20 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 31 3a 20 6e 6f ...........^../test.zig:3:21:.no
1d280 74 65 3a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 20 20 20 72 65 74 75 72 6e 20 te:.called.from.here.....return.
1d2a0 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 fibonacci(index.-.1).+.fibonacci
1d2c0 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 (index.-.2);....................
1d2e0 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 31 34 3a 32 35 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 .^../test.zig:14:25:.note:.calle
1d300 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 66 69 62 6f 6e d.from.here.........assert(fibon
1d320 61 63 63 69 28 37 29 20 3d 3d 20 31 33 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 acci(7).==.13);.................
1d340 20 20 20 20 20 20 20 20 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e ........^</code></pre>.......<p>
1d360 0a 20 20 20 20 20 20 54 68 65 20 63 6f 6d 70 69 6c 65 72 20 70 72 6f 64 75 63 65 73 20 61 6e 20 .......The.compiler.produces.an.
1d380 65 72 72 6f 72 20 77 68 69 63 68 20 69 73 20 61 20 73 74 61 63 6b 20 74 72 61 63 65 20 66 72 6f error.which.is.a.stack.trace.fro
1d3a0 6d 20 74 72 79 69 6e 67 20 74 6f 20 65 76 61 6c 75 61 74 65 20 74 68 65 0a 20 20 20 20 20 20 66 m.trying.to.evaluate.the.......f
1d3c0 75 6e 63 74 69 6f 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 0a 20 20 20 20 20 20 3c unction.at.compile-time........<
1d3e0 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4c 75 63 6b 69 6c 79 2c 20 77 65 20 /p>.......<p>.......Luckily,.we.
1d400 75 73 65 64 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 2c 20 61 6e 64 20 73 6f used.an.unsigned.integer,.and.so
1d420 20 77 68 65 6e 20 77 65 20 74 72 69 65 64 20 74 6f 20 73 75 62 74 72 61 63 74 20 31 20 66 72 6f .when.we.tried.to.subtract.1.fro
1d440 6d 20 30 2c 20 69 74 20 74 72 69 67 67 65 72 65 64 0a 20 20 20 20 20 20 75 6e 64 65 66 69 6e 65 m.0,.it.triggered.......undefine
1d460 64 20 62 65 68 61 76 69 6f 72 2c 20 77 68 69 63 68 20 69 73 20 61 6c 77 61 79 73 20 61 20 63 6f d.behavior,.which.is.always.a.co
1d480 6d 70 69 6c 65 20 65 72 72 6f 72 20 69 66 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 6b 6e 6f 77 mpile.error.if.the.compiler.know
1d4a0 73 20 69 74 20 68 61 70 70 65 6e 65 64 2e 0a 20 20 20 20 20 20 42 75 74 20 77 68 61 74 20 77 6f s.it.happened........But.what.wo
1d4c0 75 6c 64 20 68 61 76 65 20 68 61 70 70 65 6e 65 64 20 69 66 20 77 65 20 75 73 65 64 20 61 20 73 uld.have.happened.if.we.used.a.s
1d4e0 69 67 6e 65 64 20 69 6e 74 65 67 65 72 3f 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 igned.integer?.......</p>.......
1d500 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 <pre><code.class="zig">const.ass
1d520 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 ert.=.@import("std").debug.asser
1d540 74 3b 0a 0a 66 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 3a 20 69 33 32 29 20 2d 26 67 t;..fn.fibonacci(index:.i32).-&g
1d560 74 3b 20 69 33 32 20 7b 0a 20 20 20 20 2f 2f 69 66 20 28 69 6e 64 65 78 20 26 6c 74 3b 20 32 29 t;.i32.{.....//if.(index.&lt;.2)
1d580 20 72 65 74 75 72 6e 20 69 6e 64 65 78 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 .return.index;.....return.fibona
1d5a0 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 cci(index.-.1).+.fibonacci(index
1d5c0 20 2d 20 32 29 3b 0a 7d 0a 0a 74 65 73 74 20 22 66 69 62 6f 6e 61 63 63 69 22 20 7b 0a 20 20 20 .-.2);.}..test."fibonacci".{....
1d5e0 20 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 66 69 62 6f 6e .comptime.{.........assert(fibon
1d600 61 63 63 69 28 37 29 20 3d 3d 20 31 33 29 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f acci(7).==.13);.....}.}</code></
1d620 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 3e 2e 2f 74 65 73 74 2e 7a 69 67 pre>.......<pre><code>./test.zig
1d640 3a 33 3a 32 31 3a 20 65 72 72 6f 72 3a 20 65 76 61 6c 75 61 74 69 6f 6e 20 65 78 63 65 65 64 65 :3:21:.error:.evaluation.exceede
1d660 64 20 31 30 30 30 20 62 61 63 6b 77 61 72 64 73 20 62 72 61 6e 63 68 65 73 0a 20 20 20 20 72 65 d.1000.backwards.branches.....re
1d680 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f turn.fibonacci(index.-.1).+.fibo
1d6a0 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nacci(index.-.2);...............
1d6c0 20 20 20 20 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 31 3a 20 6e 6f 74 65 3a 20 63 ......^../test.zig:3:21:.note:.c
1d6e0 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e alled.from.here.....return.fibon
1d700 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 acci(index.-.1).+.fibonacci(inde
1d720 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 2e 2f x.-.2);.....................^../
1d740 74 65 73 74 2e 7a 69 67 3a 33 3a 32 31 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 64 20 66 72 6f 6d test.zig:3:21:.note:.called.from
1d760 20 68 65 72 65 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 .here.....return.fibonacci(index
1d780 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 .-.1).+.fibonacci(index.-.2);...
1d7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 33 ..................^../test.zig:3
1d7c0 3a 32 31 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 20 20 20 :21:.note:.called.from.here.....
1d7e0 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 return.fibonacci(index.-.1).+.fi
1d800 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 bonacci(index.-.2);.............
1d820 20 20 20 20 20 20 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 31 3a 20 6e 6f 74 65 3a ........^../test.zig:3:21:.note:
1d840 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 .called.from.here.....return.fib
1d860 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e onacci(index.-.1).+.fibonacci(in
1d880 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a dex.-.2);.....................^.
1d8a0 2e 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 31 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 64 20 66 72 ./test.zig:3:21:.note:.called.fr
1d8c0 6f 6d 20 68 65 72 65 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 om.here.....return.fibonacci(ind
1d8e0 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a ex.-.1).+.fibonacci(index.-.2);.
1d900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 ....................^../test.zig
1d920 3a 33 3a 32 31 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 20 :3:21:.note:.called.from.here...
1d940 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 ..return.fibonacci(index.-.1).+.
1d960 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 fibonacci(index.-.2);...........
1d980 20 20 20 20 20 20 20 20 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 31 3a 20 6e 6f 74 ..........^../test.zig:3:21:.not
1d9a0 65 3a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 20 20 20 72 65 74 75 72 6e 20 66 e:.called.from.here.....return.f
1d9c0 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 ibonacci(index.-.1).+.fibonacci(
1d9e0 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 index.-.2);.....................
1da00 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 31 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 64 20 ^../test.zig:3:21:.note:.called.
1da20 66 72 6f 6d 20 68 65 72 65 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 from.here.....return.fibonacci(i
1da40 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 ndex.-.1).+.fibonacci(index.-.2)
1da60 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a ;.....................^../test.z
1da80 69 67 3a 33 3a 32 31 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 0a ig:3:21:.note:.called.from.here.
1daa0 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 ....return.fibonacci(index.-.1).
1dac0 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 +.fibonacci(index.-.2);.........
1dae0 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 31 3a 20 6e ............^../test.zig:3:21:.n
1db00 6f 74 65 3a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 20 20 20 72 65 74 75 72 6e ote:.called.from.here.....return
1db20 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 .fibonacci(index.-.1).+.fibonacc
1db40 69 28 69 6e 64 65 78 20 2d 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 i(index.-.2);...................
1db60 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 31 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 ..^../test.zig:3:21:.note:.calle
1db80 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 20 20 20 72 65 74 75 72 6e 20 66 69 62 6f 6e 61 63 63 69 d.from.here.....return.fibonacci
1dba0 28 69 6e 64 65 78 20 2d 20 31 29 20 2b 20 66 69 62 6f 6e 61 63 63 69 28 69 6e 64 65 78 20 2d 20 (index.-.1).+.fibonacci(index.-.
1dbc0 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 3c 2f 63 6f 64 65 3e 2);.....................^</code>
1dbe0 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 63 6f 6d 70 69 </pre>.......<p>.......The.compi
1dc00 6c 65 72 20 6e 6f 74 69 63 65 64 20 74 68 61 74 20 65 76 61 6c 75 61 74 69 6e 67 20 74 68 69 73 ler.noticed.that.evaluating.this
1dc20 20 66 75 6e 63 74 69 6f 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 74 6f 6f 6b 20 61 .function.at.compile-time.took.a
1dc40 20 6c 6f 6e 67 20 74 69 6d 65 2c 0a 20 20 20 20 20 20 61 6e 64 20 74 68 75 73 20 65 6d 69 74 74 .long.time,.......and.thus.emitt
1dc60 65 64 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 20 61 6e 64 20 67 61 76 65 20 75 70 2e 20 ed.a.compile.error.and.gave.up..
1dc80 49 66 20 74 68 65 20 70 72 6f 67 72 61 6d 6d 65 72 20 77 61 6e 74 73 20 74 6f 20 69 6e 63 72 65 If.the.programmer.wants.to.incre
1dca0 61 73 65 0a 20 20 20 20 20 20 74 68 65 20 62 75 64 67 65 74 20 66 6f 72 20 63 6f 6d 70 69 6c 65 ase.......the.budget.for.compile
1dcc0 2d 74 69 6d 65 20 63 6f 6d 70 75 74 61 74 69 6f 6e 2c 20 74 68 65 79 20 63 61 6e 20 75 73 65 20 -time.computation,.they.can.use.
1dce0 61 20 62 75 69 6c 74 2d 69 6e 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 65 64 0a 20 20 20 20 20 a.built-in.function.called......
1dd00 20 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 65 74 45 76 61 6c 42 72 61 6e 63 68 .<a.href="#builtin-setEvalBranch
1dd20 51 75 6f 74 61 22 3e 40 73 65 74 45 76 61 6c 42 72 61 6e 63 68 51 75 6f 74 61 3c 2f 61 3e 20 74 Quota">@setEvalBranchQuota</a>.t
1dd40 6f 20 63 68 61 6e 67 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 6e 75 6d 62 65 72 20 31 30 30 30 o.change.the.default.number.1000
1dd60 20 74 6f 20 73 6f 6d 65 74 68 69 6e 67 20 65 6c 73 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 .to.something.else........</p>..
1dd80 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 57 68 61 74 20 69 66 20 77 65 20 66 69 78 20 74 68 .....<p>.......What.if.we.fix.th
1dda0 65 20 62 61 73 65 20 63 61 73 65 2c 20 62 75 74 20 70 75 74 20 74 68 65 20 77 72 6f 6e 67 20 76 e.base.case,.but.put.the.wrong.v
1ddc0 61 6c 75 65 20 69 6e 20 74 68 65 20 3c 63 6f 64 65 3e 61 73 73 65 72 74 3c 2f 63 6f 64 65 3e 20 alue.in.the.<code>assert</code>.
1dde0 6c 69 6e 65 3f 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 line?.......</p>.......<pre><cod
1de00 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 61 73 73 e.class="zig">comptime.{.....ass
1de20 65 72 74 28 66 69 62 6f 6e 61 63 63 69 28 37 29 20 3d 3d 20 39 39 39 39 39 29 3b 0a 7d 3c 2f 63 ert(fibonacci(7).==.99999);.}</c
1de40 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 3e 2e 2f 74 65 ode></pre>.......<pre><code>./te
1de60 73 74 2e 7a 69 67 3a 31 35 3a 31 34 3a 20 65 72 72 6f 72 3a 20 75 6e 61 62 6c 65 20 74 6f 20 65 st.zig:15:14:.error:.unable.to.e
1de80 76 61 6c 75 61 74 65 20 63 6f 6e 73 74 61 6e 74 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 valuate.constant.expression.....
1dea0 69 66 20 28 21 6f 6b 29 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 0a 20 20 20 20 20 20 20 20 20 20 if.(!ok).unreachable;...........
1dec0 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 31 30 3a 31 35 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c ..^../test.zig:10:15:.note:.call
1dee0 65 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 74 28 66 69 62 6f ed.from.here.........assert(fibo
1df00 6e 61 63 63 69 28 37 29 20 3d 3d 20 39 39 39 39 39 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 nacci(7).==.99999);.............
1df20 20 20 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 ..^</code></pre>.......<p>......
1df40 20 57 68 61 74 20 68 61 70 70 65 6e 65 64 20 69 73 20 5a 69 67 20 73 74 61 72 74 65 64 20 69 6e .What.happened.is.Zig.started.in
1df60 74 65 72 70 72 65 74 69 6e 67 20 74 68 65 20 3c 63 6f 64 65 3e 61 73 73 65 72 74 3c 2f 63 6f 64 terpreting.the.<code>assert</cod
1df80 65 3e 20 66 75 6e 63 74 69 6f 6e 20 77 69 74 68 20 74 68 65 0a 20 20 20 20 20 20 70 61 72 61 6d e>.function.with.the.......param
1dfa0 65 74 65 72 20 3c 63 6f 64 65 3e 6f 6b 3c 2f 63 6f 64 65 3e 20 73 65 74 20 74 6f 20 3c 63 6f 64 eter.<code>ok</code>.set.to.<cod
1dfc0 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 20 57 68 65 6e 20 74 68 65 20 69 6e 74 65 72 70 72 e>false</code>..When.the.interpr
1dfe0 65 74 65 72 20 68 69 74 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 75 6e 72 65 61 63 68 61 62 6c 65 eter.hit.......<code>unreachable
1e000 3c 2f 63 6f 64 65 3e 20 69 74 20 65 6d 69 74 74 65 64 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 </code>.it.emitted.a.compile.err
1e020 6f 72 2c 20 62 65 63 61 75 73 65 20 72 65 61 63 68 69 6e 67 20 75 6e 72 65 61 63 68 61 62 6c 65 or,.because.reaching.unreachable
1e040 0a 20 20 20 20 20 20 63 6f 64 65 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f .......code.is.undefined.behavio
1e060 72 2c 20 61 6e 64 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 20 63 61 75 73 65 73 r,.and.undefined.behavior.causes
1e080 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 20 69 66 20 69 74 20 69 73 20 64 65 74 65 63 74 .a.compile.error.if.it.is.detect
1e0a0 65 64 0a 20 20 20 20 20 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2e 0a 20 20 20 20 20 20 ed.......at.compile-time........
1e0c0 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 20 74 68 65 20 67 6c 6f </p>........<p>.......In.the.glo
1e0e0 62 61 6c 20 73 63 6f 70 65 20 28 6f 75 74 73 69 64 65 20 6f 66 20 61 6e 79 20 66 75 6e 63 74 69 bal.scope.(outside.of.any.functi
1e100 6f 6e 29 2c 20 61 6c 6c 20 65 78 70 72 65 73 73 69 6f 6e 73 20 61 72 65 20 69 6d 70 6c 69 63 69 on),.all.expressions.are.implici
1e120 74 6c 79 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 3c 2f 63 6f 64 65 3e 20 tly.......<code>comptime</code>.
1e140 65 78 70 72 65 73 73 69 6f 6e 73 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 77 65 20 expressions..This.means.that.we.
1e160 63 61 6e 20 75 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 74 6f 0a 20 20 20 20 20 20 69 6e 69 74 69 can.use.functions.to.......initi
1e180 61 6c 69 7a 65 20 63 6f 6d 70 6c 65 78 20 73 74 61 74 69 63 20 64 61 74 61 2e 20 46 6f 72 20 65 alize.complex.static.data..For.e
1e1a0 78 61 6d 70 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 xample:.......</p>.......<pre><c
1e1c0 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 66 69 72 73 74 5f 32 35 5f 70 ode.class="zig">const.first_25_p
1e1e0 72 69 6d 65 73 20 3d 20 66 69 72 73 74 4e 50 72 69 6d 65 73 28 32 35 29 3b 0a 63 6f 6e 73 74 20 rimes.=.firstNPrimes(25);.const.
1e200 73 75 6d 5f 6f 66 5f 66 69 72 73 74 5f 32 35 5f 70 72 69 6d 65 73 20 3d 20 73 75 6d 28 66 69 72 sum_of_first_25_primes.=.sum(fir
1e220 73 74 5f 32 35 5f 70 72 69 6d 65 73 29 3b 0a 0a 66 6e 20 66 69 72 73 74 4e 50 72 69 6d 65 73 28 st_25_primes);..fn.firstNPrimes(
1e240 63 6f 6d 70 74 69 6d 65 20 6e 3a 20 75 73 69 7a 65 29 20 2d 26 67 74 3b 20 5b 6e 5d 69 33 32 20 comptime.n:.usize).-&gt;.[n]i32.
1e260 7b 0a 20 20 20 20 76 61 72 20 70 72 69 6d 65 5f 6c 69 73 74 3a 20 5b 6e 5d 69 33 32 20 3d 20 75 {.....var.prime_list:.[n]i32.=.u
1e280 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 76 61 72 20 6e 65 78 74 5f 69 6e 64 65 78 3a 20 75 73 ndefined;.....var.next_index:.us
1e2a0 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 76 61 72 20 74 65 73 74 5f 6e 75 6d 62 65 72 3a 20 69 33 ize.=.0;.....var.test_number:.i3
1e2c0 32 20 3d 20 32 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 6e 65 78 74 5f 69 6e 64 65 78 20 26 6c 74 2.=.2;.....while.(next_index.&lt
1e2e0 3b 20 70 72 69 6d 65 5f 6c 69 73 74 2e 6c 65 6e 29 20 3a 20 28 74 65 73 74 5f 6e 75 6d 62 65 72 ;.prime_list.len).:.(test_number
1e300 20 2b 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 74 65 73 74 5f 70 72 69 6d 65 5f .+=.1).{.........var.test_prime_
1e320 69 6e 64 65 78 3a 20 75 73 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 73 index:.usize.=.0;.........var.is
1e340 5f 70 72 69 6d 65 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 74 65 _prime.=.true;.........while.(te
1e360 73 74 5f 70 72 69 6d 65 5f 69 6e 64 65 78 20 26 6c 74 3b 20 6e 65 78 74 5f 69 6e 64 65 78 29 20 st_prime_index.&lt;.next_index).
1e380 3a 20 28 74 65 73 74 5f 70 72 69 6d 65 5f 69 6e 64 65 78 20 2b 3d 20 31 29 20 7b 0a 20 20 20 20 :.(test_prime_index.+=.1).{.....
1e3a0 20 20 20 20 20 20 20 20 69 66 20 28 74 65 73 74 5f 6e 75 6d 62 65 72 20 25 20 70 72 69 6d 65 5f ........if.(test_number.%.prime_
1e3c0 6c 69 73 74 5b 74 65 73 74 5f 70 72 69 6d 65 5f 69 6e 64 65 78 5d 20 3d 3d 20 30 29 20 7b 0a 20 list[test_prime_index].==.0).{..
1e3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 73 5f 70 72 69 6d 65 20 3d 20 66 61 6c 73 65 3b ...............is_prime.=.false;
1e400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 .................break;.........
1e420 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 5f 70 ....}.........}.........if.(is_p
1e440 72 69 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6d 65 5f 6c 69 73 74 5b 6e rime).{.............prime_list[n
1e460 65 78 74 5f 69 6e 64 65 78 5d 20 3d 20 74 65 73 74 5f 6e 75 6d 62 65 72 3b 0a 20 20 20 20 20 20 ext_index].=.test_number;.......
1e480 20 20 20 20 20 20 6e 65 78 74 5f 69 6e 64 65 78 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 7d ......next_index.+=.1;.........}
1e4a0 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 70 72 69 6d 65 5f 6c 69 73 74 3b 0a 7d 0a .....}.....return.prime_list;.}.
1e4c0 0a 66 6e 20 73 75 6d 28 6e 75 6d 62 65 72 73 3a 20 5b 5d 69 33 32 29 20 2d 26 67 74 3b 20 69 33 .fn.sum(numbers:.[]i32).-&gt;.i3
1e4e0 32 20 7b 0a 20 20 20 20 76 61 72 20 72 65 73 75 6c 74 3a 20 69 33 32 20 3d 20 30 3b 0a 20 20 20 2.{.....var.result:.i32.=.0;....
1e500 20 66 6f 72 20 28 6e 75 6d 62 65 72 73 29 20 7c 78 7c 20 7b 0a 20 20 20 20 20 20 20 20 72 65 73 .for.(numbers).|x|.{.........res
1e520 75 6c 74 20 2b 3d 20 78 3b 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c ult.+=.x;.....}.....return.resul
1e540 74 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 t;.}</code></pre>.......<p>.....
1e560 20 20 57 68 65 6e 20 77 65 20 63 6f 6d 70 69 6c 65 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2c 20 ..When.we.compile.this.program,.
1e580 5a 69 67 20 67 65 6e 65 72 61 74 65 73 20 74 68 65 20 63 6f 6e 73 74 61 6e 74 73 0a 20 20 20 20 Zig.generates.the.constants.....
1e5a0 20 20 77 69 74 68 20 74 68 65 20 61 6e 73 77 65 72 20 70 72 65 2d 63 6f 6d 70 75 74 65 64 2e 20 ..with.the.answer.pre-computed..
1e5c0 48 65 72 65 20 61 72 65 20 74 68 65 20 6c 69 6e 65 73 20 66 72 6f 6d 20 74 68 65 20 67 65 6e 65 Here.are.the.lines.from.the.gene
1e5e0 72 61 74 65 64 20 4c 4c 56 4d 20 49 52 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 rated.LLVM.IR:.......</p>.......
1e600 3c 70 72 65 3e 3c 63 6f 64 65 3e 40 30 20 3d 20 69 6e 74 65 72 6e 61 6c 20 75 6e 6e 61 6d 65 64 <pre><code>@0.=.internal.unnamed
1e620 5f 61 64 64 72 20 63 6f 6e 73 74 61 6e 74 20 5b 32 35 20 78 20 69 33 32 5d 20 5b 69 33 32 20 32 _addr.constant.[25.x.i32].[i32.2
1e640 2c 20 69 33 32 20 33 2c 20 69 33 32 20 35 2c 20 69 33 32 20 37 2c 20 69 33 32 20 31 31 2c 20 69 ,.i32.3,.i32.5,.i32.7,.i32.11,.i
1e660 33 32 20 31 33 2c 20 69 33 32 20 31 37 2c 20 69 33 32 20 31 39 2c 20 69 33 32 20 32 33 2c 20 69 32.13,.i32.17,.i32.19,.i32.23,.i
1e680 33 32 20 32 39 2c 20 69 33 32 20 33 31 2c 20 69 33 32 20 33 37 2c 20 69 33 32 20 34 31 2c 20 69 32.29,.i32.31,.i32.37,.i32.41,.i
1e6a0 33 32 20 34 33 2c 20 69 33 32 20 34 37 2c 20 69 33 32 20 35 33 2c 20 69 33 32 20 35 39 2c 20 69 32.43,.i32.47,.i32.53,.i32.59,.i
1e6c0 33 32 20 36 31 2c 20 69 33 32 20 36 37 2c 20 69 33 32 20 37 31 2c 20 69 33 32 20 37 33 2c 20 69 32.61,.i32.67,.i32.71,.i32.73,.i
1e6e0 33 32 20 37 39 2c 20 69 33 32 20 38 33 2c 20 69 33 32 20 38 39 2c 20 69 33 32 20 39 37 5d 0a 20 32.79,.i32.83,.i32.89,.i32.97]..
1e700 20 20 20 20 20 40 31 20 3d 20 69 6e 74 65 72 6e 61 6c 20 75 6e 6e 61 6d 65 64 5f 61 64 64 72 20 .....@1.=.internal.unnamed_addr.
1e720 63 6f 6e 73 74 61 6e 74 20 69 33 32 20 31 30 36 30 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 constant.i32.1060</code></pre>..
1e740 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4e 6f 74 65 20 74 68 61 74 20 77 65 20 64 69 64 20 .....<p>.......Note.that.we.did.
1e760 6e 6f 74 20 68 61 76 65 20 74 6f 20 64 6f 20 61 6e 79 74 68 69 6e 67 20 73 70 65 63 69 61 6c 20 not.have.to.do.anything.special.
1e780 77 69 74 68 20 74 68 65 20 73 79 6e 74 61 78 20 6f 66 20 74 68 65 73 65 20 66 75 6e 63 74 69 6f with.the.syntax.of.these.functio
1e7a0 6e 73 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 0a 20 20 20 20 20 20 77 65 20 63 6f 75 6c 64 20 ns..For.example,.......we.could.
1e7c0 63 61 6c 6c 20 74 68 65 20 3c 63 6f 64 65 3e 73 75 6d 3c 2f 63 6f 64 65 3e 20 66 75 6e 63 74 69 call.the.<code>sum</code>.functi
1e7e0 6f 6e 20 61 73 20 69 73 20 77 69 74 68 20 61 20 73 6c 69 63 65 20 6f 66 20 6e 75 6d 62 65 72 73 on.as.is.with.a.slice.of.numbers
1e800 20 77 68 6f 73 65 20 6c 65 6e 67 74 68 20 61 6e 64 20 76 61 6c 75 65 73 20 77 65 72 65 0a 20 20 .whose.length.and.values.were...
1e820 20 20 20 20 6f 6e 6c 79 20 6b 6e 6f 77 6e 20 61 74 20 72 75 6e 2d 74 69 6d 65 2e 0a 20 20 20 20 ....only.known.at.run-time......
1e840 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 67 65 6e 65 72 69 63 2d 64 61 74 ..</p>.......<h3.id="generic-dat
1e860 61 2d 73 74 72 75 63 74 75 72 65 73 22 3e 47 65 6e 65 72 69 63 20 44 61 74 61 20 53 74 72 75 63 a-structures">Generic.Data.Struc
1e880 74 75 72 65 73 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 20 75 tures</h3>.......<p>.......Zig.u
1e8a0 73 65 73 20 74 68 65 73 65 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 74 6f 20 69 6d 70 6c 65 6d ses.these.capabilities.to.implem
1e8c0 65 6e 74 20 67 65 6e 65 72 69 63 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65 73 20 77 69 74 68 ent.generic.data.structures.with
1e8e0 6f 75 74 20 69 6e 74 72 6f 64 75 63 69 6e 67 20 61 6e 79 0a 20 20 20 20 20 20 73 70 65 63 69 61 out.introducing.any.......specia
1e900 6c 2d 63 61 73 65 20 73 79 6e 74 61 78 2e 20 49 66 20 79 6f 75 20 66 6f 6c 6c 6f 77 65 64 20 61 l-case.syntax..If.you.followed.a
1e920 6c 6f 6e 67 20 73 6f 20 66 61 72 2c 20 79 6f 75 20 6d 61 79 20 61 6c 72 65 61 64 79 20 6b 6e 6f long.so.far,.you.may.already.kno
1e940 77 20 68 6f 77 20 74 6f 20 63 72 65 61 74 65 20 61 0a 20 20 20 20 20 20 67 65 6e 65 72 69 63 20 w.how.to.create.a.......generic.
1e960 64 61 74 61 20 73 74 72 75 63 74 75 72 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 data.structure........</p>......
1e980 20 3c 70 3e 0a 20 20 20 20 20 20 48 65 72 65 20 69 73 20 61 6e 20 65 78 61 6d 70 6c 65 20 6f 66 .<p>.......Here.is.an.example.of
1e9a0 20 61 20 67 65 6e 65 72 69 63 20 3c 63 6f 64 65 3e 4c 69 73 74 3c 2f 63 6f 64 65 3e 20 64 61 74 .a.generic.<code>List</code>.dat
1e9c0 61 20 73 74 72 75 63 74 75 72 65 2c 20 74 68 61 74 20 77 65 20 77 69 6c 6c 20 69 6e 73 74 61 6e a.structure,.that.we.will.instan
1e9e0 74 69 61 74 65 20 77 69 74 68 0a 20 20 20 20 20 20 74 68 65 20 74 79 70 65 20 3c 63 6f 64 65 3e tiate.with.......the.type.<code>
1ea00 69 33 32 3c 2f 63 6f 64 65 3e 2e 20 49 6e 20 5a 69 67 20 77 65 20 72 65 66 65 72 20 74 6f 20 74 i32</code>..In.Zig.we.refer.to.t
1ea20 68 65 20 74 79 70 65 20 61 73 20 3c 63 6f 64 65 3e 4c 69 73 74 28 69 33 32 29 3c 2f 63 6f 64 65 he.type.as.<code>List(i32)</code
1ea40 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 >........</p>.......<pre><code.c
1ea60 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6e 20 4c 69 73 74 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 lass="zig">fn.List(comptime.T:.t
1ea80 79 70 65 29 20 2d 26 67 74 3b 20 74 79 70 65 20 7b 0a 20 20 20 20 73 74 72 75 63 74 20 7b 0a 20 ype).-&gt;.type.{.....struct.{..
1eaa0 20 20 20 20 20 20 20 69 74 65 6d 73 3a 20 5b 5d 54 2c 0a 20 20 20 20 20 20 20 20 6c 65 6e 3a 20 .......items:.[]T,.........len:.
1eac0 75 73 69 7a 65 2c 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 usize,.....}.}</code></pre>.....
1eae0 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 61 74 27 73 20 69 74 2e 20 49 74 27 73 20 61 20 66 75 ..<p>.......That's.it..It's.a.fu
1eb00 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 61 6e 20 61 6e 6f 6e 79 6d 6f 75 73 nction.that.returns.an.anonymous
1eb20 20 3c 63 6f 64 65 3e 73 74 72 75 63 74 3c 2f 63 6f 64 65 3e 2e 20 46 6f 72 20 74 68 65 20 70 75 .<code>struct</code>..For.the.pu
1eb40 72 70 6f 73 65 73 20 6f 66 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 73 0a 20 20 20 20 20 20 61 rposes.of.error.messages.......a
1eb60 6e 64 20 64 65 62 75 67 67 69 6e 67 2c 20 5a 69 67 20 69 6e 66 65 72 73 20 74 68 65 20 6e 61 6d nd.debugging,.Zig.infers.the.nam
1eb80 65 20 3c 63 6f 64 65 3e 22 4c 69 73 74 28 69 33 32 29 22 3c 2f 63 6f 64 65 3e 20 66 72 6f 6d 20 e.<code>"List(i32)"</code>.from.
1eba0 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 6e 61 6d 65 20 61 6e 64 20 70 61 72 61 6d 65 74 65 72 73 the.function.name.and.parameters
1ebc0 20 69 6e 76 6f 6b 65 64 20 77 68 65 6e 20 63 72 65 61 74 69 6e 67 0a 20 20 20 20 20 20 74 68 65 .invoked.when.creating.......the
1ebe0 20 61 6e 6f 6e 79 6d 6f 75 73 20 73 74 72 75 63 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 .anonymous.struct........</p>...
1ec00 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 6f 20 6b 65 65 70 20 74 68 65 20 6c 61 6e 67 75 61 ....<p>.......To.keep.the.langua
1ec20 67 65 20 73 6d 61 6c 6c 20 61 6e 64 20 75 6e 69 66 6f 72 6d 2c 20 61 6c 6c 20 61 67 67 72 65 67 ge.small.and.uniform,.all.aggreg
1ec40 61 74 65 20 74 79 70 65 73 20 69 6e 20 5a 69 67 20 61 72 65 20 61 6e 6f 6e 79 6d 6f 75 73 2e 20 ate.types.in.Zig.are.anonymous..
1ec60 54 6f 20 67 69 76 65 20 61 20 74 79 70 65 0a 20 20 20 20 20 20 61 20 6e 61 6d 65 2c 20 77 65 20 To.give.a.type.......a.name,.we.
1ec80 61 73 73 69 67 6e 20 69 74 20 74 6f 20 61 20 63 6f 6e 73 74 61 6e 74 3a 0a 20 20 20 20 20 20 3c assign.it.to.a.constant:.......<
1eca0 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 /p>.......<pre><code.class="zig"
1ecc0 3e 63 6f 6e 73 74 20 4e 6f 64 65 20 3d 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 6e 65 78 74 3a >const.Node.=.struct.{.....next:
1ece0 20 26 61 6d 70 3b 4e 6f 64 65 2c 0a 20 20 20 20 6e 61 6d 65 3a 20 5b 5d 75 38 2c 0a 7d 3b 3c 2f .&amp;Node,.....name:.[]u8,.};</
1ed00 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 code></pre>.......<p>.......This
1ed20 20 77 6f 72 6b 73 20 62 65 63 61 75 73 65 20 61 6c 6c 20 74 6f 70 20 6c 65 76 65 6c 20 64 65 63 .works.because.all.top.level.dec
1ed40 6c 61 72 61 74 69 6f 6e 73 20 61 72 65 20 6f 72 64 65 72 2d 69 6e 64 65 70 65 6e 64 65 6e 74 2c larations.are.order-independent,
1ed60 20 61 6e 64 20 61 73 20 6c 6f 6e 67 20 61 73 20 74 68 65 72 65 20 69 73 6e 27 74 0a 20 20 20 20 .and.as.long.as.there.isn't.....
1ed80 20 20 61 6e 20 61 63 74 75 61 6c 20 69 6e 66 69 6e 69 74 65 20 72 65 67 72 65 73 73 69 6f 6e 2c ..an.actual.infinite.regression,
1eda0 20 76 61 6c 75 65 73 20 63 61 6e 20 72 65 66 65 72 20 74 6f 20 74 68 65 6d 73 65 6c 76 65 73 2c .values.can.refer.to.themselves,
1edc0 20 64 69 72 65 63 74 6c 79 20 6f 72 20 69 6e 64 69 72 65 63 74 6c 79 2e 20 49 6e 20 74 68 69 73 .directly.or.indirectly..In.this
1ede0 20 63 61 73 65 2c 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 4e 6f 64 65 3c 2f 63 6f 64 65 3e 20 72 .case,.......<code>Node</code>.r
1ee00 65 66 65 72 73 20 74 6f 20 69 74 73 65 6c 66 20 61 73 20 61 20 70 6f 69 6e 74 65 72 2c 20 77 68 efers.to.itself.as.a.pointer,.wh
1ee20 69 63 68 20 69 73 20 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 61 6e 20 69 6e 66 69 6e 69 74 65 20 ich.is.not.actually.an.infinite.
1ee40 72 65 67 72 65 73 73 69 6f 6e 2c 20 73 6f 0a 20 20 20 20 20 20 69 74 20 77 6f 72 6b 73 20 66 69 regression,.so.......it.works.fi
1ee60 6e 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 63 61 73 ne........</p>.......<h3.id="cas
1ee80 65 2d 73 74 75 64 79 2d 70 72 69 6e 74 66 22 3e 43 61 73 65 20 53 74 75 64 79 3a 20 70 72 69 6e e-study-printf">Case.Study:.prin
1eea0 74 66 20 69 6e 20 5a 69 67 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 50 tf.in.Zig</h3>.......<p>.......P
1eec0 75 74 74 69 6e 67 20 61 6c 6c 20 6f 66 20 74 68 69 73 20 74 6f 67 65 74 68 65 72 2c 20 6c 65 74 utting.all.of.this.together,.let
1eee0 27 73 20 73 65 65 65 20 68 6f 77 20 3c 63 6f 64 65 3e 70 72 69 6e 74 66 3c 2f 63 6f 64 65 3e 20 's.seee.how.<code>printf</code>.
1ef00 77 6f 72 6b 73 20 69 6e 20 5a 69 67 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c works.in.Zig........</p>.......<
1ef20 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 69 6f 20 3d pre><code.class="zig">const.io.=
1ef40 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 69 6f 3b 0a 0a 63 6f 6e 73 74 20 61 5f 6e 75 6d .@import("std").io;..const.a_num
1ef60 62 65 72 3a 20 69 33 32 20 3d 20 31 32 33 34 3b 0a 63 6f 6e 73 74 20 61 5f 73 74 72 69 6e 67 20 ber:.i32.=.1234;.const.a_string.
1ef80 3d 20 22 66 6f 6f 62 61 72 22 3b 0a 0a 70 75 62 20 66 6e 20 6d 61 69 6e 28 61 72 67 73 3a 20 5b =."foobar";..pub.fn.main(args:.[
1efa0 5d 5b 5d 75 38 29 20 2d 26 67 74 3b 20 25 76 6f 69 64 20 7b 0a 20 20 20 20 25 25 69 6f 2e 73 74 ][]u8).-&gt;.%void.{.....%%io.st
1efc0 64 65 72 72 2e 70 72 69 6e 74 66 28 22 68 65 72 65 20 69 73 20 61 20 73 74 72 69 6e 67 3a 20 27 derr.printf("here.is.a.string:.'
1efe0 7b 7d 27 20 68 65 72 65 20 69 73 20 61 20 6e 75 6d 62 65 72 3a 20 7b 7d 5c 6e 22 2c 20 61 5f 73 {}'.here.is.a.number:.{}\n",.a_s
1f000 74 72 69 6e 67 2c 20 61 5f 6e 75 6d 62 65 72 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e tring,.a_number);.}</code></pre>
1f020 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 3e 68 65 72 65 20 69 73 20 61 20 73 74 72 69 .......<pre><code>here.is.a.stri
1f040 6e 67 3a 20 27 66 6f 6f 62 61 72 27 20 68 65 72 65 20 69 73 20 61 20 6e 75 6d 62 65 72 3a 20 31 ng:.'foobar'.here.is.a.number:.1
1f060 32 33 34 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 234</code></pre>........<p>.....
1f080 20 20 4c 65 74 27 73 20 63 72 61 63 6b 20 6f 70 65 6e 20 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 ..Let's.crack.open.the.implement
1f0a0 61 74 69 6f 6e 20 6f 66 20 74 68 69 73 20 61 6e 64 20 73 65 65 20 68 6f 77 20 69 74 20 77 6f 72 ation.of.this.and.see.how.it.wor
1f0c0 6b 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 ks:.......</p>........<pre><code
1f0e0 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 2f 2f 2f 20 43 61 6c 6c 73 20 70 72 69 6e 74 20 61 6e 64 .class="zig">///.Calls.print.and
1f100 20 74 68 65 6e 20 66 6c 75 73 68 65 73 20 74 68 65 20 62 75 66 66 65 72 2e 0a 70 75 62 20 66 6e .then.flushes.the.buffer..pub.fn
1f120 20 70 72 69 6e 74 66 28 73 65 6c 66 3a 20 26 61 6d 70 3b 4f 75 74 53 74 72 65 61 6d 2c 20 63 6f .printf(self:.&amp;OutStream,.co
1f140 6d 70 74 69 6d 65 20 66 6f 72 6d 61 74 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 2c 20 61 72 67 73 3a mptime.format:.[]const.u8,.args:
1f160 20 2e 2e 2e 29 20 2d 26 67 74 3b 20 25 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 53 74 ....).-&gt;.%void.{.....const.St
1f180 61 74 65 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 20 20 20 20 53 74 61 72 74 2c 0a 20 20 20 20 ate.=.enum.{.........Start,.....
1f1a0 20 20 20 20 4f 70 65 6e 42 72 61 63 65 2c 0a 20 20 20 20 20 20 20 20 43 6c 6f 73 65 42 72 61 63 ....OpenBrace,.........CloseBrac
1f1c0 65 2c 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 76 61 72 20 73 74 61 72 e,.....};......comptime.var.star
1f1e0 74 5f 69 6e 64 65 78 3a 20 75 73 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 t_index:.usize.=.0;.....comptime
1f200 20 76 61 72 20 73 74 61 74 65 20 3d 20 53 74 61 74 65 2e 53 74 61 72 74 3b 0a 20 20 20 20 63 6f .var.state.=.State.Start;.....co
1f220 6d 70 74 69 6d 65 20 76 61 72 20 6e 65 78 74 5f 61 72 67 3a 20 75 73 69 7a 65 20 3d 20 30 3b 0a mptime.var.next_arg:.usize.=.0;.
1f240 0a 20 20 20 20 69 6e 6c 69 6e 65 20 66 6f 72 20 28 66 6f 72 6d 61 74 29 20 7c 63 2c 20 69 7c 20 .....inline.for.(format).|c,.i|.
1f260 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 73 74 61 74 65 29 20 7b 0a 20 20 20 20 20 {.........switch.(state).{......
1f280 20 20 20 20 20 20 20 53 74 61 74 65 2e 53 74 61 72 74 20 3d 26 67 74 3b 20 73 77 69 74 63 68 20 .......State.Start.=&gt;.switch.
1f2a0 28 63 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 7b 27 20 3d 26 67 74 3b 20 (c).{.................'{'.=&gt;.
1f2c0 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 61 72 74 5f {.....................if.(start_
1f2e0 69 6e 64 65 78 20 26 6c 74 3b 20 69 29 20 25 72 65 74 75 72 6e 20 73 65 6c 66 2e 77 72 69 74 65 index.&lt;.i).%return.self.write
1f300 28 66 6f 72 6d 61 74 5b 73 74 61 72 74 5f 69 6e 64 65 78 2e 2e 2e 69 5d 29 3b 0a 20 20 20 20 20 (format[start_index...i]);......
1f320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 53 74 61 74 65 2e 4f 70 65 ...............state.=.State.Ope
1f340 6e 42 72 61 63 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 nBrace;.................},......
1f360 20 20 20 20 20 20 20 20 20 20 20 27 7d 27 20 3d 26 67 74 3b 20 7b 0a 20 20 20 20 20 20 20 20 20 ...........'}'.=&gt;.{..........
1f380 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 61 72 74 5f 69 6e 64 65 78 20 26 6c 74 3b 20 ...........if.(start_index.&lt;.
1f3a0 69 29 20 25 72 65 74 75 72 6e 20 73 65 6c 66 2e 77 72 69 74 65 28 66 6f 72 6d 61 74 5b 73 74 61 i).%return.self.write(format[sta
1f3c0 72 74 5f 69 6e 64 65 78 2e 2e 2e 69 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 rt_index...i]);.................
1f3e0 20 20 20 20 73 74 61 74 65 20 3d 20 53 74 61 74 65 2e 43 6c 6f 73 65 42 72 61 63 65 3b 0a 20 20 ....state.=.State.CloseBrace;...
1f400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..............},................
1f420 20 65 6c 73 65 20 3d 26 67 74 3b 20 7b 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 .else.=&gt;.{},.............},..
1f440 20 20 20 20 20 20 20 20 20 20 20 53 74 61 74 65 2e 4f 70 65 6e 42 72 61 63 65 20 3d 26 67 74 3b ...........State.OpenBrace.=&gt;
1f460 20 73 77 69 74 63 68 20 28 63 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 7b .switch.(c).{.................'{
1f480 27 20 3d 26 67 74 3b 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 '.=&gt;.{.....................st
1f4a0 61 74 65 20 3d 20 53 74 61 74 65 2e 53 74 61 72 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ate.=.State.Start;..............
1f4c0 20 20 20 20 20 20 20 73 74 61 72 74 5f 69 6e 64 65 78 20 3d 20 69 3b 0a 20 20 20 20 20 20 20 20 .......start_index.=.i;.........
1f4e0 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 7d 27 20 3d ........},.................'}'.=
1f500 26 67 74 3b 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 25 72 65 74 75 &gt;.{.....................%retu
1f520 72 6e 20 73 65 6c 66 2e 70 72 69 6e 74 56 61 6c 75 65 28 61 72 67 73 5b 6e 65 78 74 5f 61 72 67 rn.self.printValue(args[next_arg
1f540 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 78 74 5f 61 72 67 ]);.....................next_arg
1f560 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74 65 .+=.1;.....................state
1f580 20 3d 20 53 74 61 74 65 2e 53 74 61 72 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .=.State.Start;.................
1f5a0 20 20 20 20 73 74 61 72 74 5f 69 6e 64 65 78 20 3d 20 69 20 2b 20 31 3b 0a 20 20 20 20 20 20 20 ....start_index.=.i.+.1;........
1f5c0 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 .........},.................else
1f5e0 20 3d 26 67 74 3b 20 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 28 22 55 6e 6b 6e 6f 77 6e 20 66 6f .=&gt;.@compileError("Unknown.fo
1f600 72 6d 61 74 20 63 68 61 72 61 63 74 65 72 3a 20 22 20 2b 2b 20 63 29 2c 0a 20 20 20 20 20 20 20 rmat.character:.".++.c),........
1f620 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 53 74 61 74 65 2e 43 6c 6f 73 65 42 .....},.............State.CloseB
1f640 72 61 63 65 20 3d 26 67 74 3b 20 73 77 69 74 63 68 20 28 63 29 20 7b 0a 20 20 20 20 20 20 20 20 race.=&gt;.switch.(c).{.........
1f660 20 20 20 20 20 20 20 20 27 7d 27 20 3d 26 67 74 3b 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ........'}'.=&gt;.{.............
1f680 20 20 20 20 20 20 20 20 73 74 61 74 65 20 3d 20 53 74 61 74 65 2e 53 74 61 72 74 3b 0a 20 20 20 ........state.=.State.Start;....
1f6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 5f 69 6e 64 65 78 20 3d 20 69 .................start_index.=.i
1f6c0 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ;.................},............
1f6e0 20 20 20 20 20 65 6c 73 65 20 3d 26 67 74 3b 20 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 28 22 53 .....else.=&gt;.@compileError("S
1f700 69 6e 67 6c 65 20 27 7d 27 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 69 6e 20 66 6f 72 6d 61 74 20 ingle.'}'.encountered.in.format.
1f720 73 74 72 69 6e 67 22 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 string"),.............},........
1f740 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 20 20 20 20 .}.....}.....comptime.{.........
1f760 69 66 20 28 61 72 67 73 2e 6c 65 6e 20 21 3d 20 6e 65 78 74 5f 61 72 67 29 20 7b 0a 20 20 20 20 if.(args.len.!=.next_arg).{.....
1f780 20 20 20 20 20 20 20 20 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 28 22 55 6e 75 73 65 64 20 61 72 ........@compileError("Unused.ar
1f7a0 67 75 6d 65 6e 74 73 22 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 guments");.........}.........if.
1f7c0 28 73 74 61 74 65 20 21 3d 20 53 74 61 74 65 2e 53 74 61 72 74 29 20 7b 0a 20 20 20 20 20 20 20 (state.!=.State.Start).{........
1f7e0 20 20 20 20 20 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 28 22 49 6e 63 6f 6d 70 6c 65 74 65 20 66 .....@compileError("Incomplete.f
1f800 6f 72 6d 61 74 20 73 74 72 69 6e 67 3a 20 22 20 2b 2b 20 66 6f 72 6d 61 74 29 3b 0a 20 20 20 20 ormat.string:.".++.format);.....
1f820 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 73 74 61 72 74 5f 69 6e 64 65 78 20 ....}.....}.....if.(start_index.
1f840 26 6c 74 3b 20 66 6f 72 6d 61 74 2e 6c 65 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 25 72 65 74 75 &lt;.format.len).{.........%retu
1f860 72 6e 20 73 65 6c 66 2e 77 72 69 74 65 28 66 6f 72 6d 61 74 5b 73 74 61 72 74 5f 69 6e 64 65 78 rn.self.write(format[start_index
1f880 2e 2e 2e 66 6f 72 6d 61 74 2e 6c 65 6e 5d 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 25 72 65 74 75 ...format.len]);.....}.....%retu
1f8a0 72 6e 20 73 65 6c 66 2e 66 6c 75 73 68 28 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a rn.self.flush();.}</code></pre>.
1f8c0 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 69 73 20 61 20 70 72 6f 6f 66 20 ......<p>.......This.is.a.proof.
1f8e0 6f 66 20 63 6f 6e 63 65 70 74 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 3b 20 74 68 65 20 61 of.concept.implementation;.the.a
1f900 63 74 75 61 6c 20 66 75 6e 63 74 69 6f 6e 20 69 6e 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 6c ctual.function.in.the.standard.l
1f920 69 62 72 61 72 79 20 68 61 73 20 6d 6f 72 65 0a 20 20 20 20 20 20 66 6f 72 6d 61 74 74 69 6e 67 ibrary.has.more.......formatting
1f940 20 63 61 70 61 62 69 6c 69 74 69 65 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 .capabilities........</p>.......
1f960 3c 70 3e 0a 20 20 20 20 20 20 4e 6f 74 65 20 74 68 61 74 20 74 68 69 73 20 69 73 20 6e 6f 74 20 <p>.......Note.that.this.is.not.
1f980 68 61 72 64 2d 63 6f 64 65 64 20 69 6e 74 6f 20 74 68 65 20 5a 69 67 20 63 6f 6d 70 69 6c 65 72 hard-coded.into.the.Zig.compiler
1f9a0 3b 20 74 68 69 73 20 69 73 20 75 73 65 72 6c 61 6e 64 20 63 6f 64 65 20 69 6e 20 74 68 65 20 73 ;.this.is.userland.code.in.the.s
1f9c0 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 tandard.library........</p>.....
1f9e0 20 20 3c 70 3e 0a 20 20 20 20 20 20 57 68 65 6e 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 ..<p>.......When.this.function.i
1fa00 73 20 61 6e 61 6c 79 7a 65 64 20 66 72 6f 6d 20 6f 75 72 20 65 78 61 6d 70 6c 65 20 63 6f 64 65 s.analyzed.from.our.example.code
1fa20 20 61 62 6f 76 65 2c 20 5a 69 67 20 70 61 72 74 69 61 6c 6c 79 20 65 76 61 6c 75 61 74 65 73 20 .above,.Zig.partially.evaluates.
1fa40 74 68 65 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 61 6e 64 20 65 6d 69 74 73 20 61 20 66 the.function.......and.emits.a.f
1fa60 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 61 63 74 75 61 6c 6c 79 20 6c 6f 6f 6b 73 20 6c 69 6b 65 unction.that.actually.looks.like
1fa80 20 74 68 69 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f .this:.......</p>.......<pre><co
1faa0 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 70 75 62 20 66 6e 20 70 72 69 6e 74 66 28 73 65 6c de.class="zig">pub.fn.printf(sel
1fac0 66 3a 20 26 61 6d 70 3b 4f 75 74 53 74 72 65 61 6d 2c 20 61 72 67 30 3a 20 69 33 32 2c 20 61 72 f:.&amp;OutStream,.arg0:.i32,.ar
1fae0 67 31 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 29 20 2d 26 67 74 3b 20 25 76 6f 69 64 20 7b 0a 20 20 g1:.[]const.u8).-&gt;.%void.{...
1fb00 20 20 25 72 65 74 75 72 6e 20 73 65 6c 66 2e 77 72 69 74 65 28 22 68 65 72 65 20 69 73 20 61 20 ..%return.self.write("here.is.a.
1fb20 73 74 72 69 6e 67 3a 20 27 22 29 3b 0a 20 20 20 20 25 72 65 74 75 72 6e 20 73 65 6c 66 2e 70 72 string:.'");.....%return.self.pr
1fb40 69 6e 74 56 61 6c 75 65 28 61 72 67 30 29 3b 0a 20 20 20 20 25 72 65 74 75 72 6e 20 73 65 6c 66 intValue(arg0);.....%return.self
1fb60 2e 77 72 69 74 65 28 22 27 20 68 65 72 65 20 69 73 20 61 20 6e 75 6d 62 65 72 3a 20 22 29 3b 0a .write("'.here.is.a.number:.");.
1fb80 20 20 20 20 25 72 65 74 75 72 6e 20 73 65 6c 66 2e 70 72 69 6e 74 56 61 6c 75 65 28 61 72 67 31 ....%return.self.printValue(arg1
1fba0 29 3b 0a 20 20 20 20 25 72 65 74 75 72 6e 20 73 65 6c 66 2e 77 72 69 74 65 28 22 5c 6e 22 29 3b );.....%return.self.write("\n");
1fbc0 0a 20 20 20 20 25 72 65 74 75 72 6e 20 73 65 6c 66 2e 66 6c 75 73 68 28 29 3b 0a 7d 3c 2f 63 6f .....%return.self.flush();.}</co
1fbe0 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e de></pre>.......<p>.......<code>
1fc00 70 72 69 6e 74 56 61 6c 75 65 3c 2f 63 6f 64 65 3e 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 printValue</code>.is.a.function.
1fc20 74 68 61 74 20 74 61 6b 65 73 20 61 20 70 61 72 61 6d 65 74 65 72 20 6f 66 20 61 6e 79 20 74 79 that.takes.a.parameter.of.any.ty
1fc40 70 65 2c 20 61 6e 64 20 64 6f 65 73 20 64 69 66 66 65 72 65 6e 74 20 74 68 69 6e 67 73 20 64 65 pe,.and.does.different.things.de
1fc60 70 65 6e 64 69 6e 67 0a 20 20 20 20 20 20 6f 6e 20 74 68 65 20 74 79 70 65 3a 0a 20 20 20 20 20 pending.......on.the.type:......
1fc80 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 .</p>.......<pre><code.class="zi
1fca0 67 22 3e 70 75 62 20 66 6e 20 70 72 69 6e 74 56 61 6c 75 65 28 73 65 6c 66 3a 20 26 61 6d 70 3b g">pub.fn.printValue(self:.&amp;
1fcc0 4f 75 74 53 74 72 65 61 6d 2c 20 76 61 6c 75 65 3a 20 76 61 72 29 20 2d 26 67 74 3b 20 25 76 6f OutStream,.value:.var).-&gt;.%vo
1fce0 69 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 54 20 3d 20 40 74 79 70 65 4f 66 28 76 61 6c 75 65 id.{.....const.T.=.@typeOf(value
1fd00 29 3b 0a 20 20 20 20 69 66 20 28 40 69 73 49 6e 74 65 67 65 72 28 54 29 29 20 7b 0a 20 20 20 20 );.....if.(@isInteger(T)).{.....
1fd20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 70 72 69 6e 74 49 6e 74 28 54 2c 20 76 61 6c 75 ....return.self.printInt(T,.valu
1fd40 65 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 40 69 73 46 6c 6f 61 74 28 54 29 29 20 e);.....}.else.if.(@isFloat(T)).
1fd60 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 2e 70 72 69 6e 74 46 6c 6f 61 74 {.........return.self.printFloat
1fd80 28 54 2c 20 76 61 6c 75 65 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 40 63 61 6e 49 (T,.value);.....}.else.if.(@canI
1fda0 6d 70 6c 69 63 69 74 43 61 73 74 28 5b 5d 63 6f 6e 73 74 20 75 38 2c 20 76 61 6c 75 65 29 29 20 mplicitCast([]const.u8,.value)).
1fdc0 7b 0a 20 20 20 20 20 20 20 20 63 6f 6e 73 74 20 63 61 73 74 65 64 5f 76 61 6c 75 65 20 3d 20 28 {.........const.casted_value.=.(
1fde0 5b 5d 63 6f 6e 73 74 20 75 38 29 28 76 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 []const.u8)(value);.........retu
1fe00 72 6e 20 73 65 6c 66 2e 77 72 69 74 65 28 63 61 73 74 65 64 5f 76 61 6c 75 65 29 3b 0a 20 20 20 rn.self.write(casted_value);....
1fe20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 28 .}.else.{.........@compileError(
1fe40 22 55 6e 61 62 6c 65 20 74 6f 20 70 72 69 6e 74 20 74 79 70 65 20 27 22 20 2b 2b 20 40 74 79 70 "Unable.to.print.type.'".++.@typ
1fe60 65 4e 61 6d 65 28 54 29 20 2b 2b 20 22 27 22 29 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 6f 64 65 3e eName(T).++."'");.....}.}</code>
1fe80 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 41 6e 64 20 6e 6f 77 2c 20 </pre>.......<p>.......And.now,.
1fea0 77 68 61 74 20 68 61 70 70 65 6e 73 20 69 66 20 77 65 20 67 69 76 65 20 74 6f 6f 20 6d 61 6e 79 what.happens.if.we.give.too.many
1fec0 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 3c 63 6f 64 65 3e 70 72 69 6e 74 66 3c 2f 63 6f 64 65 .arguments.to.<code>printf</code
1fee0 3e 3f 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 >?.......</p>.......<pre><code.c
1ff00 6c 61 73 73 3d 22 7a 69 67 22 3e 25 25 69 6f 2e 73 74 64 6f 75 74 2e 70 72 69 6e 74 66 28 22 68 lass="zig">%%io.stdout.printf("h
1ff20 65 72 65 20 69 73 20 61 20 73 74 72 69 6e 67 3a 20 27 7b 7d 27 20 68 65 72 65 20 69 73 20 61 20 ere.is.a.string:.'{}'.here.is.a.
1ff40 6e 75 6d 62 65 72 3a 20 7b 7d 5c 6e 22 2c 0a 20 20 20 20 20 20 20 20 61 5f 73 74 72 69 6e 67 2c number:.{}\n",.........a_string,
1ff60 20 61 5f 6e 75 6d 62 65 72 2c 20 61 5f 6e 75 6d 62 65 72 29 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 .a_number,.a_number);</code></pr
1ff80 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 3e 2e 2e 2e 2f 73 74 64 2f 69 6f 2e 7a e>.......<pre><code>.../std/io.z
1ffa0 69 67 3a 31 34 37 3a 31 37 3a 20 65 72 72 6f 72 3a 20 55 6e 75 73 65 64 20 61 72 67 75 6d 65 6e ig:147:17:.error:.Unused.argumen
1ffc0 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 ts.................@compileError
1ffe0 28 22 55 6e 75 73 65 64 20 61 72 67 75 6d 65 6e 74 73 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 ("Unused.arguments");...........
20000 20 20 20 20 20 20 5e 0a 2e 2f 74 65 73 74 2e 7a 69 67 3a 37 3a 32 33 3a 20 6e 6f 74 65 3a 20 63 ......^../test.zig:7:23:.note:.c
20020 61 6c 6c 65 64 20 66 72 6f 6d 20 68 65 72 65 0a 20 20 20 20 25 25 69 6f 2e 73 74 64 6f 75 74 2e alled.from.here.....%%io.stdout.
20040 70 72 69 6e 74 66 28 22 68 65 72 65 20 69 73 20 61 20 6e 75 6d 62 65 72 3a 20 7b 7d 20 61 6e 64 printf("here.is.a.number:.{}.and
20060 20 68 65 72 65 20 69 73 20 61 20 73 74 72 69 6e 67 3a 20 7b 7d 5c 6e 22 2c 0a 20 20 20 20 20 20 .here.is.a.string:.{}\n",.......
20080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 ................^</code></pre>..
200a0 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 20 67 69 76 65 73 20 70 72 6f 67 72 61 6d .....<p>.......Zig.gives.program
200c0 6d 65 72 73 20 74 68 65 20 74 6f 6f 6c 73 20 6e 65 65 64 65 64 20 74 6f 20 70 72 6f 74 65 63 74 mers.the.tools.needed.to.protect
200e0 20 74 68 65 6d 73 65 6c 76 65 73 20 61 67 61 69 6e 73 74 20 74 68 65 69 72 20 6f 77 6e 20 6d 69 .themselves.against.their.own.mi
20100 73 74 61 6b 65 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 stakes........</p>.......<p>....
20120 20 20 20 5a 69 67 20 64 6f 65 73 6e 27 74 20 63 61 72 65 20 77 68 65 74 68 65 72 20 74 68 65 20 ...Zig.doesn't.care.whether.the.
20140 66 6f 72 6d 61 74 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 73 74 72 69 6e 67 20 6c 69 74 65 format.argument.is.a.string.lite
20160 72 61 6c 2c 0a 20 20 20 20 20 20 6f 6e 6c 79 20 74 68 61 74 20 69 74 20 69 73 20 61 20 63 6f 6d ral,.......only.that.it.is.a.com
20180 70 69 6c 65 2d 74 69 6d 65 20 6b 6e 6f 77 6e 20 76 61 6c 75 65 20 74 68 61 74 20 69 73 20 69 6d pile-time.known.value.that.is.im
201a0 70 6c 69 63 69 74 6c 79 20 63 61 73 74 61 62 6c 65 20 74 6f 20 61 20 3c 63 6f 64 65 3e 5b 5d 63 plicitly.castable.to.a.<code>[]c
201c0 6f 6e 73 74 20 75 38 3c 2f 63 6f 64 65 3e 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 onst.u8</code>:.......</p>......
201e0 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 69 6f .<pre><code.class="zig">const.io
20200 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 69 6f 3b 0a 0a 63 6f 6e 73 74 20 61 5f 6e .=.@import("std").io;..const.a_n
20220 75 6d 62 65 72 3a 20 69 33 32 20 3d 20 31 32 33 34 3b 0a 63 6f 6e 73 74 20 61 5f 73 74 72 69 6e umber:.i32.=.1234;.const.a_strin
20240 67 20 3d 20 22 66 6f 6f 62 61 72 22 3b 0a 63 6f 6e 73 74 20 66 6d 74 20 3d 20 22 68 65 72 65 20 g.=."foobar";.const.fmt.=."here.
20260 69 73 20 61 20 73 74 72 69 6e 67 3a 20 27 7b 7d 27 20 68 65 72 65 20 69 73 20 61 20 6e 75 6d 62 is.a.string:.'{}'.here.is.a.numb
20280 65 72 3a 20 7b 7d 5c 6e 22 3b 0a 0a 70 75 62 20 66 6e 20 6d 61 69 6e 28 61 72 67 73 3a 20 5b 5d er:.{}\n";..pub.fn.main(args:.[]
202a0 5b 5d 75 38 29 20 2d 26 67 74 3b 20 25 76 6f 69 64 20 7b 0a 20 20 20 20 25 25 69 6f 2e 73 74 64 []u8).-&gt;.%void.{.....%%io.std
202c0 65 72 72 2e 70 72 69 6e 74 66 28 66 6d 74 2c 20 61 5f 73 74 72 69 6e 67 2c 20 61 5f 6e 75 6d 62 err.printf(fmt,.a_string,.a_numb
202e0 65 72 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 er);.}</code></pre>.......<p>...
20300 20 20 20 20 54 68 69 73 20 77 6f 72 6b 73 20 66 69 6e 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a ....This.works.fine........</p>.
20320 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 20 64 6f 65 73 20 6e 6f 74 20 73 70 65 ......<p>.......Zig.does.not.spe
20340 63 69 61 6c 20 63 61 73 65 20 73 74 72 69 6e 67 20 66 6f 72 6d 61 74 74 69 6e 67 20 69 6e 20 74 cial.case.string.formatting.in.t
20360 68 65 20 63 6f 6d 70 69 6c 65 72 20 61 6e 64 20 69 6e 73 74 65 61 64 20 65 78 70 6f 73 65 73 20 he.compiler.and.instead.exposes.
20380 65 6e 6f 75 67 68 20 70 6f 77 65 72 20 74 6f 20 61 63 63 6f 6d 70 6c 69 73 68 20 74 68 69 73 0a enough.power.to.accomplish.this.
203a0 20 20 20 20 20 20 74 61 73 6b 20 69 6e 20 75 73 65 72 6c 61 6e 64 2e 20 49 74 20 64 6f 65 73 20 ......task.in.userland..It.does.
203c0 73 6f 20 77 69 74 68 6f 75 74 20 69 6e 74 72 6f 64 75 63 69 6e 67 20 61 6e 6f 74 68 65 72 20 6c so.without.introducing.another.l
203e0 61 6e 67 75 61 67 65 20 6f 6e 20 74 6f 70 20 6f 66 20 5a 69 67 2c 20 73 75 63 68 20 61 73 0a 20 anguage.on.top.of.Zig,.such.as..
20400 20 20 20 20 20 61 20 6d 61 63 72 6f 20 6c 61 6e 67 75 61 67 65 20 6f 72 20 61 20 70 72 65 70 72 .....a.macro.language.or.a.prepr
20420 6f 63 65 73 73 6f 72 20 6c 61 6e 67 75 61 67 65 2e 20 49 74 27 73 20 5a 69 67 20 61 6c 6c 20 74 ocessor.language..It's.Zig.all.t
20440 68 65 20 77 61 79 20 64 6f 77 6e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 he.way.down........</p>.......<p
20460 3e 54 4f 44 4f 3a 20 73 75 67 67 65 73 74 69 6f 6e 20 74 6f 20 6e 6f 74 20 75 73 65 20 69 6e 6c >TODO:.suggestion.to.not.use.inl
20480 69 6e 65 20 75 6e 6c 65 73 73 20 6e 65 63 65 73 73 61 72 79 3c 2f 70 3e 0a 20 20 20 20 20 20 3c ine.unless.necessary</p>.......<
204a0 68 32 20 69 64 3d 22 69 6e 6c 69 6e 65 22 3e 69 6e 6c 69 6e 65 3c 2f 68 32 3e 0a 20 20 20 20 20 h2.id="inline">inline</h2>......
204c0 20 3c 70 3e 54 4f 44 4f 3a 20 69 6e 6c 69 6e 65 20 77 68 69 6c 65 3c 2f 70 3e 0a 20 20 20 20 20 .<p>TODO:.inline.while</p>......
204e0 20 3c 70 3e 54 4f 44 4f 3a 20 69 6e 6c 69 6e 65 20 66 6f 72 3c 2f 70 3e 0a 20 20 20 20 20 20 3c .<p>TODO:.inline.for</p>.......<
20500 70 3e 54 4f 44 4f 3a 20 73 75 67 67 65 73 74 69 6f 6e 20 74 6f 20 6e 6f 74 20 75 73 65 20 69 6e p>TODO:.suggestion.to.not.use.in
20520 6c 69 6e 65 20 75 6e 6c 65 73 73 20 6e 65 63 65 73 73 61 72 79 3c 2f 70 3e 0a 20 20 20 20 20 20 line.unless.necessary</p>.......
20540 3c 68 32 20 69 64 3d 22 61 73 73 65 6d 62 6c 79 22 3e 41 73 73 65 6d 62 6c 79 3c 2f 68 32 3e 0a <h2.id="assembly">Assembly</h2>.
20560 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 61 6d 70 6c 65 20 6f 66 20 69 6e 6c 69 6e 65 ......<p>TODO:.example.of.inline
20580 20 61 73 73 65 6d 62 6c 79 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 61 .assembly</p>.......<p>TODO:.exa
205a0 6d 70 6c 65 20 6f 66 20 6d 6f 64 75 6c 65 20 6c 65 76 65 6c 20 61 73 73 65 6d 62 6c 79 3c 2f 70 mple.of.module.level.assembly</p
205c0 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 61 6d 70 6c 65 20 6f 66 20 75 73 69 6e >.......<p>TODO:.example.of.usin
205e0 67 20 69 6e 6c 69 6e 65 20 61 73 73 65 6d 62 6c 79 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3c 2f g.inline.assembly.return.value</
20600 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 61 6d 70 6c 65 20 6f 66 20 75 73 69 p>.......<p>TODO:.example.of.usi
20620 6e 67 20 69 6e 6c 69 6e 65 20 61 73 73 65 6d 62 6c 79 20 61 73 73 69 67 6e 69 6e 67 20 76 61 6c ng.inline.assembly.assigning.val
20640 75 65 73 20 74 6f 20 76 61 72 69 61 62 6c 65 73 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 ues.to.variables</p>.......<h2.i
20660 64 3d 22 61 74 6f 6d 69 63 73 22 3e 41 74 6f 6d 69 63 73 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c d="atomics">Atomics</h2>.......<
20680 70 3e 54 4f 44 4f 3a 20 40 66 65 6e 63 65 28 29 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f p>TODO:.@fence()</p>.......<p>TO
206a0 44 4f 3a 20 40 61 74 6f 6d 69 63 20 72 6d 77 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 DO:.@atomic.rmw</p>.......<p>TOD
206c0 4f 3a 20 62 75 69 6c 74 69 6e 20 61 74 6f 6d 69 63 20 6d 65 6d 6f 72 79 20 6f 72 64 65 72 69 6e O:.builtin.atomic.memory.orderin
206e0 67 20 65 6e 75 6d 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 62 75 69 6c 74 69 6e g.enum</p>.......<h2.id="builtin
20700 2d 66 75 6e 63 74 69 6f 6e 73 22 3e 42 75 69 6c 74 69 6e 20 46 75 6e 63 74 69 6f 6e 73 3c 2f 68 -functions">Builtin.Functions</h
20720 32 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 42 75 69 6c 74 69 6e 20 66 75 6e 63 74 2>.......<p>.......Builtin.funct
20740 69 6f 6e 73 20 61 72 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 63 6f 6d 70 69 6c 65 ions.are.provided.by.the.compile
20760 72 20 61 6e 64 20 61 72 65 20 70 72 65 66 69 78 65 64 20 77 69 74 68 20 3c 63 6f 64 65 3e 40 3c r.and.are.prefixed.with.<code>@<
20780 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 54 68 65 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 /code>........The.<code>comptime
207a0 3c 2f 63 6f 64 65 3e 20 6b 65 79 77 6f 72 64 20 6f 6e 20 61 20 70 61 72 61 6d 65 74 65 72 20 6d </code>.keyword.on.a.parameter.m
207c0 65 61 6e 73 20 74 68 61 74 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 6d 75 73 74 20 62 65 20 eans.that.the.parameter.must.be.
207e0 6b 6e 6f 77 6e 0a 20 20 20 20 20 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 0a 20 20 20 known.......at.compile.time.....
20800 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 61 64 ...</p>.......<h3.id="builtin-ad
20820 64 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 3e 40 61 64 64 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c dWithOverflow">@addWithOverflow<
20840 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 /h3>.......<pre><code.class="zig
20860 22 3e 40 61 64 64 57 69 74 68 4f 76 65 72 66 6c 6f 77 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 ">@addWithOverflow(comptime.T:.t
20880 79 70 65 2c 20 61 3a 20 54 2c 20 62 3a 20 54 2c 20 72 65 73 75 6c 74 3a 20 26 61 6d 70 3b 54 29 ype,.a:.T,.b:.T,.result:.&amp;T)
208a0 20 2d 26 67 74 3b 20 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c .-&gt;.bool</code></pre>.......<
208c0 70 3e 0a 20 20 20 20 20 20 50 65 72 66 6f 72 6d 73 20 3c 63 6f 64 65 3e 2a 72 65 73 75 6c 74 20 p>.......Performs.<code>*result.
208e0 3d 20 61 20 2b 20 62 3c 2f 63 6f 64 65 3e 2e 20 49 66 20 6f 76 65 72 66 6c 6f 77 20 6f 72 20 75 =.a.+.b</code>..If.overflow.or.u
20900 6e 64 65 72 66 6c 6f 77 20 6f 63 63 75 72 73 2c 0a 20 20 20 20 20 20 73 74 6f 72 65 73 20 74 68 nderflow.occurs,.......stores.th
20920 65 20 6f 76 65 72 66 6c 6f 77 65 64 20 62 69 74 73 20 69 6e 20 3c 63 6f 64 65 3e 72 65 73 75 6c e.overflowed.bits.in.<code>resul
20940 74 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c t</code>.and.returns.<code>true<
20960 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 49 66 20 6e 6f 20 6f 76 65 72 66 6c 6f 77 20 6f 72 20 /code>........If.no.overflow.or.
20980 75 6e 64 65 72 66 6c 6f 77 20 6f 63 63 75 72 73 2c 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e underflow.occurs,.returns.<code>
209a0 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c false</code>........</p>.......<
209c0 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 62 69 74 43 61 73 74 22 3e 40 62 69 74 43 61 73 74 h3.id="builtin-bitCast">@bitCast
209e0 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 </h3>.......<pre><code.class="zi
20a00 67 22 3e 40 62 69 74 43 61 73 74 28 63 6f 6d 70 74 69 6d 65 20 44 65 73 74 54 79 70 65 3a 20 74 g">@bitCast(comptime.DestType:.t
20a20 79 70 65 2c 20 76 61 6c 75 65 3a 20 76 61 72 29 20 2d 26 67 74 3b 20 44 65 73 74 54 79 70 65 3c ype,.value:.var).-&gt;.DestType<
20a40 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 6f 6e /code></pre>.......<p>.......Con
20a60 76 65 72 74 73 20 61 20 76 61 6c 75 65 20 6f 66 20 6f 6e 65 20 74 79 70 65 20 74 6f 20 61 6e 6f verts.a.value.of.one.type.to.ano
20a80 74 68 65 72 20 74 79 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a ther.type........</p>.......<p>.
20aa0 20 20 20 20 20 20 41 73 73 65 72 74 73 20 74 68 61 74 20 3c 63 6f 64 65 3e 40 73 69 7a 65 4f 66 ......Asserts.that.<code>@sizeOf
20ac0 28 40 74 79 70 65 4f 66 28 76 61 6c 75 65 29 29 20 3d 3d 20 40 73 69 7a 65 4f 66 28 44 65 73 74 (@typeOf(value)).==.@sizeOf(Dest
20ae0 54 79 70 65 29 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c Type)</code>........</p>.......<
20b00 70 3e 0a 20 20 20 20 20 20 41 73 73 65 72 74 73 20 74 68 61 74 20 3c 63 6f 64 65 3e 40 74 79 70 p>.......Asserts.that.<code>@typ
20b20 65 49 64 28 44 65 73 74 54 79 70 65 29 20 21 3d 20 40 69 6d 70 6f 72 74 28 22 62 75 69 6c 74 69 eId(DestType).!=.@import("builti
20b40 6e 22 29 2e 54 79 70 65 49 64 2e 50 6f 69 6e 74 65 72 3c 2f 63 6f 64 65 3e 2e 20 55 73 65 20 3c n").TypeId.Pointer</code>..Use.<
20b60 63 6f 64 65 3e 40 70 74 72 43 61 73 74 3c 2f 63 6f 64 65 3e 20 6f 72 20 3c 63 6f 64 65 3e 40 69 code>@ptrCast</code>.or.<code>@i
20b80 6e 74 54 6f 50 74 72 3c 2f 63 6f 64 65 3e 20 69 66 20 79 6f 75 20 6e 65 65 64 20 74 68 69 73 2e ntToPtr</code>.if.you.need.this.
20ba0 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 61 6e 20 .......</p>.......<p>.......Can.
20bc0 62 65 20 75 73 65 64 20 66 6f 72 20 74 68 65 73 65 20 74 68 69 6e 67 73 20 66 6f 72 20 65 78 61 be.used.for.these.things.for.exa
20be0 6d 70 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 mple:.......</p>.......<ul>.....
20c00 20 20 20 20 3c 6c 69 3e 43 6f 6e 76 65 72 74 20 3c 63 6f 64 65 3e 66 33 32 3c 2f 63 6f 64 65 3e ....<li>Convert.<code>f32</code>
20c20 20 74 6f 20 3c 63 6f 64 65 3e 75 33 32 3c 2f 63 6f 64 65 3e 20 62 69 74 73 3c 2f 6c 69 3e 0a 20 .to.<code>u32</code>.bits</li>..
20c40 20 20 20 20 20 20 20 3c 6c 69 3e 43 6f 6e 76 65 72 74 20 3c 63 6f 64 65 3e 69 33 32 3c 2f 63 6f .......<li>Convert.<code>i32</co
20c60 64 65 3e 20 74 6f 20 3c 63 6f 64 65 3e 75 33 32 3c 2f 63 6f 64 65 3e 20 70 72 65 73 65 72 76 69 de>.to.<code>u32</code>.preservi
20c80 6e 67 20 74 77 6f 73 20 63 6f 6d 70 6c 65 6d 65 6e 74 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f ng.twos.complement</li>.......</
20ca0 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 57 6f 72 6b 73 20 61 74 20 63 6f 6d ul>.......<p>.......Works.at.com
20cc0 70 69 6c 65 2d 74 69 6d 65 20 69 66 20 3c 63 6f 64 65 3e 76 61 6c 75 65 3c 2f 63 6f 64 65 3e 20 pile-time.if.<code>value</code>.
20ce0 69 73 20 6b 6e 6f 77 6e 20 61 74 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 20 49 74 27 73 20 61 is.known.at.compile.time..It's.a
20d00 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 20 74 6f 20 62 69 74 63 61 73 74 20 61 20 73 74 72 75 .compile.error.to.bitcast.a.stru
20d20 63 74 20 74 6f 20 61 20 73 63 61 6c 61 72 20 74 79 70 65 20 6f 66 20 74 68 65 20 73 61 6d 65 20 ct.to.a.scalar.type.of.the.same.
20d40 73 69 7a 65 20 73 69 6e 63 65 20 73 74 72 75 63 74 73 20 68 61 76 65 20 75 6e 64 65 66 69 6e 65 size.since.structs.have.undefine
20d60 64 20 6c 61 79 6f 75 74 2e 20 48 6f 77 65 76 65 72 20 69 66 20 74 68 65 20 73 74 72 75 63 74 20 d.layout..However.if.the.struct.
20d80 69 73 20 70 61 63 6b 65 64 20 74 68 65 6e 20 69 74 20 77 6f 72 6b 73 2e 0a 20 20 20 20 20 20 3c is.packed.then.it.works........<
20da0 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 62 72 65 61 6b 70 /p>.......<h3.id="builtin-breakp
20dc0 6f 69 6e 74 22 3e 40 62 72 65 61 6b 70 6f 69 6e 74 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 oint">@breakpoint</h3>.......<pr
20de0 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 62 72 65 61 6b 70 6f 69 6e 74 28 e><code.class="zig">@breakpoint(
20e00 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 )</code></pre>.......<p>.......T
20e20 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 6e 73 65 72 74 73 20 61 20 70 6c 61 74 66 6f 72 6d 2d his.function.inserts.a.platform-
20e40 73 70 65 63 69 66 69 63 20 64 65 62 75 67 20 74 72 61 70 20 69 6e 73 74 72 75 63 74 69 6f 6e 20 specific.debug.trap.instruction.
20e60 77 68 69 63 68 20 63 61 75 73 65 73 0a 20 20 20 20 20 20 64 65 62 75 67 67 65 72 73 20 74 6f 20 which.causes.......debuggers.to.
20e80 62 72 65 61 6b 20 74 68 65 72 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 break.there........</p>.......<p
20ea0 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 6e 6c 79 20 76 61 >.......This.function.is.only.va
20ec0 6c 69 64 20 77 69 74 68 69 6e 20 66 75 6e 63 74 69 6f 6e 20 73 63 6f 70 65 2e 0a 20 20 20 20 20 lid.within.function.scope.......
20ee0 20 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 61 6c 69 .</p>........<h3.id="builtin-ali
20f00 67 6e 43 61 73 74 22 3e 40 61 6c 69 67 6e 43 61 73 74 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 gnCast">@alignCast</h3>.......<p
20f20 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 61 6c 69 67 6e 43 61 73 74 28 re><code.class="zig">@alignCast(
20f40 63 6f 6d 70 74 69 6d 65 20 61 6c 69 67 6e 6d 65 6e 74 3a 20 75 32 39 2c 20 70 74 72 3a 20 76 61 comptime.alignment:.u29,.ptr:.va
20f60 72 29 20 2d 26 67 74 3b 20 76 61 72 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 r).-&gt;.var</code></pre>.......
20f80 3c 70 3e 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 70 74 72 3c 2f 63 6f 64 65 3e 20 63 61 6e 20 62 <p>.......<code>ptr</code>.can.b
20fa0 65 20 3c 63 6f 64 65 3e 26 61 6d 70 3b 54 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 66 6e 28 e.<code>&amp;T</code>,.<code>fn(
20fc0 29 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 3f 26 61 6d 70 3b 54 3c 2f 63 6f 64 65 3e 2c 0a )</code>,.<code>?&amp;T</code>,.
20fe0 20 20 20 20 20 20 3c 63 6f 64 65 3e 3f 66 6e 28 29 3c 2f 63 6f 64 65 3e 2c 20 6f 72 20 3c 63 6f ......<code>?fn()</code>,.or.<co
21000 64 65 3e 5b 5d 54 3c 2f 63 6f 64 65 3e 2e 20 49 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 61 de>[]T</code>..It.returns.the.sa
21020 6d 65 20 74 79 70 65 20 61 73 20 3c 63 6f 64 65 3e 70 74 72 3c 2f 63 6f 64 65 3e 0a 20 20 20 20 me.type.as.<code>ptr</code>.....
21040 20 20 65 78 63 65 70 74 20 77 69 74 68 20 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 20 61 64 6a 75 ..except.with.the.alignment.adju
21060 73 74 65 64 20 74 6f 20 74 68 65 20 6e 65 77 20 76 61 6c 75 65 2e 0a 20 20 20 20 20 20 3c 2f 70 sted.to.the.new.value........</p
21080 3e 0a 20 20 20 20 20 20 3c 70 3e 41 20 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 2d 69 6e 63 >.......<p>A.<a.href="#undef-inc
210a0 6f 72 72 65 63 74 2d 70 6f 69 6e 74 65 72 2d 61 6c 69 67 6e 6d 65 6e 74 22 3e 70 6f 69 6e 74 65 orrect-pointer-alignment">pointe
210c0 72 20 61 6c 69 67 6e 6d 65 6e 74 20 73 61 66 65 74 79 20 63 68 65 63 6b 3c 2f 61 3e 20 69 73 20 r.alignment.safety.check</a>.is.
210e0 61 64 64 65 64 0a 20 20 20 20 20 20 74 6f 20 74 68 65 20 67 65 6e 65 72 61 74 65 64 20 63 6f 64 added.......to.the.generated.cod
21100 65 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 65 20 70 6f 69 6e 74 65 72 20 69 73 20 61 6c e.to.make.sure.the.pointer.is.al
21120 69 67 6e 65 64 20 61 73 20 70 72 6f 6d 69 73 65 64 2e 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 68 igned.as.promised.</p>........<h
21140 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 61 6c 69 67 6e 4f 66 22 3e 40 61 6c 69 67 6e 4f 66 3c 3.id="builtin-alignOf">@alignOf<
21160 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 /h3>.......<pre><code.class="zig
21180 22 3e 40 61 6c 69 67 6e 4f 66 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 29 20 2d 26 67 ">@alignOf(comptime.T:.type).-&g
211a0 74 3b 20 28 6e 75 6d 62 65 72 20 6c 69 74 65 72 61 6c 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e t;.(number.literal)</code></pre>
211c0 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 .......<p>.......This.function.r
211e0 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 74 68 61 74 20 eturns.the.number.of.bytes.that.
21200 74 68 69 73 20 74 79 70 65 20 73 68 6f 75 6c 64 20 62 65 20 61 6c 69 67 6e 65 64 20 74 6f 0a 20 this.type.should.be.aligned.to..
21220 20 20 20 20 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74 20 74 61 72 67 65 74 20 74 6f 20 6d .....for.the.current.target.to.m
21240 61 74 63 68 20 74 68 65 20 43 20 41 42 49 2e 20 57 68 65 6e 20 74 68 65 20 63 68 69 6c 64 20 74 atch.the.C.ABI..When.the.child.t
21260 79 70 65 20 6f 66 20 61 20 70 6f 69 6e 74 65 72 20 68 61 73 0a 20 20 20 20 20 20 74 68 69 73 20 ype.of.a.pointer.has.......this.
21280 61 6c 69 67 6e 6d 65 6e 74 2c 20 74 68 65 20 61 6c 69 67 6e 6d 65 6e 74 20 63 61 6e 20 62 65 20 alignment,.the.alignment.can.be.
212a0 6f 6d 69 74 74 65 64 20 66 72 6f 6d 20 74 68 65 20 74 79 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 omitted.from.the.type........</p
212c0 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 >.......<pre><code.class="zig">c
212e0 6f 6e 73 74 20 61 73 73 65 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 onst.assert.=.@import("std").deb
21300 75 67 2e 61 73 73 65 72 74 3b 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 61 73 73 65 72 74 ug.assert;.comptime.{.....assert
21320 28 26 61 6d 70 3b 75 33 32 20 3d 3d 20 26 61 6d 70 3b 61 6c 69 67 6e 28 40 61 6c 69 67 6e 4f 66 (&amp;u32.==.&amp;align(@alignOf
21340 28 75 33 32 29 29 20 75 33 32 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 (u32)).u32);.}</code></pre>.....
21360 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 74 61 72 67 ..<p>.......The.result.is.a.targ
21380 65 74 2d 73 70 65 63 69 66 69 63 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 63 6f 6e 73 74 61 6e et-specific.compile.time.constan
213a0 74 2e 20 49 74 20 69 73 20 67 75 61 72 61 6e 74 65 65 64 20 74 6f 20 62 65 0a 20 20 20 20 20 20 t..It.is.guaranteed.to.be.......
213c0 6c 65 73 73 20 74 68 61 6e 20 6f 72 20 65 71 75 61 6c 20 74 6f 20 3c 61 20 68 72 65 66 3d 22 23 less.than.or.equal.to.<a.href="#
213e0 62 75 69 6c 74 69 6e 2d 73 69 7a 65 4f 66 22 3e 40 73 69 7a 65 4f 66 28 54 29 3c 2f 61 3e 2e 0a builtin-sizeOf">@sizeOf(T)</a>..
21400 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 ......</p>.......<p>See.also:</p
21420 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 >.......<ul>.........<li><a.href
21440 3d 22 23 61 6c 69 67 6e 6d 65 6e 74 22 3e 41 6c 69 67 6e 6d 65 6e 74 3c 2f 61 3e 3c 2f 6c 69 3e ="#alignment">Alignment</a></li>
21460 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c .......</ul>........<h3.id="buil
21480 74 69 6e 2d 63 44 65 66 69 6e 65 22 3e 40 63 44 65 66 69 6e 65 3c 2f 68 33 3e 0a 20 20 20 20 20 tin-cDefine">@cDefine</h3>......
214a0 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 63 44 65 66 69 6e 65 .<pre><code.class="zig">@cDefine
214c0 28 63 6f 6d 70 74 69 6d 65 20 6e 61 6d 65 3a 20 5b 5d 75 38 2c 20 76 61 6c 75 65 29 3c 2f 63 6f (comptime.name:.[]u8,.value)</co
214e0 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 de></pre>.......<p>.......This.f
21500 75 6e 63 74 69 6f 6e 20 63 61 6e 20 6f 6e 6c 79 20 6f 63 63 75 72 20 69 6e 73 69 64 65 20 3c 63 unction.can.only.occur.inside.<c
21520 6f 64 65 3e 40 63 49 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a ode>@cImport</code>........</p>.
21540 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 61 70 70 65 6e 64 73 20 3c 63 6f ......<p>.......This.appends.<co
21560 64 65 3e 23 64 65 66 69 6e 65 20 24 6e 61 6d 65 20 24 76 61 6c 75 65 3c 2f 63 6f 64 65 3e 20 74 de>#define.$name.$value</code>.t
21580 6f 20 74 68 65 20 3c 63 6f 64 65 3e 40 63 49 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 0a 20 20 20 20 o.the.<code>@cImport</code>.....
215a0 20 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 ..temporary.buffer........</p>..
215c0 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 6f 20 64 65 66 69 6e 65 20 77 69 74 68 6f 75 74 .....<p>.......To.define.without
215e0 20 61 20 76 61 6c 75 65 2c 20 6c 69 6b 65 20 74 68 69 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a .a.value,.like.this:.......</p>.
21600 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 63 22 3e 23 64 65 66 69 ......<pre><code.class="c">#defi
21620 6e 65 20 5f 47 4e 55 5f 53 4f 55 52 43 45 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 ne._GNU_SOURCE</code></pre>.....
21640 20 20 3c 70 3e 0a 20 20 20 20 20 20 55 73 65 20 74 68 65 20 76 6f 69 64 20 76 61 6c 75 65 2c 20 ..<p>.......Use.the.void.value,.
21660 6c 69 6b 65 20 74 68 69 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 like.this:.......</p>.......<pre
21680 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 63 44 65 66 69 6e 65 28 22 5f 47 4e ><code.class="zig">@cDefine("_GN
216a0 55 5f 53 4f 55 52 43 45 22 2c 20 7b 7d 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 U_SOURCE",.{})</code></pre>.....
216c0 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 ..<p>See.also:</p>.......<ul>...
216e0 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 2d 69 6d 70 6f 72 74 22 3e 49 6d ......<li><a.href="#c-import">Im
21700 70 6f 72 74 20 66 72 6f 6d 20 43 20 48 65 61 64 65 72 20 46 69 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e port.from.C.Header.File</a></li>
21720 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 .........<li><a.href="#builtin-c
21740 49 6e 63 6c 75 64 65 22 3e 40 63 49 6e 63 6c 75 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 Include">@cInclude</a></li>.....
21760 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 49 6d 70 6f 72 ....<li><a.href="#builtin-cImpor
21780 74 22 3e 40 63 49 6d 70 6f 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 t">@cImport</a></li>.........<li
217a0 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 55 6e 64 65 66 22 3e 40 63 55 6e 64 ><a.href="#builtin-cUndef">@cUnd
217c0 65 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d ef</a></li>.........<li><a.href=
217e0 22 23 76 6f 69 64 22 3e 76 6f 69 64 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c "#void">void</a></li>.......</ul
21800 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 63 49 6d 70 6f 72 74 22 >.......<h3.id="builtin-cImport"
21820 3e 40 63 49 6d 70 6f 72 74 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 >@cImport</h3>.......<pre><code.
21840 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 63 49 6d 70 6f 72 74 28 65 78 70 72 65 73 73 69 6f 6e 29 class="zig">@cImport(expression)
21860 20 2d 26 67 74 3b 20 28 6e 61 6d 65 73 70 61 63 65 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a .-&gt;.(namespace)</code></pre>.
21880 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 70 61 ......<p>.......This.function.pa
218a0 72 73 65 73 20 43 20 63 6f 64 65 20 61 6e 64 20 69 6d 70 6f 72 74 73 20 74 68 65 20 66 75 6e 63 rses.C.code.and.imports.the.func
218c0 74 69 6f 6e 73 2c 20 74 79 70 65 73 2c 20 76 61 72 69 61 62 6c 65 73 2c 20 61 6e 64 0a 20 20 20 tions,.types,.variables,.and....
218e0 20 20 20 63 6f 6d 70 61 74 69 62 6c 65 20 6d 61 63 72 6f 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 ...compatible.macro.definitions.
21900 69 6e 74 6f 20 74 68 65 20 72 65 73 75 6c 74 20 6e 61 6d 65 73 70 61 63 65 2e 0a 20 20 20 20 20 into.the.result.namespace.......
21920 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 65 78 70 72 .</p>.......<p>.......<code>expr
21940 65 73 73 69 6f 6e 3c 2f 63 6f 64 65 3e 20 69 73 20 69 6e 74 65 72 70 72 65 74 65 64 20 61 74 20 ession</code>.is.interpreted.at.
21960 63 6f 6d 70 69 6c 65 20 74 69 6d 65 2e 20 54 68 65 20 62 75 69 6c 74 69 6e 20 66 75 6e 63 74 69 compile.time..The.builtin.functi
21980 6f 6e 73 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 40 63 49 6e 63 6c 75 64 65 3c 2f 63 6f 64 65 3e ons.......<code>@cInclude</code>
219a0 2c 20 3c 63 6f 64 65 3e 40 63 44 65 66 69 6e 65 3c 2f 63 6f 64 65 3e 2c 20 61 6e 64 20 3c 63 6f ,.<code>@cDefine</code>,.and.<co
219c0 64 65 3e 40 63 55 6e 64 65 66 3c 2f 63 6f 64 65 3e 20 77 6f 72 6b 0a 20 20 20 20 20 20 77 69 74 de>@cUndef</code>.work.......wit
219e0 68 69 6e 20 74 68 69 73 20 65 78 70 72 65 73 73 69 6f 6e 2c 20 61 70 70 65 6e 64 69 6e 67 20 74 hin.this.expression,.appending.t
21a00 6f 20 61 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 20 77 68 69 63 68 20 69 73 20 74 68 o.a.temporary.buffer.which.is.th
21a20 65 6e 20 70 61 72 73 65 64 20 61 73 20 43 20 63 6f 64 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a en.parsed.as.C.code........</p>.
21a40 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c ......<p>See.also:</p>.......<ul
21a60 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 2d 69 6d 70 6f 72 74 >.........<li><a.href="#c-import
21a80 22 3e 49 6d 70 6f 72 74 20 66 72 6f 6d 20 43 20 48 65 61 64 65 72 20 46 69 6c 65 3c 2f 61 3e 3c ">Import.from.C.Header.File</a><
21aa0 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 /li>.........<li><a.href="#built
21ac0 69 6e 2d 63 49 6e 63 6c 75 64 65 22 3e 40 63 49 6e 63 6c 75 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a in-cInclude">@cInclude</a></li>.
21ae0 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 44 ........<li><a.href="#builtin-cD
21b00 65 66 69 6e 65 22 3e 40 63 44 65 66 69 6e 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 efine">@cDefine</a></li>........
21b20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 55 6e 64 65 66 22 3e 40 .<li><a.href="#builtin-cUndef">@
21b40 63 55 6e 64 65 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 cUndef</a></li>.......</ul>.....
21b60 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 63 49 6e 63 6c 75 64 65 22 3e 40 63 49 6e ..<h3.id="builtin-cInclude">@cIn
21b80 63 6c 75 64 65 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 clude</h3>.......<pre><code.clas
21ba0 73 3d 22 7a 69 67 22 3e 40 63 49 6e 63 6c 75 64 65 28 63 6f 6d 70 74 69 6d 65 20 70 61 74 68 3a s="zig">@cInclude(comptime.path:
21bc0 20 5b 5d 75 38 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 .[]u8)</code></pre>.......<p>...
21be0 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 6f 6e 6c 79 20 6f 63 63 75 72 ....This.function.can.only.occur
21c00 20 69 6e 73 69 64 65 20 3c 63 6f 64 65 3e 40 63 49 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 2e 0a 20 .inside.<code>@cImport</code>...
21c20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 61 .....</p>.......<p>.......This.a
21c40 70 70 65 6e 64 73 20 3c 63 6f 64 65 3e 23 69 6e 63 6c 75 64 65 20 3c 24 70 61 74 68 3e 5c 6e 3c ppends.<code>#include.<$path>\n<
21c60 2f 63 6f 64 65 3e 20 74 6f 20 74 68 65 20 3c 63 6f 64 65 3e 63 5f 69 6d 70 6f 72 74 3c 2f 63 6f /code>.to.the.<code>c_import</co
21c80 64 65 3e 0a 20 20 20 20 20 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 2e 0a 20 20 20 20 de>.......temporary.buffer......
21ca0 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 ..</p>.......<p>See.also:</p>...
21cc0 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 ....<ul>.........<li><a.href="#c
21ce0 2d 69 6d 70 6f 72 74 22 3e 49 6d 70 6f 72 74 20 66 72 6f 6d 20 43 20 48 65 61 64 65 72 20 46 69 -import">Import.from.C.Header.Fi
21d00 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d le</a></li>.........<li><a.href=
21d20 22 23 62 75 69 6c 74 69 6e 2d 63 49 6d 70 6f 72 74 22 3e 40 63 49 6d 70 6f 72 74 3c 2f 61 3e 3c "#builtin-cImport">@cImport</a><
21d40 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 /li>.........<li><a.href="#built
21d60 69 6e 2d 63 44 65 66 69 6e 65 22 3e 40 63 44 65 66 69 6e 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 in-cDefine">@cDefine</a></li>...
21d80 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 55 6e 64 ......<li><a.href="#builtin-cUnd
21da0 65 66 22 3e 40 63 55 6e 64 65 66 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e ef">@cUndef</a></li>.......</ul>
21dc0 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 63 55 6e 64 65 66 22 3e 40 .......<h3.id="builtin-cUndef">@
21de0 63 55 6e 64 65 66 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 cUndef</h3>.......<pre><code.cla
21e00 73 73 3d 22 7a 69 67 22 3e 40 63 55 6e 64 65 66 28 63 6f 6d 70 74 69 6d 65 20 6e 61 6d 65 3a 20 ss="zig">@cUndef(comptime.name:.
21e20 5b 5d 75 38 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 []u8)</code></pre>.......<p>....
21e40 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 6f 6e 6c 79 20 6f 63 63 75 72 20 ...This.function.can.only.occur.
21e60 69 6e 73 69 64 65 20 3c 63 6f 64 65 3e 40 63 49 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 2e 0a 20 20 inside.<code>@cImport</code>....
21e80 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 61 70 ....</p>.......<p>.......This.ap
21ea0 70 65 6e 64 73 20 3c 63 6f 64 65 3e 23 75 6e 64 65 66 20 24 6e 61 6d 65 3c 2f 63 6f 64 65 3e 20 pends.<code>#undef.$name</code>.
21ec0 74 6f 20 74 68 65 20 3c 63 6f 64 65 3e 40 63 49 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 0a 20 20 20 to.the.<code>@cImport</code>....
21ee0 20 20 20 74 65 6d 70 6f 72 61 72 79 20 62 75 66 66 65 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a ...temporary.buffer........</p>.
21f00 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c ......<p>See.also:</p>.......<ul
21f20 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 2d 69 6d 70 6f 72 74 >.........<li><a.href="#c-import
21f40 22 3e 49 6d 70 6f 72 74 20 66 72 6f 6d 20 43 20 48 65 61 64 65 72 20 46 69 6c 65 3c 2f 61 3e 3c ">Import.from.C.Header.File</a><
21f60 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 /li>.........<li><a.href="#built
21f80 69 6e 2d 63 49 6d 70 6f 72 74 22 3e 40 63 49 6d 70 6f 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 in-cImport">@cImport</a></li>...
21fa0 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 44 65 66 ......<li><a.href="#builtin-cDef
21fc0 69 6e 65 22 3e 40 63 44 65 66 69 6e 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c ine">@cDefine</a></li>.........<
21fe0 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 49 6e 63 6c 75 64 65 22 3e 40 li><a.href="#builtin-cInclude">@
22000 63 49 6e 63 6c 75 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 cInclude</a></li>.......</ul>...
22020 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 63 61 6e 49 6d 70 6c 69 63 69 74 43 ....<h3.id="builtin-canImplicitC
22040 61 73 74 22 3e 40 63 61 6e 49 6d 70 6c 69 63 69 74 43 61 73 74 3c 2f 68 33 3e 0a 20 20 20 20 20 ast">@canImplicitCast</h3>......
22060 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 63 61 6e 49 6d 70 6c .<pre><code.class="zig">@canImpl
22080 69 63 69 74 43 61 73 74 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 76 61 6c 75 65 icitCast(comptime.T:.type,.value
220a0 29 20 2d 26 67 74 3b 20 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 ).-&gt;.bool</code></pre>.......
220c0 3c 70 3e 0a 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 77 68 65 74 68 65 72 20 61 20 76 61 6c 75 <p>.......Returns.whether.a.valu
220e0 65 20 63 61 6e 20 62 65 20 69 6d 70 6c 69 63 69 74 6c 79 20 63 61 73 74 65 64 20 74 6f 20 61 20 e.can.be.implicitly.casted.to.a.
22100 67 69 76 65 6e 20 74 79 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 given.type........</p>.......<h3
22120 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 63 6c 7a 22 3e 40 63 6c 7a 3c 2f 68 33 3e 0a 20 20 20 20 .id="builtin-clz">@clz</h3>.....
22140 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 63 6c 7a 28 78 3a ..<pre><code.class="zig">@clz(x:
22160 20 54 29 20 2d 26 67 74 3b 20 55 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c .T).-&gt;.U</code></pre>.......<
22180 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 6f 75 6e 74 73 20 74 68 p>.......This.function.counts.th
221a0 65 20 6e 75 6d 62 65 72 20 6f 66 20 6c 65 61 64 69 6e 67 20 7a 65 72 6f 65 73 20 69 6e 20 3c 63 e.number.of.leading.zeroes.in.<c
221c0 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 77 68 69 63 68 20 69 73 20 61 6e 20 69 6e 74 65 67 65 72 ode>x</code>.which.is.an.integer
221e0 0a 20 20 20 20 20 20 74 79 70 65 20 3c 63 6f 64 65 3e 54 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 .......type.<code>T</code>......
22200 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 72 65 74 75 72 ..</p>.......<p>.......The.retur
22220 6e 20 74 79 70 65 20 3c 63 6f 64 65 3e 55 3c 2f 63 6f 64 65 3e 20 69 73 20 61 6e 20 75 6e 73 69 n.type.<code>U</code>.is.an.unsi
22240 67 6e 65 64 20 69 6e 74 65 67 65 72 20 77 69 74 68 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 6e 75 gned.integer.with.the.minimum.nu
22260 6d 62 65 72 0a 20 20 20 20 20 20 6f 66 20 62 69 74 73 20 74 68 61 74 20 63 61 6e 20 72 65 70 72 mber.......of.bits.that.can.repr
22280 65 73 65 6e 74 20 74 68 65 20 76 61 6c 75 65 20 3c 63 6f 64 65 3e 54 2e 62 69 74 5f 63 6f 75 6e esent.the.value.<code>T.bit_coun
222a0 74 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 t</code>........</p>.......<p>..
222c0 20 20 20 20 20 49 66 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 69 73 20 7a 65 72 6f 2c 20 .....If.<code>x</code>.is.zero,.
222e0 3c 63 6f 64 65 3e 40 63 6c 7a 3c 2f 63 6f 64 65 3e 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e <code>@clz</code>.returns.<code>
22300 54 2e 62 69 74 5f 63 6f 75 6e 74 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 0a T.bit_count</code>........</p>..
22320 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 63 6d 70 78 63 68 67 22 3e 40 ......<h3.id="builtin-cmpxchg">@
22340 63 6d 70 78 63 68 67 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c cmpxchg</h3>.......<pre><code.cl
22360 61 73 73 3d 22 7a 69 67 22 3e 40 63 6d 70 78 63 68 67 28 70 74 72 3a 20 26 61 6d 70 3b 54 2c 20 ass="zig">@cmpxchg(ptr:.&amp;T,.
22380 63 6d 70 3a 20 54 2c 20 6e 65 77 3a 20 54 2c 20 73 75 63 63 65 73 73 5f 6f 72 64 65 72 3a 20 41 cmp:.T,.new:.T,.success_order:.A
223a0 74 6f 6d 69 63 4f 72 64 65 72 2c 20 66 61 69 6c 5f 6f 72 64 65 72 3a 20 41 74 6f 6d 69 63 4f 72 tomicOrder,.fail_order:.AtomicOr
223c0 64 65 72 29 20 2d 26 67 74 3b 20 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 der).-&gt;.bool</code></pre>....
223e0 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 70 65 72 66 6f ...<p>.......This.function.perfo
22400 72 6d 73 20 61 6e 20 61 74 6f 6d 69 63 20 63 6f 6d 70 61 72 65 20 65 78 63 68 61 6e 67 65 20 6f rms.an.atomic.compare.exchange.o
22420 70 65 72 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 peration........</p>.......<p>..
22440 20 20 20 20 20 3c 63 6f 64 65 3e 41 74 6f 6d 69 63 4f 72 64 65 72 3c 2f 63 6f 64 65 3e 20 63 61 .....<code>AtomicOrder</code>.ca
22460 6e 20 62 65 20 66 6f 75 6e 64 20 77 69 74 68 20 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 62 n.be.found.with.<code>@import("b
22480 75 69 6c 74 69 6e 22 29 2e 41 74 6f 6d 69 63 4f 72 64 65 72 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 uiltin").AtomicOrder</code>.....
224a0 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 3c 63 6f 64 65 3e 40 74 79 70 65 4f 66 28 70 ...</p>.......<p><code>@typeOf(p
224c0 74 72 29 2e 61 6c 69 67 6e 6d 65 6e 74 3c 2f 63 6f 64 65 3e 20 6d 75 73 74 20 62 65 20 3c 63 6f tr).alignment</code>.must.be.<co
224e0 64 65 3e 26 67 74 3b 3d 20 40 73 69 7a 65 4f 66 28 54 29 2e 3c 2f 63 6f 64 65 3e 3c 2f 70 3e 0a de>&gt;=.@sizeOf(T).</code></p>.
22500 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c ......<p>See.also:</p>.......<ul
22520 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 63 6f 6d 70 69 6c 65 2d >.........<li><a.href="#compile-
22540 76 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 20 56 61 72 69 61 62 6c 65 73 3c 2f 61 3e variables">Compile.Variables</a>
22560 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d </li>.......</ul>........<h3.id=
22580 22 62 75 69 6c 74 69 6e 2d 63 6f 6d 70 69 6c 65 45 72 72 6f 72 22 3e 40 63 6f 6d 70 69 6c 65 45 "builtin-compileError">@compileE
225a0 72 72 6f 72 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 rror</h3>.......<pre><code.class
225c0 3d 22 7a 69 67 22 3e 40 63 6f 6d 70 69 6c 65 45 72 72 6f 72 28 63 6f 6d 70 74 69 6d 65 20 6d 73 ="zig">@compileError(comptime.ms
225e0 67 3a 20 5b 5d 75 38 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a g:.[]u8)</code></pre>.......<p>.
22600 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 2c 20 77 68 65 6e 20 73 65 6d 61 6e 74 ......This.function,.when.semant
22620 69 63 61 6c 6c 79 20 61 6e 61 6c 79 7a 65 64 2c 20 63 61 75 73 65 73 20 61 20 63 6f 6d 70 69 6c ically.analyzed,.causes.a.compil
22640 65 20 65 72 72 6f 72 20 77 69 74 68 20 74 68 65 0a 20 20 20 20 20 20 6d 65 73 73 61 67 65 20 3c e.error.with.the.......message.<
22660 63 6f 64 65 3e 6d 73 67 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 code>msg</code>........</p>.....
22680 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 72 65 20 61 72 65 20 73 65 76 65 72 61 6c 20 77 61 ..<p>.......There.are.several.wa
226a0 79 73 20 74 68 61 74 20 63 6f 64 65 20 61 76 6f 69 64 73 20 62 65 69 6e 67 20 73 65 6d 61 6e 74 ys.that.code.avoids.being.semant
226c0 69 63 61 6c 6c 79 20 63 68 65 63 6b 65 64 2c 20 73 75 63 68 20 61 73 0a 20 20 20 20 20 20 75 73 ically.checked,.such.as.......us
226e0 69 6e 67 20 3c 63 6f 64 65 3e 69 66 3c 2f 63 6f 64 65 3e 20 6f 72 20 3c 63 6f 64 65 3e 73 77 69 ing.<code>if</code>.or.<code>swi
22700 74 63 68 3c 2f 63 6f 64 65 3e 20 77 69 74 68 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 63 6f 6e tch</code>.with.compile.time.con
22720 73 74 61 6e 74 73 2c 0a 20 20 20 20 20 20 61 6e 64 20 3c 63 6f 64 65 3e 63 6f 6d 70 74 69 6d 65 stants,.......and.<code>comptime
22740 3c 2f 63 6f 64 65 3e 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 </code>.functions........</p>...
22760 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 63 6f 6d 70 69 6c 65 4c 6f 67 22 3e ....<h3.id="builtin-compileLog">
22780 40 63 6f 6d 70 69 6c 65 4c 6f 67 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 @compileLog</h3>.......<pre><cod
227a0 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 63 6f 6d 70 69 6c 65 4c 6f 67 28 61 72 67 73 3a 20 e.class="zig">@compileLog(args:.
227c0 2e 2e 2e 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 ...)</code></pre>.......<p>.....
227e0 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 2c 20 77 68 65 6e 20 73 65 6d 61 6e 74 69 63 61 6c ..This.function,.when.semantical
22800 6c 79 20 61 6e 61 6c 79 7a 65 64 2c 20 63 61 75 73 65 73 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 ly.analyzed,.causes.a.compile.er
22820 72 6f 72 2c 20 62 75 74 20 69 74 20 64 6f 65 73 0a 20 20 20 20 20 20 6e 6f 74 20 70 72 65 76 65 ror,.but.it.does.......not.preve
22840 6e 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 63 6f 64 65 20 66 72 6f 6d 20 63 6f 6e 74 69 6e nt.compile-time.code.from.contin
22860 75 69 6e 67 20 74 6f 20 72 75 6e 2c 20 61 6e 64 20 69 74 20 6f 74 68 65 72 77 69 73 65 20 64 6f uing.to.run,.and.it.otherwise.do
22880 65 73 20 6e 6f 74 0a 20 20 20 20 20 20 69 6e 74 65 72 66 65 72 65 20 77 69 74 68 20 61 6e 61 6c es.not.......interfere.with.anal
228a0 79 73 69 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 ysis........</p>.......<p>......
228c0 20 45 61 63 68 20 6f 66 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 77 69 6c 6c 20 62 65 20 73 .Each.of.the.arguments.will.be.s
228e0 65 72 69 61 6c 69 7a 65 64 20 74 6f 20 61 20 70 72 69 6e 74 61 62 6c 65 20 64 65 62 75 67 20 76 erialized.to.a.printable.debug.v
22900 61 6c 75 65 20 61 6e 64 20 6f 75 74 70 75 74 0a 20 20 20 20 20 20 74 6f 20 73 74 64 65 72 72 2c alue.and.output.......to.stderr,
22920 20 61 6e 64 20 74 68 65 6e 20 61 20 6e 65 77 6c 69 6e 65 20 61 74 20 74 68 65 20 65 6e 64 2e 0a .and.then.a.newline.at.the.end..
22940 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 ......</p>.......<p>.......This.
22960 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 64 6f 20 22 70 72 69 6e function.can.be.used.to.do."prin
22980 74 66 20 64 65 62 75 67 67 69 6e 67 22 20 6f 6e 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 65 78 tf.debugging".on.compile-time.ex
229a0 65 63 75 74 69 6e 67 0a 20 20 20 20 20 20 63 6f 64 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 ecuting.......code........</p>..
229c0 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 63 74 7a 22 3e 40 63 74 7a 3c 2f .....<h3.id="builtin-ctz">@ctz</
229e0 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 h3>.......<pre><code.class="zig"
22a00 3e 40 63 74 7a 28 78 3a 20 54 29 20 2d 26 67 74 3b 20 55 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e >@ctz(x:.T).-&gt;.U</code></pre>
22a20 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 .......<p>.......This.function.c
22a40 6f 75 6e 74 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 74 72 61 69 6c 69 6e 67 20 7a 65 72 ounts.the.number.of.trailing.zer
22a60 6f 65 73 20 69 6e 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 77 68 69 63 68 20 69 73 20 61 oes.in.<code>x</code>.which.is.a
22a80 6e 20 69 6e 74 65 67 65 72 0a 20 20 20 20 20 20 74 79 70 65 20 3c 63 6f 64 65 3e 54 3c 2f 63 6f n.integer.......type.<code>T</co
22aa0 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 de>........</p>.......<p>.......
22ac0 54 68 65 20 72 65 74 75 72 6e 20 74 79 70 65 20 3c 63 6f 64 65 3e 55 3c 2f 63 6f 64 65 3e 20 69 The.return.type.<code>U</code>.i
22ae0 73 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 77 69 74 68 20 74 68 65 20 6d s.an.unsigned.integer.with.the.m
22b00 69 6e 69 6d 75 6d 20 6e 75 6d 62 65 72 0a 20 20 20 20 20 20 6f 66 20 62 69 74 73 20 74 68 61 74 inimum.number.......of.bits.that
22b20 20 63 61 6e 20 72 65 70 72 65 73 65 6e 74 20 74 68 65 20 76 61 6c 75 65 20 3c 63 6f 64 65 3e 54 .can.represent.the.value.<code>T
22b40 2e 62 69 74 5f 63 6f 75 6e 74 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 .bit_count</code>........</p>...
22b60 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 66 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 ....<p>.......If.<code>x</code>.
22b80 69 73 20 7a 65 72 6f 2c 20 3c 63 6f 64 65 3e 40 63 74 7a 3c 2f 63 6f 64 65 3e 20 72 65 74 75 72 is.zero,.<code>@ctz</code>.retur
22ba0 6e 73 20 3c 63 6f 64 65 3e 54 2e 62 69 74 5f 63 6f 75 6e 74 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 ns.<code>T.bit_count</code>.....
22bc0 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 64 69 ...</p>.......<h3.id="builtin-di
22be0 76 45 78 61 63 74 22 3e 40 64 69 76 45 78 61 63 74 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 vExact">@divExact</h3>.......<pr
22c00 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 64 69 76 45 78 61 63 74 28 6e 75 e><code.class="zig">@divExact(nu
22c20 6d 65 72 61 74 6f 72 3a 20 54 2c 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 3a 20 54 29 20 2d 26 67 74 merator:.T,.denominator:.T).-&gt
22c40 3b 20 54 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 ;.T</code></pre>.......<p>......
22c60 20 45 78 61 63 74 20 64 69 76 69 73 69 6f 6e 2e 20 43 61 6c 6c 65 72 20 67 75 61 72 61 6e 74 65 .Exact.division..Caller.guarante
22c80 65 73 20 3c 63 6f 64 65 3e 64 65 6e 6f 6d 69 6e 61 74 6f 72 20 21 3d 20 30 3c 2f 63 6f 64 65 3e es.<code>denominator.!=.0</code>
22ca0 20 61 6e 64 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 40 64 69 76 54 72 75 6e 63 28 6e 75 6d 65 72 .and.......<code>@divTrunc(numer
22cc0 61 74 6f 72 2c 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 29 20 2a 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 ator,.denominator).*.denominator
22ce0 20 3d 3d 20 6e 75 6d 65 72 61 74 6f 72 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e .==.numerator</code>........</p>
22d00 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 .......<ul>.........<li><code>@d
22d20 69 76 45 78 61 63 74 28 36 2c 20 33 29 20 3d 3d 20 32 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 ivExact(6,.3).==.2</code></li>..
22d40 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 45 78 61 63 74 28 61 2c 20 62 29 .......<li><code>@divExact(a,.b)
22d60 20 2a 20 62 20 3d 3d 20 61 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c .*.b.==.a</code></li>.......</ul
22d80 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c >.......<p>See.also:</p>.......<
22da0 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 ul>.........<li><a.href="#builti
22dc0 6e 2d 64 69 76 54 72 75 6e 63 22 3e 40 64 69 76 54 72 75 6e 63 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 n-divTrunc">@divTrunc</a></li>..
22de0 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 64 69 76 .......<li><a.href="#builtin-div
22e00 46 6c 6f 6f 72 22 3e 40 64 69 76 46 6c 6f 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 Floor">@divFloor</a></li>.......
22e20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 2e ..<li><code>@import("std").math.
22e40 64 69 76 45 78 61 63 74 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e divExact</code></li>.......</ul>
22e60 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 64 69 76 46 6c 6f 6f 72 22 .......<h3.id="builtin-divFloor"
22e80 3e 40 64 69 76 46 6c 6f 6f 72 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 >@divFloor</h3>.......<pre><code
22ea0 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 64 69 76 46 6c 6f 6f 72 28 6e 75 6d 65 72 61 74 6f 72 .class="zig">@divFloor(numerator
22ec0 3a 20 54 2c 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 3a 20 54 29 20 2d 26 67 74 3b 20 54 3c 2f 63 6f :.T,.denominator:.T).-&gt;.T</co
22ee0 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 46 6c 6f 6f 72 65 de></pre>.......<p>.......Floore
22f00 64 20 64 69 76 69 73 69 6f 6e 2e 20 52 6f 75 6e 64 73 20 74 6f 77 61 72 64 20 6e 65 67 61 74 69 d.division..Rounds.toward.negati
22f20 76 65 20 69 6e 66 69 6e 69 74 79 2e 20 46 6f 72 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 ve.infinity..For.unsigned.intege
22f40 72 73 20 69 74 20 69 73 0a 20 20 20 20 20 20 74 68 65 20 73 61 6d 65 20 61 73 20 3c 63 6f 64 65 rs.it.is.......the.same.as.<code
22f60 3e 6e 75 6d 65 72 61 74 6f 72 20 2f 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 3c 2f 63 6f 64 65 3e 2e >numerator./.denominator</code>.
22f80 20 43 61 6c 6c 65 72 20 67 75 61 72 61 6e 74 65 65 73 20 3c 63 6f 64 65 3e 64 65 6e 6f 6d 69 6e .Caller.guarantees.<code>denomin
22fa0 61 74 6f 72 20 21 3d 20 30 3c 2f 63 6f 64 65 3e 20 61 6e 64 0a 20 20 20 20 20 20 3c 63 6f 64 65 ator.!=.0</code>.and.......<code
22fc0 3e 21 28 40 74 79 70 65 49 64 28 54 29 20 3d 3d 20 62 75 69 6c 74 69 6e 2e 54 79 70 65 49 64 2e >!(@typeId(T).==.builtin.TypeId.
22fe0 49 6e 74 20 61 6e 64 20 54 2e 69 73 5f 73 69 67 6e 65 64 20 61 6e 64 20 6e 75 6d 65 72 61 74 6f Int.and.T.is_signed.and.numerato
23000 72 20 3d 3d 20 40 6d 69 6e 56 61 6c 75 65 28 54 29 20 61 6e 64 20 64 65 6e 6f 6d 69 6e 61 74 6f r.==.@minValue(T).and.denominato
23020 72 20 3d 3d 20 2d 31 29 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 r.==.-1)</code>........</p>.....
23040 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 46 6c 6f ..<ul>.........<li><code>@divFlo
23060 6f 72 28 2d 35 2c 20 33 29 20 3d 3d 20 2d 32 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 or(-5,.3).==.-2</code></li>.....
23080 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 46 6c 6f 6f 72 28 61 2c 20 62 29 20 2b 20 ....<li><code>@divFloor(a,.b).+.
230a0 40 6d 6f 64 28 61 2c 20 62 29 20 3d 3d 20 61 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 @mod(a,.b).==.a</code></li>.....
230c0 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 ..</ul>.......<p>See.also:</p>..
230e0 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 .....<ul>.........<li><a.href="#
23100 62 75 69 6c 74 69 6e 2d 64 69 76 54 72 75 6e 63 22 3e 40 64 69 76 54 72 75 6e 63 3c 2f 61 3e 3c builtin-divTrunc">@divTrunc</a><
23120 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 /li>.........<li><a.href="#built
23140 69 6e 2d 64 69 76 45 78 61 63 74 22 3e 40 64 69 76 45 78 61 63 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a in-divExact">@divExact</a></li>.
23160 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 ........<li><code>@import("std")
23180 2e 6d 61 74 68 2e 64 69 76 46 6c 6f 6f 72 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 .math.divFloor</code></li>......
231a0 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 64 69 76 .</ul>.......<h3.id="builtin-div
231c0 54 72 75 6e 63 22 3e 40 64 69 76 54 72 75 6e 63 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 Trunc">@divTrunc</h3>.......<pre
231e0 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 64 69 76 54 72 75 6e 63 28 6e 75 6d ><code.class="zig">@divTrunc(num
23200 65 72 61 74 6f 72 3a 20 54 2c 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 3a 20 54 29 20 2d 26 67 74 3b erator:.T,.denominator:.T).-&gt;
23220 20 54 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 .T</code></pre>.......<p>.......
23240 54 72 75 6e 63 61 74 65 64 20 64 69 76 69 73 69 6f 6e 2e 20 52 6f 75 6e 64 73 20 74 6f 77 61 72 Truncated.division..Rounds.towar
23260 64 20 7a 65 72 6f 2e 20 46 6f 72 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 73 20 69 74 d.zero..For.unsigned.integers.it
23280 20 69 73 0a 20 20 20 20 20 20 74 68 65 20 73 61 6d 65 20 61 73 20 3c 63 6f 64 65 3e 6e 75 6d 65 .is.......the.same.as.<code>nume
232a0 72 61 74 6f 72 20 2f 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 3c 2f 63 6f 64 65 3e 2e 20 43 61 6c 6c rator./.denominator</code>..Call
232c0 65 72 20 67 75 61 72 61 6e 74 65 65 73 20 3c 63 6f 64 65 3e 64 65 6e 6f 6d 69 6e 61 74 6f 72 20 er.guarantees.<code>denominator.
232e0 21 3d 20 30 3c 2f 63 6f 64 65 3e 20 61 6e 64 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 21 28 40 74 !=.0</code>.and.......<code>!(@t
23300 79 70 65 49 64 28 54 29 20 3d 3d 20 62 75 69 6c 74 69 6e 2e 54 79 70 65 49 64 2e 49 6e 74 20 61 ypeId(T).==.builtin.TypeId.Int.a
23320 6e 64 20 54 2e 69 73 5f 73 69 67 6e 65 64 20 61 6e 64 20 6e 75 6d 65 72 61 74 6f 72 20 3d 3d 20 nd.T.is_signed.and.numerator.==.
23340 40 6d 69 6e 56 61 6c 75 65 28 54 29 20 61 6e 64 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 20 3d 3d 20 @minValue(T).and.denominator.==.
23360 2d 31 29 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c -1)</code>........</p>.......<ul
23380 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 54 72 75 6e 63 28 2d 35 >.........<li><code>@divTrunc(-5
233a0 2c 20 33 29 20 3d 3d 20 2d 31 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c ,.3).==.-1</code></li>.........<
233c0 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 54 72 75 6e 63 28 61 2c 20 62 29 20 2b 20 40 72 65 6d 28 li><code>@divTrunc(a,.b).+.@rem(
233e0 61 2c 20 62 29 20 3d 3d 20 61 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 a,.b).==.a</code></li>.......</u
23400 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 l>.......<p>See.also:</p>.......
23420 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 <ul>.........<li><a.href="#built
23440 69 6e 2d 64 69 76 46 6c 6f 6f 72 22 3e 40 64 69 76 46 6c 6f 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a in-divFloor">@divFloor</a></li>.
23460 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 64 69 ........<li><a.href="#builtin-di
23480 76 45 78 61 63 74 22 3e 40 64 69 76 45 78 61 63 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 vExact">@divExact</a></li>......
234a0 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 ...<li><code>@import("std").math
234c0 2e 64 69 76 54 72 75 6e 63 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c .divTrunc</code></li>.......</ul
234e0 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 65 6d 62 65 64 46 69 6c >.......<h3.id="builtin-embedFil
23500 65 22 3e 40 65 6d 62 65 64 46 69 6c 65 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 e">@embedFile</h3>.......<pre><c
23520 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 65 6d 62 65 64 46 69 6c 65 28 63 6f 6d 70 74 ode.class="zig">@embedFile(compt
23540 69 6d 65 20 70 61 74 68 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 29 20 2d 26 67 74 3b 20 5b 58 5d 75 ime.path:.[]const.u8).-&gt;.[X]u
23560 38 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 8</code></pre>.......<p>.......T
23580 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 63 6f 6d 70 69 6c 65 20 74 his.function.returns.a.compile.t
235a0 69 6d 65 20 63 6f 6e 73 74 61 6e 74 20 66 69 78 65 64 2d 73 69 7a 65 20 61 72 72 61 79 20 77 69 ime.constant.fixed-size.array.wi
235c0 74 68 20 6c 65 6e 67 74 68 0a 20 20 20 20 20 20 65 71 75 61 6c 20 74 6f 20 74 68 65 20 62 79 74 th.length.......equal.to.the.byt
235e0 65 20 63 6f 75 6e 74 20 6f 66 20 74 68 65 20 66 69 6c 65 20 67 69 76 65 6e 20 62 79 20 3c 63 6f e.count.of.the.file.given.by.<co
23600 64 65 3e 70 61 74 68 3c 2f 63 6f 64 65 3e 2e 20 54 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 de>path</code>..The.contents.of.
23620 74 68 65 20 61 72 72 61 79 0a 20 20 20 20 20 20 61 72 65 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 the.array.......are.the.contents
23640 20 6f 66 20 74 68 65 20 66 69 6c 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c .of.the.file........</p>.......<
23660 70 3e 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 70 61 74 68 3c 2f 63 6f 64 65 3e 20 69 73 20 61 62 p>.......<code>path</code>.is.ab
23680 73 6f 6c 75 74 65 20 6f 72 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 65 20 63 75 72 72 65 6e solute.or.relative.to.the.curren
236a0 74 20 66 69 6c 65 2c 20 6a 75 73 74 20 6c 69 6b 65 20 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 3c t.file,.just.like.<code>@import<
236c0 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 /code>........</p>.......<p>See.
236e0 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 also:</p>.......<ul>.........<li
23700 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 69 6d 70 6f 72 74 22 3e 40 69 6d 70 6f ><a.href="#builtin-import">@impo
23720 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 rt</a></li>.......</ul>.......<h
23740 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 65 6e 75 6d 54 61 67 4e 61 6d 65 22 3e 40 65 6e 75 6d 3.id="builtin-enumTagName">@enum
23760 54 61 67 4e 61 6d 65 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c TagName</h3>.......<pre><code.cl
23780 61 73 73 3d 22 7a 69 67 22 3e 40 65 6e 75 6d 54 61 67 4e 61 6d 65 28 76 61 6c 75 65 3a 20 76 61 ass="zig">@enumTagName(value:.va
237a0 72 29 20 2d 26 67 74 3b 20 5b 5d 63 6f 6e 73 74 20 75 38 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e r).-&gt;.[]const.u8</code></pre>
237c0 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 6f 6e 76 65 72 74 73 20 61 6e 20 65 6e 75 .......<p>.......Converts.an.enu
237e0 6d 20 74 61 67 20 6e 61 6d 65 20 74 6f 20 61 20 73 6c 69 63 65 20 6f 66 20 62 79 74 65 73 2e 0a m.tag.name.to.a.slice.of.bytes..
23800 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e ......</p>.......<h3.id="builtin
23820 2d 65 72 72 6f 72 4e 61 6d 65 22 3e 40 65 72 72 6f 72 4e 61 6d 65 3c 2f 68 33 3e 0a 20 20 20 20 -errorName">@errorName</h3>.....
23840 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 65 72 72 6f 72 4e ..<pre><code.class="zig">@errorN
23860 61 6d 65 28 65 72 72 3a 20 65 72 72 6f 72 29 20 2d 26 67 74 3b 20 5b 5d 75 38 3c 2f 63 6f 64 65 ame(err:.error).-&gt;.[]u8</code
23880 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e ></pre>.......<p>.......This.fun
238a0 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 74 72 69 6e 67 20 72 65 70 72 65 73 65 ction.returns.the.string.represe
238c0 6e 74 61 74 69 6f 6e 20 6f 66 20 61 6e 20 65 72 72 6f 72 2e 20 49 66 20 61 6e 20 65 72 72 6f 72 ntation.of.an.error..If.an.error
238e0 0a 20 20 20 20 20 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 69 73 3a 0a 20 20 20 20 20 20 3c 2f 70 .......declaration.is:.......</p
23900 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 65 >.......<pre><code.class="zig">e
23920 72 72 6f 72 20 4f 75 74 4f 66 4d 65 6d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 rror.OutOfMem</code></pre>......
23940 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 6e 20 74 68 65 20 73 74 72 69 6e 67 20 72 65 70 72 65 .<p>.......Then.the.string.repre
23960 73 65 6e 74 61 74 69 6f 6e 20 69 73 20 3c 63 6f 64 65 3e 22 4f 75 74 4f 66 4d 65 6d 22 3c 2f 63 sentation.is.<code>"OutOfMem"</c
23980 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 ode>........</p>.......<p>......
239a0 20 49 66 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20 63 61 6c 6c 73 20 74 6f 20 3c 63 6f 64 65 3e .If.there.are.no.calls.to.<code>
239c0 40 65 72 72 6f 72 4e 61 6d 65 3c 2f 63 6f 64 65 3e 20 69 6e 20 61 6e 20 65 6e 74 69 72 65 20 61 @errorName</code>.in.an.entire.a
239e0 70 70 6c 69 63 61 74 69 6f 6e 2c 0a 20 20 20 20 20 20 6f 72 20 61 6c 6c 20 63 61 6c 6c 73 20 68 pplication,.......or.all.calls.h
23a00 61 76 65 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 6b 6e 6f 77 6e 20 76 61 6c 75 65 20 66 ave.a.compile-time.known.value.f
23a20 6f 72 20 3c 63 6f 64 65 3e 65 72 72 3c 2f 63 6f 64 65 3e 2c 20 74 68 65 6e 20 6e 6f 0a 20 20 20 or.<code>err</code>,.then.no....
23a40 20 20 20 65 72 72 6f 72 20 6e 61 6d 65 20 74 61 62 6c 65 20 77 69 6c 6c 20 62 65 20 67 65 6e 65 ...error.name.table.will.be.gene
23a60 72 61 74 65 64 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 rated........</p>.......<h3.id="
23a80 62 75 69 6c 74 69 6e 2d 66 65 6e 63 65 22 3e 40 66 65 6e 63 65 3c 2f 68 33 3e 0a 20 20 20 20 20 builtin-fence">@fence</h3>......
23aa0 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 66 65 6e 63 65 28 6f .<pre><code.class="zig">@fence(o
23ac0 72 64 65 72 3a 20 41 74 6f 6d 69 63 4f 72 64 65 72 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a rder:.AtomicOrder)</code></pre>.
23ae0 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 3c 63 6f 64 65 3e 66 65 6e 63 65 3c ......<p>.......The.<code>fence<
23b00 2f 63 6f 64 65 3e 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 75 73 65 64 20 74 6f 20 69 6e 74 72 6f /code>.function.is.used.to.intro
23b20 64 75 63 65 20 68 61 70 70 65 6e 73 2d 62 65 66 6f 72 65 20 65 64 67 65 73 20 62 65 74 77 65 65 duce.happens-before.edges.betwee
23b40 6e 20 6f 70 65 72 61 74 69 6f 6e 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c n.operations........</p>.......<
23b60 70 3e 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 41 74 6f 6d 69 63 4f 72 64 65 72 3c 2f 63 6f 64 65 p>.......<code>AtomicOrder</code
23b80 3e 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 77 69 74 68 20 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 >.can.be.found.with.<code>@impor
23ba0 74 28 22 62 75 69 6c 74 69 6e 22 29 2e 41 74 6f 6d 69 63 4f 72 64 65 72 3c 2f 63 6f 64 65 3e 2e t("builtin").AtomicOrder</code>.
23bc0 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f .......</p>.......<p>See.also:</
23be0 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 p>.......<ul>.........<li><a.hre
23c00 66 3d 22 23 63 6f 6d 70 69 6c 65 2d 76 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 20 56 f="#compile-variables">Compile.V
23c20 61 72 69 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 ariables</a></li>.......</ul>...
23c40 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 66 69 65 6c 64 50 61 72 65 6e 74 50 ....<h3.id="builtin-fieldParentP
23c60 74 72 22 3e 40 66 69 65 6c 64 50 61 72 65 6e 74 50 74 72 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c tr">@fieldParentPtr</h3>.......<
23c80 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 66 69 65 6c 64 50 61 72 65 pre><code.class="zig">@fieldPare
23ca0 6e 74 50 74 72 28 63 6f 6d 70 74 69 6d 65 20 50 61 72 65 6e 74 54 79 70 65 3a 20 74 79 70 65 2c ntPtr(comptime.ParentType:.type,
23cc0 20 63 6f 6d 70 74 69 6d 65 20 66 69 65 6c 64 5f 6e 61 6d 65 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 .comptime.field_name:.[]const.u8
23ce0 2c 0a 20 20 20 20 66 69 65 6c 64 5f 70 74 72 3a 20 26 61 6d 70 3b 54 29 20 2d 26 67 74 3b 20 26 ,.....field_ptr:.&amp;T).-&gt;.&
23d00 61 6d 70 3b 50 61 72 65 6e 74 54 79 70 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 amp;ParentType</code></pre>.....
23d20 20 20 3c 70 3e 0a 20 20 20 20 20 20 47 69 76 65 6e 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 ..<p>.......Given.a.pointer.to.a
23d40 20 66 69 65 6c 64 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20 62 61 73 65 20 70 6f 69 6e 74 65 72 .field,.returns.the.base.pointer
23d60 20 6f 66 20 61 20 73 74 72 75 63 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c .of.a.struct........</p>.......<
23d80 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 66 72 61 6d 65 41 64 64 72 65 73 73 22 3e 40 66 72 h3.id="builtin-frameAddress">@fr
23da0 61 6d 65 41 64 64 72 65 73 73 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 ameAddress</h3>.......<pre><code
23dc0 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 66 72 61 6d 65 41 64 64 72 65 73 73 28 29 3c 2f 63 6f .class="zig">@frameAddress()</co
23de0 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 de></pre>.......<p>.......This.f
23e00 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 62 61 73 65 20 70 6f 69 6e 74 65 72 unction.returns.the.base.pointer
23e20 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 61 63 6b 20 66 72 61 6d 65 2e 0a 20 20 20 .of.the.current.stack.frame.....
23e40 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 69 6d 70 6c ...</p>.......<p>.......The.impl
23e60 69 63 61 74 69 6f 6e 73 20 6f 66 20 74 68 69 73 20 61 72 65 20 74 61 72 67 65 74 20 73 70 65 63 ications.of.this.are.target.spec
23e80 69 66 69 63 20 61 6e 64 20 6e 6f 74 20 63 6f 6e 73 69 73 74 65 6e 74 20 61 63 72 6f 73 73 20 61 ific.and.not.consistent.across.a
23ea0 6c 6c 0a 20 20 20 20 20 20 70 6c 61 74 66 6f 72 6d 73 2e 20 54 68 65 20 66 72 61 6d 65 20 61 64 ll.......platforms..The.frame.ad
23ec0 64 72 65 73 73 20 6d 61 79 20 6e 6f 74 20 62 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 72 65 dress.may.not.be.available.in.re
23ee0 6c 65 61 73 65 20 6d 6f 64 65 20 64 75 65 20 74 6f 0a 20 20 20 20 20 20 61 67 67 72 65 73 73 69 lease.mode.due.to.......aggressi
23f00 76 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 ve.optimizations........</p>....
23f20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6f 6e ...<p>.......This.function.is.on
23f40 6c 79 20 76 61 6c 69 64 20 77 69 74 68 69 6e 20 66 75 6e 63 74 69 6f 6e 20 73 63 6f 70 65 2e 0a ly.valid.within.function.scope..
23f60 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e ......</p>.......<h3.id="builtin
23f80 2d 69 6d 70 6f 72 74 22 3e 40 69 6d 70 6f 72 74 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 -import">@import</h3>.......<pre
23fa0 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 69 6d 70 6f 72 74 28 63 6f 6d 70 74 ><code.class="zig">@import(compt
23fc0 69 6d 65 20 70 61 74 68 3a 20 5b 5d 75 38 29 20 2d 26 67 74 3b 20 28 6e 61 6d 65 73 70 61 63 65 ime.path:.[]u8).-&gt;.(namespace
23fe0 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 )</code></pre>.......<p>.......T
24000 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 66 69 6e 64 73 20 61 20 7a 69 67 20 66 69 6c 65 20 63 6f his.function.finds.a.zig.file.co
24020 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 6f 20 3c 63 6f 64 65 3e 70 61 74 68 3c 2f 63 6f 64 65 3e rresponding.to.<code>path</code>
24040 20 61 6e 64 20 69 6d 70 6f 72 74 73 20 61 6c 6c 20 74 68 65 0a 20 20 20 20 20 20 70 75 62 6c 69 .and.imports.all.the.......publi
24060 63 20 74 6f 70 20 6c 65 76 65 6c 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 69 6e 74 6f 20 74 68 c.top.level.declarations.into.th
24080 65 20 72 65 73 75 6c 74 69 6e 67 20 6e 61 6d 65 73 70 61 63 65 2e 0a 20 20 20 20 20 20 3c 2f 70 e.resulting.namespace........</p
240a0 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 70 61 74 68 3c 2f 63 6f >.......<p>.......<code>path</co
240c0 64 65 3e 20 63 61 6e 20 62 65 20 61 20 72 65 6c 61 74 69 76 65 20 6f 72 20 61 62 73 6f 6c 75 74 de>.can.be.a.relative.or.absolut
240e0 65 20 70 61 74 68 2c 20 6f 72 20 69 74 20 63 61 6e 20 62 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 e.path,.or.it.can.be.the.name.of
24100 20 61 20 70 61 63 6b 61 67 65 2e 0a 20 20 20 20 20 20 49 66 20 69 74 20 69 73 20 61 20 72 65 6c .a.package........If.it.is.a.rel
24120 61 74 69 76 65 20 70 61 74 68 2c 20 69 74 20 69 73 20 72 65 6c 61 74 69 76 65 20 74 6f 20 74 68 ative.path,.it.is.relative.to.th
24140 65 20 66 69 6c 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 3c 63 6f 64 65 3e 40 e.file.that.contains.the.<code>@
24160 69 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 0a 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c import</code>.......function.cal
24180 6c 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 l........</p>.......<p>.......Th
241a0 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 63 6b 61 67 65 73 20 61 72 65 20 61 6c 77 61 79 73 20 e.following.packages.are.always.
241c0 61 76 61 69 6c 61 62 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e available:.......</p>.......<ul>
241e0 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 .........<li><code>@import("std"
24200 29 3c 2f 63 6f 64 65 3e 20 2d 20 5a 69 67 20 53 74 61 6e 64 61 72 64 20 4c 69 62 72 61 72 79 3c )</code>.-.Zig.Standard.Library<
24220 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 /li>.........<li><code>@import("
24240 62 75 69 6c 74 69 6e 22 29 3c 2f 63 6f 64 65 3e 20 2d 20 43 6f 6d 70 69 6c 65 72 2d 70 72 6f 76 builtin")</code>.-.Compiler-prov
24260 69 64 65 64 20 74 79 70 65 73 20 61 6e 64 20 76 61 72 69 61 62 6c 65 73 3c 2f 6c 69 3e 0a 20 20 ided.types.and.variables</li>...
24280 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e ....</ul>.......<p>See.also:</p>
242a0 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d .......<ul>.........<li><a.href=
242c0 22 23 63 6f 6d 70 69 6c 65 2d 76 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 20 56 61 72 "#compile-variables">Compile.Var
242e0 69 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 iables</a></li>.........<li><a.h
24300 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 65 6d 62 65 64 46 69 6c 65 22 3e 40 65 6d 62 65 64 46 ref="#builtin-embedFile">@embedF
24320 69 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c ile</a></li>.......</ul>.......<
24340 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 69 6e 6c 69 6e 65 43 61 6c 6c 22 3e 40 69 6e 6c 69 h3.id="builtin-inlineCall">@inli
24360 6e 65 43 61 6c 6c 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 neCall</h3>.......<pre><code.cla
24380 73 73 3d 22 7a 69 67 22 3e 40 69 6e 6c 69 6e 65 43 61 6c 6c 28 66 75 6e 63 74 69 6f 6e 3a 20 58 ss="zig">@inlineCall(function:.X
243a0 2c 20 61 72 67 73 3a 20 2e 2e 2e 29 20 2d 26 67 74 3b 20 59 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 ,.args:....).-&gt;.Y</code></pre
243c0 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 63 61 6c 6c 73 20 61 20 66 >.......<p>.......This.calls.a.f
243e0 75 6e 63 74 69 6f 6e 2c 20 69 6e 20 74 68 65 20 73 61 6d 65 20 77 61 79 20 74 68 61 74 20 69 6e unction,.in.the.same.way.that.in
24400 76 6f 6b 69 6e 67 20 61 6e 20 65 78 70 72 65 73 73 69 6f 6e 20 77 69 74 68 20 70 61 72 65 6e 74 voking.an.expression.with.parent
24420 68 65 73 65 73 20 64 6f 65 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 heses.does:.......</p>.......<pr
24440 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 72 74 e><code.class="zig">const.assert
24460 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 3b 0a .=.@import("std").debug.assert;.
24480 74 65 73 74 20 22 69 6e 6c 69 6e 65 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 22 20 7b 0a 20 20 test."inline.function.call".{...
244a0 20 20 61 73 73 65 72 74 28 40 69 6e 6c 69 6e 65 43 61 6c 6c 28 61 64 64 2c 20 33 2c 20 39 29 20 ..assert(@inlineCall(add,.3,.9).
244c0 3d 3d 20 31 32 29 3b 0a 7d 0a 0a 66 6e 20 61 64 64 28 61 3a 20 69 33 32 2c 20 62 3a 20 69 33 32 ==.12);.}..fn.add(a:.i32,.b:.i32
244e0 29 20 2d 26 67 74 3b 20 69 33 32 20 7b 20 61 20 2b 20 62 20 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 ).-&gt;.i32.{.a.+.b.}</code></pr
24500 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 55 6e 6c 69 6b 65 20 61 20 6e 6f 72 6d e>.......<p>.......Unlike.a.norm
24520 61 6c 20 66 75 6e 63 74 69 6f 6e 20 63 61 6c 6c 2c 20 68 6f 77 65 76 65 72 2c 20 3c 63 6f 64 65 al.function.call,.however,.<code
24540 3e 40 69 6e 6c 69 6e 65 43 61 6c 6c 3c 2f 63 6f 64 65 3e 20 67 75 61 72 61 6e 74 65 65 73 20 74 >@inlineCall</code>.guarantees.t
24560 68 61 74 20 74 68 65 20 63 61 6c 6c 0a 20 20 20 20 20 20 77 69 6c 6c 20 62 65 20 69 6e 6c 69 6e hat.the.call.......will.be.inlin
24580 65 64 2e 20 49 66 20 74 68 65 20 63 61 6c 6c 20 63 61 6e 6e 6f 74 20 62 65 20 69 6e 6c 69 6e 65 ed..If.the.call.cannot.be.inline
245a0 64 2c 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 6f 72 20 69 73 20 65 6d 69 74 74 65 64 2e 0a 20 d,.a.compile.error.is.emitted...
245c0 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d .....</p>.......<h3.id="builtin-
245e0 69 6e 74 54 6f 50 74 72 22 3e 40 69 6e 74 54 6f 50 74 72 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c intToPtr">@intToPtr</h3>.......<
24600 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 69 6e 74 54 6f 50 74 72 28 pre><code.class="zig">@intToPtr(
24620 63 6f 6d 70 74 69 6d 65 20 44 65 73 74 54 79 70 65 3a 20 74 79 70 65 2c 20 69 6e 74 3a 20 75 73 comptime.DestType:.type,.int:.us
24640 69 7a 65 29 20 2d 26 67 74 3b 20 44 65 73 74 54 79 70 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e ize).-&gt;.DestType</code></pre>
24660 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 6f 6e 76 65 72 74 73 20 61 6e 20 69 6e 74 .......<p>.......Converts.an.int
24680 65 67 65 72 20 74 6f 20 61 20 70 6f 69 6e 74 65 72 2e 20 54 6f 20 63 6f 6e 76 65 72 74 20 74 68 eger.to.a.pointer..To.convert.th
246a0 65 20 6f 74 68 65 72 20 77 61 79 2c 20 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 e.other.way,.use.<a.href="#built
246c0 69 6e 2d 70 74 72 54 6f 49 6e 74 22 3e 40 70 74 72 54 6f 49 6e 74 3c 2f 61 3e 2e 0a 20 20 20 20 in-ptrToInt">@ptrToInt</a>......
246e0 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 49 6e 74 ..</p>.......<h3.id="builtin-Int
24700 54 79 70 65 22 3e 40 49 6e 74 54 79 70 65 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c Type">@IntType</h3>.......<pre><
24720 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 49 6e 74 54 79 70 65 28 63 6f 6d 70 74 69 code.class="zig">@IntType(compti
24740 6d 65 20 69 73 5f 73 69 67 6e 65 64 3a 20 62 6f 6f 6c 2c 20 63 6f 6d 70 74 69 6d 65 20 62 69 74 me.is_signed:.bool,.comptime.bit
24760 5f 63 6f 75 6e 74 3a 20 75 38 29 20 2d 26 67 74 3b 20 74 79 70 65 3c 2f 63 6f 64 65 3e 3c 2f 70 _count:.u8).-&gt;.type</code></p
24780 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f re>.......<p>.......This.functio
247a0 6e 20 72 65 74 75 72 6e 73 20 61 6e 20 69 6e 74 65 67 65 72 20 74 79 70 65 20 77 69 74 68 20 74 n.returns.an.integer.type.with.t
247c0 68 65 20 67 69 76 65 6e 20 73 69 67 6e 6e 65 73 73 20 61 6e 64 20 62 69 74 20 63 6f 75 6e 74 2e he.given.signness.and.bit.count.
247e0 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 .......</p>.......<h3.id="builti
24800 6e 2d 6d 61 78 56 61 6c 75 65 22 3e 40 6d 61 78 56 61 6c 75 65 3c 2f 68 33 3e 0a 20 20 20 20 20 n-maxValue">@maxValue</h3>......
24820 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 6d 61 78 56 61 6c 75 .<pre><code.class="zig">@maxValu
24840 65 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 29 20 2d 26 67 74 3b 20 28 6e 75 6d 62 65 e(comptime.T:.type).-&gt;.(numbe
24860 72 20 6c 69 74 65 72 61 6c 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 r.literal)</code></pre>.......<p
24880 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 >.......This.function.returns.th
248a0 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 69 6e 74 65 67 65 72 20 74 e.maximum.value.of.the.integer.t
248c0 79 70 65 20 3c 63 6f 64 65 3e 54 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 ype.<code>T</code>........</p>..
248e0 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 63 .....<p>.......The.result.is.a.c
24900 6f 6d 70 69 6c 65 20 74 69 6d 65 20 63 6f 6e 73 74 61 6e 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e ompile.time.constant........</p>
24920 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 6d 65 6d 62 65 72 43 6f 75 .......<h3.id="builtin-memberCou
24940 6e 74 22 3e 40 6d 65 6d 62 65 72 43 6f 75 6e 74 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 nt">@memberCount</h3>.......<pre
24960 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 6d 65 6d 62 65 72 43 6f 75 6e 74 28 ><code.class="zig">@memberCount(
24980 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 29 20 2d 26 67 74 3b 20 28 6e 75 6d 62 65 72 20 comptime.T:.type).-&gt;.(number.
249a0 6c 69 74 65 72 61 6c 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a literal)</code></pre>.......<p>.
249c0 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 ......This.function.returns.the.
249e0 6e 75 6d 62 65 72 20 6f 66 20 65 6e 75 6d 20 76 61 6c 75 65 73 20 69 6e 20 61 6e 20 65 6e 75 6d number.of.enum.values.in.an.enum
24a00 20 74 79 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 .type........</p>.......<p>.....
24a20 20 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 20 61 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 63 ..The.result.is.a.compile.time.c
24a40 6f 6e 73 74 61 6e 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 onstant........</p>.......<h3.id
24a60 3d 22 62 75 69 6c 74 69 6e 2d 6d 65 6d 63 70 79 22 3e 40 6d 65 6d 63 70 79 3c 2f 68 33 3e 0a 20 ="builtin-memcpy">@memcpy</h3>..
24a80 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 6d 65 6d .....<pre><code.class="zig">@mem
24aa0 63 70 79 28 6e 6f 61 6c 69 61 73 20 64 65 73 74 3a 20 26 61 6d 70 3b 75 38 2c 20 6e 6f 61 6c 69 cpy(noalias.dest:.&amp;u8,.noali
24ac0 61 73 20 73 6f 75 72 63 65 3a 20 26 61 6d 70 3b 63 6f 6e 73 74 20 75 38 2c 20 62 79 74 65 5f 63 as.source:.&amp;const.u8,.byte_c
24ae0 6f 75 6e 74 3a 20 75 73 69 7a 65 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 ount:.usize)</code></pre>.......
24b00 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 63 6f 70 69 65 73 20 62 <p>.......This.function.copies.b
24b20 79 74 65 73 20 66 72 6f 6d 20 6f 6e 65 20 72 65 67 69 6f 6e 20 6f 66 20 6d 65 6d 6f 72 79 20 74 ytes.from.one.region.of.memory.t
24b40 6f 20 61 6e 6f 74 68 65 72 2e 20 3c 63 6f 64 65 3e 64 65 73 74 3c 2f 63 6f 64 65 3e 20 61 6e 64 o.another..<code>dest</code>.and
24b60 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 73 6f 75 72 63 65 3c 2f 63 6f 64 65 3e 20 61 72 65 20 62 .......<code>source</code>.are.b
24b80 6f 74 68 20 70 6f 69 6e 74 65 72 73 20 61 6e 64 20 6d 75 73 74 20 6e 6f 74 20 6f 76 65 72 6c 61 oth.pointers.and.must.not.overla
24ba0 70 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 p........</p>.......<p>.......Th
24bc0 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 6c 6f 77 20 6c 65 76 65 6c 20 69 6e 74 72 69 is.function.is.a.low.level.intri
24be0 6e 73 69 63 20 77 69 74 68 20 6e 6f 20 73 61 66 65 74 79 20 6d 65 63 68 61 6e 69 73 6d 73 2e 20 nsic.with.no.safety.mechanisms..
24c00 4d 6f 73 74 20 63 6f 64 65 0a 20 20 20 20 20 20 73 68 6f 75 6c 64 20 6e 6f 74 20 75 73 65 20 74 Most.code.......should.not.use.t
24c20 68 69 73 20 66 75 6e 63 74 69 6f 6e 2c 20 69 6e 73 74 65 61 64 20 75 73 69 6e 67 20 73 6f 6d 65 his.function,.instead.using.some
24c40 74 68 69 6e 67 20 6c 69 6b 65 20 74 68 69 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 thing.like.this:.......</p>.....
24c60 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6f 72 20 28 73 6f ..<pre><code.class="zig">for.(so
24c80 75 72 63 65 5b 30 2e 2e 2e 62 79 74 65 5f 63 6f 75 6e 74 5d 29 20 7c 62 2c 20 69 7c 20 64 65 73 urce[0...byte_count]).|b,.i|.des
24ca0 74 5b 69 5d 20 3d 20 62 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e t[i].=.b;</code></pre>.......<p>
24cc0 0a 20 20 20 20 20 20 54 68 65 20 6f 70 74 69 6d 69 7a 65 72 20 69 73 20 69 6e 74 65 6c 6c 69 67 .......The.optimizer.is.intellig
24ce0 65 6e 74 20 65 6e 6f 75 67 68 20 74 6f 20 74 75 72 6e 20 74 68 65 20 61 62 6f 76 65 20 73 6e 69 ent.enough.to.turn.the.above.sni
24d00 70 70 65 74 20 69 6e 74 6f 20 61 20 6d 65 6d 63 70 79 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 ppet.into.a.memcpy........</p>..
24d20 20 20 20 20 20 3c 70 3e 54 68 65 72 65 20 69 73 20 61 6c 73 6f 20 61 20 73 74 61 6e 64 61 72 64 .....<p>There.is.also.a.standard
24d40 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 74 68 69 73 3a 3c 2f 70 3e 0a .library.function.for.this:</p>.
24d60 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e ......<pre><code.class="zig">con
24d80 73 74 20 6d 65 6d 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 65 6d 3b 0a 6d 65 6d st.mem.=.@import("std").mem;.mem
24da0 2e 63 6f 70 79 28 75 38 2c 20 64 65 73 74 5b 30 2e 2e 2e 62 79 74 65 5f 63 6f 75 6e 74 5d 2c 20 .copy(u8,.dest[0...byte_count],.
24dc0 73 6f 75 72 63 65 5b 30 2e 2e 2e 62 79 74 65 5f 63 6f 75 6e 74 5d 29 3b 3c 2f 63 6f 64 65 3e 3c source[0...byte_count]);</code><
24de0 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 6d 65 6d 73 /pre>.......<h3.id="builtin-mems
24e00 65 74 22 3e 40 6d 65 6d 73 65 74 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 et">@memset</h3>.......<pre><cod
24e20 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 6d 65 6d 73 65 74 28 64 65 73 74 3a 20 26 61 6d 70 e.class="zig">@memset(dest:.&amp
24e40 3b 75 38 2c 20 63 3a 20 75 38 2c 20 62 79 74 65 5f 63 6f 75 6e 74 3a 20 75 73 69 7a 65 29 3c 2f ;u8,.c:.u8,.byte_count:.usize)</
24e60 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 code></pre>.......<p>.......This
24e80 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 73 20 61 20 72 65 67 69 6f 6e 20 6f 66 20 6d 65 6d 6f 72 .function.sets.a.region.of.memor
24ea0 79 20 74 6f 20 3c 63 6f 64 65 3e 63 3c 2f 63 6f 64 65 3e 2e 20 3c 63 6f 64 65 3e 64 65 73 74 3c y.to.<code>c</code>..<code>dest<
24ec0 2f 63 6f 64 65 3e 20 69 73 20 61 20 70 6f 69 6e 74 65 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a /code>.is.a.pointer........</p>.
24ee0 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 ......<p>.......This.function.is
24f00 20 61 20 6c 6f 77 20 6c 65 76 65 6c 20 69 6e 74 72 69 6e 73 69 63 20 77 69 74 68 20 6e 6f 20 73 .a.low.level.intrinsic.with.no.s
24f20 61 66 65 74 79 20 6d 65 63 68 61 6e 69 73 6d 73 2e 20 4d 6f 73 74 0a 20 20 20 20 20 20 63 6f 64 afety.mechanisms..Most.......cod
24f40 65 20 73 68 6f 75 6c 64 20 6e 6f 74 20 75 73 65 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 2c 20 e.should.not.use.this.function,.
24f60 69 6e 73 74 65 61 64 20 75 73 69 6e 67 20 73 6f 6d 65 74 68 69 6e 67 20 6c 69 6b 65 20 74 68 69 instead.using.something.like.thi
24f80 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 s:.......</p>.......<pre><code.c
24fa0 6c 61 73 73 3d 22 7a 69 67 22 3e 66 6f 72 20 28 64 65 73 74 5b 30 2e 2e 2e 62 79 74 65 5f 63 6f lass="zig">for.(dest[0...byte_co
24fc0 75 6e 74 5d 29 20 7c 2a 62 7c 20 2a 62 20 3d 20 63 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a unt]).|*b|.*b.=.c;</code></pre>.
24fe0 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 6f 70 74 69 6d 69 7a 65 72 20 69 73 ......<p>.......The.optimizer.is
25000 20 69 6e 74 65 6c 6c 69 67 65 6e 74 20 65 6e 6f 75 67 68 20 74 6f 20 74 75 72 6e 20 74 68 65 20 .intelligent.enough.to.turn.the.
25020 61 62 6f 76 65 20 73 6e 69 70 70 65 74 20 69 6e 74 6f 20 61 20 6d 65 6d 73 65 74 2e 0a 20 20 20 above.snippet.into.a.memset.....
25040 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 68 65 72 65 20 69 73 20 61 6c 73 6f 20 61 ...</p>.......<p>There.is.also.a
25060 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 74 .standard.library.function.for.t
25080 68 69 73 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 3e 63 6f 6e 73 74 20 his:</p>.......<pre><code>const.
250a0 6d 65 6d 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 65 6d 3b 0a 6d 65 6d 2e 73 65 mem.=.@import("std").mem;.mem.se
250c0 74 28 75 38 2c 20 64 65 73 74 2c 20 63 29 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 t(u8,.dest,.c);</code></pre>....
250e0 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 6d 69 6e 56 61 6c 75 65 22 3e 40 6d 69 ...<h3.id="builtin-minValue">@mi
25100 6e 56 61 6c 75 65 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 nValue</h3>.......<pre><code.cla
25120 73 73 3d 22 7a 69 67 22 3e 40 6d 69 6e 56 61 6c 75 65 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 ss="zig">@minValue(comptime.T:.t
25140 79 70 65 29 20 2d 26 67 74 3b 20 28 6e 75 6d 62 65 72 20 6c 69 74 65 72 61 6c 29 3c 2f 63 6f 64 ype).-&gt;.(number.literal)</cod
25160 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 e></pre>.......<p>.......This.fu
25180 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 6d 69 6e 69 6d 75 6d 20 76 61 6c 75 65 nction.returns.the.minimum.value
251a0 20 6f 66 20 74 68 65 20 69 6e 74 65 67 65 72 20 74 79 70 65 20 54 2e 0a 20 20 20 20 20 20 3c 2f .of.the.integer.type.T........</
251c0 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 72 65 73 75 6c 74 20 69 73 p>.......<p>.......The.result.is
251e0 20 61 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 20 63 6f 6e 73 74 61 6e 74 2e 0a 20 20 20 20 20 20 .a.compile.time.constant........
25200 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 6d 6f 64 22 3e </p>.......<h3.id="builtin-mod">
25220 40 6d 6f 64 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 @mod</h3>.......<pre><code.class
25240 3d 22 7a 69 67 22 3e 40 6d 6f 64 28 6e 75 6d 65 72 61 74 6f 72 3a 20 54 2c 20 64 65 6e 6f 6d 69 ="zig">@mod(numerator:.T,.denomi
25260 6e 61 74 6f 72 3a 20 54 29 20 2d 26 67 74 3b 20 54 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 nator:.T).-&gt;.T</code></pre>..
25280 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 4d 6f 64 75 6c 75 73 20 64 69 76 69 73 69 6f 6e 2e .....<p>.......Modulus.division.
252a0 20 46 6f 72 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 73 20 74 68 69 73 20 69 73 20 74 .For.unsigned.integers.this.is.t
252c0 68 65 20 73 61 6d 65 20 61 73 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 6e 75 6d 65 72 61 74 6f 72 he.same.as.......<code>numerator
252e0 20 25 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 3c 2f 63 6f 64 65 3e 2e 20 43 61 6c 6c 65 72 20 67 75 .%.denominator</code>..Caller.gu
25300 61 72 61 6e 74 65 65 73 20 3c 63 6f 64 65 3e 64 65 6e 6f 6d 69 6e 61 74 6f 72 20 26 67 74 3b 20 arantees.<code>denominator.&gt;.
25320 30 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 0</code>........</p>.......<ul>.
25340 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 6d 6f 64 28 2d 35 2c 20 33 29 20 3d 3d ........<li><code>@mod(-5,.3).==
25360 20 31 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 .1</code></li>.........<li><code
25380 3e 40 64 69 76 46 6c 6f 6f 72 28 61 2c 20 62 29 20 2b 20 40 6d 6f 64 28 61 2c 20 62 29 20 3d 3d >@divFloor(a,.b).+.@mod(a,.b).==
253a0 20 61 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 .a</code></li>.......</ul>......
253c0 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 .<p>See.also:</p>.......<ul>....
253e0 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 72 65 6d 22 3e .....<li><a.href="#builtin-rem">
25400 40 72 65 6d 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e @rem</a></li>.........<li><code>
25420 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 2e 6d 6f 64 3c 2f 63 6f 64 65 3e 3c 2f @import("std").math.mod</code></
25440 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 li>.......</ul>.......<h3.id="bu
25460 69 6c 74 69 6e 2d 6d 75 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 3e 40 6d 75 6c 57 69 74 68 4f iltin-mulWithOverflow">@mulWithO
25480 76 65 72 66 6c 6f 77 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c verflow</h3>.......<pre><code.cl
254a0 61 73 73 3d 22 7a 69 67 22 3e 40 6d 75 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 28 63 6f 6d 70 74 ass="zig">@mulWithOverflow(compt
254c0 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 61 3a 20 54 2c 20 62 3a 20 54 2c 20 72 65 73 75 6c 74 3a ime.T:.type,.a:.T,.b:.T,.result:
254e0 20 26 61 6d 70 3b 54 29 20 2d 26 67 74 3b 20 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e .&amp;T).-&gt;.bool</code></pre>
25500 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 50 65 72 66 6f 72 6d 73 20 3c 63 6f 64 65 3e .......<p>.......Performs.<code>
25520 2a 72 65 73 75 6c 74 20 3d 20 61 20 2a 20 62 3c 2f 63 6f 64 65 3e 2e 20 49 66 20 6f 76 65 72 66 *result.=.a.*.b</code>..If.overf
25540 6c 6f 77 20 6f 72 20 75 6e 64 65 72 66 6c 6f 77 20 6f 63 63 75 72 73 2c 0a 20 20 20 20 20 20 73 low.or.underflow.occurs,.......s
25560 74 6f 72 65 73 20 74 68 65 20 6f 76 65 72 66 6c 6f 77 65 64 20 62 69 74 73 20 69 6e 20 3c 63 6f tores.the.overflowed.bits.in.<co
25580 64 65 3e 72 65 73 75 6c 74 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 72 65 74 75 72 6e 73 20 3c 63 6f de>result</code>.and.returns.<co
255a0 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 49 66 20 6e 6f 20 6f 76 65 72 de>true</code>........If.no.over
255c0 66 6c 6f 77 20 6f 72 20 75 6e 64 65 72 66 6c 6f 77 20 6f 63 63 75 72 73 2c 20 72 65 74 75 72 6e flow.or.underflow.occurs,.return
255e0 73 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e s.<code>false</code>........</p>
25600 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 6f 66 66 73 65 74 4f 66 22 .......<h3.id="builtin-offsetOf"
25620 3e 40 6f 66 66 73 65 74 4f 66 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 >@offsetOf</h3>.......<pre><code
25640 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 6f 66 66 73 65 74 4f 66 28 63 6f 6d 70 74 69 6d 65 20 .class="zig">@offsetOf(comptime.
25660 54 3a 20 74 79 70 65 2c 20 63 6f 6d 70 74 69 6d 65 20 66 69 65 6c 64 5f 6e 61 6d 65 3a 20 5b 5d T:.type,.comptime.field_name:.[]
25680 20 63 6f 6e 73 74 20 75 38 29 20 2d 26 67 74 3b 20 28 6e 75 6d 62 65 72 20 6c 69 74 65 72 61 6c .const.u8).-&gt;.(number.literal
256a0 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 )</code></pre>.......<p>.......T
256c0 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 62 79 74 65 20 6f 66 his.function.returns.the.byte.of
256e0 66 73 65 74 20 6f 66 20 61 20 66 69 65 6c 64 20 72 65 6c 61 74 69 76 65 20 74 6f 20 69 74 73 20 fset.of.a.field.relative.to.its.
25700 63 6f 6e 74 61 69 6e 69 6e 67 20 73 74 72 75 63 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 containing.struct........</p>...
25720 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 4f 70 61 71 75 65 54 79 70 65 22 3e ....<h3.id="builtin-OpaqueType">
25740 40 4f 70 61 71 75 65 54 79 70 65 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 @OpaqueType</h3>.......<pre><cod
25760 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 4f 70 61 71 75 65 54 79 70 65 28 29 20 2d 26 67 74 e.class="zig">@OpaqueType().-&gt
25780 3b 20 74 79 70 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 ;.type</code></pre>.......<p>...
257a0 20 20 20 20 43 72 65 61 74 65 73 20 61 20 6e 65 77 20 74 79 70 65 20 77 69 74 68 20 61 6e 20 75 ....Creates.a.new.type.with.an.u
257c0 6e 6b 6e 6f 77 6e 20 73 69 7a 65 20 61 6e 64 20 61 6c 69 67 6e 6d 65 6e 74 2e 0a 20 20 20 20 20 nknown.size.and.alignment.......
257e0 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 69 73 20 74 79 .</p>.......<p>.......This.is.ty
25800 70 69 63 61 6c 6c 79 20 75 73 65 64 20 66 6f 72 20 74 79 70 65 20 73 61 66 65 74 79 20 77 68 65 pically.used.for.type.safety.whe
25820 6e 20 69 6e 74 65 72 61 63 74 69 6e 67 20 77 69 74 68 20 43 20 63 6f 64 65 20 74 68 61 74 20 64 n.interacting.with.C.code.that.d
25840 6f 65 73 20 6e 6f 74 20 65 78 70 6f 73 65 20 73 74 72 75 63 74 20 64 65 74 61 69 6c 73 2e 0a 20 oes.not.expose.struct.details...
25860 20 20 20 20 20 45 78 61 6d 70 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c .....Example:.......</p>.......<
25880 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 44 65 72 70 pre><code.class="zig">const.Derp
258a0 20 3d 20 40 4f 70 61 71 75 65 54 79 70 65 28 29 3b 0a 63 6f 6e 73 74 20 57 61 74 20 3d 20 40 4f .=.@OpaqueType();.const.Wat.=.@O
258c0 70 61 71 75 65 54 79 70 65 28 29 3b 0a 0a 65 78 74 65 72 6e 20 66 6e 20 62 61 72 28 64 3a 20 26 paqueType();..extern.fn.bar(d:.&
258e0 61 6d 70 3b 44 65 72 70 29 3b 0a 65 78 70 6f 72 74 20 66 6e 20 66 6f 6f 28 77 3a 20 26 61 6d 70 amp;Derp);.export.fn.foo(w:.&amp
25900 3b 57 61 74 29 20 7b 0a 20 20 20 20 62 61 72 28 77 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 ;Wat).{.....bar(w);.}</code></pr
25920 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 e>.......<pre><code.class="sh">$
25940 20 2e 2f 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 2e 7a 69 67 0a 74 65 73 74 2e 7a ../zig.build-obj.test.zig.test.z
25960 69 67 3a 35 3a 39 3a 20 65 72 72 6f 72 3a 20 65 78 70 65 63 74 65 64 20 74 79 70 65 20 27 26 61 ig:5:9:.error:.expected.type.'&a
25980 6d 70 3b 44 65 72 70 27 2c 20 66 6f 75 6e 64 20 27 26 61 6d 70 3b 57 61 74 27 0a 20 20 20 20 62 mp;Derp',.found.'&amp;Wat'.....b
259a0 61 72 28 77 29 3b 0a 20 20 20 20 20 20 20 20 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 ar(w);.........^</code></pre>...
259c0 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 70 61 6e 69 63 22 3e 40 70 61 6e 69 ....<h3.id="builtin-panic">@pani
259e0 63 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a c</h3>.......<pre><code.class="z
25a00 69 67 22 3e 40 70 61 6e 69 63 28 6d 65 73 73 61 67 65 3a 20 5b 5d 63 6f 6e 73 74 20 75 38 29 20 ig">@panic(message:.[]const.u8).
25a20 2d 26 67 74 3b 20 6e 6f 72 65 74 75 72 6e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 -&gt;.noreturn</code></pre>.....
25a40 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 6e 76 6f 6b 65 73 20 74 68 65 20 70 61 6e 69 63 20 68 61 ..<p>.......Invokes.the.panic.ha
25a60 6e 64 6c 65 72 20 66 75 6e 63 74 69 6f 6e 2e 20 42 79 20 64 65 66 61 75 6c 74 20 74 68 65 20 70 ndler.function..By.default.the.p
25a80 61 6e 69 63 20 68 61 6e 64 6c 65 72 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 63 61 6c 6c anic.handler.function.......call
25aa0 73 20 74 68 65 20 70 75 62 6c 69 63 20 3c 63 6f 64 65 3e 70 61 6e 69 63 3c 2f 63 6f 64 65 3e 20 s.the.public.<code>panic</code>.
25ac0 66 75 6e 63 74 69 6f 6e 20 65 78 70 6f 73 65 64 20 69 6e 20 74 68 65 20 72 6f 6f 74 20 73 6f 75 function.exposed.in.the.root.sou
25ae0 72 63 65 20 66 69 6c 65 2c 20 6f 72 0a 20 20 20 20 20 20 69 66 20 74 68 65 72 65 20 69 73 20 6e rce.file,.or.......if.there.is.n
25b00 6f 74 20 6f 6e 65 20 73 70 65 63 69 66 69 65 64 2c 20 69 6e 76 6f 6b 65 73 20 74 68 65 20 6f 6e ot.one.specified,.invokes.the.on
25b20 65 20 70 72 6f 76 69 64 65 64 20 69 6e 20 3c 63 6f 64 65 3e 73 74 64 2f 73 70 65 63 69 61 6c 2f e.provided.in.<code>std/special/
25b40 70 61 6e 69 63 2e 7a 69 67 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 panic.zig</code>........</p>....
25b60 20 20 20 3c 70 3e 47 65 6e 65 72 61 6c 6c 79 20 69 74 20 69 73 20 62 65 74 74 65 72 20 74 6f 20 ...<p>Generally.it.is.better.to.
25b80 75 73 65 20 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 70 use.<code>@import("std").debug.p
25ba0 61 6e 69 63 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 48 6f 77 65 76 65 72 2c 20 3c 63 6f 64 anic</code>........However,.<cod
25bc0 65 3e 40 70 61 6e 69 63 3c 2f 63 6f 64 65 3e 20 63 61 6e 20 62 65 20 75 73 65 66 75 6c 20 66 6f e>@panic</code>.can.be.useful.fo
25be0 72 20 32 20 73 63 65 6e 61 72 69 6f 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 r.2.scenarios:.......</p>.......
25c00 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 46 72 6f 6d 20 6c 69 62 72 61 72 79 20 63 6f <ul>.........<li>From.library.co
25c20 64 65 2c 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 70 72 6f 67 72 61 6d 6d 65 72 27 73 20 70 61 6e de,.calling.the.programmer's.pan
25c40 69 63 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 74 68 65 79 20 65 78 70 6f 73 65 64 20 6f 6e 65 20 ic.function.if.they.exposed.one.
25c60 69 6e 20 74 68 65 20 72 6f 6f 74 20 73 6f 75 72 63 65 20 66 69 6c 65 2e 3c 2f 6c 69 3e 0a 20 20 in.the.root.source.file.</li>...
25c80 20 20 20 20 20 20 3c 6c 69 3e 57 68 65 6e 20 6d 69 78 69 6e 67 20 43 20 61 6e 64 20 5a 69 67 20 ......<li>When.mixing.C.and.Zig.
25ca0 63 6f 64 65 2c 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 63 61 6e 6f 6e 69 63 61 6c 20 70 61 6e 69 code,.calling.the.canonical.pani
25cc0 63 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 61 63 72 6f 73 73 20 6d 75 6c 74 69 70 6c 65 c.implementation.across.multiple
25ce0 20 2e 6f 20 66 69 6c 65 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 ..o.files.</li>.......</ul>.....
25d00 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 ..<p>See.also:</p>.......<ul>...
25d20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 72 6f 6f 74 2d 73 6f 75 72 63 65 2d ......<li><a.href="#root-source-
25d40 66 69 6c 65 22 3e 52 6f 6f 74 20 53 6f 75 72 63 65 20 46 69 6c 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a file">Root.Source.File</a></li>.
25d60 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 ......</ul>........<h3.id="built
25d80 69 6e 2d 70 74 72 43 61 73 74 22 3e 40 70 74 72 43 61 73 74 3c 2f 68 33 3e 0a 20 20 20 20 20 20 in-ptrCast">@ptrCast</h3>.......
25da0 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 70 74 72 43 61 73 74 28 <pre><code.class="zig">@ptrCast(
25dc0 63 6f 6d 70 74 69 6d 65 20 44 65 73 74 54 79 70 65 3a 20 74 79 70 65 2c 20 76 61 6c 75 65 3a 20 comptime.DestType:.type,.value:.
25de0 76 61 72 29 20 2d 26 67 74 3b 20 44 65 73 74 54 79 70 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e var).-&gt;.DestType</code></pre>
25e00 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 6f 6e 76 65 72 74 73 20 61 20 70 6f 69 6e .......<p>.......Converts.a.poin
25e20 74 65 72 20 6f 66 20 6f 6e 65 20 74 79 70 65 20 74 6f 20 61 20 70 6f 69 6e 74 65 72 20 6f 66 20 ter.of.one.type.to.a.pointer.of.
25e40 61 6e 6f 74 68 65 72 20 74 79 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c another.type........</p>.......<
25e60 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 70 74 72 54 6f 49 6e 74 22 3e 40 70 74 72 54 6f 49 h3.id="builtin-ptrToInt">@ptrToI
25e80 6e 74 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 nt</h3>.......<pre><code.class="
25ea0 7a 69 67 22 3e 40 70 74 72 54 6f 49 6e 74 28 76 61 6c 75 65 3a 20 76 61 72 29 20 2d 26 67 74 3b zig">@ptrToInt(value:.var).-&gt;
25ec0 20 75 73 69 7a 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 .usize</code></pre>.......<p>...
25ee0 20 20 20 20 43 6f 6e 76 65 72 74 73 20 3c 63 6f 64 65 3e 76 61 6c 75 65 3c 2f 63 6f 64 65 3e 20 ....Converts.<code>value</code>.
25f00 74 6f 20 61 20 3c 63 6f 64 65 3e 75 73 69 7a 65 3c 2f 63 6f 64 65 3e 20 77 68 69 63 68 20 69 73 to.a.<code>usize</code>.which.is
25f20 20 74 68 65 20 61 64 64 72 65 73 73 20 6f 66 20 74 68 65 20 70 6f 69 6e 74 65 72 2e 20 3c 63 6f .the.address.of.the.pointer..<co
25f40 64 65 3e 76 61 6c 75 65 3c 2f 63 6f 64 65 3e 20 63 61 6e 20 62 65 20 6f 6e 65 20 6f 66 20 74 68 de>value</code>.can.be.one.of.th
25f60 65 73 65 20 74 79 70 65 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e ese.types:.......</p>.......<ul>
25f80 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 26 61 6d 70 3b 54 3c 2f 63 6f 64 65 3e .........<li><code>&amp;T</code>
25fa0 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 3f 26 61 6d 70 3b 54 3c </li>.........<li><code>?&amp;T<
25fc0 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 66 6e /code></li>.........<li><code>fn
25fe0 28 29 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 ()</code></li>.........<li><code
26000 3e 3f 66 6e 28 29 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 >?fn()</code></li>.......</ul>..
26020 20 20 20 20 20 3c 70 3e 54 6f 20 63 6f 6e 76 65 72 74 20 74 68 65 20 6f 74 68 65 72 20 77 61 79 .....<p>To.convert.the.other.way
26040 2c 20 75 73 65 20 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 69 6e 74 54 6f 50 74 72 ,.use.<a.href="#builtin-intToPtr
26060 22 3e 40 69 6e 74 54 6f 50 74 72 3c 2f 61 3e 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 ">@intToPtr</a></p>........<h3.i
26080 64 3d 22 62 75 69 6c 74 69 6e 2d 72 65 6d 22 3e 40 72 65 6d 3c 2f 68 33 3e 0a 20 20 20 20 20 20 d="builtin-rem">@rem</h3>.......
260a0 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 72 65 6d 28 6e 75 6d 65 <pre><code.class="zig">@rem(nume
260c0 72 61 74 6f 72 3a 20 54 2c 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 3a 20 54 29 20 2d 26 67 74 3b 20 rator:.T,.denominator:.T).-&gt;.
260e0 54 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 52 T</code></pre>.......<p>.......R
26100 65 6d 61 69 6e 64 65 72 20 64 69 76 69 73 69 6f 6e 2e 20 46 6f 72 20 75 6e 73 69 67 6e 65 64 20 emainder.division..For.unsigned.
26120 69 6e 74 65 67 65 72 73 20 74 68 69 73 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 0a 20 20 20 integers.this.is.the.same.as....
26140 20 20 20 3c 63 6f 64 65 3e 6e 75 6d 65 72 61 74 6f 72 20 25 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 ...<code>numerator.%.denominator
26160 3c 2f 63 6f 64 65 3e 2e 20 43 61 6c 6c 65 72 20 67 75 61 72 61 6e 74 65 65 73 20 3c 63 6f 64 65 </code>..Caller.guarantees.<code
26180 3e 64 65 6e 6f 6d 69 6e 61 74 6f 72 20 26 67 74 3b 20 30 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 >denominator.&gt;.0</code>......
261a0 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 ..</p>.......<ul>.........<li><c
261c0 6f 64 65 3e 40 72 65 6d 28 2d 35 2c 20 33 29 20 3d 3d 20 2d 32 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 ode>@rem(-5,.3).==.-2</code></li
261e0 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 54 72 75 6e 63 28 61 2c >.........<li><code>@divTrunc(a,
26200 20 62 29 20 2b 20 40 72 65 6d 28 61 2c 20 62 29 20 3d 3d 20 61 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 .b).+.@rem(a,.b).==.a</code></li
26220 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a >.......</ul>.......<p>See.also:
26240 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 </p>.......<ul>.........<li><a.h
26260 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 6d 6f 64 22 3e 40 6d 6f 64 3c 2f 61 3e 3c 2f 6c 69 3e ref="#builtin-mod">@mod</a></li>
26280 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 .........<li><code>@import("std"
262a0 29 2e 6d 61 74 68 2e 72 65 6d 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 ).math.rem</code></li>.......</u
262c0 6c 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 72 65 74 75 72 6e 41 l>.......<h3.id="builtin-returnA
262e0 64 64 72 65 73 73 22 3e 40 72 65 74 75 72 6e 41 64 64 72 65 73 73 3c 2f 68 33 3e 0a 20 20 20 20 ddress">@returnAddress</h3>.....
26300 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 72 65 74 75 72 6e ..<pre><code.class="zig">@return
26320 41 64 64 72 65 73 73 28 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e Address()</code></pre>.......<p>
26340 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 61 20 70 .......This.function.returns.a.p
26360 6f 69 6e 74 65 72 20 74 6f 20 74 68 65 20 72 65 74 75 72 6e 20 61 64 64 72 65 73 73 20 6f 66 20 ointer.to.the.return.address.of.
26380 74 68 65 20 63 75 72 72 65 6e 74 20 73 74 61 63 6b 0a 20 20 20 20 20 20 66 72 61 6d 65 2e 0a 20 the.current.stack.......frame...
263a0 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 69 6d .....</p>.......<p>.......The.im
263c0 70 6c 69 63 61 74 69 6f 6e 73 20 6f 66 20 74 68 69 73 20 61 72 65 20 74 61 72 67 65 74 20 73 70 plications.of.this.are.target.sp
263e0 65 63 69 66 69 63 20 61 6e 64 20 6e 6f 74 20 63 6f 6e 73 69 73 74 65 6e 74 20 61 63 72 6f 73 73 ecific.and.not.consistent.across
26400 0a 20 20 20 20 20 20 61 6c 6c 20 70 6c 61 74 66 6f 72 6d 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e .......all.platforms........</p>
26420 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 .......<p>.......This.function.i
26440 73 20 6f 6e 6c 79 20 76 61 6c 69 64 20 77 69 74 68 69 6e 20 66 75 6e 63 74 69 6f 6e 20 73 63 6f s.only.valid.within.function.sco
26460 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 pe........</p>........<h3.id="bu
26480 69 6c 74 69 6e 2d 73 65 74 44 65 62 75 67 53 61 66 65 74 79 22 3e 40 73 65 74 44 65 62 75 67 53 iltin-setDebugSafety">@setDebugS
264a0 61 66 65 74 79 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 afety</h3>.......<pre><code.clas
264c0 73 3d 22 7a 69 67 22 3e 40 73 65 74 44 65 62 75 67 53 61 66 65 74 79 28 73 63 6f 70 65 2c 20 73 s="zig">@setDebugSafety(scope,.s
264e0 61 66 65 74 79 5f 6f 6e 3a 20 62 6f 6f 6c 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 afety_on:.bool)</code></pre>....
26500 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 53 65 74 73 20 77 68 65 74 68 65 72 20 64 65 62 75 67 20 ...<p>.......Sets.whether.debug.
26520 73 61 66 65 74 79 20 63 68 65 63 6b 73 20 61 72 65 20 6f 6e 20 66 6f 72 20 61 20 67 69 76 65 6e safety.checks.are.on.for.a.given
26540 20 73 63 6f 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 .scope........</p>........<h3.id
26560 3d 22 62 75 69 6c 74 69 6e 2d 73 65 74 45 76 61 6c 42 72 61 6e 63 68 51 75 6f 74 61 22 3e 40 73 ="builtin-setEvalBranchQuota">@s
26580 65 74 45 76 61 6c 42 72 61 6e 63 68 51 75 6f 74 61 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 etEvalBranchQuota</h3>.......<pr
265a0 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 73 65 74 45 76 61 6c 42 72 61 6e e><code.class="zig">@setEvalBran
265c0 63 68 51 75 6f 74 61 28 6e 65 77 5f 71 75 6f 74 61 3a 20 75 73 69 7a 65 29 3c 2f 63 6f 64 65 3e chQuota(new_quota:.usize)</code>
265e0 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 68 61 6e 67 65 73 20 74 </pre>.......<p>.......Changes.t
26600 68 65 20 6d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 62 61 63 6b 77 61 72 64 73 20 62 he.maximum.number.of.backwards.b
26620 72 61 6e 63 68 65 73 20 74 68 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 63 6f 64 65 0a 20 ranches.that.compile-time.code..
26640 20 20 20 20 20 65 78 65 63 75 74 69 6f 6e 20 63 61 6e 20 75 73 65 20 62 65 66 6f 72 65 20 67 69 .....execution.can.use.before.gi
26660 76 69 6e 67 20 75 70 20 61 6e 64 20 6d 61 6b 69 6e 67 20 61 20 63 6f 6d 70 69 6c 65 20 65 72 72 ving.up.and.making.a.compile.err
26680 6f 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 or........</p>.......<p>.......I
266a0 66 20 74 68 65 20 3c 63 6f 64 65 3e 6e 65 77 5f 71 75 6f 74 61 3c 2f 63 6f 64 65 3e 20 69 73 20 f.the.<code>new_quota</code>.is.
266c0 73 6d 61 6c 6c 65 72 20 74 68 61 6e 20 74 68 65 20 64 65 66 61 75 6c 74 20 71 75 6f 74 61 20 28 smaller.than.the.default.quota.(
266e0 3c 63 6f 64 65 3e 31 30 30 30 3c 2f 63 6f 64 65 3e 29 20 6f 72 0a 20 20 20 20 20 20 61 20 70 72 <code>1000</code>).or.......a.pr
26700 65 76 69 6f 75 73 6c 79 20 65 78 70 6c 69 63 69 74 6c 79 20 73 65 74 20 71 75 6f 74 61 2c 20 69 eviously.explicitly.set.quota,.i
26720 74 20 69 73 20 69 67 6e 6f 72 65 64 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c t.is.ignored........</p>.......<
26740 70 3e 0a 20 20 20 20 20 20 45 78 61 6d 70 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 p>.......Example:.......</p>....
26760 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 ...<pre><code.class="zig">compti
26780 6d 65 20 7b 0a 20 20 20 20 76 61 72 20 69 20 3d 20 30 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 69 me.{.....var.i.=.0;.....while.(i
267a0 20 26 6c 74 3b 20 31 30 30 31 29 20 3a 20 28 69 20 2b 3d 20 31 29 20 7b 7d 0a 7d 3c 2f 63 6f 64 .&lt;.1001).:.(i.+=.1).{}.}</cod
267c0 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d e></pre>.......<pre><code.class=
267e0 22 73 68 22 3e 24 20 2e 2f 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 2e 7a 69 67 0a "sh">$../zig.build-obj.test.zig.
26800 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 74 65 73 74 2e 7a 69 /home/andy/dev/zig/build/test.zi
26820 67 3a 33 3a 35 3a 20 65 72 72 6f 72 3a 20 65 76 61 6c 75 61 74 69 6f 6e 20 65 78 63 65 65 64 65 g:3:5:.error:.evaluation.exceede
26840 64 20 31 30 30 30 20 62 61 63 6b 77 61 72 64 73 20 62 72 61 6e 63 68 65 73 0a 20 20 20 20 77 68 d.1000.backwards.branches.....wh
26860 69 6c 65 20 28 69 20 26 6c 74 3b 20 31 30 30 31 29 20 3a 20 28 69 20 2b 3d 20 31 29 20 7b 7d 0a ile.(i.&lt;.1001).:.(i.+=.1).{}.
26880 20 20 20 20 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 4e 6f 77 20 ....^</code></pre>.......<p>Now.
268a0 77 65 20 75 73 65 20 3c 63 6f 64 65 3e 40 73 65 74 45 76 61 6c 42 72 61 6e 63 68 51 75 6f 74 61 we.use.<code>@setEvalBranchQuota
268c0 3c 2f 63 6f 64 65 3e 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c </code>:</p>.......<pre><code.cl
268e0 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 40 73 65 74 45 76 61 ass="zig">comptime.{.....@setEva
26900 6c 42 72 61 6e 63 68 51 75 6f 74 61 28 31 30 30 31 29 3b 0a 20 20 20 20 76 61 72 20 69 20 3d 20 lBranchQuota(1001);.....var.i.=.
26920 30 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 69 20 26 6c 74 3b 20 31 30 30 31 29 20 3a 20 28 69 20 0;.....while.(i.&lt;.1001).:.(i.
26940 2b 3d 20 31 29 20 7b 7d 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 +=.1).{}.}</code></pre>.......<p
26960 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 2e 2f 7a 69 67 20 62 75 69 6c re><code.class="sh">$../zig.buil
26980 64 2d 6f 62 6a 20 74 65 73 74 2e 7a 69 67 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 d-obj.test.zig</code></pre>.....
269a0 20 20 3c 70 3e 28 6e 6f 20 6f 75 74 70 75 74 20 62 65 63 61 75 73 65 20 69 74 20 77 6f 72 6b 65 ..<p>(no.output.because.it.worke
269c0 64 20 66 69 6e 65 29 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c d.fine)</p>........<p>See.also:<
269e0 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 /p>.......<ul>.........<li><a.hr
26a00 65 66 3d 22 23 63 6f 6d 70 74 69 6d 65 22 3e 63 6f 6d 70 74 69 6d 65 3c 2f 61 3e 3c 2f 6c 69 3e ef="#comptime">comptime</a></li>
26a20 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c .......</ul>........<h3.id="buil
26a40 74 69 6e 2d 73 65 74 46 6c 6f 61 74 4d 6f 64 65 22 3e 40 73 65 74 46 6c 6f 61 74 4d 6f 64 65 3c tin-setFloatMode">@setFloatMode<
26a60 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 /h3>.......<pre><code.class="zig
26a80 22 3e 40 73 65 74 46 6c 6f 61 74 4d 6f 64 65 28 73 63 6f 70 65 2c 20 6d 6f 64 65 3a 20 40 69 6d ">@setFloatMode(scope,.mode:.@im
26aa0 70 6f 72 74 28 22 62 75 69 6c 74 69 6e 22 29 2e 46 6c 6f 61 74 4d 6f 64 65 29 3c 2f 63 6f 64 65 port("builtin").FloatMode)</code
26ac0 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 53 65 74 73 20 74 68 65 ></pre>.......<p>.......Sets.the
26ae0 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 6d 6f 64 65 20 66 6f 72 20 61 20 67 69 76 65 6e .floating.point.mode.for.a.given
26b00 20 73 63 6f 70 65 2e 20 50 6f 73 73 69 62 6c 65 20 76 61 6c 75 65 73 20 61 72 65 3a 0a 20 20 20 .scope..Possible.values.are:....
26b20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 ...</p>.......<pre><code.class="
26b40 7a 69 67 22 3e 70 75 62 20 63 6f 6e 73 74 20 46 6c 6f 61 74 4d 6f 64 65 20 3d 20 65 6e 75 6d 20 zig">pub.const.FloatMode.=.enum.
26b60 7b 0a 20 20 20 20 4f 70 74 69 6d 69 7a 65 64 2c 0a 20 20 20 20 53 74 72 69 63 74 2c 0a 7d 3b 3c {.....Optimized,.....Strict,.};<
26b80 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 /code></pre>.......<ul>.........
26ba0 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 63 6f 64 65 3e 4f 70 74 69 6d 69 7a 65 64 3c 2f <li>...........<code>Optimized</
26bc0 63 6f 64 65 3e 20 28 64 65 66 61 75 6c 74 29 20 2d 20 46 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 code>.(default).-.Floating.point
26be0 20 6f 70 65 72 61 74 69 6f 6e 73 20 6d 61 79 20 64 6f 20 61 6c 6c 20 6f 66 20 74 68 65 20 66 6f .operations.may.do.all.of.the.fo
26c00 6c 6c 6f 77 69 6e 67 3a 0a 20 20 20 20 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 llowing:...........<ul>.........
26c20 20 20 20 20 3c 6c 69 3e 41 73 73 75 6d 65 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 61 6e 64 ....<li>Assume.the.arguments.and
26c40 20 72 65 73 75 6c 74 20 61 72 65 20 6e 6f 74 20 4e 61 4e 2e 20 4f 70 74 69 6d 69 7a 61 74 69 6f .result.are.not.NaN..Optimizatio
26c60 6e 73 20 61 72 65 20 72 65 71 75 69 72 65 64 20 74 6f 20 72 65 74 61 69 6e 20 64 65 66 69 6e 65 ns.are.required.to.retain.define
26c80 64 20 62 65 68 61 76 69 6f 72 20 6f 76 65 72 20 4e 61 4e 73 2c 20 62 75 74 20 74 68 65 20 76 61 d.behavior.over.NaNs,.but.the.va
26ca0 6c 75 65 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 3c lue.of.the.result.is.undefined.<
26cc0 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 41 73 73 75 6d 65 20 74 68 65 20 /li>.............<li>Assume.the.
26ce0 61 72 67 75 6d 65 6e 74 73 20 61 6e 64 20 72 65 73 75 6c 74 20 61 72 65 20 6e 6f 74 20 2b 2f 2d arguments.and.result.are.not.+/-
26d00 49 6e 66 2e 20 4f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 61 72 65 20 72 65 71 75 69 72 65 64 20 Inf..Optimizations.are.required.
26d20 74 6f 20 72 65 74 61 69 6e 20 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 20 6f 76 65 72 20 to.retain.defined.behavior.over.
26d40 2b 2f 2d 49 6e 66 2c 20 62 75 74 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 72 65 73 +/-Inf,.but.the.value.of.the.res
26d60 75 6c 74 20 69 73 20 75 6e 64 65 66 69 6e 65 64 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 ult.is.undefined.</li>..........
26d80 20 20 20 3c 6c 69 3e 54 72 65 61 74 20 74 68 65 20 73 69 67 6e 20 6f 66 20 61 20 7a 65 72 6f 20 ...<li>Treat.the.sign.of.a.zero.
26da0 61 72 67 75 6d 65 6e 74 20 6f 72 20 72 65 73 75 6c 74 20 61 73 20 69 6e 73 69 67 6e 69 66 69 63 argument.or.result.as.insignific
26dc0 61 6e 74 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 55 73 65 20 74 68 ant.</li>.............<li>Use.th
26de0 65 20 72 65 63 69 70 72 6f 63 61 6c 20 6f 66 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 72 61 74 68 e.reciprocal.of.an.argument.rath
26e00 65 72 20 74 68 61 6e 20 70 65 72 66 6f 72 6d 20 64 69 76 69 73 69 6f 6e 2e 3c 2f 6c 69 3e 0a 20 er.than.perform.division.</li>..
26e20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 50 65 72 66 6f 72 6d 20 66 6c 6f 61 74 69 6e 67 2d ...........<li>Perform.floating-
26e40 70 6f 69 6e 74 20 63 6f 6e 74 72 61 63 74 69 6f 6e 20 28 65 2e 67 2e 20 66 75 73 69 6e 67 20 61 point.contraction.(e.g..fusing.a
26e60 20 6d 75 6c 74 69 70 6c 79 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e 20 61 64 64 69 74 69 6f .multiply.followed.by.an.additio
26e80 6e 20 69 6e 74 6f 20 61 20 66 75 73 65 64 20 6d 75 6c 74 69 70 6c 79 2d 61 6e 64 2d 61 64 64 29 n.into.a.fused.multiply-and-add)
26ea0 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 50 65 72 66 6f 72 6d 20 61 .</li>.............<li>Perform.a
26ec0 6c 67 65 62 72 61 69 63 61 6c 6c 79 20 65 71 75 69 76 61 6c 65 6e 74 20 74 72 61 6e 73 66 6f 72 lgebraically.equivalent.transfor
26ee0 6d 61 74 69 6f 6e 73 20 74 68 61 74 20 6d 61 79 20 63 68 61 6e 67 65 20 72 65 73 75 6c 74 73 20 mations.that.may.change.results.
26f00 69 6e 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 28 65 2e 67 2e 20 72 65 61 73 73 6f 63 69 in.floating.point.(e.g..reassoci
26f20 61 74 65 29 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 ate).</li>...........</ul>......
26f40 20 20 20 20 20 54 68 69 73 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 3c 63 6f 64 65 .....This.is.equivalent.to.<code
26f60 3e 2d 66 66 61 73 74 2d 6d 61 74 68 3c 2f 63 6f 64 65 3e 20 69 6e 20 47 43 43 2e 0a 20 20 20 20 >-ffast-math</code>.in.GCC......
26f80 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 ....</li>.........<li>..........
26fa0 20 3c 63 6f 64 65 3e 53 74 72 69 63 74 3c 2f 63 6f 64 65 3e 20 2d 20 46 6c 6f 61 74 69 6e 67 20 .<code>Strict</code>.-.Floating.
26fc0 70 6f 69 6e 74 20 6f 70 65 72 61 74 69 6f 6e 73 20 66 6f 6c 6c 6f 77 20 73 74 72 69 63 74 20 49 point.operations.follow.strict.I
26fe0 45 45 45 20 63 6f 6d 70 6c 69 61 6e 63 65 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 EEE.compliance..........</li>...
27000 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e ....</ul>.......<p>See.also:</p>
27020 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d .......<ul>.........<li><a.href=
27040 22 23 66 6c 6f 61 74 2d 6f 70 65 72 61 74 69 6f 6e 73 22 3e 46 6c 6f 61 74 69 6e 67 20 50 6f 69 "#float-operations">Floating.Poi
27060 6e 74 20 4f 70 65 72 61 74 69 6f 6e 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 nt.Operations</a></li>.......</u
27080 6c 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 73 65 74 47 6c 6f l>........<h3.id="builtin-setGlo
270a0 62 61 6c 4c 69 6e 6b 61 67 65 22 3e 40 73 65 74 47 6c 6f 62 61 6c 4c 69 6e 6b 61 67 65 3c 2f 68 balLinkage">@setGlobalLinkage</h
270c0 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 3>.......<pre><code.class="zig">
270e0 40 73 65 74 47 6c 6f 62 61 6c 4c 69 6e 6b 61 67 65 28 67 6c 6f 62 61 6c 5f 76 61 72 69 61 62 6c @setGlobalLinkage(global_variabl
27100 65 5f 6e 61 6d 65 2c 20 63 6f 6d 70 74 69 6d 65 20 6c 69 6e 6b 61 67 65 3a 20 47 6c 6f 62 61 6c e_name,.comptime.linkage:.Global
27120 4c 69 6e 6b 61 67 65 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a Linkage)</code></pre>.......<p>.
27140 20 20 20 20 20 20 3c 63 6f 64 65 3e 47 6c 6f 62 61 6c 4c 69 6e 6b 61 67 65 3c 2f 63 6f 64 65 3e ......<code>GlobalLinkage</code>
27160 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 77 69 74 68 20 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 .can.be.found.with.<code>@import
27180 28 22 62 75 69 6c 74 69 6e 22 29 2e 47 6c 6f 62 61 6c 4c 69 6e 6b 61 67 65 3c 2f 63 6f 64 65 3e ("builtin").GlobalLinkage</code>
271a0 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c ........</p>.......<p>See.also:<
271c0 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 /p>.......<ul>.........<li><a.hr
271e0 65 66 3d 22 23 63 6f 6d 70 69 6c 65 2d 76 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 20 ef="#compile-variables">Compile.
27200 56 61 72 69 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 Variables</a></li>.......</ul>..
27220 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 73 65 74 47 6c 6f 62 61 6c 53 65 .....<h3.id="builtin-setGlobalSe
27240 63 74 69 6f 6e 22 3e 40 73 65 74 47 6c 6f 62 61 6c 53 65 63 74 69 6f 6e 3c 2f 68 33 3e 0a 20 20 ction">@setGlobalSection</h3>...
27260 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 73 65 74 47 ....<pre><code.class="zig">@setG
27280 6c 6f 62 61 6c 53 65 63 74 69 6f 6e 28 67 6c 6f 62 61 6c 5f 76 61 72 69 61 62 6c 65 5f 6e 61 6d lobalSection(global_variable_nam
272a0 65 2c 20 63 6f 6d 70 74 69 6d 65 20 73 65 63 74 69 6f 6e 5f 6e 61 6d 65 3a 20 5b 5d 63 6f 6e 73 e,.comptime.section_name:.[]cons
272c0 74 20 75 38 29 20 2d 26 67 74 3b 20 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 t.u8).-&gt;.bool</code></pre>...
272e0 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 50 75 74 73 20 74 68 65 20 67 6c 6f 62 61 6c 20 76 61 ....<p>.......Puts.the.global.va
27300 72 69 61 62 6c 65 20 69 6e 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 65 63 74 69 6f 6e 2e riable.in.the.specified.section.
27320 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 .......</p>.......<h3.id="builti
27340 6e 2d 73 68 6c 45 78 61 63 74 22 3e 40 73 68 6c 45 78 61 63 74 3c 2f 68 33 3e 0a 20 20 20 20 20 n-shlExact">@shlExact</h3>......
27360 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 73 68 6c 45 78 61 63 .<pre><code.class="zig">@shlExac
27380 74 28 76 61 6c 75 65 3a 20 54 2c 20 73 68 69 66 74 5f 61 6d 74 3a 20 4c 6f 67 32 54 29 20 2d 26 t(value:.T,.shift_amt:.Log2T).-&
273a0 67 74 3b 20 54 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 gt;.T</code></pre>.......<p>....
273c0 20 20 20 50 65 72 66 6f 72 6d 73 20 74 68 65 20 6c 65 66 74 20 73 68 69 66 74 20 6f 70 65 72 61 ...Performs.the.left.shift.opera
273e0 74 69 6f 6e 20 28 3c 63 6f 64 65 3e 26 6c 74 3b 26 6c 74 3b 3c 2f 63 6f 64 65 3e 29 2e 20 43 61 tion.(<code>&lt;&lt;</code>)..Ca
27400 6c 6c 65 72 20 67 75 61 72 61 6e 74 65 65 73 0a 20 20 20 20 20 20 74 68 61 74 20 74 68 65 20 73 ller.guarantees.......that.the.s
27420 68 69 66 74 20 77 69 6c 6c 20 6e 6f 74 20 73 68 69 66 74 20 61 6e 79 20 31 20 62 69 74 73 20 6f hift.will.not.shift.any.1.bits.o
27440 75 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 ut........</p>.......<p>.......T
27460 68 65 20 74 79 70 65 20 6f 66 20 3c 63 6f 64 65 3e 73 68 69 66 74 5f 61 6d 74 3c 2f 63 6f 64 65 he.type.of.<code>shift_amt</code
27480 3e 20 69 73 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 20 77 69 74 68 20 3c 63 >.is.an.unsigned.integer.with.<c
274a0 6f 64 65 3e 6c 6f 67 32 28 54 2e 62 69 74 5f 63 6f 75 6e 74 29 3c 2f 63 6f 64 65 3e 20 62 69 74 ode>log2(T.bit_count)</code>.bit
274c0 73 2e 0a 20 20 20 20 20 20 54 68 69 73 20 69 73 20 62 65 63 61 75 73 65 20 3c 63 6f 64 65 3e 73 s........This.is.because.<code>s
274e0 68 69 66 74 5f 61 6d 74 20 26 67 74 3b 3d 20 54 2e 62 69 74 5f 63 6f 75 6e 74 3c 2f 63 6f 64 65 hift_amt.&gt;=.T.bit_count</code
27500 3e 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2e 0a 20 20 20 20 20 20 3c >.is.undefined.behavior........<
27520 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 /p>.......<p>See.also:</p>......
27540 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c .<ul>.........<li><a.href="#buil
27560 74 69 6e 2d 73 68 72 45 78 61 63 74 22 3e 40 73 68 72 45 78 61 63 74 3c 2f 61 3e 3c 2f 6c 69 3e tin-shrExact">@shrExact</a></li>
27580 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 .........<li><a.href="#builtin-s
275a0 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 3e 40 73 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 hlWithOverflow">@shlWithOverflow
275c0 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 33 20 </a></li>.......</ul>.......<h3.
275e0 69 64 3d 22 62 75 69 6c 74 69 6e 2d 73 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 22 3e 40 73 68 id="builtin-shlWithOverflow">@sh
27600 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 lWithOverflow</h3>.......<pre><c
27620 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 73 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 ode.class="zig">@shlWithOverflow
27640 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 61 3a 20 54 2c 20 73 68 69 66 74 5f 61 (comptime.T:.type,.a:.T,.shift_a
27660 6d 74 3a 20 4c 6f 67 32 54 2c 20 72 65 73 75 6c 74 3a 20 26 61 6d 70 3b 54 29 20 2d 26 67 74 3b mt:.Log2T,.result:.&amp;T).-&gt;
27680 20 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 .bool</code></pre>.......<p>....
276a0 20 20 20 50 65 72 66 6f 72 6d 73 20 3c 63 6f 64 65 3e 2a 72 65 73 75 6c 74 20 3d 20 61 20 26 6c ...Performs.<code>*result.=.a.&l
276c0 74 3b 26 6c 74 3b 20 62 3c 2f 63 6f 64 65 3e 2e 20 49 66 20 6f 76 65 72 66 6c 6f 77 20 6f 72 20 t;&lt;.b</code>..If.overflow.or.
276e0 75 6e 64 65 72 66 6c 6f 77 20 6f 63 63 75 72 73 2c 0a 20 20 20 20 20 20 73 74 6f 72 65 73 20 74 underflow.occurs,.......stores.t
27700 68 65 20 6f 76 65 72 66 6c 6f 77 65 64 20 62 69 74 73 20 69 6e 20 3c 63 6f 64 65 3e 72 65 73 75 he.overflowed.bits.in.<code>resu
27720 6c 74 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 lt</code>.and.returns.<code>true
27740 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 49 66 20 6e 6f 20 6f 76 65 72 66 6c 6f 77 20 6f 72 </code>........If.no.overflow.or
27760 20 75 6e 64 65 72 66 6c 6f 77 20 6f 63 63 75 72 73 2c 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 .underflow.occurs,.returns.<code
27780 3e 66 61 6c 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 >false</code>........</p>.......
277a0 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 74 79 70 65 20 6f 66 20 3c 63 6f 64 65 3e 73 68 69 66 <p>.......The.type.of.<code>shif
277c0 74 5f 61 6d 74 3c 2f 63 6f 64 65 3e 20 69 73 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 t_amt</code>.is.an.unsigned.inte
277e0 67 65 72 20 77 69 74 68 20 3c 63 6f 64 65 3e 6c 6f 67 32 28 54 2e 62 69 74 5f 63 6f 75 6e 74 29 ger.with.<code>log2(T.bit_count)
27800 3c 2f 63 6f 64 65 3e 20 62 69 74 73 2e 0a 20 20 20 20 20 20 54 68 69 73 20 69 73 20 62 65 63 61 </code>.bits........This.is.beca
27820 75 73 65 20 3c 63 6f 64 65 3e 73 68 69 66 74 5f 61 6d 74 20 26 67 74 3b 3d 20 54 2e 62 69 74 5f use.<code>shift_amt.&gt;=.T.bit_
27840 63 6f 75 6e 74 3c 2f 63 6f 64 65 3e 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 count</code>.is.undefined.behavi
27860 6f 72 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f or........</p>.......<p>See.also
27880 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 :</p>.......<ul>.........<li><a.
278a0 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 68 6c 45 78 61 63 74 22 3e 40 73 68 6c 45 78 61 href="#builtin-shlExact">@shlExa
278c0 63 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d ct</a></li>.........<li><a.href=
278e0 22 23 62 75 69 6c 74 69 6e 2d 73 68 72 45 78 61 63 74 22 3e 40 73 68 72 45 78 61 63 74 3c 2f 61 "#builtin-shrExact">@shrExact</a
27900 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d ></li>.......</ul>.......<h3.id=
27920 22 62 75 69 6c 74 69 6e 2d 73 68 72 45 78 61 63 74 22 3e 40 73 68 72 45 78 61 63 74 3c 2f 68 33 "builtin-shrExact">@shrExact</h3
27940 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 >.......<pre><code.class="zig">@
27960 73 68 72 45 78 61 63 74 28 76 61 6c 75 65 3a 20 54 2c 20 73 68 69 66 74 5f 61 6d 74 3a 20 4c 6f shrExact(value:.T,.shift_amt:.Lo
27980 67 32 54 29 20 2d 26 67 74 3b 20 54 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 g2T).-&gt;.T</code></pre>.......
279a0 3c 70 3e 0a 20 20 20 20 20 20 50 65 72 66 6f 72 6d 73 20 74 68 65 20 72 69 67 68 74 20 73 68 69 <p>.......Performs.the.right.shi
279c0 66 74 20 6f 70 65 72 61 74 69 6f 6e 20 28 3c 63 6f 64 65 3e 26 67 74 3b 26 67 74 3b 3c 2f 63 6f ft.operation.(<code>&gt;&gt;</co
279e0 64 65 3e 29 2e 20 43 61 6c 6c 65 72 20 67 75 61 72 61 6e 74 65 65 73 0a 20 20 20 20 20 20 74 68 de>)..Caller.guarantees.......th
27a00 61 74 20 74 68 65 20 73 68 69 66 74 20 77 69 6c 6c 20 6e 6f 74 20 73 68 69 66 74 20 61 6e 79 20 at.the.shift.will.not.shift.any.
27a20 31 20 62 69 74 73 20 6f 75 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 1.bits.out........</p>.......<p>
27a40 0a 20 20 20 20 20 20 54 68 65 20 74 79 70 65 20 6f 66 20 3c 63 6f 64 65 3e 73 68 69 66 74 5f 61 .......The.type.of.<code>shift_a
27a60 6d 74 3c 2f 63 6f 64 65 3e 20 69 73 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 mt</code>.is.an.unsigned.integer
27a80 20 77 69 74 68 20 3c 63 6f 64 65 3e 6c 6f 67 32 28 54 2e 62 69 74 5f 63 6f 75 6e 74 29 3c 2f 63 .with.<code>log2(T.bit_count)</c
27aa0 6f 64 65 3e 20 62 69 74 73 2e 0a 20 20 20 20 20 20 54 68 69 73 20 69 73 20 62 65 63 61 75 73 65 ode>.bits........This.is.because
27ac0 20 3c 63 6f 64 65 3e 73 68 69 66 74 5f 61 6d 74 20 26 67 74 3b 3d 20 54 2e 62 69 74 5f 63 6f 75 .<code>shift_amt.&gt;=.T.bit_cou
27ae0 6e 74 3c 2f 63 6f 64 65 3e 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2e nt</code>.is.undefined.behavior.
27b00 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f .......</p>.......<p>See.also:</
27b20 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 p>.......<ul>.........<li><a.hre
27b40 66 3d 22 23 62 75 69 6c 74 69 6e 2d 73 68 6c 45 78 61 63 74 22 3e 40 73 68 6c 45 78 61 63 74 3c f="#builtin-shlExact">@shlExact<
27b60 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 /a></li>.......</ul>.......<h3.i
27b80 64 3d 22 62 75 69 6c 74 69 6e 2d 73 69 7a 65 4f 66 22 3e 40 73 69 7a 65 4f 66 3c 2f 68 33 3e 0a d="builtin-sizeOf">@sizeOf</h3>.
27ba0 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 73 69 ......<pre><code.class="zig">@si
27bc0 7a 65 4f 66 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 29 20 2d 26 67 74 3b 20 28 6e 75 zeOf(comptime.T:.type).-&gt;.(nu
27be0 6d 62 65 72 20 6c 69 74 65 72 61 6c 29 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 mber.literal)</code></pre>......
27c00 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 .<p>.......This.function.returns
27c20 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 62 79 74 65 73 20 69 74 20 74 61 6b 65 73 20 74 6f .the.number.of.bytes.it.takes.to
27c40 20 73 74 6f 72 65 20 3c 63 6f 64 65 3e 54 3c 2f 63 6f 64 65 3e 20 69 6e 20 6d 65 6d 6f 72 79 2e .store.<code>T</code>.in.memory.
27c60 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 .......</p>.......<p>.......The.
27c80 72 65 73 75 6c 74 20 69 73 20 61 20 74 61 72 67 65 74 2d 73 70 65 63 69 66 69 63 20 63 6f 6d 70 result.is.a.target-specific.comp
27ca0 69 6c 65 20 74 69 6d 65 20 63 6f 6e 73 74 61 6e 74 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 ile.time.constant........</p>...
27cc0 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 73 75 62 57 69 74 68 4f 76 65 72 66 ....<h3.id="builtin-subWithOverf
27ce0 6c 6f 77 22 3e 40 73 75 62 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 68 33 3e 0a 20 20 20 20 20 low">@subWithOverflow</h3>......
27d00 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 73 75 62 57 69 74 68 .<pre><code.class="zig">@subWith
27d20 4f 76 65 72 66 6c 6f 77 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 61 3a 20 54 2c Overflow(comptime.T:.type,.a:.T,
27d40 20 62 3a 20 54 2c 20 72 65 73 75 6c 74 3a 20 26 61 6d 70 3b 54 29 20 2d 26 67 74 3b 20 62 6f 6f .b:.T,.result:.&amp;T).-&gt;.boo
27d60 6c 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 50 l</code></pre>.......<p>.......P
27d80 65 72 66 6f 72 6d 73 20 3c 63 6f 64 65 3e 2a 72 65 73 75 6c 74 20 3d 20 61 20 2d 20 62 3c 2f 63 erforms.<code>*result.=.a.-.b</c
27da0 6f 64 65 3e 2e 20 49 66 20 6f 76 65 72 66 6c 6f 77 20 6f 72 20 75 6e 64 65 72 66 6c 6f 77 20 6f ode>..If.overflow.or.underflow.o
27dc0 63 63 75 72 73 2c 0a 20 20 20 20 20 20 73 74 6f 72 65 73 20 74 68 65 20 6f 76 65 72 66 6c 6f 77 ccurs,.......stores.the.overflow
27de0 65 64 20 62 69 74 73 20 69 6e 20 3c 63 6f 64 65 3e 72 65 73 75 6c 74 3c 2f 63 6f 64 65 3e 20 61 ed.bits.in.<code>result</code>.a
27e00 6e 64 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 74 72 75 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 nd.returns.<code>true</code>....
27e20 20 20 20 20 49 66 20 6e 6f 20 6f 76 65 72 66 6c 6f 77 20 6f 72 20 75 6e 64 65 72 66 6c 6f 77 20 ....If.no.overflow.or.underflow.
27e40 6f 63 63 75 72 73 2c 20 72 65 74 75 72 6e 73 20 3c 63 6f 64 65 3e 66 61 6c 73 65 3c 2f 63 6f 64 occurs,.returns.<code>false</cod
27e60 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 e>........</p>.......<h3.id="bui
27e80 6c 74 69 6e 2d 74 72 75 6e 63 61 74 65 22 3e 40 74 72 75 6e 63 61 74 65 3c 2f 68 33 3e 0a 20 20 ltin-truncate">@truncate</h3>...
27ea0 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 74 72 75 6e ....<pre><code.class="zig">@trun
27ec0 63 61 74 65 28 63 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 69 6e 74 65 67 65 72 29 20 cate(comptime.T:.type,.integer).
27ee0 2d 26 67 74 3b 20 54 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 -&gt;.T</code></pre>.......<p>..
27f00 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 74 72 75 6e 63 61 74 65 73 20 62 69 74 .....This.function.truncates.bit
27f20 73 20 66 72 6f 6d 20 61 6e 20 69 6e 74 65 67 65 72 20 74 79 70 65 2c 20 72 65 73 75 6c 74 69 6e s.from.an.integer.type,.resultin
27f40 67 20 69 6e 20 61 20 73 6d 61 6c 6c 65 72 0a 20 20 20 20 20 20 69 6e 74 65 67 65 72 20 74 79 70 g.in.a.smaller.......integer.typ
27f60 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 e........</p>.......<p>.......Th
27f80 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 72 6f 64 75 63 65 73 20 61 20 63 72 61 73 68 20 69 6e 20 e.following.produces.a.crash.in.
27fa0 64 65 62 75 67 20 6d 6f 64 65 20 61 6e 64 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f debug.mode.and.undefined.behavio
27fc0 72 20 69 6e 0a 20 20 20 20 20 20 72 65 6c 65 61 73 65 20 6d 6f 64 65 3a 0a 20 20 20 20 20 20 3c r.in.......release.mode:.......<
27fe0 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 /p>.......<pre><code.class="zig"
28000 3e 63 6f 6e 73 74 20 61 3a 20 75 31 36 20 3d 20 30 78 61 62 63 64 3b 0a 63 6f 6e 73 74 20 62 3a >const.a:.u16.=.0xabcd;.const.b:
28020 20 75 38 20 3d 20 75 38 28 61 29 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 .u8.=.u8(a);</code></pre>.......
28040 3c 70 3e 0a 20 20 20 20 20 20 48 6f 77 65 76 65 72 20 74 68 69 73 20 69 73 20 77 65 6c 6c 20 64 <p>.......However.this.is.well.d
28060 65 66 69 6e 65 64 20 61 6e 64 20 77 6f 72 6b 69 6e 67 20 63 6f 64 65 3a 0a 20 20 20 20 20 20 3c efined.and.working.code:.......<
28080 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 /p>.......<pre><code.class="zig"
280a0 3e 63 6f 6e 73 74 20 61 3a 20 75 31 36 20 3d 20 30 78 61 62 63 64 3b 0a 63 6f 6e 73 74 20 62 3a >const.a:.u16.=.0xabcd;.const.b:
280c0 20 75 38 20 3d 20 40 74 72 75 6e 63 61 74 65 28 75 38 2c 20 61 29 3b 0a 2f 2f 20 62 20 69 73 20 .u8.=.@truncate(u8,.a);.//.b.is.
280e0 6e 6f 77 20 30 78 63 64 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a now.0xcd</code></pre>.......<p>.
28100 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 61 6c 77 61 79 73 20 74 72 75 6e 63 ......This.function.always.trunc
28120 61 74 65 73 20 74 68 65 20 73 69 67 6e 69 66 69 63 61 6e 74 20 62 69 74 73 20 6f 66 20 74 68 65 ates.the.significant.bits.of.the
28140 20 69 6e 74 65 67 65 72 2c 20 72 65 67 61 72 64 6c 65 73 73 0a 20 20 20 20 20 20 6f 66 20 65 6e .integer,.regardless.......of.en
28160 64 69 61 6e 6e 65 73 73 20 6f 6e 20 74 68 65 20 74 61 72 67 65 74 20 70 6c 61 74 66 6f 72 6d 2e dianness.on.the.target.platform.
28180 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 .......</p>........<h3.id="built
281a0 69 6e 2d 74 79 70 65 49 64 22 3e 40 74 79 70 65 49 64 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 in-typeId">@typeId</h3>.......<p
281c0 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 74 79 70 65 49 64 28 63 6f 6d re><code.class="zig">@typeId(com
281e0 70 74 69 6d 65 20 54 3a 20 74 79 70 65 29 20 2d 26 67 74 3b 20 40 69 6d 70 6f 72 74 28 22 62 75 ptime.T:.type).-&gt;.@import("bu
28200 69 6c 74 69 6e 22 29 2e 54 79 70 65 49 64 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 iltin").TypeId</code></pre>.....
28220 20 20 3c 70 3e 0a 20 20 20 20 20 20 52 65 74 75 72 6e 73 20 77 68 69 63 68 20 6b 69 6e 64 20 6f ..<p>.......Returns.which.kind.o
28240 66 20 74 79 70 65 20 73 6f 6d 65 74 68 69 6e 67 20 69 73 2e 20 50 6f 73 73 69 62 6c 65 20 76 61 f.type.something.is..Possible.va
28260 6c 75 65 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 lues:.......</p>.......<pre><cod
28280 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 70 75 62 20 63 6f 6e 73 74 20 54 79 70 65 49 64 20 3d e.class="zig">pub.const.TypeId.=
282a0 20 65 6e 75 6d 20 7b 0a 20 20 20 20 54 79 70 65 2c 0a 20 20 20 20 56 6f 69 64 2c 0a 20 20 20 20 .enum.{.....Type,.....Void,.....
282c0 42 6f 6f 6c 2c 0a 20 20 20 20 4e 6f 52 65 74 75 72 6e 2c 0a 20 20 20 20 49 6e 74 2c 0a 20 20 20 Bool,.....NoReturn,.....Int,....
282e0 20 46 6c 6f 61 74 2c 0a 20 20 20 20 50 6f 69 6e 74 65 72 2c 0a 20 20 20 20 41 72 72 61 79 2c 0a .Float,.....Pointer,.....Array,.
28300 20 20 20 20 53 74 72 75 63 74 2c 0a 20 20 20 20 46 6c 6f 61 74 4c 69 74 65 72 61 6c 2c 0a 20 20 ....Struct,.....FloatLiteral,...
28320 20 20 49 6e 74 4c 69 74 65 72 61 6c 2c 0a 20 20 20 20 55 6e 64 65 66 69 6e 65 64 4c 69 74 65 72 ..IntLiteral,.....UndefinedLiter
28340 61 6c 2c 0a 20 20 20 20 4e 75 6c 6c 4c 69 74 65 72 61 6c 2c 0a 20 20 20 20 4e 75 6c 6c 61 62 6c al,.....NullLiteral,.....Nullabl
28360 65 2c 0a 20 20 20 20 45 72 72 6f 72 55 6e 69 6f 6e 2c 0a 20 20 20 20 45 72 72 6f 72 2c 0a 20 20 e,.....ErrorUnion,.....Error,...
28380 20 20 45 6e 75 6d 2c 0a 20 20 20 20 45 6e 75 6d 54 61 67 2c 0a 20 20 20 20 55 6e 69 6f 6e 2c 0a ..Enum,.....EnumTag,.....Union,.
283a0 20 20 20 20 46 6e 2c 0a 20 20 20 20 4e 61 6d 65 73 70 61 63 65 2c 0a 20 20 20 20 42 6c 6f 63 6b ....Fn,.....Namespace,.....Block
283c0 2c 0a 20 20 20 20 42 6f 75 6e 64 46 6e 2c 0a 20 20 20 20 41 72 67 54 75 70 6c 65 2c 0a 20 20 20 ,.....BoundFn,.....ArgTuple,....
283e0 20 4f 70 61 71 75 65 2c 0a 7d 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 .Opaque,.};</code></pre>........
28400 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 74 79 70 65 4e 61 6d 65 22 3e 40 74 79 70 65 4e <h3.id="builtin-typeName">@typeN
28420 61 6d 65 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d ame</h3>.......<pre><code.class=
28440 22 7a 69 67 22 3e 40 74 79 70 65 4e 61 6d 65 28 54 3a 20 74 79 70 65 29 20 2d 26 67 74 3b 20 5b "zig">@typeName(T:.type).-&gt;.[
28460 5d 75 38 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 ]u8</code></pre>.......<p>......
28480 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 74 72 69 6e .This.function.returns.the.strin
284a0 67 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 61 20 74 79 70 65 2e 0a 20 20 20 20 g.representation.of.a.type......
284c0 20 20 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 69 6c 74 69 6e 2d 74 79 ..</p>........<h3.id="builtin-ty
284e0 70 65 4f 66 22 3e 40 74 79 70 65 4f 66 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 peOf">@typeOf</h3>.......<pre><c
28500 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 40 74 79 70 65 4f 66 28 65 78 70 72 65 73 73 69 ode.class="zig">@typeOf(expressi
28520 6f 6e 29 20 2d 26 67 74 3b 20 74 79 70 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 on).-&gt;.type</code></pre>.....
28540 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 72 65 74 75 72 6e ..<p>.......This.function.return
28560 73 20 61 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 63 6f 6e 73 74 61 6e 74 2c 20 77 68 69 63 68 s.a.compile-time.constant,.which
28580 20 69 73 20 74 68 65 20 74 79 70 65 20 6f 66 20 74 68 65 0a 20 20 20 20 20 20 65 78 70 72 65 73 .is.the.type.of.the.......expres
285a0 73 69 6f 6e 20 70 61 73 73 65 64 20 61 73 20 61 6e 20 61 72 67 75 6d 65 6e 74 2e 20 54 68 65 20 sion.passed.as.an.argument..The.
285c0 65 78 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 65 64 2e 0a 20 20 20 20 20 20 3c expression.is.evaluated........<
285e0 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 62 75 69 6c 64 2d 6d 6f 64 65 22 3e 42 /p>........<h2.id="build-mode">B
28600 75 69 6c 64 20 4d 6f 64 65 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a uild.Mode</h2>.......<p>.......Z
28620 69 67 20 68 61 73 20 74 68 72 65 65 20 62 75 69 6c 64 20 6d 6f 64 65 73 3a 0a 20 20 20 20 20 20 ig.has.three.build.modes:.......
28640 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 </p>.......<ul>.........<li><a.h
28660 72 65 66 3d 22 23 62 75 69 6c 64 2d 6d 6f 64 65 2d 64 65 62 75 67 22 3e 44 65 62 75 67 3c 2f 61 ref="#build-mode-debug">Debug</a
28680 3e 20 28 64 65 66 61 75 6c 74 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 >.(default)</li>.........<li><a.
286a0 68 72 65 66 3d 22 23 62 75 69 6c 64 2d 6d 6f 64 65 2d 72 65 6c 65 61 73 65 2d 66 61 73 74 22 3e href="#build-mode-release-fast">
286c0 52 65 6c 65 61 73 65 46 61 73 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 ReleaseFast</a></li>.........<li
286e0 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 64 2d 6d 6f 64 65 2d 72 65 6c 65 61 73 65 2d 73 61 ><a.href="#build-mode-release-sa
28700 66 65 22 3e 52 65 6c 65 61 73 65 53 61 66 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c fe">ReleaseSafe</a></li>.......<
28720 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 6f 20 61 64 64 20 73 74 61 6e /ul>.......<p>.......To.add.stan
28740 64 61 72 64 20 62 75 69 6c 64 20 6f 70 74 69 6f 6e 73 20 74 6f 20 61 20 3c 63 6f 64 65 3e 62 75 dard.build.options.to.a.<code>bu
28760 69 6c 64 2e 7a 69 67 3c 2f 63 6f 64 65 3e 20 66 69 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a ild.zig</code>.file:.......</p>.
28780 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 63 6f 6e 73 ......<pre><code.class="sh">cons
287a0 74 20 42 75 69 6c 64 65 72 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 62 75 69 6c 64 t.Builder.=.@import("std").build
287c0 2e 42 75 69 6c 64 65 72 3b 0a 0a 70 75 62 20 66 6e 20 62 75 69 6c 64 28 62 3a 20 26 61 6d 70 3b .Builder;..pub.fn.build(b:.&amp;
287e0 42 75 69 6c 64 65 72 29 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 65 78 65 20 3d 20 62 2e 61 64 64 Builder).{.....const.exe.=.b.add
28800 45 78 65 63 75 74 61 62 6c 65 28 22 65 78 61 6d 70 6c 65 22 2c 20 22 65 78 61 6d 70 6c 65 2e 7a Executable("example",."example.z
28820 69 67 22 29 3b 0a 20 20 20 20 65 78 65 2e 73 65 74 42 75 69 6c 64 4d 6f 64 65 28 62 2e 73 74 61 ig");.....exe.setBuildMode(b.sta
28840 6e 64 61 72 64 52 65 6c 65 61 73 65 4f 70 74 69 6f 6e 73 28 29 29 3b 0a 20 20 20 20 62 2e 64 65 ndardReleaseOptions());.....b.de
28860 66 61 75 6c 74 5f 73 74 65 70 2e 64 65 70 65 6e 64 4f 6e 28 26 61 6d 70 3b 65 78 65 2e 73 74 65 fault_step.dependOn(&amp;exe.ste
28880 70 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 p);.}</code></pre>.......<p>....
288a0 20 20 20 54 68 69 73 20 63 61 75 73 65 73 20 74 68 65 73 65 20 6f 70 74 69 6f 6e 73 20 74 6f 20 ...This.causes.these.options.to.
288c0 62 65 20 61 76 61 69 6c 61 62 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c be.available:.......</p>.......<
288e0 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 20 20 2d 44 72 65 6c 65 61 73 65 pre><code.class="sh">..-Drelease
28900 2d 73 61 66 65 3d 28 62 6f 6f 6c 29 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 6f 6e 20 61 -safe=(bool)..optimizations.on.a
28920 6e 64 20 73 61 66 65 74 79 20 6f 6e 0a 20 20 2d 44 72 65 6c 65 61 73 65 2d 66 61 73 74 3d 28 62 nd.safety.on...-Drelease-fast=(b
28940 6f 6f 6c 29 20 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 20 6f 6e 20 61 6e 64 20 73 61 66 65 74 ool)..optimizations.on.and.safet
28960 79 20 6f 66 66 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d y.off</code></pre>.......<h3.id=
28980 22 62 75 69 6c 64 2d 6d 6f 64 65 2d 64 65 62 75 67 22 3e 44 65 62 75 67 3c 2f 68 32 3e 0a 20 20 "build-mode-debug">Debug</h2>...
289a0 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 ....<pre><code.class="sh">$.zig.
289c0 62 75 69 6c 64 2d 65 78 65 20 65 78 61 6d 70 6c 65 2e 7a 69 67 3c 2f 63 6f 64 65 3e 3c 2f 70 72 build-exe.example.zig</code></pr
289e0 65 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 46 61 73 74 20 63 e>.......<ul>.........<li>Fast.c
28a00 6f 6d 70 69 6c 61 74 69 6f 6e 20 73 70 65 65 64 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c ompilation.speed</li>.........<l
28a20 69 3e 53 61 66 65 74 79 20 63 68 65 63 6b 73 20 65 6e 61 62 6c 65 64 3c 2f 6c 69 3e 0a 20 20 20 i>Safety.checks.enabled</li>....
28a40 20 20 20 20 20 3c 6c 69 3e 53 6c 6f 77 20 72 75 6e 74 69 6d 65 20 70 65 72 66 6f 72 6d 61 6e 63 .....<li>Slow.runtime.performanc
28a60 65 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d e</li>.......</ul>.......<h3.id=
28a80 22 62 75 69 6c 64 2d 6d 6f 64 65 2d 72 65 6c 65 61 73 65 2d 66 61 73 74 22 3e 52 65 6c 65 61 73 "build-mode-release-fast">Releas
28aa0 65 46 61 73 74 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 eFast</h2>.......<pre><code.clas
28ac0 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 65 78 61 6d 70 6c 65 2e 7a s="sh">$.zig.build-exe.example.z
28ae0 69 67 20 2d 2d 72 65 6c 65 61 73 65 2d 66 61 73 74 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 ig.--release-fast</code></pre>..
28b00 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 46 61 73 74 20 72 75 6e 74 69 .....<ul>.........<li>Fast.runti
28b20 6d 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e me.performance</li>.........<li>
28b40 53 61 66 65 74 79 20 63 68 65 63 6b 73 20 64 69 73 61 62 6c 65 64 3c 2f 6c 69 3e 0a 20 20 20 20 Safety.checks.disabled</li>.....
28b60 20 20 20 20 3c 6c 69 3e 53 6c 6f 77 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 73 70 65 65 64 3c 2f ....<li>Slow.compilation.speed</
28b80 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 62 75 li>.......</ul>.......<h3.id="bu
28ba0 69 6c 64 2d 6d 6f 64 65 2d 72 65 6c 65 61 73 65 2d 73 61 66 65 22 3e 52 65 6c 65 61 73 65 53 61 ild-mode-release-safe">ReleaseSa
28bc0 66 65 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 fe</h2>.......<pre><code.class="
28be0 73 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 65 78 61 6d 70 6c 65 2e 7a 69 67 20 sh">$.zig.build-exe.example.zig.
28c00 2d 2d 72 65 6c 65 61 73 65 2d 73 61 66 65 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 --release-safe</code></pre>.....
28c20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 4d 65 64 69 75 6d 20 72 75 6e 74 69 6d ..<ul>.........<li>Medium.runtim
28c40 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 53 e.performance</li>.........<li>S
28c60 61 66 65 74 79 20 63 68 65 63 6b 73 20 65 6e 61 62 6c 65 64 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 afety.checks.enabled</li>.......
28c80 20 20 3c 6c 69 3e 53 6c 6f 77 20 63 6f 6d 70 69 6c 61 74 69 6f 6e 20 73 70 65 65 64 3c 2f 6c 69 ..<li>Slow.compilation.speed</li
28ca0 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a >.......</ul>.......<p>See.also:
28cc0 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 </p>.......<ul>.........<li><a.h
28ce0 72 65 66 3d 22 23 63 6f 6d 70 69 6c 65 2d 76 61 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 ref="#compile-variables">Compile
28d00 20 56 61 72 69 61 62 6c 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e .Variables</a></li>.........<li>
28d20 3c 61 20 68 72 65 66 3d 22 23 7a 69 67 2d 62 75 69 6c 64 2d 73 79 73 74 65 6d 22 3e 5a 69 67 20 <a.href="#zig-build-system">Zig.
28d40 42 75 69 6c 64 20 53 79 73 74 65 6d 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c Build.System</a></li>.........<l
28d60 69 3e 3c 61 20 68 72 65 66 3d 22 23 75 6e 64 65 66 69 6e 65 64 2d 62 65 68 61 76 69 6f 72 22 3e i><a.href="#undefined-behavior">
28d80 55 6e 64 65 66 69 6e 65 64 20 42 65 68 61 76 69 6f 72 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 Undefined.Behavior</a></li>.....
28da0 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 75 6e 64 65 66 69 6e 65 64 2d ..</ul>.......<h2.id="undefined-
28dc0 62 65 68 61 76 69 6f 72 22 3e 55 6e 64 65 66 69 6e 65 64 20 42 65 68 61 76 69 6f 72 3c 2f 68 32 behavior">Undefined.Behavior</h2
28de0 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 20 68 61 73 20 6d 61 6e 79 20 69 >.......<p>.......Zig.has.many.i
28e00 6e 73 74 61 6e 63 65 73 20 6f 66 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 2e 20 nstances.of.undefined.behavior..
28e20 49 66 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 76 69 6f 72 20 69 73 0a 20 20 20 20 20 20 64 If.undefined.behavior.is.......d
28e40 65 74 65 63 74 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 2c 20 5a 69 67 20 65 6d 69 etected.at.compile-time,.Zig.emi
28e60 74 73 20 61 6e 20 65 72 72 6f 72 2e 20 4d 6f 73 74 20 75 6e 64 65 66 69 6e 65 64 20 62 65 68 61 ts.an.error..Most.undefined.beha
28e80 76 69 6f 72 20 74 68 61 74 0a 20 20 20 20 20 20 63 61 6e 6e 6f 74 20 62 65 20 64 65 74 65 63 74 vior.that.......cannot.be.detect
28ea0 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 63 61 6e 20 62 65 20 64 65 74 65 63 74 ed.at.compile-time.can.be.detect
28ec0 65 64 20 61 74 20 72 75 6e 74 69 6d 65 2e 20 49 6e 20 74 68 65 73 65 20 63 61 73 65 73 2c 0a 20 ed.at.runtime..In.these.cases,..
28ee0 20 20 20 20 20 5a 69 67 20 68 61 73 20 73 61 66 65 74 79 20 63 68 65 63 6b 73 2e 20 53 61 66 65 .....Zig.has.safety.checks..Safe
28f00 74 79 20 63 68 65 63 6b 73 20 63 61 6e 20 62 65 20 64 69 73 61 62 6c 65 64 20 6f 6e 20 61 20 70 ty.checks.can.be.disabled.on.a.p
28f20 65 72 2d 62 6c 6f 63 6b 20 62 61 73 69 73 0a 20 20 20 20 20 20 77 69 74 68 20 3c 63 6f 64 65 3e er-block.basis.......with.<code>
28f40 40 73 65 74 44 65 62 75 67 53 61 66 65 74 79 3c 2f 63 6f 64 65 3e 2e 20 54 68 65 20 3c 61 20 68 @setDebugSafety</code>..The.<a.h
28f60 72 65 66 3d 22 23 62 75 69 6c 64 2d 6d 6f 64 65 2d 72 65 6c 65 61 73 65 2d 66 61 73 74 22 3e 52 ref="#build-mode-release-fast">R
28f80 65 6c 65 61 73 65 46 61 73 74 3c 2f 61 3e 0a 20 20 20 20 20 20 62 75 69 6c 64 20 6d 6f 64 65 20 eleaseFast</a>.......build.mode.
28fa0 64 69 73 61 62 6c 65 73 20 61 6c 6c 20 73 61 66 65 74 79 20 63 68 65 63 6b 73 20 69 6e 20 6f 72 disables.all.safety.checks.in.or
28fc0 64 65 72 20 74 6f 20 66 61 63 69 6c 69 74 61 74 65 20 6f 70 74 69 6d 69 7a 61 74 69 6f 6e 73 2e der.to.facilitate.optimizations.
28fe0 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 57 68 65 6e .......</p>.......<p>.......When
29000 20 61 20 73 61 66 65 74 79 20 63 68 65 63 6b 20 66 61 69 6c 73 2c 20 5a 69 67 20 63 72 61 73 68 .a.safety.check.fails,.Zig.crash
29020 65 73 20 77 69 74 68 20 61 20 73 74 61 63 6b 20 74 72 61 63 65 2c 20 6c 69 6b 65 20 74 68 69 73 es.with.a.stack.trace,.like.this
29040 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c :.......</p>.......<pre><code.cl
29060 61 73 73 3d 22 7a 69 67 22 3e 74 65 73 74 20 22 73 61 66 65 74 79 20 63 68 65 63 6b 22 20 7b 0a ass="zig">test."safety.check".{.
29080 20 20 20 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a ....unreachable;.}</code></pre>.
290a0 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 ......<pre><code.class="sh">$.zi
290c0 67 20 74 65 73 74 20 74 65 73 74 2e 7a 69 67 0a 54 65 73 74 20 31 2f 31 20 73 61 66 65 74 79 20 g.test.test.zig.Test.1/1.safety.
290e0 63 68 65 63 6b 2e 2e 2e 72 65 61 63 68 65 64 20 75 6e 72 65 61 63 68 61 62 6c 65 20 63 6f 64 65 check...reached.unreachable.code
29100 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 ./home/andy/dev/zig/build/lib/zi
29120 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 7a 69 67 72 74 2e 7a 69 67 3a 31 36 3a 33 35 3a 20 30 g/std/special/zigrt.zig:16:35:.0
29140 78 30 30 30 30 30 30 30 30 30 30 32 30 33 33 31 63 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a x000000000020331c.in.???.(test).
29160 20 20 20 20 20 20 20 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 70 61 6e ........@import("std").debug.pan
29180 69 63 28 22 7b 7d 22 2c 20 6d 65 73 73 61 67 65 5f 70 74 72 5b 30 2e 2e 2e 6d 65 73 73 61 67 65 ic("{}",.message_ptr[0...message
291a0 5f 6c 65 6e 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 _len]);.........................
291c0 20 20 20 20 20 20 20 20 20 20 5e 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 ..........^./home/andy/dev/zig/b
291e0 75 69 6c 64 2f 74 65 73 74 2e 7a 69 67 3a 32 3a 35 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 uild/test.zig:2:5:.0x00000000002
29200 30 33 32 39 37 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 20 20 75 6e 72 65 61 63 68 61 03297.in.???.(test).....unreacha
29220 62 6c 65 3b 0a 20 20 20 20 5e 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 ble;.....^./home/andy/dev/zig/bu
29240 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 74 65 73 74 5f 72 75 6e ild/lib/zig/std/special/test_run
29260 6e 65 72 2e 7a 69 67 3a 39 3a 32 31 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 31 34 62 30 61 ner.zig:9:21:.0x0000000000214b0a
29280 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 20 20 20 20 20 20 74 65 73 74 5f 66 6e 2e 66 .in.???.(test).........test_fn.f
292a0 75 6e 63 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 2f 68 6f unc();.....................^./ho
292c0 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 me/andy/dev/zig/build/lib/zig/st
292e0 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 2e 7a 69 67 3a 35 30 3a 32 31 3a 20 30 d/special/bootstrap.zig:50:21:.0
29300 78 30 30 30 30 30 30 30 30 30 30 32 31 34 61 31 37 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a x0000000000214a17.in.???.(test).
29320 20 20 20 20 72 65 74 75 72 6e 20 72 6f 6f 74 2e 6d 61 69 6e 28 29 3b 0a 20 20 20 20 20 20 20 20 ....return.root.main();.........
29340 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 ............^./home/andy/dev/zig
29360 2f 62 75 69 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 /build/lib/zig/std/special/boots
29380 74 72 61 70 2e 7a 69 67 3a 33 37 3a 31 33 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 31 34 38 trap.zig:37:13:.0x00000000002148
293a0 64 30 20 69 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 20 20 63 61 6c 6c 4d 61 69 6e 28 61 72 d0.in.???.(test).....callMain(ar
293c0 67 63 2c 20 61 72 67 76 2c 20 65 6e 76 70 29 20 25 25 20 65 78 69 74 28 31 29 3b 0a 20 20 20 20 gc,.argv,.envp).%%.exit(1);.....
293e0 20 20 20 20 20 20 20 20 5e 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 ........^./home/andy/dev/zig/bui
29400 6c 64 2f 6c 69 62 2f 7a 69 67 2f 73 74 64 2f 73 70 65 63 69 61 6c 2f 62 6f 6f 74 73 74 72 61 70 ld/lib/zig/std/special/bootstrap
29420 2e 7a 69 67 3a 33 30 3a 32 30 3a 20 30 78 30 30 30 30 30 30 30 30 30 30 32 31 34 38 32 30 20 69 .zig:30:20:.0x0000000000214820.i
29440 6e 20 3f 3f 3f 20 28 74 65 73 74 29 0a 20 20 20 20 63 61 6c 6c 4d 61 69 6e 41 6e 64 45 78 69 74 n.???.(test).....callMainAndExit
29460 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 0a 0a 54 65 73 74 73 20 66 ()....................^..Tests.f
29480 61 69 6c 65 64 2e 20 55 73 65 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6d 6d 61 6e 64 ailed..Use.the.following.command
294a0 20 74 6f 20 72 65 70 72 6f 64 75 63 65 20 74 68 65 20 66 61 69 6c 75 72 65 3a 0a 2e 2f 74 65 73 .to.reproduce.the.failure:../tes
294c0 74 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 75 6e 64 t</code></pre>.......<h3.id="und
294e0 65 66 2d 75 6e 72 65 61 63 68 61 62 6c 65 22 3e 52 65 61 63 68 69 6e 67 20 55 6e 72 65 61 63 68 ef-unreachable">Reaching.Unreach
29500 61 62 6c 65 20 43 6f 64 65 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 63 6f 6d 70 69 able.Code</h3>.......<p>At.compi
29520 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c le-time:</p>.......<pre><code.cl
29540 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 61 73 73 65 72 74 28 ass="zig">comptime.{.....assert(
29560 66 61 6c 73 65 29 3b 0a 7d 0a 66 6e 20 61 73 73 65 72 74 28 6f 6b 3a 20 62 6f 6f 6c 29 20 7b 0a false);.}.fn.assert(ok:.bool).{.
29580 20 20 20 20 69 66 20 28 21 6f 6b 29 20 75 6e 72 65 61 63 68 61 62 6c 65 3b 20 2f 2f 20 61 73 73 ....if.(!ok).unreachable;.//.ass
295a0 65 72 74 69 6f 6e 20 66 61 69 6c 75 72 65 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 ertion.failure.}</code></pre>...
295c0 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 ....<pre><code.class="sh">$.zig.
295e0 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 2e 7a 69 67 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 build-obj.test.zig./home/andy/de
29600 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 31 34 3a 20 65 72 72 6f 72 v/zig/build/test.zig:5:14:.error
29620 3a 20 75 6e 61 62 6c 65 20 74 6f 20 65 76 61 6c 75 61 74 65 20 63 6f 6e 73 74 61 6e 74 20 65 78 :.unable.to.evaluate.constant.ex
29640 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 69 66 20 28 21 6f 6b 29 20 75 6e 72 65 61 63 68 61 62 6c pression.....if.(!ok).unreachabl
29660 65 3b 20 2f 2f 20 61 73 73 65 72 74 69 6f 6e 20 66 61 69 6c 75 72 65 0a 20 20 20 20 20 20 20 20 e;.//.assertion.failure.........
29680 20 20 20 20 20 5e 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f .....^./home/andy/dev/zig/build/
296a0 74 65 73 74 2e 7a 69 67 3a 32 3a 31 31 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 64 20 66 72 6f 6d test.zig:2:11:.note:.called.from
296c0 20 68 65 72 65 0a 20 20 20 20 61 73 73 65 72 74 28 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 .here.....assert(false);........
296e0 20 20 20 5e 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 74 65 ...^./home/andy/dev/zig/build/te
29700 73 74 2e 7a 69 67 3a 31 3a 31 30 3a 20 6e 6f 74 65 3a 20 63 61 6c 6c 65 64 20 66 72 6f 6d 20 68 st.zig:1:10:.note:.called.from.h
29720 65 72 65 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 20 20 20 20 20 5e 3c 2f 63 6f 64 65 3e ere.comptime.{..........^</code>
29740 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 </pre>.......<p>At.runtime.crash
29760 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 72 65 61 63 68 65 es.with.the.message.<code>reache
29780 64 20 75 6e 72 65 61 63 68 61 62 6c 65 20 63 6f 64 65 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 d.unreachable.code</code>.and.a.
297a0 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 75 stack.trace.</p>.......<h3.id="u
297c0 6e 64 65 66 2d 69 6e 64 65 78 2d 6f 75 74 2d 6f 66 2d 62 6f 75 6e 64 73 22 3e 49 6e 64 65 78 20 ndef-index-out-of-bounds">Index.
297e0 6f 75 74 20 6f 66 20 42 6f 75 6e 64 73 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 63 out.of.Bounds</h3>.......<p>At.c
29800 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 ompile-time:</p>.......<pre><cod
29820 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 6f 6e e.class="zig">comptime.{.....con
29840 73 74 20 61 72 72 61 79 20 3d 20 22 68 65 6c 6c 6f 22 3b 0a 20 20 20 20 63 6f 6e 73 74 20 67 61 st.array.=."hello";.....const.ga
29860 72 62 61 67 65 20 3d 20 61 72 72 61 79 5b 35 5d 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e rbage.=.array[5];.}</code></pre>
29880 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a .......<pre><code.class="sh">$.z
298a0 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 2e 7a 69 67 0a 2f 68 6f 6d 65 2f 61 6e 64 79 ig.build-obj.test.zig./home/andy
298c0 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 32 36 3a 20 65 72 /dev/zig/build/test.zig:3:26:.er
298e0 72 6f 72 3a 20 69 6e 64 65 78 20 35 20 6f 75 74 73 69 64 65 20 61 72 72 61 79 20 6f 66 20 73 69 ror:.index.5.outside.array.of.si
29900 7a 65 20 35 0a 20 20 20 20 63 6f 6e 73 74 20 67 61 72 62 61 67 65 20 3d 20 61 72 72 61 79 5b 35 ze.5.....const.garbage.=.array[5
29920 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 3c 2f 63 ];..........................^</c
29940 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 ode></pre>.......<p>At.runtime.c
29960 72 61 73 68 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 69 6e rashes.with.the.message.<code>in
29980 64 65 78 20 6f 75 74 20 6f 66 20 62 6f 75 6e 64 73 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 73 dex.out.of.bounds</code>.and.a.s
299a0 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 75 6e tack.trace.</p>.......<h3.id="un
299c0 64 65 66 2d 63 61 73 74 2d 6e 65 67 61 74 69 76 65 2d 75 6e 73 69 67 6e 65 64 22 3e 43 61 73 74 def-cast-negative-unsigned">Cast
299e0 20 4e 65 67 61 74 69 76 65 20 4e 75 6d 62 65 72 20 74 6f 20 55 6e 73 69 67 6e 65 64 20 49 6e 74 .Negative.Number.to.Unsigned.Int
29a00 65 67 65 72 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 63 6f 6d 70 69 6c 65 2d 74 69 eger</h3>.......<p>At.compile-ti
29a20 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 me:</p>.......<pre><code.class="
29a40 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 76 61 6c 75 65 3a zig">comptime.{.....const.value:
29a60 20 69 33 32 20 3d 20 2d 31 3b 0a 20 20 20 20 63 6f 6e 73 74 20 75 6e 73 69 67 6e 65 64 20 3d 20 .i32.=.-1;.....const.unsigned.=.
29a80 75 33 32 28 76 61 6c 75 65 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 u32(value);.}</code></pre>......
29aa0 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 .<pre><code.class="sh">$.zig.bui
29ac0 6c 64 2d 6f 62 6a 20 74 65 73 74 2e 7a 69 67 20 74 65 73 74 2e 7a 69 67 3a 33 3a 32 35 3a 20 65 ld-obj.test.zig.test.zig:3:25:.e
29ae0 72 72 6f 72 3a 20 61 74 74 65 6d 70 74 20 74 6f 20 63 61 73 74 20 6e 65 67 61 74 69 76 65 20 76 rror:.attempt.to.cast.negative.v
29b00 61 6c 75 65 20 74 6f 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 0a 20 20 20 20 63 6f 6e alue.to.unsigned.integer.....con
29b20 73 74 20 75 6e 73 69 67 6e 65 64 20 3d 20 75 33 32 28 76 61 6c 75 65 29 3b 0a 20 20 20 20 20 20 st.unsigned.=.u32(value);.......
29b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e ..................^</code></pre>
29b60 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 20 77 69 74 .......<p>At.runtime.crashes.wit
29b80 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 61 74 74 65 6d 70 74 20 74 6f 20 63 h.the.message.<code>attempt.to.c
29ba0 61 73 74 20 6e 65 67 61 74 69 76 65 20 76 61 6c 75 65 20 74 6f 20 75 6e 73 69 67 6e 65 64 20 69 ast.negative.value.to.unsigned.i
29bc0 6e 74 65 67 65 72 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e nteger</code>.and.a.stack.trace.
29be0 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 49 66 20 79 6f 75 20 61 72 65 20 </p>.......<p>.......If.you.are.
29c00 74 72 79 69 6e 67 20 74 6f 20 6f 62 74 61 69 6e 20 74 68 65 20 6d 61 78 69 6d 75 6d 20 76 61 6c trying.to.obtain.the.maximum.val
29c20 75 65 20 6f 66 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 65 67 65 72 2c 20 75 73 65 20 3c ue.of.an.unsigned.integer,.use.<
29c40 63 6f 64 65 3e 40 6d 61 78 56 61 6c 75 65 28 54 29 3c 2f 63 6f 64 65 3e 2c 0a 20 20 20 20 20 20 code>@maxValue(T)</code>,.......
29c60 77 68 65 72 65 20 3c 63 6f 64 65 3e 54 3c 2f 63 6f 64 65 3e 20 69 73 20 74 68 65 20 69 6e 74 65 where.<code>T</code>.is.the.inte
29c80 67 65 72 20 74 79 70 65 2c 20 73 75 63 68 20 61 73 20 3c 63 6f 64 65 3e 75 33 32 3c 2f 63 6f 64 ger.type,.such.as.<code>u32</cod
29ca0 65 3e 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 75 6e 64 e>........</p>.......<h3.id="und
29cc0 65 66 2d 63 61 73 74 2d 74 72 75 6e 63 61 74 65 73 2d 64 61 74 61 22 3e 43 61 73 74 20 54 72 75 ef-cast-truncates-data">Cast.Tru
29ce0 6e 63 61 74 65 73 20 44 61 74 61 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 63 6f 6d ncates.Data</h3>.......<p>At.com
29d00 70 69 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 pile-time:</p>.......<pre><code.
29d20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 6f 6e 73 74 class="zig">comptime.{.....const
29d40 20 73 70 61 72 74 61 6e 5f 63 6f 75 6e 74 3a 20 75 31 36 20 3d 20 33 30 30 3b 0a 20 20 20 20 63 .spartan_count:.u16.=.300;.....c
29d60 6f 6e 73 74 20 62 79 74 65 20 3d 20 75 38 28 73 70 61 72 74 61 6e 5f 63 6f 75 6e 74 29 3b 0a 7d onst.byte.=.u8(spartan_count);.}
29d80 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 </code></pre>.......<pre><code.c
29da0 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 2e 7a lass="sh">$.zig.build-obj.test.z
29dc0 69 67 0a 74 65 73 74 2e 7a 69 67 3a 33 3a 32 30 3a 20 65 72 72 6f 72 3a 20 63 61 73 74 20 66 72 ig.test.zig:3:20:.error:.cast.fr
29de0 6f 6d 20 27 75 31 36 27 20 74 6f 20 27 75 38 27 20 74 72 75 6e 63 61 74 65 73 20 62 69 74 73 0a om.'u16'.to.'u8'.truncates.bits.
29e00 20 20 20 20 63 6f 6e 73 74 20 62 79 74 65 20 3d 20 75 38 28 73 70 61 72 74 61 6e 5f 63 6f 75 6e ....const.byte.=.u8(spartan_coun
29e20 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 3c 2f 63 6f 64 65 3e 3c t);....................^</code><
29e40 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 65 /pre>.......<p>At.runtime.crashe
29e60 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 69 6e 74 65 67 65 72 s.with.the.message.<code>integer
29e80 20 63 61 73 74 20 74 72 75 6e 63 61 74 65 64 20 62 69 74 73 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 .cast.truncated.bits</code>.and.
29ea0 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 a.stack.trace.</p>.......<p>....
29ec0 20 20 20 49 66 20 79 6f 75 20 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 74 72 75 6e 63 61 74 65 ...If.you.are.trying.to.truncate
29ee0 20 62 69 74 73 2c 20 75 73 65 20 3c 63 6f 64 65 3e 40 74 72 75 6e 63 61 74 65 28 54 2c 20 76 61 .bits,.use.<code>@truncate(T,.va
29f00 6c 75 65 29 3c 2f 63 6f 64 65 3e 2c 0a 20 20 20 20 20 20 77 68 65 72 65 20 3c 63 6f 64 65 3e 54 lue)</code>,.......where.<code>T
29f20 3c 2f 63 6f 64 65 3e 20 69 73 20 74 68 65 20 69 6e 74 65 67 65 72 20 74 79 70 65 2c 20 73 75 63 </code>.is.the.integer.type,.suc
29f40 68 20 61 73 20 3c 63 6f 64 65 3e 75 33 32 3c 2f 63 6f 64 65 3e 2c 20 61 6e 64 20 3c 63 6f 64 65 h.as.<code>u32</code>,.and.<code
29f60 3e 76 61 6c 75 65 3c 2f 63 6f 64 65 3e 0a 20 20 20 20 20 20 69 73 20 74 68 65 20 76 61 6c 75 65 >value</code>.......is.the.value
29f80 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 74 72 75 6e 63 61 74 65 2e 0a 20 20 20 20 20 20 3c 2f 70 .you.want.to.truncate........</p
29fa0 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 75 6e 64 65 66 2d 69 6e 74 65 67 65 72 2d 6f 76 >.......<h3.id="undef-integer-ov
29fc0 65 72 66 6c 6f 77 22 3e 49 6e 74 65 67 65 72 20 4f 76 65 72 66 6c 6f 77 3c 2f 68 33 3e 0a 20 20 erflow">Integer.Overflow</h3>...
29fe0 20 20 20 20 3c 68 34 20 69 64 3d 22 75 6e 64 65 66 2d 69 6e 74 2d 6f 76 65 72 66 6c 6f 77 2d 64 ....<h4.id="undef-int-overflow-d
2a000 65 66 61 75 6c 74 22 3e 44 65 66 61 75 6c 74 20 4f 70 65 72 61 74 69 6f 6e 73 3c 2f 68 34 3e 0a efault">Default.Operations</h4>.
2a020 20 20 20 20 20 20 3c 70 3e 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 70 65 72 61 74 6f 72 73 ......<p>The.following.operators
2a040 20 63 61 6e 20 63 61 75 73 65 20 69 6e 74 65 67 65 72 20 6f 76 65 72 66 6c 6f 77 3a 3c 2f 70 3e .can.cause.integer.overflow:</p>
2a060 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 2b 3c .......<ul>.........<li><code>+<
2a080 2f 63 6f 64 65 3e 20 28 61 64 64 69 74 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c /code>.(addition)</li>.........<
2a0a0 6c 69 3e 3c 63 6f 64 65 3e 2d 3c 2f 63 6f 64 65 3e 20 28 73 75 62 74 72 61 63 74 69 6f 6e 29 3c li><code>-</code>.(subtraction)<
2a0c0 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 2d 3c 2f 63 6f 64 65 3e 20 /li>.........<li><code>-</code>.
2a0e0 28 6e 65 67 61 74 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 (negation)</li>.........<li><cod
2a100 65 3e 2a 3c 2f 63 6f 64 65 3e 20 28 6d 75 6c 74 69 70 6c 69 63 61 74 69 6f 6e 29 3c 2f 6c 69 3e e>*</code>.(multiplication)</li>
2a120 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 2f 3c 2f 63 6f 64 65 3e 20 28 64 69 76 .........<li><code>/</code>.(div
2a140 69 73 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 ision)</li>.........<li><code>@d
2a160 69 76 54 72 75 6e 63 3c 2f 63 6f 64 65 3e 20 28 64 69 76 69 73 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 ivTrunc</code>.(division)</li>..
2a180 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 64 69 76 46 6c 6f 6f 72 3c 2f 63 6f 64 65 .......<li><code>@divFloor</code
2a1a0 3e 20 28 64 69 76 69 73 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 >.(division)</li>.........<li><c
2a1c0 6f 64 65 3e 40 64 69 76 45 78 61 63 74 3c 2f 63 6f 64 65 3e 20 28 64 69 76 69 73 69 6f 6e 29 3c ode>@divExact</code>.(division)<
2a1e0 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 45 78 61 6d 70 6c /li>.......</ul>.......<p>Exampl
2a200 65 20 77 69 74 68 20 61 64 64 69 74 69 6f 6e 20 61 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a e.with.addition.at.compile-time:
2a220 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 </p>.......<pre><code.class="zig
2a240 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 76 61 72 20 62 79 74 65 3a 20 75 38 20 3d 20 ">comptime.{.....var.byte:.u8.=.
2a260 32 35 35 3b 0a 20 20 20 20 62 79 74 65 20 2b 3d 20 31 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 255;.....byte.+=.1;.}</code></pr
2a280 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 e>.......<pre><code.class="sh">$
2a2a0 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 2e 7a 69 67 0a 2f 68 6f 6d 65 2f 61 6e .zig.build-obj.test.zig./home/an
2a2c0 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 74 65 73 74 2e 7a 69 67 3a 33 3a 31 30 3a 20 dy/dev/zig/build/test.zig:3:10:.
2a2e0 65 72 72 6f 72 3a 20 6f 70 65 72 61 74 69 6f 6e 20 63 61 75 73 65 64 20 6f 76 65 72 66 6c 6f 77 error:.operation.caused.overflow
2a300 0a 20 20 20 20 62 79 74 65 20 2b 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 5e 3c 2f 63 6f 64 65 .....byte.+=.1;..........^</code
2a320 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 ></pre>.......<p>At.runtime.cras
2a340 68 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 69 6e 74 65 67 hes.with.the.message.<code>integ
2a360 65 72 20 6f 76 65 72 66 6c 6f 77 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 er.overflow</code>.and.a.stack.t
2a380 72 61 63 65 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 34 20 69 64 3d 22 75 6e 64 65 66 2d 69 6e race.</p>.......<h4.id="undef-in
2a3a0 74 2d 6f 76 65 72 66 6c 6f 77 2d 73 74 64 22 3e 53 74 61 6e 64 61 72 64 20 4c 69 62 72 61 72 79 t-overflow-std">Standard.Library
2a3c0 20 4d 61 74 68 20 46 75 6e 63 74 69 6f 6e 73 3c 2f 68 34 3e 0a 20 20 20 20 20 20 3c 70 3e 54 68 .Math.Functions</h4>.......<p>Th
2a3e0 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 70 72 6f 76 69 64 65 64 20 62 79 20 74 68 65 20 73 74 ese.functions.provided.by.the.st
2a400 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 20 72 65 74 75 72 6e 20 70 6f 73 73 69 62 6c 65 20 65 andard.library.return.possible.e
2a420 72 72 6f 72 73 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c rrors.</p>.......<ul>.........<l
2a440 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 2e 61 64 64 3c i><code>@import("std").math.add<
2a460 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 /code></li>.........<li><code>@i
2a480 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 2e 73 75 62 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 mport("std").math.sub</code></li
2a4a0 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 >.........<li><code>@import("std
2a4c0 22 29 2e 6d 61 74 68 2e 6d 75 6c 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 ").math.mul</code></li>.........
2a4e0 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 2e 64 69 <li><code>@import("std").math.di
2a500 76 54 72 75 6e 63 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c vTrunc</code></li>.........<li><
2a520 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 2e 64 69 76 46 6c 6f 6f code>@import("std").math.divFloo
2a540 72 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e r</code></li>.........<li><code>
2a560 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 2e 64 69 76 45 78 61 63 74 3c 2f 63 6f @import("std").math.divExact</co
2a580 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 69 6d 70 6f de></li>.........<li><code>@impo
2a5a0 72 74 28 22 73 74 64 22 29 2e 6d 61 74 68 2e 73 68 6c 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 rt("std").math.shl</code></li>..
2a5c0 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 45 78 61 6d 70 6c 65 20 6f 66 20 63 .....</ul>.......<p>Example.of.c
2a5e0 61 74 63 68 69 6e 67 20 61 6e 20 6f 76 65 72 66 6c 6f 77 20 66 6f 72 20 61 64 64 69 74 69 6f 6e atching.an.overflow.for.addition
2a600 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 :</p>.......<pre><code.class="zi
2a620 67 22 3e 63 6f 6e 73 74 20 6d 61 74 68 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 6d g">const.math.=.@import("std").m
2a640 61 74 68 3b 0a 63 6f 6e 73 74 20 69 6f 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 69 ath;.const.io.=.@import("std").i
2a660 6f 3b 0a 70 75 62 20 66 6e 20 6d 61 69 6e 28 29 20 2d 26 67 74 3b 20 25 76 6f 69 64 20 7b 0a 20 o;.pub.fn.main().-&gt;.%void.{..
2a680 20 20 20 76 61 72 20 62 79 74 65 3a 20 75 38 20 3d 20 32 35 35 3b 0a 0a 20 20 20 20 62 79 74 65 ...var.byte:.u8.=.255;......byte
2a6a0 20 3d 20 69 66 20 28 6d 61 74 68 2e 61 64 64 28 75 38 2c 20 62 79 74 65 2c 20 31 29 29 20 7c 72 .=.if.(math.add(u8,.byte,.1)).|r
2a6c0 65 73 75 6c 74 7c 20 7b 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 0a 20 20 20 20 7d 20 65 6c esult|.{.........result.....}.el
2a6e0 73 65 20 7c 65 72 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 25 25 69 6f 2e 73 74 64 65 72 72 2e 70 se.|err|.{.........%%io.stderr.p
2a700 72 69 6e 74 66 28 22 75 6e 61 62 6c 65 20 74 6f 20 61 64 64 20 6f 6e 65 3a 20 7b 7d 5c 6e 22 2c rintf("unable.to.add.one:.{}\n",
2a720 20 40 65 72 72 6f 72 4e 61 6d 65 28 65 72 72 29 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 .@errorName(err));.........retur
2a740 6e 20 65 72 72 3b 0a 20 20 20 20 7d 3b 0a 0a 20 20 20 20 25 25 69 6f 2e 73 74 64 65 72 72 2e 70 n.err;.....};......%%io.stderr.p
2a760 72 69 6e 74 66 28 22 72 65 73 75 6c 74 3a 20 7b 7d 5c 6e 22 2c 20 62 79 74 65 29 3b 0a 7d 3c 2f rintf("result:.{}\n",.byte);.}</
2a780 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 code></pre>.......<pre><code.cla
2a7a0 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 74 65 73 74 2e 7a 69 67 ss="sh">$.zig.build-exe.test.zig
2a7c0 0a 24 20 2e 2f 74 65 73 74 0a 75 6e 61 62 6c 65 20 74 6f 20 61 64 64 20 6f 6e 65 3a 20 4f 76 65 .$../test.unable.to.add.one:.Ove
2a7e0 72 66 6c 6f 77 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 34 20 69 64 3d rflow</code></pre>.......<h4.id=
2a800 22 75 6e 64 65 66 2d 69 6e 74 2d 6f 76 65 72 66 6c 6f 77 2d 62 75 69 6c 74 69 6e 22 3e 42 75 69 "undef-int-overflow-builtin">Bui
2a820 6c 74 69 6e 20 4f 76 65 72 66 6c 6f 77 20 46 75 6e 63 74 69 6f 6e 73 3c 2f 68 34 3e 0a 20 20 20 ltin.Overflow.Functions</h4>....
2a840 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 73 65 20 62 75 69 6c 74 69 6e 73 20 72 65 74 75 ...<p>.......These.builtins.retu
2a860 72 6e 20 61 20 3c 63 6f 64 65 3e 62 6f 6f 6c 3c 2f 63 6f 64 65 3e 20 6f 66 20 77 68 65 74 68 65 rn.a.<code>bool</code>.of.whethe
2a880 72 20 6f 72 20 6e 6f 74 20 6f 76 65 72 66 6c 6f 77 0a 20 20 20 20 20 20 6f 63 63 75 72 72 65 64 r.or.not.overflow.......occurred
2a8a0 2c 20 61 73 20 77 65 6c 6c 20 61 73 20 72 65 74 75 72 6e 69 6e 67 20 74 68 65 20 6f 76 65 72 66 ,.as.well.as.returning.the.overf
2a8c0 6c 6f 77 65 64 20 62 69 74 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c lowed.bits:.......</p>.......<ul
2a8e0 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 61 64 64 57 69 74 68 4f 76 65 72 >.........<li><code>@addWithOver
2a900 66 6c 6f 77 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f flow</code></li>.........<li><co
2a920 64 65 3e 40 73 75 62 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a de>@subWithOverflow</code></li>.
2a940 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 40 6d 75 6c 57 69 74 68 4f 76 65 72 66 6c ........<li><code>@mulWithOverfl
2a960 6f 77 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 ow</code></li>.........<li><code
2a980 3e 40 73 68 6c 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 >@shlWithOverflow</code></li>...
2a9a0 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 45 78 61 6d 70 6c ....</ul>.......<p>.......Exampl
2a9c0 65 20 6f 66 20 3c 63 6f 64 65 3e 40 61 64 64 57 69 74 68 4f 76 65 72 66 6c 6f 77 3c 2f 63 6f 64 e.of.<code>@addWithOverflow</cod
2a9e0 65 3e 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 e>:.......</p>.......<pre><code.
2aa00 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 69 6f 20 3d 20 40 69 6d 70 6f 72 74 28 22 class="zig">const.io.=.@import("
2aa20 73 74 64 22 29 2e 69 6f 3b 0a 70 75 62 20 66 6e 20 6d 61 69 6e 28 29 20 2d 26 67 74 3b 20 25 76 std").io;.pub.fn.main().-&gt;.%v
2aa40 6f 69 64 20 7b 0a 20 20 20 20 76 61 72 20 62 79 74 65 3a 20 75 38 20 3d 20 32 35 35 3b 0a 0a 20 oid.{.....var.byte:.u8.=.255;...
2aa60 20 20 20 76 61 72 20 72 65 73 75 6c 74 3a 20 75 38 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 ...var.result:.u8.=.undefined;..
2aa80 20 20 20 69 66 20 28 40 61 64 64 57 69 74 68 4f 76 65 72 66 6c 6f 77 28 75 38 2c 20 62 79 74 65 ...if.(@addWithOverflow(u8,.byte
2aaa0 2c 20 31 30 2c 20 26 61 6d 70 3b 72 65 73 75 6c 74 29 29 20 7b 0a 20 20 20 20 20 20 20 20 25 25 ,.10,.&amp;result)).{.........%%
2aac0 69 6f 2e 73 74 64 65 72 72 2e 70 72 69 6e 74 66 28 22 6f 76 65 72 66 6c 6f 77 65 64 20 72 65 73 io.stderr.printf("overflowed.res
2aae0 75 6c 74 3a 20 7b 7d 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 ult:.{}\n",.result);.....}.else.
2ab00 7b 0a 20 20 20 20 20 20 20 20 25 25 69 6f 2e 73 74 64 65 72 72 2e 70 72 69 6e 74 66 28 22 72 65 {.........%%io.stderr.printf("re
2ab20 73 75 6c 74 3a 20 7b 7d 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 sult:.{}\n",.result);.....}.}</c
2ab40 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 ode></pre>.......<pre><code.clas
2ab60 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 74 65 73 74 2e 7a 69 67 0a s="sh">$.zig.build-exe.test.zig.
2ab80 24 20 2e 2f 74 65 73 74 0a 6f 76 65 72 66 6c 6f 77 65 64 20 72 65 73 75 6c 74 3a 20 39 3c 2f 63 $../test.overflowed.result:.9</c
2aba0 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 34 20 69 64 3d 22 75 6e 64 65 66 2d 69 ode></pre>.......<h4.id="undef-i
2abc0 6e 74 2d 6f 76 65 72 66 6c 6f 77 2d 77 72 61 70 22 3e 57 72 61 70 70 69 6e 67 20 4f 70 65 72 61 nt-overflow-wrap">Wrapping.Opera
2abe0 74 69 6f 6e 73 3c 2f 68 34 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 73 65 tions</h4>.......<p>.......These
2ac00 20 6f 70 65 72 61 74 69 6f 6e 73 20 68 61 76 65 20 67 75 61 72 61 6e 74 65 65 64 20 77 72 61 70 .operations.have.guaranteed.wrap
2ac20 61 72 6f 75 6e 64 20 73 65 6d 61 6e 74 69 63 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 around.semantics........</p>....
2ac40 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 2b 25 3c 2f 63 6f ...<ul>.........<li><code>+%</co
2ac60 64 65 3e 20 28 77 72 61 70 61 72 6f 75 6e 64 20 61 64 64 69 74 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 de>.(wraparound.addition)</li>..
2ac80 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 2d 25 3c 2f 63 6f 64 65 3e 20 28 77 72 61 70 .......<li><code>-%</code>.(wrap
2aca0 61 72 6f 75 6e 64 20 73 75 62 74 72 61 63 74 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 around.subtraction)</li>........
2acc0 20 3c 6c 69 3e 3c 63 6f 64 65 3e 2d 25 3c 2f 63 6f 64 65 3e 20 28 77 72 61 70 61 72 6f 75 6e 64 .<li><code>-%</code>.(wraparound
2ace0 20 6e 65 67 61 74 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 .negation)</li>.........<li><cod
2ad00 65 3e 2a 25 3c 2f 63 6f 64 65 3e 20 28 77 72 61 70 61 72 6f 75 6e 64 20 6d 75 6c 74 69 70 6c 69 e>*%</code>.(wraparound.multipli
2ad20 63 61 74 69 6f 6e 29 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c cation)</li>.......</ul>.......<
2ad40 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 61 73 73 65 pre><code.class="zig">const.asse
2ad60 72 74 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 64 65 62 75 67 2e 61 73 73 65 72 74 rt.=.@import("std").debug.assert
2ad80 3b 0a 0a 74 65 73 74 20 22 77 72 61 70 61 72 6f 75 6e 64 20 61 64 64 69 74 69 6f 6e 20 61 6e 64 ;..test."wraparound.addition.and
2ada0 20 73 75 62 74 72 61 63 74 69 6f 6e 22 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 78 3a 20 69 33 32 .subtraction".{.....const.x:.i32
2adc0 20 3d 20 40 6d 61 78 56 61 6c 75 65 28 69 33 32 29 3b 0a 20 20 20 20 63 6f 6e 73 74 20 6d 69 6e .=.@maxValue(i32);.....const.min
2ade0 5f 76 61 6c 20 3d 20 78 20 2b 25 20 31 3b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 69 6e 5f 76 61 _val.=.x.+%.1;.....assert(min_va
2ae00 6c 20 3d 3d 20 40 6d 69 6e 56 61 6c 75 65 28 69 33 32 29 29 3b 0a 20 20 20 20 63 6f 6e 73 74 20 l.==.@minValue(i32));.....const.
2ae20 6d 61 78 5f 76 61 6c 20 3d 20 6d 69 6e 5f 76 61 6c 20 2d 25 20 31 3b 0a 20 20 20 20 61 73 73 65 max_val.=.min_val.-%.1;.....asse
2ae40 72 74 28 6d 61 78 5f 76 61 6c 20 3d 3d 20 40 6d 61 78 56 61 6c 75 65 28 69 33 32 29 29 3b 0a 7d rt(max_val.==.@maxValue(i32));.}
2ae60 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 75 6e 64 65 </code></pre>.......<h3.id="unde
2ae80 66 2d 73 68 6c 2d 6f 76 65 72 66 6c 6f 77 22 3e 45 78 61 63 74 20 4c 65 66 74 20 53 68 69 66 74 f-shl-overflow">Exact.Left.Shift
2aea0 20 4f 76 65 72 66 6c 6f 77 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 63 6f 6d 70 69 .Overflow</h3>.......<p>At.compi
2aec0 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c le-time:</p>.......<pre><code.cl
2aee0 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 78 ass="zig">comptime.{.....const.x
2af00 20 3d 20 40 73 68 6c 45 78 61 63 74 28 75 38 28 30 62 30 31 30 31 30 31 30 31 29 2c 20 32 29 3b .=.@shlExact(u8(0b01010101),.2);
2af20 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 .}</code></pre>.......<pre><code
2af40 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 .class="sh">$.zig.build-obj.test
2af60 2e 7a 69 67 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 74 65 .zig./home/andy/dev/zig/build/te
2af80 73 74 2e 7a 69 67 3a 32 3a 31 35 3a 20 65 72 72 6f 72 3a 20 6f 70 65 72 61 74 69 6f 6e 20 63 61 st.zig:2:15:.error:.operation.ca
2afa0 75 73 65 64 20 6f 76 65 72 66 6c 6f 77 0a 20 20 20 20 63 6f 6e 73 74 20 78 20 3d 20 40 73 68 6c used.overflow.....const.x.=.@shl
2afc0 45 78 61 63 74 28 75 38 28 30 62 30 31 30 31 30 31 30 31 29 2c 20 32 29 3b 0a 20 20 20 20 20 20 Exact(u8(0b01010101),.2);.......
2afe0 20 20 20 20 20 20 20 20 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e ........^</code></pre>.......<p>
2b000 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 At.runtime.crashes.with.the.mess
2b020 61 67 65 20 3c 63 6f 64 65 3e 6c 65 66 74 20 73 68 69 66 74 20 6f 76 65 72 66 6c 6f 77 65 64 20 age.<code>left.shift.overflowed.
2b040 62 69 74 73 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f bits</code>.and.a.stack.trace.</
2b060 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 75 6e 64 65 66 2d 73 68 72 2d 6f 76 65 72 66 p>.......<h3.id="undef-shr-overf
2b080 6c 6f 77 22 3e 45 78 61 63 74 20 52 69 67 68 74 20 53 68 69 66 74 20 4f 76 65 72 66 6c 6f 77 3c low">Exact.Right.Shift.Overflow<
2b0a0 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a 3c 2f /h3>.......<p>At.compile-time:</
2b0c0 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e p>.......<pre><code.class="zig">
2b0e0 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 78 20 3d 20 40 73 68 72 45 78 61 comptime.{.....const.x.=.@shrExa
2b100 63 74 28 75 38 28 30 62 31 30 31 30 31 30 31 30 29 2c 20 32 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c ct(u8(0b10101010),.2);.}</code><
2b120 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 /pre>.......<pre><code.class="sh
2b140 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 2e 7a 69 67 0a 2f 68 6f 6d 65 ">$.zig.build-obj.test.zig./home
2b160 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 74 65 73 74 2e 7a 69 67 3a 32 3a 31 /andy/dev/zig/build/test.zig:2:1
2b180 35 3a 20 65 72 72 6f 72 3a 20 65 78 61 63 74 20 73 68 69 66 74 20 73 68 69 66 74 65 64 20 6f 75 5:.error:.exact.shift.shifted.ou
2b1a0 74 20 31 20 62 69 74 73 0a 20 20 20 20 63 6f 6e 73 74 20 78 20 3d 20 40 73 68 72 45 78 61 63 74 t.1.bits.....const.x.=.@shrExact
2b1c0 28 75 38 28 30 62 31 30 31 30 31 30 31 30 29 2c 20 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 (u8(0b10101010),.2);............
2b1e0 20 20 20 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 ...^</code></pre>.......<p>At.ru
2b200 6e 74 69 6d 65 20 63 72 61 73 68 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c ntime.crashes.with.the.message.<
2b220 63 6f 64 65 3e 72 69 67 68 74 20 73 68 69 66 74 20 6f 76 65 72 66 6c 6f 77 65 64 20 62 69 74 73 code>right.shift.overflowed.bits
2b240 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e 0a 20 </code>.and.a.stack.trace.</p>..
2b260 20 20 20 20 20 3c 68 33 20 69 64 3d 22 75 6e 64 65 66 2d 64 69 76 69 73 69 6f 6e 2d 62 79 2d 7a .....<h3.id="undef-division-by-z
2b280 65 72 6f 22 3e 44 69 76 69 73 69 6f 6e 20 62 79 20 5a 65 72 6f 3c 2f 68 33 3e 0a 20 20 20 20 20 ero">Division.by.Zero</h3>......
2b2a0 20 3c 70 3e 41 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c .<p>At.compile-time:</p>.......<
2b2c0 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b pre><code.class="zig">comptime.{
2b2e0 0a 20 20 20 20 63 6f 6e 73 74 20 61 3a 20 69 33 32 20 3d 20 31 3b 0a 20 20 20 20 63 6f 6e 73 74 .....const.a:.i32.=.1;.....const
2b300 20 62 3a 20 69 33 32 20 3d 20 30 3b 0a 20 20 20 20 63 6f 6e 73 74 20 63 20 3d 20 61 20 2f 20 62 .b:.i32.=.0;.....const.c.=.a./.b
2b320 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 ;.}</code></pre>.......<pre><cod
2b340 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 e.class="sh">$.zig.build-obj.tes
2b360 74 2e 7a 69 67 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 74 t.zig./home/andy/dev/zig/build/t
2b380 65 73 74 2e 7a 69 67 3a 34 3a 31 37 3a 20 65 72 72 6f 72 3a 20 64 69 76 69 73 69 6f 6e 20 62 79 est.zig:4:17:.error:.division.by
2b3a0 20 7a 65 72 6f 20 69 73 20 75 6e 64 65 66 69 6e 65 64 0a 20 20 20 20 63 6f 6e 73 74 20 63 20 3d .zero.is.undefined.....const.c.=
2b3c0 20 61 20 2f 20 62 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 3c 2f 63 6f 64 65 3e .a./.b;.................^</code>
2b3e0 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 </pre>.......<p>At.runtime.crash
2b400 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 64 69 76 69 73 69 es.with.the.message.<code>divisi
2b420 6f 6e 20 62 79 20 7a 65 72 6f 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 72 on.by.zero</code>.and.a.stack.tr
2b440 61 63 65 2e 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 75 6e 64 65 66 2d 72 65 ace.</p>........<h3.id="undef-re
2b460 6d 61 69 6e 64 65 72 2d 64 69 76 69 73 69 6f 6e 2d 62 79 2d 7a 65 72 6f 22 3e 52 65 6d 61 69 6e mainder-division-by-zero">Remain
2b480 64 65 72 20 44 69 76 69 73 69 6f 6e 20 62 79 20 5a 65 72 6f 3c 2f 68 33 3e 0a 20 20 20 20 20 20 der.Division.by.Zero</h3>.......
2b4a0 3c 70 3e 41 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 <p>At.compile-time:</p>.......<p
2b4c0 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a re><code.class="zig">comptime.{.
2b4e0 20 20 20 20 63 6f 6e 73 74 20 61 3a 20 69 33 32 20 3d 20 31 30 3b 0a 20 20 20 20 63 6f 6e 73 74 ....const.a:.i32.=.10;.....const
2b500 20 62 3a 20 69 33 32 20 3d 20 30 3b 0a 20 20 20 20 63 6f 6e 73 74 20 63 20 3d 20 61 20 25 20 62 .b:.i32.=.0;.....const.c.=.a.%.b
2b520 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 ;.}</code></pre>.......<pre><cod
2b540 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 e.class="sh">$.zig.build-obj.tes
2b560 74 2e 7a 69 67 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 74 t.zig./home/andy/dev/zig/build/t
2b580 65 73 74 2e 7a 69 67 3a 34 3a 31 37 3a 20 65 72 72 6f 72 3a 20 64 69 76 69 73 69 6f 6e 20 62 79 est.zig:4:17:.error:.division.by
2b5a0 20 7a 65 72 6f 20 69 73 20 75 6e 64 65 66 69 6e 65 64 0a 20 20 20 20 63 6f 6e 73 74 20 63 20 3d .zero.is.undefined.....const.c.=
2b5c0 20 61 20 25 20 62 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 3c 2f 63 6f 64 65 3e .a.%.b;.................^</code>
2b5e0 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 6d 65 20 63 72 61 73 68 </pre>.......<p>At.runtime.crash
2b600 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 65 3e 72 65 6d 61 69 6e es.with.the.message.<code>remain
2b620 64 65 72 20 64 69 76 69 73 69 6f 6e 20 62 79 20 7a 65 72 6f 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 der.division.by.zero</code>.and.
2b640 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 a.stack.trace.</p>........<h3.id
2b660 3d 22 75 6e 64 65 66 2d 65 78 61 63 74 2d 64 69 76 69 73 69 6f 6e 2d 72 65 6d 61 69 6e 64 65 72 ="undef-exact-division-remainder
2b680 22 3e 45 78 61 63 74 20 44 69 76 69 73 69 6f 6e 20 52 65 6d 61 69 6e 64 65 72 3c 2f 68 33 3e 0a ">Exact.Division.Remainder</h3>.
2b6a0 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 ......<p>TODO</p>.......<h3.id="
2b6c0 75 6e 64 65 66 2d 73 6c 69 63 65 2d 77 69 64 65 6e 2d 72 65 6d 61 69 6e 64 65 72 22 3e 53 6c 69 undef-slice-widen-remainder">Sli
2b6e0 63 65 20 57 69 64 65 6e 20 52 65 6d 61 69 6e 64 65 72 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 ce.Widen.Remainder</h3>.......<p
2b700 3e 54 4f 44 4f 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 75 6e 64 65 66 2d 61 74 >TODO</p>.......<h3.id="undef-at
2b720 74 65 6d 70 74 2d 75 6e 77 72 61 70 2d 6e 75 6c 6c 22 3e 41 74 74 65 6d 70 74 20 74 6f 20 55 6e tempt-unwrap-null">Attempt.to.Un
2b740 77 72 61 70 20 4e 75 6c 6c 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 63 6f 6d 70 69 wrap.Null</h3>.......<p>At.compi
2b760 6c 65 2d 74 69 6d 65 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c le-time:</p>.......<pre><code.cl
2b780 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 6e ass="zig">comptime.{.....const.n
2b7a0 75 6c 6c 61 62 6c 65 5f 6e 75 6d 62 65 72 3a 20 3f 69 33 32 20 3d 20 6e 75 6c 6c 3b 0a 20 20 20 ullable_number:.?i32.=.null;....
2b7c0 20 63 6f 6e 73 74 20 6e 75 6d 62 65 72 20 3d 20 3f 3f 6e 75 6c 6c 61 62 6c 65 5f 6e 75 6d 62 65 .const.number.=.??nullable_numbe
2b7e0 72 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f r;.}</code></pre>.......<pre><co
2b800 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 de.class="sh">$.zig.build-obj.te
2b820 73 74 2e 7a 69 67 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f st.zig./home/andy/dev/zig/build/
2b840 74 65 73 74 2e 7a 69 67 3a 33 3a 32 30 3a 20 65 72 72 6f 72 3a 20 75 6e 61 62 6c 65 20 74 6f 20 test.zig:3:20:.error:.unable.to.
2b860 75 6e 77 72 61 70 20 6e 75 6c 6c 0a 20 20 20 20 63 6f 6e 73 74 20 6e 75 6d 62 65 72 20 3d 20 3f unwrap.null.....const.number.=.?
2b880 3f 6e 75 6c 6c 61 62 6c 65 5f 6e 75 6d 62 65 72 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ?nullable_number;...............
2b8a0 20 20 20 20 20 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 .....^</code></pre>.......<p>At.
2b8c0 72 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 runtime.crashes.with.the.message
2b8e0 20 3c 63 6f 64 65 3e 61 74 74 65 6d 70 74 20 74 6f 20 75 6e 77 72 61 70 20 6e 75 6c 6c 3c 2f 63 .<code>attempt.to.unwrap.null</c
2b900 6f 64 65 3e 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e 0a 20 20 20 20 ode>.and.a.stack.trace.</p>.....
2b920 20 20 3c 70 3e 4f 6e 65 20 77 61 79 20 74 6f 20 61 76 6f 69 64 20 74 68 69 73 20 63 72 61 73 68 ..<p>One.way.to.avoid.this.crash
2b940 20 69 73 20 74 6f 20 74 65 73 74 20 66 6f 72 20 6e 75 6c 6c 20 69 6e 73 74 65 61 64 20 6f 66 20 .is.to.test.for.null.instead.of.
2b960 61 73 73 75 6d 69 6e 67 20 6e 6f 6e 2d 6e 75 6c 6c 2c 20 77 69 74 68 0a 20 20 20 20 20 20 74 68 assuming.non-null,.with.......th
2b980 65 20 3c 63 6f 64 65 3e 69 66 3c 2f 63 6f 64 65 3e 20 65 78 70 72 65 73 73 69 6f 6e 3a 3c 2f 70 e.<code>if</code>.expression:</p
2b9a0 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 >.......<pre><code.class="zig">c
2b9c0 6f 6e 73 74 20 69 6f 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 69 6f 3b 0a 70 75 62 onst.io.=.@import("std").io;.pub
2b9e0 20 66 6e 20 6d 61 69 6e 28 29 20 2d 26 67 74 3b 20 25 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f 6e .fn.main().-&gt;.%void.{.....con
2ba00 73 74 20 6e 75 6c 6c 61 62 6c 65 5f 6e 75 6d 62 65 72 3a 20 3f 69 33 32 20 3d 20 6e 75 6c 6c 3b st.nullable_number:.?i32.=.null;
2ba20 0a 0a 20 20 20 20 69 66 20 28 6e 75 6c 6c 61 62 6c 65 5f 6e 75 6d 62 65 72 29 20 7c 6e 75 6d 62 ......if.(nullable_number).|numb
2ba40 65 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 25 25 69 6f 2e 73 74 64 65 72 72 2e 70 72 69 6e 74 66 er|.{.........%%io.stderr.printf
2ba60 28 22 67 6f 74 20 6e 75 6d 62 65 72 3a 20 7b 7d 5c 6e 22 2c 20 6e 75 6d 62 65 72 29 3b 0a 20 20 ("got.number:.{}\n",.number);...
2ba80 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 25 25 69 6f 2e 73 74 64 65 72 72 2e 70 ..}.else.{.........%%io.stderr.p
2baa0 72 69 6e 74 66 28 22 69 74 27 73 20 6e 75 6c 6c 5c 6e 22 29 3b 0a 20 20 20 20 7d 0a 7d 3c 2f 63 rintf("it's.null\n");.....}.}</c
2bac0 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 ode></pre>.......<pre><code.clas
2bae0 73 3d 22 73 68 22 3e 25 20 7a 69 67 20 62 75 69 6c 64 2d 65 78 65 20 74 65 73 74 2e 7a 69 67 0a s="sh">%.zig.build-exe.test.zig.
2bb00 24 20 2e 2f 74 65 73 74 0a 69 74 27 73 20 6e 75 6c 6c 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a $../test.it's.null</code></pre>.
2bb20 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 75 6e 64 65 66 2d 61 74 74 65 6d 70 74 2d 75 6e 77 72 ......<h3.id="undef-attempt-unwr
2bb40 61 70 2d 65 72 72 6f 72 22 3e 41 74 74 65 6d 70 74 20 74 6f 20 55 6e 77 72 61 70 20 45 72 72 6f ap-error">Attempt.to.Unwrap.Erro
2bb60 72 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a r</h3>.......<p>At.compile-time:
2bb80 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 </p>.......<pre><code.class="zig
2bba0 22 3e 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 6e 75 6d 62 65 72 20 3d 20 ">comptime.{.....const.number.=.
2bbc0 25 25 67 65 74 4e 75 6d 62 65 72 4f 72 46 61 69 6c 28 29 3b 0a 7d 0a 0a 65 72 72 6f 72 20 55 6e %%getNumberOrFail();.}..error.Un
2bbe0 61 62 6c 65 54 6f 52 65 74 75 72 6e 4e 75 6d 62 65 72 3b 0a 0a 66 6e 20 67 65 74 4e 75 6d 62 65 ableToReturnNumber;..fn.getNumbe
2bc00 72 4f 72 46 61 69 6c 28 29 20 2d 26 67 74 3b 20 25 69 33 32 20 7b 0a 20 20 20 20 72 65 74 75 72 rOrFail().-&gt;.%i32.{.....retur
2bc20 6e 20 65 72 72 6f 72 2e 55 6e 61 62 6c 65 54 6f 52 65 74 75 72 6e 4e 75 6d 62 65 72 3b 0a 7d 3c n.error.UnableToReturnNumber;.}<
2bc40 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c /code></pre>.......<pre><code.cl
2bc60 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 65 73 74 2e 7a 69 ass="sh">$.zig.build-obj.test.zi
2bc80 67 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 2f 74 65 73 74 2e g./home/andy/dev/zig/build/test.
2bca0 7a 69 67 3a 32 3a 32 30 3a 20 65 72 72 6f 72 3a 20 75 6e 61 62 6c 65 20 74 6f 20 75 6e 77 72 61 zig:2:20:.error:.unable.to.unwra
2bcc0 70 20 65 72 72 6f 72 20 27 55 6e 61 62 6c 65 54 6f 52 65 74 75 72 6e 4e 75 6d 62 65 72 27 0a 20 p.error.'UnableToReturnNumber'..
2bce0 20 20 20 63 6f 6e 73 74 20 6e 75 6d 62 65 72 20 3d 20 25 25 67 65 74 4e 75 6d 62 65 72 4f 72 46 ...const.number.=.%%getNumberOrF
2bd00 61 69 6c 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ail();..........................
2bd20 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 ^</code></pre>.......<p>At.runti
2bd40 6d 65 20 63 72 61 73 68 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 me.crashes.with.the.message.<cod
2bd60 65 3e 61 74 74 65 6d 70 74 20 74 6f 20 75 6e 77 72 61 70 20 65 72 72 6f 72 3a 20 45 72 72 6f 72 e>attempt.to.unwrap.error:.Error
2bd80 43 6f 64 65 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f Code</code>.and.a.stack.trace.</
2bda0 70 3e 0a 20 20 20 20 20 20 3c 70 3e 4f 6e 65 20 77 61 79 20 74 6f 20 61 76 6f 69 64 20 74 68 69 p>.......<p>One.way.to.avoid.thi
2bdc0 73 20 63 72 61 73 68 20 69 73 20 74 6f 20 74 65 73 74 20 66 6f 72 20 61 6e 20 65 72 72 6f 72 20 s.crash.is.to.test.for.an.error.
2bde0 69 6e 73 74 65 61 64 20 6f 66 20 61 73 73 75 6d 69 6e 67 20 61 20 73 75 63 63 65 73 73 66 75 6c instead.of.assuming.a.successful
2be00 20 72 65 73 75 6c 74 2c 20 77 69 74 68 0a 20 20 20 20 20 20 74 68 65 20 3c 63 6f 64 65 3e 69 66 .result,.with.......the.<code>if
2be20 3c 2f 63 6f 64 65 3e 20 65 78 70 72 65 73 73 69 6f 6e 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 </code>.expression:</p>.......<p
2be40 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 69 6f 20 3d 20 re><code.class="zig">const.io.=.
2be60 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 69 6f 3b 0a 0a 70 75 62 20 66 6e 20 6d 61 69 6e 28 @import("std").io;..pub.fn.main(
2be80 29 20 2d 26 67 74 3b 20 25 76 6f 69 64 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 72 65 73 75 6c 74 ).-&gt;.%void.{.....const.result
2bea0 20 3d 20 67 65 74 4e 75 6d 62 65 72 4f 72 46 61 69 6c 28 29 3b 0a 0a 20 20 20 20 69 66 20 28 72 .=.getNumberOrFail();......if.(r
2bec0 65 73 75 6c 74 29 20 7c 6e 75 6d 62 65 72 7c 20 7b 0a 20 20 20 20 20 20 20 20 25 25 69 6f 2e 73 esult).|number|.{.........%%io.s
2bee0 74 64 65 72 72 2e 70 72 69 6e 74 66 28 22 67 6f 74 20 6e 75 6d 62 65 72 3a 20 7b 7d 5c 6e 22 2c tderr.printf("got.number:.{}\n",
2bf00 20 6e 75 6d 62 65 72 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7c 65 72 72 7c 20 7b 0a 20 20 20 .number);.....}.else.|err|.{....
2bf20 20 20 20 20 20 25 25 69 6f 2e 73 74 64 65 72 72 2e 70 72 69 6e 74 66 28 22 67 6f 74 20 65 72 72 .....%%io.stderr.printf("got.err
2bf40 6f 72 3a 20 7b 7d 5c 6e 22 2c 20 40 65 72 72 6f 72 4e 61 6d 65 28 65 72 72 29 29 3b 0a 20 20 20 or:.{}\n",.@errorName(err));....
2bf60 20 7d 0a 7d 0a 0a 65 72 72 6f 72 20 55 6e 61 62 6c 65 54 6f 52 65 74 75 72 6e 4e 75 6d 62 65 72 .}.}..error.UnableToReturnNumber
2bf80 3b 0a 0a 66 6e 20 67 65 74 4e 75 6d 62 65 72 4f 72 46 61 69 6c 28 29 20 2d 26 67 74 3b 20 25 69 ;..fn.getNumberOrFail().-&gt;.%i
2bfa0 33 32 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 65 72 72 6f 72 2e 55 6e 61 62 6c 65 54 6f 52 65 32.{.....return.error.UnableToRe
2bfc0 74 75 72 6e 4e 75 6d 62 65 72 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 turnNumber;.}</code></pre>......
2bfe0 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 .<pre><code.class="sh">$.zig.bui
2c000 6c 64 2d 65 78 65 20 74 65 73 74 2e 7a 69 67 0a 24 20 2e 2f 74 65 73 74 0a 67 6f 74 20 65 72 72 ld-exe.test.zig.$../test.got.err
2c020 6f 72 3a 20 55 6e 61 62 6c 65 54 6f 52 65 74 75 72 6e 4e 75 6d 62 65 72 3c 2f 63 6f 64 65 3e 3c or:.UnableToReturnNumber</code><
2c040 2f 70 72 65 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 75 6e 64 65 66 2d 69 6e 76 61 6c /pre>........<h3.id="undef-inval
2c060 69 64 2d 65 72 72 6f 72 2d 63 6f 64 65 22 3e 49 6e 76 61 6c 69 64 20 45 72 72 6f 72 20 43 6f 64 id-error-code">Invalid.Error.Cod
2c080 65 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 3a e</h3>.......<p>At.compile-time:
2c0a0 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 </p>.......<pre><code.class="zig
2c0c0 22 3e 65 72 72 6f 72 20 41 6e 45 72 72 6f 72 3b 0a 63 6f 6d 70 74 69 6d 65 20 7b 0a 20 20 20 20 ">error.AnError;.comptime.{.....
2c0e0 63 6f 6e 73 74 20 65 72 72 20 3d 20 65 72 72 6f 72 2e 41 6e 45 72 72 6f 72 3b 0a 20 20 20 20 63 const.err.=.error.AnError;.....c
2c100 6f 6e 73 74 20 6e 75 6d 62 65 72 20 3d 20 75 33 32 28 65 72 72 29 20 2b 20 31 30 3b 0a 20 20 20 onst.number.=.u32(err).+.10;....
2c120 20 63 6f 6e 73 74 20 69 6e 76 61 6c 69 64 5f 65 72 72 20 3d 20 65 72 72 6f 72 28 6e 75 6d 62 65 .const.invalid_err.=.error(numbe
2c140 72 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 r);.}</code></pre>.......<pre><c
2c160 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 67 20 62 75 69 6c 64 2d 6f 62 6a 20 74 ode.class="sh">$.zig.build-obj.t
2c180 65 73 74 2e 7a 69 67 0a 2f 68 6f 6d 65 2f 61 6e 64 79 2f 64 65 76 2f 7a 69 67 2f 62 75 69 6c 64 est.zig./home/andy/dev/zig/build
2c1a0 2f 74 65 73 74 2e 7a 69 67 3a 35 3a 33 30 3a 20 65 72 72 6f 72 3a 20 69 6e 74 65 67 65 72 20 76 /test.zig:5:30:.error:.integer.v
2c1c0 61 6c 75 65 20 31 31 20 72 65 70 72 65 73 65 6e 74 73 20 6e 6f 20 65 72 72 6f 72 0a 20 20 20 20 alue.11.represents.no.error.....
2c1e0 63 6f 6e 73 74 20 69 6e 76 61 6c 69 64 5f 65 72 72 20 3d 20 65 72 72 6f 72 28 6e 75 6d 62 65 72 const.invalid_err.=.error(number
2c200 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 );..............................
2c220 5e 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 41 74 20 72 75 6e 74 69 ^</code></pre>.......<p>At.runti
2c240 6d 65 20 63 72 61 73 68 65 73 20 77 69 74 68 20 74 68 65 20 6d 65 73 73 61 67 65 20 3c 63 6f 64 me.crashes.with.the.message.<cod
2c260 65 3e 69 6e 76 61 6c 69 64 20 65 72 72 6f 72 20 63 6f 64 65 3c 2f 63 6f 64 65 3e 20 61 6e 64 20 e>invalid.error.code</code>.and.
2c280 61 20 73 74 61 63 6b 20 74 72 61 63 65 2e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d a.stack.trace.</p>.......<h3.id=
2c2a0 22 75 6e 64 65 66 2d 69 6e 76 61 6c 69 64 2d 65 6e 75 6d 2d 63 61 73 74 22 3e 49 6e 76 61 6c 69 "undef-invalid-enum-cast">Invali
2c2c0 64 20 45 6e 75 6d 20 43 61 73 74 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3c 2f d.Enum.Cast</h3>.......<p>TODO</
2c2e0 70 3e 0a 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 75 6e 64 65 66 2d 69 6e 63 6f 72 72 65 63 p>........<h3.id="undef-incorrec
2c300 74 2d 70 6f 69 6e 74 65 72 2d 61 6c 69 67 6e 6d 65 6e 74 22 3e 49 6e 63 6f 72 72 65 63 74 20 50 t-pointer-alignment">Incorrect.P
2c320 6f 69 6e 74 65 72 20 41 6c 69 67 6e 6d 65 6e 74 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 54 ointer.Alignment</h3>.......<p>T
2c340 4f 44 4f 3c 2f 70 3e 0a 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 6d 65 6d 6f 72 79 22 3e 4d ODO</p>........<h2.id="memory">M
2c360 65 6d 6f 72 79 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 70 6c 61 69 emory</h2>.......<p>TODO:.explai
2c380 6e 20 6e 6f 20 64 65 66 61 75 6c 74 20 61 6c 6c 6f 63 61 74 6f 72 20 69 6e 20 7a 69 67 3c 2f 70 n.no.default.allocator.in.zig</p
2c3a0 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 73 68 6f 77 20 68 6f 77 20 74 6f 20 75 73 65 >.......<p>TODO:.show.how.to.use
2c3c0 20 74 68 65 20 61 6c 6c 6f 63 61 74 6f 72 20 69 6e 74 65 72 66 61 63 65 3c 2f 70 3e 0a 20 20 20 .the.allocator.interface</p>....
2c3e0 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 6d 65 6e 74 69 6f 6e 20 64 65 62 75 67 20 61 6c 6c 6f 63 61 ...<p>TODO:.mention.debug.alloca
2c400 74 6f 72 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 69 6d 70 6f 72 74 61 6e 63 tor</p>.......<p>TODO:.importanc
2c420 65 20 6f 66 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 61 6c 6c 6f 63 61 74 69 6f 6e 20 66 61 69 e.of.checking.for.allocation.fai
2c440 6c 75 72 65 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 6d 65 6e 74 69 6f 6e 20 lure</p>.......<p>TODO:.mention.
2c460 6f 76 65 72 63 6f 6d 6d 69 74 20 61 6e 64 20 74 68 65 20 4f 4f 4d 20 4b 69 6c 6c 65 72 3c 2f 70 overcommit.and.the.OOM.Killer</p
2c480 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 6d 65 6e 74 69 6f 6e 20 72 65 63 75 72 73 69 >.......<p>TODO:.mention.recursi
2c4a0 6f 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 on</p>.......<p>See.also:</p>...
2c4c0 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 70 ....<ul>.........<li><a.href="#p
2c4e0 6f 69 6e 74 65 72 73 22 3e 50 6f 69 6e 74 65 72 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 ointers">Pointers</a></li>......
2c500 20 3c 2f 75 6c 3e 0a 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 63 6f 6d 70 69 6c 65 2d 76 61 .</ul>........<h2.id="compile-va
2c520 72 69 61 62 6c 65 73 22 3e 43 6f 6d 70 69 6c 65 20 56 61 72 69 61 62 6c 65 73 3c 2f 68 32 3e 0a riables">Compile.Variables</h2>.
2c540 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 43 6f 6d 70 69 6c 65 20 76 61 72 69 61 62 6c 65 ......<p>.......Compile.variable
2c560 73 20 61 72 65 20 61 63 63 65 73 73 69 62 6c 65 20 62 79 20 69 6d 70 6f 72 74 69 6e 67 20 74 68 s.are.accessible.by.importing.th
2c580 65 20 3c 63 6f 64 65 3e 22 62 75 69 6c 74 69 6e 22 3c 2f 63 6f 64 65 3e 20 70 61 63 6b 61 67 65 e.<code>"builtin"</code>.package
2c5a0 2c 0a 20 20 20 20 20 20 77 68 69 63 68 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 6d 61 6b 65 73 ,.......which.the.compiler.makes
2c5c0 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 65 76 65 72 79 20 5a 69 67 20 73 6f 75 72 63 65 20 66 .available.to.every.Zig.source.f
2c5e0 69 6c 65 2e 20 49 74 20 63 6f 6e 74 61 69 6e 73 0a 20 20 20 20 20 20 63 6f 6d 70 69 6c 65 2d 74 ile..It.contains.......compile-t
2c600 69 6d 65 20 63 6f 6e 73 74 61 6e 74 73 20 73 75 63 68 20 61 73 20 74 68 65 20 63 75 72 72 65 6e ime.constants.such.as.the.curren
2c620 74 20 74 61 72 67 65 74 2c 20 65 6e 64 69 61 6e 6e 65 73 73 2c 20 61 6e 64 20 72 65 6c 65 61 73 t.target,.endianness,.and.releas
2c640 65 20 6d 6f 64 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 e.mode........</p>.......<pre><c
2c660 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 62 75 69 6c 74 69 6e 20 3d 20 ode.class="zig">const.builtin.=.
2c680 40 69 6d 70 6f 72 74 28 22 62 75 69 6c 74 69 6e 22 29 3b 0a 63 6f 6e 73 74 20 73 65 70 61 72 61 @import("builtin");.const.separa
2c6a0 74 6f 72 20 3d 20 69 66 20 28 62 75 69 6c 74 69 6e 2e 6f 73 20 3d 3d 20 62 75 69 6c 74 69 6e 2e tor.=.if.(builtin.os.==.builtin.
2c6c0 4f 73 2e 77 69 6e 64 6f 77 73 29 20 27 5c 5c 27 20 65 6c 73 65 20 27 2f 27 3b 3c 2f 63 6f 64 65 Os.windows).'\\'.else.'/';</code
2c6e0 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 45 78 61 6d 70 6c 65 20 ></pre>.......<p>.......Example.
2c700 6f 66 20 77 68 61 74 20 69 73 20 69 6d 70 6f 72 74 65 64 20 77 69 74 68 20 3c 63 6f 64 65 3e 40 of.what.is.imported.with.<code>@
2c720 69 6d 70 6f 72 74 28 22 62 75 69 6c 74 69 6e 22 29 3c 2f 63 6f 64 65 3e 3a 0a 20 20 20 20 20 20 import("builtin")</code>:.......
2c740 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 </p>.......<pre><code.class="zig
2c760 22 3e 70 75 62 20 63 6f 6e 73 74 20 4f 73 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 66 72 65 65 ">pub.const.Os.=.enum.{.....free
2c780 73 74 61 6e 64 69 6e 67 2c 0a 20 20 20 20 63 6c 6f 75 64 61 62 69 2c 0a 20 20 20 20 64 61 72 77 standing,.....cloudabi,.....darw
2c7a0 69 6e 2c 0a 20 20 20 20 64 72 61 67 6f 6e 66 6c 79 2c 0a 20 20 20 20 66 72 65 65 62 73 64 2c 0a in,.....dragonfly,.....freebsd,.
2c7c0 20 20 20 20 69 6f 73 2c 0a 20 20 20 20 6b 66 72 65 65 62 73 64 2c 0a 20 20 20 20 6c 69 6e 75 78 ....ios,.....kfreebsd,.....linux
2c7e0 2c 0a 20 20 20 20 6c 76 32 2c 0a 20 20 20 20 6d 61 63 6f 73 78 2c 0a 20 20 20 20 6e 65 74 62 73 ,.....lv2,.....macosx,.....netbs
2c800 64 2c 0a 20 20 20 20 6f 70 65 6e 62 73 64 2c 0a 20 20 20 20 73 6f 6c 61 72 69 73 2c 0a 20 20 20 d,.....openbsd,.....solaris,....
2c820 20 77 69 6e 64 6f 77 73 2c 0a 20 20 20 20 68 61 69 6b 75 2c 0a 20 20 20 20 6d 69 6e 69 78 2c 0a .windows,.....haiku,.....minix,.
2c840 20 20 20 20 72 74 65 6d 73 2c 0a 20 20 20 20 6e 61 63 6c 2c 0a 20 20 20 20 63 6e 6b 2c 0a 20 20 ....rtems,.....nacl,.....cnk,...
2c860 20 20 62 69 74 72 69 67 2c 0a 20 20 20 20 61 69 78 2c 0a 20 20 20 20 63 75 64 61 2c 0a 20 20 20 ..bitrig,.....aix,.....cuda,....
2c880 20 6e 76 63 6c 2c 0a 20 20 20 20 61 6d 64 68 73 61 2c 0a 20 20 20 20 70 73 34 2c 0a 20 20 20 20 .nvcl,.....amdhsa,.....ps4,.....
2c8a0 65 6c 66 69 61 6d 63 75 2c 0a 20 20 20 20 74 76 6f 73 2c 0a 20 20 20 20 77 61 74 63 68 6f 73 2c elfiamcu,.....tvos,.....watchos,
2c8c0 0a 20 20 20 20 6d 65 73 61 33 64 2c 0a 7d 3b 0a 0a 70 75 62 20 63 6f 6e 73 74 20 41 72 63 68 20 .....mesa3d,.};..pub.const.Arch.
2c8e0 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 61 72 6d 76 38 5f 32 61 2c 0a 20 20 20 20 61 72 6d 76 38 =.enum.{.....armv8_2a,.....armv8
2c900 5f 31 61 2c 0a 20 20 20 20 61 72 6d 76 38 2c 0a 20 20 20 20 61 72 6d 76 38 6d 5f 62 61 73 65 6c _1a,.....armv8,.....armv8m_basel
2c920 69 6e 65 2c 0a 20 20 20 20 61 72 6d 76 38 6d 5f 6d 61 69 6e 6c 69 6e 65 2c 0a 20 20 20 20 61 72 ine,.....armv8m_mainline,.....ar
2c940 6d 76 37 2c 0a 20 20 20 20 61 72 6d 76 37 65 6d 2c 0a 20 20 20 20 61 72 6d 76 37 6d 2c 0a 20 20 mv7,.....armv7em,.....armv7m,...
2c960 20 20 61 72 6d 76 37 73 2c 0a 20 20 20 20 61 72 6d 76 37 6b 2c 0a 20 20 20 20 61 72 6d 76 36 2c ..armv7s,.....armv7k,.....armv6,
2c980 0a 20 20 20 20 61 72 6d 76 36 6d 2c 0a 20 20 20 20 61 72 6d 76 36 6b 2c 0a 20 20 20 20 61 72 6d .....armv6m,.....armv6k,.....arm
2c9a0 76 36 74 32 2c 0a 20 20 20 20 61 72 6d 76 35 2c 0a 20 20 20 20 61 72 6d 76 35 74 65 2c 0a 20 20 v6t2,.....armv5,.....armv5te,...
2c9c0 20 20 61 72 6d 76 34 74 2c 0a 20 20 20 20 61 72 6d 65 62 2c 0a 20 20 20 20 61 61 72 63 68 36 34 ..armv4t,.....armeb,.....aarch64
2c9e0 2c 0a 20 20 20 20 61 61 72 63 68 36 34 5f 62 65 2c 0a 20 20 20 20 61 76 72 2c 0a 20 20 20 20 62 ,.....aarch64_be,.....avr,.....b
2ca00 70 66 65 6c 2c 0a 20 20 20 20 62 70 66 65 62 2c 0a 20 20 20 20 68 65 78 61 67 6f 6e 2c 0a 20 20 pfel,.....bpfeb,.....hexagon,...
2ca20 20 20 6d 69 70 73 2c 0a 20 20 20 20 6d 69 70 73 65 6c 2c 0a 20 20 20 20 6d 69 70 73 36 34 2c 0a ..mips,.....mipsel,.....mips64,.
2ca40 20 20 20 20 6d 69 70 73 36 34 65 6c 2c 0a 20 20 20 20 6d 73 70 34 33 30 2c 0a 20 20 20 20 70 6f ....mips64el,.....msp430,.....po
2ca60 77 65 72 70 63 2c 0a 20 20 20 20 70 6f 77 65 72 70 63 36 34 2c 0a 20 20 20 20 70 6f 77 65 72 70 werpc,.....powerpc64,.....powerp
2ca80 63 36 34 6c 65 2c 0a 20 20 20 20 72 36 30 30 2c 0a 20 20 20 20 61 6d 64 67 63 6e 2c 0a 20 20 20 c64le,.....r600,.....amdgcn,....
2caa0 20 73 70 61 72 63 2c 0a 20 20 20 20 73 70 61 72 63 76 39 2c 0a 20 20 20 20 73 70 61 72 63 65 6c .sparc,.....sparcv9,.....sparcel
2cac0 2c 0a 20 20 20 20 73 33 39 30 78 2c 0a 20 20 20 20 74 63 65 2c 0a 20 20 20 20 74 68 75 6d 62 2c ,.....s390x,.....tce,.....thumb,
2cae0 0a 20 20 20 20 74 68 75 6d 62 65 62 2c 0a 20 20 20 20 69 33 38 36 2c 0a 20 20 20 20 78 38 36 5f .....thumbeb,.....i386,.....x86_
2cb00 36 34 2c 0a 20 20 20 20 78 63 6f 72 65 2c 0a 20 20 20 20 6e 76 70 74 78 2c 0a 20 20 20 20 6e 76 64,.....xcore,.....nvptx,.....nv
2cb20 70 74 78 36 34 2c 0a 20 20 20 20 6c 65 33 32 2c 0a 20 20 20 20 6c 65 36 34 2c 0a 20 20 20 20 61 ptx64,.....le32,.....le64,.....a
2cb40 6d 64 69 6c 2c 0a 20 20 20 20 61 6d 64 69 6c 36 34 2c 0a 20 20 20 20 68 73 61 69 6c 2c 0a 20 20 mdil,.....amdil64,.....hsail,...
2cb60 20 20 68 73 61 69 6c 36 34 2c 0a 20 20 20 20 73 70 69 72 2c 0a 20 20 20 20 73 70 69 72 36 34 2c ..hsail64,.....spir,.....spir64,
2cb80 0a 20 20 20 20 6b 61 6c 69 6d 62 61 76 33 2c 0a 20 20 20 20 6b 61 6c 69 6d 62 61 76 34 2c 0a 20 .....kalimbav3,.....kalimbav4,..
2cba0 20 20 20 6b 61 6c 69 6d 62 61 76 35 2c 0a 20 20 20 20 73 68 61 76 65 2c 0a 20 20 20 20 6c 61 6e ...kalimbav5,.....shave,.....lan
2cbc0 61 69 2c 0a 20 20 20 20 77 61 73 6d 33 32 2c 0a 20 20 20 20 77 61 73 6d 36 34 2c 0a 20 20 20 20 ai,.....wasm32,.....wasm64,.....
2cbe0 72 65 6e 64 65 72 73 63 72 69 70 74 33 32 2c 0a 20 20 20 20 72 65 6e 64 65 72 73 63 72 69 70 74 renderscript32,.....renderscript
2cc00 36 34 2c 0a 7d 3b 0a 70 75 62 20 63 6f 6e 73 74 20 45 6e 76 69 72 6f 6e 20 3d 20 65 6e 75 6d 20 64,.};.pub.const.Environ.=.enum.
2cc20 7b 0a 20 20 20 20 67 6e 75 2c 0a 20 20 20 20 67 6e 75 61 62 69 36 34 2c 0a 20 20 20 20 67 6e 75 {.....gnu,.....gnuabi64,.....gnu
2cc40 65 61 62 69 2c 0a 20 20 20 20 67 6e 75 65 61 62 69 68 66 2c 0a 20 20 20 20 67 6e 75 78 33 32 2c eabi,.....gnueabihf,.....gnux32,
2cc60 0a 20 20 20 20 63 6f 64 65 31 36 2c 0a 20 20 20 20 65 61 62 69 2c 0a 20 20 20 20 65 61 62 69 68 .....code16,.....eabi,.....eabih
2cc80 66 2c 0a 20 20 20 20 61 6e 64 72 6f 69 64 2c 0a 20 20 20 20 6d 75 73 6c 2c 0a 20 20 20 20 6d 75 f,.....android,.....musl,.....mu
2cca0 73 6c 65 61 62 69 2c 0a 20 20 20 20 6d 75 73 6c 65 61 62 69 68 66 2c 0a 20 20 20 20 6d 73 76 63 sleabi,.....musleabihf,.....msvc
2ccc0 2c 0a 20 20 20 20 69 74 61 6e 69 75 6d 2c 0a 20 20 20 20 63 79 67 6e 75 73 2c 0a 20 20 20 20 61 ,.....itanium,.....cygnus,.....a
2cce0 6d 64 6f 70 65 6e 63 6c 2c 0a 20 20 20 20 63 6f 72 65 63 6c 72 2c 0a 7d 3b 0a 0a 70 75 62 20 63 mdopencl,.....coreclr,.};..pub.c
2cd00 6f 6e 73 74 20 4f 62 6a 65 63 74 46 6f 72 6d 61 74 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 75 onst.ObjectFormat.=.enum.{.....u
2cd20 6e 6b 6e 6f 77 6e 2c 0a 20 20 20 20 63 6f 66 66 2c 0a 20 20 20 20 65 6c 66 2c 0a 20 20 20 20 6d nknown,.....coff,.....elf,.....m
2cd40 61 63 68 6f 2c 0a 7d 3b 0a 0a 70 75 62 20 63 6f 6e 73 74 20 47 6c 6f 62 61 6c 4c 69 6e 6b 61 67 acho,.};..pub.const.GlobalLinkag
2cd60 65 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 49 6e 74 65 72 6e 61 6c 2c 0a 20 20 20 20 53 74 72 e.=.enum.{.....Internal,.....Str
2cd80 6f 6e 67 2c 0a 20 20 20 20 57 65 61 6b 2c 0a 20 20 20 20 4c 69 6e 6b 4f 6e 63 65 2c 0a 7d 3b 0a ong,.....Weak,.....LinkOnce,.};.
2cda0 0a 70 75 62 20 63 6f 6e 73 74 20 41 74 6f 6d 69 63 4f 72 64 65 72 20 3d 20 65 6e 75 6d 20 7b 0a .pub.const.AtomicOrder.=.enum.{.
2cdc0 20 20 20 20 55 6e 6f 72 64 65 72 65 64 2c 0a 20 20 20 20 4d 6f 6e 6f 74 6f 6e 69 63 2c 0a 20 20 ....Unordered,.....Monotonic,...
2cde0 20 20 41 63 71 75 69 72 65 2c 0a 20 20 20 20 52 65 6c 65 61 73 65 2c 0a 20 20 20 20 41 63 71 52 ..Acquire,.....Release,.....AcqR
2ce00 65 6c 2c 0a 20 20 20 20 53 65 71 43 73 74 2c 0a 7d 3b 0a 0a 70 75 62 20 63 6f 6e 73 74 20 4d 6f el,.....SeqCst,.};..pub.const.Mo
2ce20 64 65 20 3d 20 65 6e 75 6d 20 7b 0a 20 20 20 20 44 65 62 75 67 2c 0a 20 20 20 20 52 65 6c 65 61 de.=.enum.{.....Debug,.....Relea
2ce40 73 65 53 61 66 65 2c 0a 20 20 20 20 52 65 6c 65 61 73 65 46 61 73 74 2c 0a 7d 3b 0a 0a 70 75 62 seSafe,.....ReleaseFast,.};..pub
2ce60 20 63 6f 6e 73 74 20 69 73 5f 62 69 67 5f 65 6e 64 69 61 6e 20 3d 20 66 61 6c 73 65 3b 0a 70 75 .const.is_big_endian.=.false;.pu
2ce80 62 20 63 6f 6e 73 74 20 69 73 5f 74 65 73 74 20 3d 20 66 61 6c 73 65 3b 0a 70 75 62 20 63 6f 6e b.const.is_test.=.false;.pub.con
2cea0 73 74 20 6f 73 20 3d 20 4f 73 2e 6c 69 6e 75 78 3b 0a 70 75 62 20 63 6f 6e 73 74 20 61 72 63 68 st.os.=.Os.linux;.pub.const.arch
2cec0 20 3d 20 41 72 63 68 2e 78 38 36 5f 36 34 3b 0a 70 75 62 20 63 6f 6e 73 74 20 65 6e 76 69 72 6f .=.Arch.x86_64;.pub.const.enviro
2cee0 6e 20 3d 20 45 6e 76 69 72 6f 6e 2e 67 6e 75 3b 0a 70 75 62 20 63 6f 6e 73 74 20 6f 62 6a 65 63 n.=.Environ.gnu;.pub.const.objec
2cf00 74 5f 66 6f 72 6d 61 74 20 3d 20 4f 62 6a 65 63 74 46 6f 72 6d 61 74 2e 65 6c 66 3b 0a 70 75 62 t_format.=.ObjectFormat.elf;.pub
2cf20 20 63 6f 6e 73 74 20 6d 6f 64 65 20 3d 20 4d 6f 64 65 2e 52 65 6c 65 61 73 65 46 61 73 74 3b 0a .const.mode.=.Mode.ReleaseFast;.
2cf40 70 75 62 20 63 6f 6e 73 74 20 6c 69 6e 6b 5f 6c 69 62 73 20 3d 20 5b 5d 5b 5d 63 6f 6e 73 74 20 pub.const.link_libs.=.[][]const.
2cf60 75 38 20 7b 0a 7d 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 u8.{.};</code></pre>.......<p>Se
2cf80 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c e.also:</p>.......<ul>.........<
2cfa0 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 64 2d 6d 6f 64 65 22 3e 42 75 69 6c 64 20 4d li><a.href="#build-mode">Build.M
2cfc0 6f 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c ode</a></li>.......</ul>.......<
2cfe0 68 32 20 69 64 3d 22 72 6f 6f 74 2d 73 6f 75 72 63 65 2d 66 69 6c 65 22 3e 52 6f 6f 74 20 53 6f h2.id="root-source-file">Root.So
2d000 75 72 63 65 20 46 69 6c 65 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 urce.File</h2>.......<p>TODO:.ex
2d020 70 6c 61 69 6e 20 68 6f 77 20 72 6f 6f 74 20 73 6f 75 72 63 65 20 66 69 6c 65 20 66 69 6e 64 73 plain.how.root.source.file.finds
2d040 20 6f 74 68 65 72 20 66 69 6c 65 73 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 .other.files</p>.......<p>TODO:.
2d060 70 75 62 20 66 6e 20 6d 61 69 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 70 pub.fn.main</p>.......<p>TODO:.p
2d080 75 62 20 66 6e 20 70 61 6e 69 63 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 69 ub.fn.panic</p>.......<p>TODO:.i
2d0a0 66 20 6c 69 6e 6b 69 6e 67 20 77 69 74 68 20 6c 69 62 63 20 79 6f 75 20 63 61 6e 20 75 73 65 20 f.linking.with.libc.you.can.use.
2d0c0 65 78 70 6f 72 74 20 66 6e 20 6d 61 69 6e 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f export.fn.main</p>.......<p>TODO
2d0e0 3a 20 6f 72 64 65 72 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 74 6f 70 20 6c 65 76 65 6c 20 64 65 :.order.independent.top.level.de
2d100 63 6c 61 72 61 74 69 6f 6e 73 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 6c 61 clarations</p>.......<p>TODO:.la
2d120 7a 79 20 61 6e 61 6c 79 73 69 73 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 75 zy.analysis</p>.......<p>TODO:.u
2d140 73 69 6e 67 20 63 6f 6d 70 74 69 6d 65 20 7b 20 5f 20 3d 20 40 69 6d 70 6f 72 74 28 29 20 7d 3c sing.comptime.{._.=.@import().}<
2d160 2f 70 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 7a 69 67 2d 74 65 73 74 22 3e 5a 69 67 20 /p>.......<h2.id="zig-test">Zig.
2d180 54 65 73 74 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 62 61 73 69 63 20 75 Test</h2>.......<p>TODO:.basic.u
2d1a0 73 61 67 65 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 6c 61 7a 79 20 61 6e 61 sage</p>.......<p>TODO:.lazy.ana
2d1c0 6c 79 73 69 73 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 2d 2d 74 65 73 74 2d lysis</p>.......<p>TODO:.--test-
2d1e0 66 69 6c 74 65 72 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 2d 2d 74 65 73 74 filter</p>.......<p>TODO:.--test
2d200 2d 6e 61 6d 65 2d 70 72 65 66 69 78 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 -name-prefix</p>.......<p>TODO:.
2d220 74 65 73 74 69 6e 67 20 69 6e 20 72 65 6c 65 61 73 65 66 61 73 74 20 61 6e 64 20 72 65 6c 65 61 testing.in.releasefast.and.relea
2d240 73 65 73 61 66 65 20 6d 6f 64 65 2e 20 61 73 73 65 72 74 20 73 74 69 6c 6c 20 77 6f 72 6b 73 3c sesafe.mode..assert.still.works<
2d260 2f 70 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 7a 69 67 2d 62 75 69 6c 64 2d 73 79 73 74 /p>.......<h2.id="zig-build-syst
2d280 65 6d 22 3e 5a 69 67 20 42 75 69 6c 64 20 53 79 73 74 65 6d 3c 2f 68 32 3e 0a 20 20 20 20 20 20 em">Zig.Build.System</h2>.......
2d2a0 3c 70 3e 54 4f 44 4f 3a 20 65 78 70 6c 61 69 6e 20 70 75 72 70 6f 73 65 2c 20 69 74 27 73 20 73 <p>TODO:.explain.purpose,.it's.s
2d2c0 75 70 70 6f 73 65 64 20 74 6f 20 72 65 70 6c 61 63 65 20 6d 61 6b 65 2f 63 6d 61 6b 65 3c 2f 70 upposed.to.replace.make/cmake</p
2d2e0 3e 0a 20 20 20 20 20 20 3c 70 3e 54 4f 44 4f 3a 20 65 78 61 6d 70 6c 65 20 6f 66 20 62 75 69 6c >.......<p>TODO:.example.of.buil
2d300 64 69 6e 67 20 61 20 7a 69 67 20 65 78 65 63 75 74 61 62 6c 65 3c 2f 70 3e 0a 20 20 20 20 20 20 ding.a.zig.executable</p>.......
2d320 3c 70 3e 54 4f 44 4f 3a 20 65 78 61 6d 70 6c 65 20 6f 66 20 62 75 69 6c 64 69 6e 67 20 61 20 43 <p>TODO:.example.of.building.a.C
2d340 20 6c 69 62 72 61 72 79 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 3d 22 63 22 3e 43 3c .library</p>.......<h2.id="c">C<
2d360 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 41 6c 74 68 6f 75 67 68 20 5a 69 /h2>.......<p>.......Although.Zi
2d380 67 20 69 73 20 69 6e 64 65 70 65 6e 64 65 6e 74 20 6f 66 20 43 2c 20 61 6e 64 2c 20 75 6e 6c 69 g.is.independent.of.C,.and,.unli
2d3a0 6b 65 20 6d 6f 73 74 20 6f 74 68 65 72 20 6c 61 6e 67 75 61 67 65 73 2c 20 64 6f 65 73 20 6e 6f ke.most.other.languages,.does.no
2d3c0 74 20 64 65 70 65 6e 64 20 6f 6e 20 6c 69 62 63 2c 0a 20 20 20 20 20 20 5a 69 67 20 61 63 6b 6e t.depend.on.libc,.......Zig.ackn
2d3e0 6f 77 6c 65 64 67 65 73 20 74 68 65 20 69 6d 70 6f 72 74 61 6e 63 65 20 6f 66 20 69 6e 74 65 72 owledges.the.importance.of.inter
2d400 61 63 74 69 6e 67 20 77 69 74 68 20 65 78 69 73 74 69 6e 67 20 43 20 63 6f 64 65 2e 0a 20 20 20 acting.with.existing.C.code.....
2d420 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 72 65 20 61 72 ...</p>.......<p>.......There.ar
2d440 65 20 61 20 66 65 77 20 77 61 79 73 20 74 68 61 74 20 5a 69 67 20 66 61 63 69 6c 69 74 61 74 65 e.a.few.ways.that.Zig.facilitate
2d460 73 20 43 20 69 6e 74 65 72 6f 70 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 s.C.interop........</p>.......<h
2d480 33 20 69 64 3d 22 63 2d 74 79 70 65 2d 70 72 69 6d 69 74 69 76 65 73 22 3e 43 20 54 79 70 65 20 3.id="c-type-primitives">C.Type.
2d4a0 50 72 69 6d 69 74 69 76 65 73 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 Primitives</h3>.......<p>.......
2d4c0 54 68 65 73 65 20 68 61 76 65 20 67 75 61 72 61 6e 74 65 65 64 20 43 20 41 42 49 20 63 6f 6d 70 These.have.guaranteed.C.ABI.comp
2d4e0 61 74 69 62 69 6c 69 74 79 20 61 6e 64 20 63 61 6e 20 62 65 20 75 73 65 64 20 6c 69 6b 65 20 61 atibility.and.can.be.used.like.a
2d500 6e 79 20 6f 74 68 65 72 20 74 79 70 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 ny.other.type........</p>.......
2d520 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 5f 73 68 6f 72 74 3c 2f <ul>.........<li><code>c_short</
2d540 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 5f 75 code></li>.........<li><code>c_u
2d560 73 68 6f 72 74 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 short</code></li>.........<li><c
2d580 6f 64 65 3e 63 5f 69 6e 74 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c ode>c_int</code></li>.........<l
2d5a0 69 3e 3c 63 6f 64 65 3e 63 5f 75 69 6e 74 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 i><code>c_uint</code></li>......
2d5c0 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 5f 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a ...<li><code>c_long</code></li>.
2d5e0 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 5f 75 6c 6f 6e 67 3c 2f 63 6f 64 65 3e ........<li><code>c_ulong</code>
2d600 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 5f 6c 6f 6e 67 6c 6f </li>.........<li><code>c_longlo
2d620 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 ng</code></li>.........<li><code
2d640 3e 63 5f 75 6c 6f 6e 67 6c 6f 6e 67 3c 2f 63 6f 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 >c_ulonglong</code></li>........
2d660 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 5f 6c 6f 6e 67 64 6f 75 62 6c 65 3c 2f 63 6f 64 65 3e 3c 2f .<li><code>c_longdouble</code></
2d680 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 63 6f 64 65 3e 63 5f 76 6f 69 64 3c 2f 63 6f li>.........<li><code>c_void</co
2d6a0 64 65 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 de></li>.......</ul>.......<p>Se
2d6c0 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c e.also:</p>.......<ul>.........<
2d6e0 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 70 72 69 6d 69 74 69 76 65 2d 74 79 70 65 73 22 3e 50 72 li><a.href="#primitive-types">Pr
2d700 69 6d 69 74 69 76 65 20 54 79 70 65 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 imitive.Types</a></li>.......</u
2d720 6c 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 63 2d 73 74 72 69 6e 67 2d 6c 69 74 65 72 61 l>.......<h3.id="c-string-litera
2d740 6c 73 22 3e 43 20 53 74 72 69 6e 67 20 4c 69 74 65 72 61 6c 73 3c 2f 68 33 3e 0a 20 20 20 20 20 ls">C.String.Literals</h3>......
2d760 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 65 78 74 65 72 6e 20 66 .<pre><code.class="zig">extern.f
2d780 6e 20 70 75 74 73 28 26 61 6d 70 3b 63 6f 6e 73 74 20 75 38 29 3b 0a 0a 70 75 62 20 66 6e 20 6d n.puts(&amp;const.u8);..pub.fn.m
2d7a0 61 69 6e 28 29 20 2d 26 67 74 3b 20 25 76 6f 69 64 20 7b 0a 20 20 20 20 70 75 74 73 28 63 22 74 ain().-&gt;.%void.{.....puts(c"t
2d7c0 68 69 73 20 68 61 73 20 61 20 6e 75 6c 6c 20 74 65 72 6d 69 6e 61 74 6f 72 22 29 3b 0a 20 20 20 his.has.a.null.terminator");....
2d7e0 20 70 75 74 73 28 0a 20 20 20 20 20 20 20 20 63 5c 5c 61 6e 64 20 73 6f 0a 20 20 20 20 20 20 20 .puts(.........c\\and.so........
2d800 20 63 5c 5c 64 6f 65 73 20 74 68 69 73 0a 20 20 20 20 20 20 20 20 63 5c 5c 6d 75 6c 74 69 6c 69 .c\\does.this.........c\\multili
2d820 6e 65 20 43 20 73 74 72 69 6e 67 20 6c 69 74 65 72 61 6c 0a 20 20 20 20 29 3b 0a 7d 3c 2f 63 6f ne.C.string.literal.....);.}</co
2d840 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e de></pre>.......<p>See.also:</p>
2d860 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d .......<ul>.........<li><a.href=
2d880 22 23 73 74 72 69 6e 67 2d 6c 69 74 65 72 61 6c 73 22 3e 53 74 72 69 6e 67 20 4c 69 74 65 72 61 "#string-literals">String.Litera
2d8a0 6c 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 ls</a></li>.......</ul>.......<h
2d8c0 33 20 69 64 3d 22 63 2d 69 6d 70 6f 72 74 22 3e 49 6d 70 6f 72 74 20 66 72 6f 6d 20 43 20 48 65 3.id="c-import">Import.from.C.He
2d8e0 61 64 65 72 20 46 69 6c 65 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 ader.File</h3>.......<p>.......T
2d900 68 65 20 3c 63 6f 64 65 3e 40 63 49 6d 70 6f 72 74 3c 2f 63 6f 64 65 3e 20 62 75 69 6c 74 69 6e he.<code>@cImport</code>.builtin
2d920 20 66 75 6e 63 74 69 6f 6e 20 63 61 6e 20 62 65 20 75 73 65 64 0a 20 20 20 20 20 20 74 6f 20 64 .function.can.be.used.......to.d
2d940 69 72 65 63 74 6c 79 20 69 6d 70 6f 72 74 20 73 79 6d 62 6f 6c 73 20 66 72 6f 6d 20 2e 68 20 66 irectly.import.symbols.from..h.f
2d960 69 6c 65 73 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 iles:.......</p>.......<pre><cod
2d980 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 63 20 3d 20 40 63 49 6d 70 6f 72 74 e.class="zig">const.c.=.@cImport
2d9a0 28 40 63 49 6e 63 6c 75 64 65 28 22 73 74 64 69 6f 2e 68 22 29 29 3b 0a 70 75 62 20 66 6e 20 6d (@cInclude("stdio.h"));.pub.fn.m
2d9c0 61 69 6e 28 29 20 2d 26 67 74 3b 20 25 76 6f 69 64 20 7b 0a 20 20 20 20 63 2e 70 72 69 6e 74 66 ain().-&gt;.%void.{.....c.printf
2d9e0 28 22 68 65 6c 6c 6f 5c 6e 22 29 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 ("hello\n");.}</code></pre>.....
2da00 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 3c 63 6f 64 65 3e 40 63 49 6d 70 6f 72 74 3c 2f ..<p>.......The.<code>@cImport</
2da20 63 6f 64 65 3e 20 66 75 6e 63 74 69 6f 6e 20 74 61 6b 65 73 20 61 6e 20 65 78 70 72 65 73 73 69 code>.function.takes.an.expressi
2da40 6f 6e 20 61 73 20 61 20 70 61 72 61 6d 65 74 65 72 2e 0a 20 20 20 20 20 20 54 68 69 73 20 65 78 on.as.a.parameter........This.ex
2da60 70 72 65 73 73 69 6f 6e 20 69 73 20 65 76 61 6c 75 61 74 65 64 20 61 74 20 63 6f 6d 70 69 6c 65 pression.is.evaluated.at.compile
2da80 2d 74 69 6d 65 20 61 6e 64 20 69 73 20 75 73 65 64 20 74 6f 20 63 6f 6e 74 72 6f 6c 0a 20 20 20 -time.and.is.used.to.control....
2daa0 20 20 20 70 72 65 70 72 6f 63 65 73 73 6f 72 20 64 69 72 65 63 74 69 76 65 73 20 61 6e 64 20 69 ...preprocessor.directives.and.i
2dac0 6e 63 6c 75 64 65 20 6d 75 6c 74 69 70 6c 65 20 2e 68 20 66 69 6c 65 73 3a 0a 20 20 20 20 20 20 nclude.multiple..h.files:.......
2dae0 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 </p>.......<pre><code.class="zig
2db00 22 3e 63 6f 6e 73 74 20 62 75 69 6c 74 69 6e 20 3d 20 40 69 6d 70 6f 72 74 28 22 62 75 69 6c 74 ">const.builtin.=.@import("built
2db20 69 6e 22 29 3b 0a 0a 63 6f 6e 73 74 20 63 20 3d 20 40 63 49 6d 70 6f 72 74 28 7b 0a 20 20 20 20 in");..const.c.=.@cImport({.....
2db40 40 63 44 65 66 69 6e 65 28 22 4e 44 45 42 55 47 22 2c 20 62 75 69 6c 74 69 6e 2e 6d 6f 64 65 20 @cDefine("NDEBUG",.builtin.mode.
2db60 3d 3d 20 62 75 69 6c 74 69 6e 2e 4d 6f 64 65 2e 52 65 6c 65 61 73 65 46 61 73 74 29 3b 0a 20 20 ==.builtin.Mode.ReleaseFast);...
2db80 20 20 69 66 20 28 73 6f 6d 65 74 68 69 6e 67 29 20 7b 0a 20 20 20 20 20 20 20 20 40 63 44 65 66 ..if.(something).{.........@cDef
2dba0 69 6e 65 28 22 5f 47 4e 55 5f 53 4f 55 52 43 45 22 2c 20 7b 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 ine("_GNU_SOURCE",.{});.....}...
2dbc0 20 20 40 63 49 6e 63 6c 75 64 65 28 22 73 74 64 6c 69 62 2e 68 22 29 0a 20 20 20 20 69 66 20 28 ..@cInclude("stdlib.h").....if.(
2dbe0 73 6f 6d 65 74 68 69 6e 67 29 20 7b 0a 20 20 20 20 20 20 20 20 40 63 55 6e 64 65 66 28 22 5f 47 something).{.........@cUndef("_G
2dc00 4e 55 5f 53 4f 55 52 43 45 22 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 40 63 49 6e 63 6c 75 64 65 NU_SOURCE");.....}.....@cInclude
2dc20 28 22 73 6f 75 6e 64 69 6f 2e 68 22 29 3b 0a 7d 29 3b 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a ("soundio.h");.});</code></pre>.
2dc40 20 20 20 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c ......<p>See.also:</p>.......<ul
2dc60 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d >.........<li><a.href="#builtin-
2dc80 63 49 6d 70 6f 72 74 22 3e 40 63 49 6d 70 6f 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 cImport">@cImport</a></li>......
2dca0 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 49 6e 63 6c 75 64 ...<li><a.href="#builtin-cInclud
2dcc0 65 22 3e 40 63 49 6e 63 6c 75 64 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c e">@cInclude</a></li>.........<l
2dce0 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 44 65 66 69 6e 65 22 3e 40 63 44 i><a.href="#builtin-cDefine">@cD
2dd00 65 66 69 6e 65 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 efine</a></li>.........<li><a.hr
2dd20 65 66 3d 22 23 62 75 69 6c 74 69 6e 2d 63 55 6e 64 65 66 22 3e 40 63 55 6e 64 65 66 3c 2f 61 3e ef="#builtin-cUndef">@cUndef</a>
2dd40 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 62 75 69 6c </li>.........<li><a.href="#buil
2dd60 74 69 6e 2d 69 6d 70 6f 72 74 22 3e 40 69 6d 70 6f 72 74 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 tin-import">@import</a></li>....
2dd80 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 6d 69 78 69 6e 67 2d 6f 62 ...</ul>.......<h3.id="mixing-ob
2dda0 6a 65 63 74 2d 66 69 6c 65 73 22 3e 4d 69 78 69 6e 67 20 4f 62 6a 65 63 74 20 46 69 6c 65 73 3c ject-files">Mixing.Object.Files<
2ddc0 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 59 6f 75 20 63 61 6e 20 6d 69 78 /h3>.......<p>.......You.can.mix
2dde0 20 5a 69 67 20 6f 62 6a 65 63 74 20 66 69 6c 65 73 20 77 69 74 68 20 61 6e 79 20 6f 74 68 65 72 .Zig.object.files.with.any.other
2de00 20 6f 62 6a 65 63 74 20 66 69 6c 65 73 20 74 68 61 74 20 72 65 73 70 65 63 74 20 74 68 65 20 43 .object.files.that.respect.the.C
2de20 20 41 42 49 2e 20 45 78 61 6d 70 6c 65 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 .ABI..Example:.......</p>.......
2de40 3c 68 34 3e 62 61 73 65 36 34 2e 7a 69 67 3c 2f 68 34 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c <h4>base64.zig</h4>.......<pre><
2de60 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 62 61 73 65 36 34 20 3d 20 code.class="zig">const.base64.=.
2de80 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 2e 62 61 73 65 36 34 3b 0a 0a 65 78 70 6f 72 74 20 66 @import("std").base64;..export.f
2dea0 6e 20 64 65 63 6f 64 65 5f 62 61 73 65 5f 36 34 28 64 65 73 74 5f 70 74 72 3a 20 26 61 6d 70 3b n.decode_base_64(dest_ptr:.&amp;
2dec0 75 38 2c 20 64 65 73 74 5f 6c 65 6e 3a 20 75 73 69 7a 65 2c 0a 20 20 20 20 73 6f 75 72 63 65 5f u8,.dest_len:.usize,.....source_
2dee0 70 74 72 3a 20 26 61 6d 70 3b 63 6f 6e 73 74 20 75 38 2c 20 73 6f 75 72 63 65 5f 6c 65 6e 3a 20 ptr:.&amp;const.u8,.source_len:.
2df00 75 73 69 7a 65 29 20 2d 26 67 74 3b 20 75 73 69 7a 65 0a 7b 0a 20 20 20 20 63 6f 6e 73 74 20 73 usize).-&gt;.usize.{.....const.s
2df20 72 63 20 3d 20 73 6f 75 72 63 65 5f 70 74 72 5b 30 2e 2e 2e 73 6f 75 72 63 65 5f 6c 65 6e 5d 3b rc.=.source_ptr[0...source_len];
2df40 0a 20 20 20 20 63 6f 6e 73 74 20 64 65 73 74 20 3d 20 64 65 73 74 5f 70 74 72 5b 30 2e 2e 2e 64 .....const.dest.=.dest_ptr[0...d
2df60 65 73 74 5f 6c 65 6e 5d 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 62 61 73 65 36 34 2e 64 65 63 6f est_len];.....return.base64.deco
2df80 64 65 28 64 65 73 74 2c 20 73 72 63 29 2e 6c 65 6e 3b 0a 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 de(dest,.src).len;.}</code></pre
2dfa0 3e 0a 20 20 20 20 20 20 3c 68 34 3e 74 65 73 74 2e 63 3c 2f 68 34 3e 0a 20 20 20 20 20 20 3c 70 >.......<h4>test.c</h4>.......<p
2dfc0 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 63 22 3e 2f 2f 20 54 68 69 73 20 68 65 61 64 65 re><code.class="c">//.This.heade
2dfe0 72 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 62 79 20 7a 69 67 20 66 72 6f 6d 20 62 61 73 65 36 r.is.generated.by.zig.from.base6
2e000 34 2e 7a 69 67 0a 23 69 6e 63 6c 75 64 65 20 22 62 61 73 65 36 34 2e 68 22 0a 0a 23 69 6e 63 6c 4.zig.#include."base64.h"..#incl
2e020 75 64 65 20 26 6c 74 3b 73 74 72 69 6e 67 2e 68 26 67 74 3b 0a 23 69 6e 63 6c 75 64 65 20 26 6c ude.&lt;string.h&gt;.#include.&l
2e040 74 3b 73 74 64 69 6f 2e 68 26 67 74 3b 0a 0a 69 6e 74 20 6d 61 69 6e 28 69 6e 74 20 61 72 67 63 t;stdio.h&gt;..int.main(int.argc
2e060 2c 20 63 68 61 72 20 2a 2a 61 72 67 76 29 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20 ,.char.**argv).{.....const.char.
2e080 2a 65 6e 63 6f 64 65 64 20 3d 20 22 59 57 78 73 49 48 6c 76 64 58 49 67 59 6d 46 7a 5a 53 42 68 *encoded.=."YWxsIHlvdXIgYmFzZSBh
2e0a0 63 6d 55 67 59 6d 56 73 62 32 35 6e 49 48 52 76 49 48 56 7a 22 3b 0a 20 20 20 20 63 68 61 72 20 cmUgYmVsb25nIHRvIHVz";.....char.
2e0c0 62 75 66 5b 32 30 30 5d 3b 0a 0a 20 20 20 20 73 69 7a 65 5f 74 20 6c 65 6e 20 3d 20 64 65 63 6f buf[200];......size_t.len.=.deco
2e0e0 64 65 5f 62 61 73 65 5f 36 34 28 62 75 66 2c 20 32 30 30 2c 20 65 6e 63 6f 64 65 64 2c 20 73 74 de_base_64(buf,.200,.encoded,.st
2e100 72 6c 65 6e 28 65 6e 63 6f 64 65 64 29 29 3b 0a 20 20 20 20 62 75 66 5b 6c 65 6e 5d 20 3d 20 30 rlen(encoded));.....buf[len].=.0
2e120 3b 0a 20 20 20 20 70 75 74 73 28 62 75 66 29 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a ;.....puts(buf);......return.0;.
2e140 7d 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 34 3e 62 75 69 6c 64 2e 7a }</code></pre>.......<h4>build.z
2e160 69 67 3c 2f 68 34 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 ig</h4>.......<pre><code.class="
2e180 7a 69 67 22 3e 63 6f 6e 73 74 20 42 75 69 6c 64 65 72 20 3d 20 40 69 6d 70 6f 72 74 28 22 73 74 zig">const.Builder.=.@import("st
2e1a0 64 22 29 2e 62 75 69 6c 64 2e 42 75 69 6c 64 65 72 3b 0a 0a 70 75 62 20 66 6e 20 62 75 69 6c 64 d").build.Builder;..pub.fn.build
2e1c0 28 62 3a 20 26 61 6d 70 3b 42 75 69 6c 64 65 72 29 20 7b 0a 20 20 20 20 63 6f 6e 73 74 20 6f 62 (b:.&amp;Builder).{.....const.ob
2e1e0 6a 20 3d 20 62 2e 61 64 64 4f 62 6a 65 63 74 28 22 62 61 73 65 36 34 22 2c 20 22 62 61 73 65 36 j.=.b.addObject("base64",."base6
2e200 34 2e 7a 69 67 22 29 3b 0a 0a 20 20 20 20 63 6f 6e 73 74 20 65 78 65 20 3d 20 62 2e 61 64 64 43 4.zig");......const.exe.=.b.addC
2e220 45 78 65 63 75 74 61 62 6c 65 28 22 74 65 73 74 22 29 3b 0a 20 20 20 20 65 78 65 2e 61 64 64 43 Executable("test");.....exe.addC
2e240 6f 6d 70 69 6c 65 46 6c 61 67 73 28 5b 5d 5b 5d 63 6f 6e 73 74 20 75 38 20 7b 0a 20 20 20 20 20 ompileFlags([][]const.u8.{......
2e260 20 20 20 22 2d 73 74 64 3d 63 39 39 22 2c 0a 20 20 20 20 7d 29 3b 0a 20 20 20 20 65 78 65 2e 61 ..."-std=c99",.....});.....exe.a
2e280 64 64 53 6f 75 72 63 65 46 69 6c 65 28 22 74 65 73 74 2e 63 22 29 3b 0a 20 20 20 20 65 78 65 2e ddSourceFile("test.c");.....exe.
2e2a0 61 64 64 4f 62 6a 65 63 74 28 6f 62 6a 29 3b 0a 20 20 20 20 65 78 65 2e 73 65 74 4f 75 74 70 75 addObject(obj);.....exe.setOutpu
2e2c0 74 50 61 74 68 28 22 2e 22 29 3b 0a 0a 20 20 20 20 62 2e 64 65 66 61 75 6c 74 5f 73 74 65 70 2e tPath(".");......b.default_step.
2e2e0 64 65 70 65 6e 64 4f 6e 28 26 61 6d 70 3b 65 78 65 2e 73 74 65 70 29 3b 0a 7d 3c 2f 63 6f 64 65 dependOn(&amp;exe.step);.}</code
2e300 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 34 3e 54 65 72 6d 69 6e 61 6c 3c 2f 68 34 3e 0a ></pre>.......<h4>Terminal</h4>.
2e320 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e 24 20 7a 69 ......<pre><code.class="sh">$.zi
2e340 67 20 62 75 69 6c 64 0a 24 20 2e 2f 74 65 73 74 0a 61 6c 6c 20 79 6f 75 72 20 62 61 73 65 20 61 g.build.$../test.all.your.base.a
2e360 72 65 20 62 65 6c 6f 6e 67 20 74 6f 20 75 73 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 re.belong.to.us</code></pre>....
2e380 20 20 20 3c 70 3e 53 65 65 20 61 6c 73 6f 3a 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 ...<p>See.also:</p>.......<ul>..
2e3a0 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 22 23 74 61 72 67 65 74 73 22 3e 54 61 .......<li><a.href="#targets">Ta
2e3c0 72 67 65 74 73 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 rgets</a></li>.........<li><a.hr
2e3e0 65 66 3d 22 23 7a 69 67 2d 62 75 69 6c 64 2d 73 79 73 74 65 6d 22 3e 5a 69 67 20 42 75 69 6c 64 ef="#zig-build-system">Zig.Build
2e400 20 53 79 73 74 65 6d 3c 2f 61 3e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 .System</a></li>.......</ul>....
2e420 20 20 20 3c 68 32 20 69 64 3d 22 74 61 72 67 65 74 73 22 3e 54 61 72 67 65 74 73 3c 2f 68 32 3e ...<h2.id="targets">Targets</h2>
2e440 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 5a 69 67 20 73 75 70 70 6f 72 74 73 20 67 65 .......<p>.......Zig.supports.ge
2e460 6e 65 72 61 74 69 6e 67 20 63 6f 64 65 20 66 6f 72 20 61 6c 6c 20 74 61 72 67 65 74 73 20 74 68 nerating.code.for.all.targets.th
2e480 61 74 20 4c 4c 56 4d 20 73 75 70 70 6f 72 74 73 2e 20 48 65 72 65 20 69 73 0a 20 20 20 20 20 20 at.LLVM.supports..Here.is.......
2e4a0 77 68 61 74 20 69 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 74 6f 20 65 78 65 63 75 74 65 20 3c 63 what.it.looks.like.to.execute.<c
2e4c0 6f 64 65 3e 7a 69 67 20 74 61 72 67 65 74 73 3c 2f 63 6f 64 65 3e 20 6f 6e 20 61 20 4c 69 6e 75 ode>zig.targets</code>.on.a.Linu
2e4e0 78 20 78 38 36 5f 36 34 0a 20 20 20 20 20 20 63 6f 6d 70 75 74 65 72 3a 0a 20 20 20 20 20 20 3c x.x86_64.......computer:.......<
2e500 2f 70 3e 0a 20 20 20 20 20 20 3c 70 72 65 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 73 68 22 3e /p>.......<pre><code.class="sh">
2e520 24 20 7a 69 67 20 74 61 72 67 65 74 73 0a 41 72 63 68 69 74 65 63 74 75 72 65 73 3a 0a 20 20 61 $.zig.targets.Architectures:...a
2e540 72 6d 76 38 5f 32 61 0a 20 20 61 72 6d 76 38 5f 31 61 0a 20 20 61 72 6d 76 38 0a 20 20 61 72 6d rmv8_2a...armv8_1a...armv8...arm
2e560 76 38 6d 5f 62 61 73 65 6c 69 6e 65 0a 20 20 61 72 6d 76 38 6d 5f 6d 61 69 6e 6c 69 6e 65 0a 20 v8m_baseline...armv8m_mainline..
2e580 20 61 72 6d 76 37 0a 20 20 61 72 6d 76 37 65 6d 0a 20 20 61 72 6d 76 37 6d 0a 20 20 61 72 6d 76 .armv7...armv7em...armv7m...armv
2e5a0 37 73 0a 20 20 61 72 6d 76 37 6b 0a 20 20 61 72 6d 76 36 0a 20 20 61 72 6d 76 36 6d 0a 20 20 61 7s...armv7k...armv6...armv6m...a
2e5c0 72 6d 76 36 6b 0a 20 20 61 72 6d 76 36 74 32 0a 20 20 61 72 6d 76 35 0a 20 20 61 72 6d 76 35 74 rmv6k...armv6t2...armv5...armv5t
2e5e0 65 0a 20 20 61 72 6d 76 34 74 0a 20 20 61 72 6d 65 62 0a 20 20 61 61 72 63 68 36 34 0a 20 20 61 e...armv4t...armeb...aarch64...a
2e600 61 72 63 68 36 34 5f 62 65 0a 20 20 61 76 72 0a 20 20 62 70 66 65 6c 0a 20 20 62 70 66 65 62 0a arch64_be...avr...bpfel...bpfeb.
2e620 20 20 68 65 78 61 67 6f 6e 0a 20 20 6d 69 70 73 0a 20 20 6d 69 70 73 65 6c 0a 20 20 6d 69 70 73 ..hexagon...mips...mipsel...mips
2e640 36 34 0a 20 20 6d 69 70 73 36 34 65 6c 0a 20 20 6d 73 70 34 33 30 0a 20 20 70 6f 77 65 72 70 63 64...mips64el...msp430...powerpc
2e660 0a 20 20 70 6f 77 65 72 70 63 36 34 0a 20 20 70 6f 77 65 72 70 63 36 34 6c 65 0a 20 20 72 36 30 ...powerpc64...powerpc64le...r60
2e680 30 0a 20 20 61 6d 64 67 63 6e 0a 20 20 73 70 61 72 63 0a 20 20 73 70 61 72 63 76 39 0a 20 20 73 0...amdgcn...sparc...sparcv9...s
2e6a0 70 61 72 63 65 6c 0a 20 20 73 33 39 30 78 0a 20 20 74 63 65 0a 20 20 74 68 75 6d 62 0a 20 20 74 parcel...s390x...tce...thumb...t
2e6c0 68 75 6d 62 65 62 0a 20 20 69 33 38 36 0a 20 20 78 38 36 5f 36 34 20 28 6e 61 74 69 76 65 29 0a humbeb...i386...x86_64.(native).
2e6e0 20 20 78 63 6f 72 65 0a 20 20 6e 76 70 74 78 0a 20 20 6e 76 70 74 78 36 34 0a 20 20 6c 65 33 32 ..xcore...nvptx...nvptx64...le32
2e700 0a 20 20 6c 65 36 34 0a 20 20 61 6d 64 69 6c 0a 20 20 61 6d 64 69 6c 36 34 0a 20 20 68 73 61 69 ...le64...amdil...amdil64...hsai
2e720 6c 0a 20 20 68 73 61 69 6c 36 34 0a 20 20 73 70 69 72 36 34 0a 20 20 6b 61 6c 69 6d 62 61 76 33 l...hsail64...spir64...kalimbav3
2e740 0a 20 20 6b 61 6c 69 6d 62 61 76 34 0a 20 20 6b 61 6c 69 6d 62 61 76 35 0a 20 20 73 68 61 76 65 ...kalimbav4...kalimbav5...shave
2e760 0a 20 20 6c 61 6e 61 69 0a 20 20 77 61 73 6d 33 32 0a 20 20 77 61 73 6d 36 34 0a 20 20 72 65 6e ...lanai...wasm32...wasm64...ren
2e780 64 65 72 73 63 72 69 70 74 33 32 0a 20 20 72 65 6e 64 65 72 73 63 72 69 70 74 36 34 0a 0a 4f 70 derscript32...renderscript64..Op
2e7a0 65 72 61 74 69 6e 67 20 53 79 73 74 65 6d 73 3a 0a 20 20 66 72 65 65 73 74 61 6e 64 69 6e 67 0a erating.Systems:...freestanding.
2e7c0 20 20 63 6c 6f 75 64 61 62 69 0a 20 20 64 61 72 77 69 6e 0a 20 20 64 72 61 67 6f 6e 66 6c 79 0a ..cloudabi...darwin...dragonfly.
2e7e0 20 20 66 72 65 65 62 73 64 0a 20 20 69 6f 73 0a 20 20 6b 66 72 65 65 62 73 64 0a 20 20 6c 69 6e ..freebsd...ios...kfreebsd...lin
2e800 75 78 20 28 6e 61 74 69 76 65 29 0a 20 20 6c 76 32 0a 20 20 6d 61 63 6f 73 78 0a 20 20 6e 65 74 ux.(native)...lv2...macosx...net
2e820 62 73 64 0a 20 20 6f 70 65 6e 62 73 64 0a 20 20 73 6f 6c 61 72 69 73 0a 20 20 77 69 6e 64 6f 77 bsd...openbsd...solaris...window
2e840 73 0a 20 20 68 61 69 6b 75 0a 20 20 6d 69 6e 69 78 0a 20 20 72 74 65 6d 73 0a 20 20 6e 61 63 6c s...haiku...minix...rtems...nacl
2e860 0a 20 20 63 6e 6b 0a 20 20 62 69 74 72 69 67 0a 20 20 61 69 78 0a 20 20 63 75 64 61 0a 20 20 6e ...cnk...bitrig...aix...cuda...n
2e880 76 63 6c 0a 20 20 61 6d 64 68 73 61 0a 20 20 70 73 34 0a 20 20 65 6c 66 69 61 6d 63 75 0a 20 20 vcl...amdhsa...ps4...elfiamcu...
2e8a0 74 76 6f 73 0a 20 20 77 61 74 63 68 6f 73 0a 20 20 6d 65 73 61 33 64 0a 0a 45 6e 76 69 72 6f 6e tvos...watchos...mesa3d..Environ
2e8c0 6d 65 6e 74 73 3a 0a 20 20 67 6e 75 20 28 6e 61 74 69 76 65 29 0a 20 20 67 6e 75 61 62 69 36 34 ments:...gnu.(native)...gnuabi64
2e8e0 0a 20 20 67 6e 75 65 61 62 69 0a 20 20 67 6e 75 65 61 62 69 68 66 0a 20 20 67 6e 75 78 33 32 0a ...gnueabi...gnueabihf...gnux32.
2e900 20 20 63 6f 64 65 31 36 0a 20 20 65 61 62 69 0a 20 20 65 61 62 69 68 66 0a 20 20 61 6e 64 72 6f ..code16...eabi...eabihf...andro
2e920 69 64 0a 20 20 6d 75 73 6c 0a 20 20 6d 75 73 6c 65 61 62 69 0a 20 20 6d 75 73 6c 65 61 62 69 68 id...musl...musleabi...musleabih
2e940 66 0a 20 20 6d 73 76 63 0a 20 20 69 74 61 6e 69 75 6d 0a 20 20 63 79 67 6e 75 73 0a 20 20 61 6d f...msvc...itanium...cygnus...am
2e960 64 6f 70 65 6e 63 6c 0a 20 20 63 6f 72 65 63 6c 72 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 dopencl...coreclr</code></pre>..
2e980 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 20 5a 69 67 20 53 74 61 6e 64 61 72 64 20 .....<p>.......The.Zig.Standard.
2e9a0 4c 69 62 72 61 72 79 20 28 3c 63 6f 64 65 3e 40 69 6d 70 6f 72 74 28 22 73 74 64 22 29 3c 2f 63 Library.(<code>@import("std")</c
2e9c0 6f 64 65 3e 29 20 68 61 73 20 61 72 63 68 69 74 65 63 74 75 72 65 2c 20 65 6e 76 69 72 6f 6e 6d ode>).has.architecture,.environm
2e9e0 65 6e 74 2c 20 61 6e 64 20 6f 70 65 72 61 74 69 6e 67 20 73 79 74 73 65 6d 0a 20 20 20 20 20 20 ent,.and.operating.sytsem.......
2ea00 61 62 73 74 72 61 63 74 69 6f 6e 73 2c 20 61 6e 64 20 74 68 75 73 20 74 61 6b 65 73 20 61 64 64 abstractions,.and.thus.takes.add
2ea20 69 74 69 6f 6e 61 6c 20 77 6f 72 6b 20 74 6f 20 73 75 70 70 6f 72 74 20 6d 6f 72 65 20 70 6c 61 itional.work.to.support.more.pla
2ea40 74 66 6f 72 6d 73 2e 20 49 74 20 63 75 72 72 65 6e 74 6c 79 20 73 75 70 70 6f 72 74 73 0a 20 20 tforms..It.currently.supports...
2ea60 20 20 20 20 4c 69 6e 75 78 20 78 38 36 5f 36 34 2e 20 4e 6f 74 20 61 6c 6c 20 73 74 61 6e 64 61 ....Linux.x86_64..Not.all.standa
2ea80 72 64 20 6c 69 62 72 61 72 79 20 63 6f 64 65 20 72 65 71 75 69 72 65 73 20 6f 70 65 72 61 74 69 rd.library.code.requires.operati
2eaa0 6e 67 20 73 79 73 74 65 6d 20 61 62 73 74 72 61 63 74 69 6f 6e 73 2c 20 68 6f 77 65 76 65 72 2c ng.system.abstractions,.however,
2eac0 0a 20 20 20 20 20 20 73 6f 20 74 68 69 6e 67 73 20 73 75 63 68 20 61 73 20 67 65 6e 65 72 69 63 .......so.things.such.as.generic
2eae0 20 64 61 74 61 20 73 74 72 75 63 74 75 72 65 73 20 77 6f 72 6b 20 61 6e 20 61 6c 6c 20 61 62 6f .data.structures.work.an.all.abo
2eb00 76 65 20 70 6c 61 74 66 6f 72 6d 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c ve.platforms........</p>.......<
2eb20 68 32 20 69 64 3d 22 73 74 79 6c 65 2d 67 75 69 64 65 22 3e 53 74 79 6c 65 20 47 75 69 64 65 3c h2.id="style-guide">Style.Guide<
2eb40 2f 68 32 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 54 68 65 73 65 20 63 6f 64 69 6e 67 20 63 6f 6e 76 /h2>.......<p>.These.coding.conv
2eb60 65 6e 74 69 6f 6e 73 20 61 72 65 20 6e 6f 74 20 65 6e 66 6f 72 63 65 64 20 62 79 20 74 68 65 20 entions.are.not.enforced.by.the.
2eb80 63 6f 6d 70 69 6c 65 72 2c 20 62 75 74 20 74 68 65 79 20 61 72 65 20 73 68 69 70 70 65 64 20 69 compiler,.but.they.are.shipped.i
2eba0 6e 0a 74 68 69 73 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 61 6c 6f 6e 67 20 77 69 74 68 20 n.this.documentation.along.with.
2ebc0 74 68 65 20 63 6f 6d 70 69 6c 65 72 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 70 72 6f 76 69 64 65 the.compiler.in.order.to.provide
2ebe0 20 61 20 70 6f 69 6e 74 20 6f 66 0a 72 65 66 65 72 65 6e 63 65 2c 20 73 68 6f 75 6c 64 20 61 6e .a.point.of.reference,.should.an
2ec00 79 6f 6e 65 20 77 69 73 68 20 74 6f 20 70 6f 69 6e 74 20 74 6f 20 61 6e 20 61 75 74 68 6f 72 69 yone.wish.to.point.to.an.authori
2ec20 74 79 20 6f 6e 20 61 67 72 65 65 64 20 75 70 6f 6e 20 5a 69 67 0a 63 6f 64 69 6e 67 20 73 74 79 ty.on.agreed.upon.Zig.coding.sty
2ec40 6c 65 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 73 74 79 le........</p>.......<h3.id="sty
2ec60 6c 65 2d 67 75 69 64 65 2d 77 68 69 74 65 73 70 61 63 65 22 3e 57 68 69 74 65 73 70 61 63 65 3c le-guide-whitespace">Whitespace<
2ec80 2f 68 33 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 /h3>.......<ul>.........<li>....
2eca0 20 20 20 20 20 20 20 34 20 73 70 61 63 65 20 69 6e 64 65 6e 74 61 74 69 6f 6e 0a 20 20 20 20 20 .......4.space.indentation......
2ecc0 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 ...</li>.........<li>...........
2ece0 4f 70 65 6e 20 62 72 61 63 65 73 20 6f 6e 20 73 61 6d 65 20 6c 69 6e 65 2c 20 75 6e 6c 65 73 73 Open.braces.on.same.line,.unless
2ed00 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 77 72 61 70 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e .you.need.to.wrap..........</li>
2ed20 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 49 66 20 61 20 6c 69 73 74 20 6f 66 20 74 68 69 6e 67 73 .........<li>If.a.list.of.things
2ed40 20 69 73 20 6c 6f 6e 67 65 72 20 74 68 61 6e 20 32 2c 20 70 75 74 20 65 61 63 68 20 69 74 65 6d .is.longer.than.2,.put.each.item
2ed60 20 6f 6e 20 69 74 73 20 6f 77 6e 20 6c 69 6e 65 20 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 65 .on.its.own.line.and...........e
2ed80 78 65 72 63 69 73 65 20 74 68 65 20 61 62 69 6c 74 79 20 74 6f 20 70 75 74 20 61 6e 20 65 78 74 xercise.the.abilty.to.put.an.ext
2eda0 72 61 20 63 6f 6d 6d 61 20 61 74 20 74 68 65 20 65 6e 64 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c ra.comma.at.the.end..........</l
2edc0 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 4c 69 6e 65 20 6c i>.........<li>...........Line.l
2ede0 65 6e 67 74 68 3a 20 61 69 6d 20 66 6f 72 20 31 30 30 3b 20 75 73 65 20 63 6f 6d 6d 6f 6e 20 73 ength:.aim.for.100;.use.common.s
2ee00 65 6e 73 65 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 3c 2f 75 6c 3e 0a ense..........</li>.......</ul>.
2ee20 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 73 74 79 6c 65 2d 67 75 69 64 65 2d 6e 61 6d 65 73 22 ......<h3.id="style-guide-names"
2ee40 3e 4e 61 6d 65 73 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 52 6f 75 67 >Names</h3>.......<p>.......Roug
2ee60 68 6c 79 20 73 70 65 61 6b 69 6e 67 3a 20 3c 63 6f 64 65 3e 63 61 6d 65 6c 43 61 73 65 46 75 6e hly.speaking:.<code>camelCaseFun
2ee80 63 74 69 6f 6e 4e 61 6d 65 3c 2f 63 6f 64 65 3e 2c 20 3c 63 6f 64 65 3e 54 69 74 6c 65 43 61 73 ctionName</code>,.<code>TitleCas
2eea0 65 54 79 70 65 4e 61 6d 65 3c 2f 63 6f 64 65 3e 2c 0a 20 20 20 20 20 20 3c 63 6f 64 65 3e 73 6e eTypeName</code>,.......<code>sn
2eec0 61 6b 65 5f 63 61 73 65 5f 76 61 72 69 61 62 6c 65 5f 6e 61 6d 65 3c 2f 63 6f 64 65 3e 2e 20 4d ake_case_variable_name</code>..M
2eee0 6f 72 65 20 70 72 65 63 69 73 65 6c 79 3a 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 ore.precisely:.......</p>.......
2ef00 3c 75 6c 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 49 66 20 3c <ul>.........<li>...........If.<
2ef20 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 69 73 20 61 20 3c 63 6f 64 65 3e 73 74 72 75 63 74 3c code>x</code>.is.a.<code>struct<
2ef40 2f 63 6f 64 65 3e 20 28 6f 72 20 61 6e 20 61 6c 69 61 73 20 6f 66 20 61 20 3c 63 6f 64 65 3e 73 /code>.(or.an.alias.of.a.<code>s
2ef60 74 72 75 63 74 3c 2f 63 6f 64 65 3e 29 2c 0a 20 20 20 20 20 20 20 20 20 20 74 68 65 6e 20 3c 63 truct</code>),...........then.<c
2ef80 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 73 68 6f 75 6c 64 20 62 65 20 3c 63 6f 64 65 3e 54 69 74 ode>x</code>.should.be.<code>Tit
2efa0 6c 65 43 61 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 leCase</code>..........</li>....
2efc0 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 49 66 20 3c 63 6f 64 65 3e 78 3c 2f .....<li>...........If.<code>x</
2efe0 63 6f 64 65 3e 20 6f 74 68 65 72 77 69 73 65 20 69 64 65 6e 74 69 66 69 65 73 20 61 20 74 79 70 code>.otherwise.identifies.a.typ
2f000 65 2c 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 73 68 6f 75 6c 64 20 68 61 76 65 20 3c 63 e,.<code>x</code>.should.have.<c
2f020 6f 64 65 3e 73 6e 61 6b 65 5f 63 61 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 3c ode>snake_case</code>..........<
2f040 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 49 66 20 3c /li>.........<li>...........If.<
2f060 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 69 73 20 63 61 6c 6c 61 62 6c 65 2c 20 61 6e 64 20 3c code>x</code>.is.callable,.and.<
2f080 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 27 73 20 72 65 74 75 72 6e 20 74 79 70 65 20 69 73 20 3c code>x</code>'s.return.type.is.<
2f0a0 63 6f 64 65 3e 74 79 70 65 3c 2f 63 6f 64 65 3e 2c 20 74 68 65 6e 20 3c 63 6f 64 65 3e 78 3c 2f code>type</code>,.then.<code>x</
2f0c0 63 6f 64 65 3e 20 73 68 6f 75 6c 64 20 62 65 20 3c 63 6f 64 65 3e 54 69 74 6c 65 43 61 73 65 3c code>.should.be.<code>TitleCase<
2f0e0 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c /code>..........</li>.........<l
2f100 69 3e 0a 20 20 20 20 20 20 20 20 20 20 49 66 20 3c 63 6f 64 65 3e 78 3c 2f 63 6f 64 65 3e 20 69 i>...........If.<code>x</code>.i
2f120 73 20 6f 74 68 65 72 77 69 73 65 20 63 61 6c 6c 61 62 6c 65 2c 20 74 68 65 6e 20 3c 63 6f 64 65 s.otherwise.callable,.then.<code
2f140 3e 78 3c 2f 63 6f 64 65 3e 20 73 68 6f 75 6c 64 20 62 65 20 3c 63 6f 64 65 3e 63 61 6d 65 6c 43 >x</code>.should.be.<code>camelC
2f160 61 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 ase</code>..........</li>.......
2f180 20 20 3c 6c 69 3e 0a 20 20 20 20 20 20 20 20 20 20 4f 74 68 65 72 77 69 73 65 2c 20 3c 63 6f 64 ..<li>...........Otherwise,.<cod
2f1a0 65 3e 78 3c 2f 63 6f 64 65 3e 20 73 68 6f 75 6c 64 20 62 65 20 3c 63 6f 64 65 3e 73 6e 61 6b 65 e>x</code>.should.be.<code>snake
2f1c0 5f 63 61 73 65 3c 2f 63 6f 64 65 3e 2e 0a 20 20 20 20 20 20 20 20 3c 2f 6c 69 3e 0a 20 20 20 20 _case</code>..........</li>.....
2f1e0 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 41 63 72 6f 6e 79 6d 73 ..</ul>.......<p>.......Acronyms
2f200 2c 20 69 6e 69 74 69 61 6c 69 73 6d 73 2c 20 70 72 6f 70 65 72 20 6e 6f 75 6e 73 2c 20 6f 72 20 ,.initialisms,.proper.nouns,.or.
2f220 61 6e 79 20 6f 74 68 65 72 20 77 6f 72 64 20 74 68 61 74 20 68 61 73 20 63 61 70 69 74 61 6c 69 any.other.word.that.has.capitali
2f240 7a 61 74 69 6f 6e 0a 20 20 20 20 20 20 72 75 6c 65 73 20 69 6e 20 77 72 69 74 74 65 6e 20 45 6e zation.......rules.in.written.En
2f260 67 6c 69 73 68 20 61 72 65 20 73 75 62 6a 65 63 74 20 74 6f 20 6e 61 6d 69 6e 67 20 63 6f 6e 76 glish.are.subject.to.naming.conv
2f280 65 6e 74 69 6f 6e 73 20 6a 75 73 74 20 6c 69 6b 65 20 61 6e 79 20 6f 74 68 65 72 0a 20 20 20 20 entions.just.like.any.other.....
2f2a0 20 20 77 6f 72 64 2e 20 45 76 65 6e 20 61 63 72 6f 6e 79 6d 73 20 74 68 61 74 20 61 72 65 20 6f ..word..Even.acronyms.that.are.o
2f2c0 6e 6c 79 20 32 20 6c 65 74 74 65 72 73 20 6c 6f 6e 67 20 61 72 65 20 73 75 62 6a 65 63 74 20 74 nly.2.letters.long.are.subject.t
2f2e0 6f 20 74 68 65 73 65 0a 20 20 20 20 20 20 63 6f 6e 76 65 6e 74 69 6f 6e 73 2e 0a 20 20 20 20 20 o.these.......conventions.......
2f300 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 54 68 65 73 65 20 61 72 65 20 .</p>.......<p>.......These.are.
2f320 67 65 6e 65 72 61 6c 20 72 75 6c 65 73 20 6f 66 20 74 68 75 6d 62 3b 20 69 66 20 69 74 20 6d 61 general.rules.of.thumb;.if.it.ma
2f340 6b 65 73 20 73 65 6e 73 65 20 74 6f 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 64 69 66 66 65 72 kes.sense.to.do.something.differ
2f360 65 6e 74 2c 0a 20 20 20 20 20 20 64 6f 20 77 68 61 74 20 6d 61 6b 65 73 20 73 65 6e 73 65 2e 20 ent,.......do.what.makes.sense..
2f380 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 74 68 65 72 65 20 69 73 20 61 6e 20 65 73 74 61 For.example,.if.there.is.an.esta
2f3a0 62 6c 69 73 68 65 64 20 63 6f 6e 76 65 6e 74 69 6f 6e 20 73 75 63 68 20 61 73 0a 20 20 20 20 20 blished.convention.such.as......
2f3c0 20 3c 63 6f 64 65 3e 45 4e 4f 45 4e 54 3c 2f 63 6f 64 65 3e 2c 20 66 6f 6c 6c 6f 77 20 74 68 65 .<code>ENOENT</code>,.follow.the
2f3e0 20 65 73 74 61 62 6c 69 73 68 65 64 20 63 6f 6e 76 65 6e 74 69 6f 6e 2e 0a 20 20 20 20 20 20 3c .established.convention........<
2f400 2f 70 3e 0a 20 20 20 20 20 20 3c 68 33 20 69 64 3d 22 73 74 79 6c 65 2d 67 75 69 64 65 2d 65 78 /p>.......<h3.id="style-guide-ex
2f420 61 6d 70 6c 65 73 22 3e 45 78 61 6d 70 6c 65 73 3c 2f 68 33 3e 0a 20 20 20 20 20 20 3c 70 72 65 amples">Examples</h3>.......<pre
2f440 3e 3c 63 6f 64 65 20 63 6c 61 73 73 3d 22 7a 69 67 22 3e 63 6f 6e 73 74 20 6e 61 6d 65 73 70 61 ><code.class="zig">const.namespa
2f460 63 65 5f 6e 61 6d 65 20 3d 20 40 69 6d 70 6f 72 74 28 22 64 69 72 5f 6e 61 6d 65 2f 66 69 6c 65 ce_name.=.@import("dir_name/file
2f480 5f 6e 61 6d 65 2e 7a 69 67 22 29 3b 0a 76 61 72 20 67 6c 6f 62 61 6c 5f 76 61 72 3a 20 69 33 32 _name.zig");.var.global_var:.i32
2f4a0 20 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 63 6f 6e 73 74 20 63 6f 6e 73 74 5f 6e 61 6d 65 20 3d .=.undefined;.const.const_name.=
2f4c0 20 34 32 3b 0a 63 6f 6e 73 74 20 70 72 69 6d 69 74 69 76 65 5f 74 79 70 65 5f 61 6c 69 61 73 20 .42;.const.primitive_type_alias.
2f4e0 3d 20 66 33 32 3b 0a 63 6f 6e 73 74 20 73 74 72 69 6e 67 5f 61 6c 69 61 73 20 3d 20 5b 5d 75 38 =.f32;.const.string_alias.=.[]u8
2f500 3b 0a 0a 63 6f 6e 73 74 20 53 74 72 75 63 74 4e 61 6d 65 20 3d 20 73 74 72 75 63 74 20 7b 7d 3b ;..const.StructName.=.struct.{};
2f520 0a 63 6f 6e 73 74 20 53 74 72 75 63 74 41 6c 69 61 73 20 3d 20 53 74 72 75 63 74 4e 61 6d 65 3b .const.StructAlias.=.StructName;
2f540 0a 0a 66 6e 20 66 75 6e 63 74 69 6f 6e 4e 61 6d 65 28 70 61 72 61 6d 5f 6e 61 6d 65 3a 20 54 79 ..fn.functionName(param_name:.Ty
2f560 70 65 4e 61 6d 65 29 20 7b 0a 20 20 20 20 76 61 72 20 66 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 peName).{.....var.functionPointe
2f580 72 20 3d 20 66 75 6e 63 74 69 6f 6e 4e 61 6d 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 50 6f r.=.functionName;.....functionPo
2f5a0 69 6e 74 65 72 28 29 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 72 20 3d 20 6f inter();.....functionPointer.=.o
2f5c0 74 68 65 72 46 75 6e 63 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 50 6f 69 6e 74 65 therFunction;.....functionPointe
2f5e0 72 28 29 3b 0a 7d 0a 63 6f 6e 73 74 20 66 75 6e 63 74 69 6f 6e 41 6c 69 61 73 20 3d 20 66 75 6e r();.}.const.functionAlias.=.fun
2f600 63 74 69 6f 6e 4e 61 6d 65 3b 0a 0a 66 6e 20 4c 69 73 74 54 65 6d 70 6c 61 74 65 46 75 6e 63 74 ctionName;..fn.ListTemplateFunct
2f620 69 6f 6e 28 63 6f 6d 70 74 69 6d 65 20 43 68 69 6c 64 54 79 70 65 3a 20 74 79 70 65 2c 20 63 6f ion(comptime.ChildType:.type,.co
2f640 6d 70 74 69 6d 65 20 66 69 78 65 64 5f 73 69 7a 65 3a 20 75 73 69 7a 65 29 20 2d 26 67 74 3b 20 mptime.fixed_size:.usize).-&gt;.
2f660 74 79 70 65 20 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 4c 69 73 74 28 43 68 69 6c 64 54 79 70 65 type.{.....return.List(ChildType
2f680 2c 20 66 69 78 65 64 5f 73 69 7a 65 29 3b 0a 7d 0a 0a 66 6e 20 53 68 6f 72 74 4c 69 73 74 28 63 ,.fixed_size);.}..fn.ShortList(c
2f6a0 6f 6d 70 74 69 6d 65 20 54 3a 20 74 79 70 65 2c 20 63 6f 6d 70 74 69 6d 65 20 6e 3a 20 75 73 69 omptime.T:.type,.comptime.n:.usi
2f6c0 7a 65 29 20 2d 26 67 74 3b 20 74 79 70 65 20 7b 0a 20 20 20 20 73 74 72 75 63 74 20 7b 0a 20 20 ze).-&gt;.type.{.....struct.{...
2f6e0 20 20 20 20 20 20 66 69 65 6c 64 5f 6e 61 6d 65 3a 20 5b 6e 5d 54 2c 0a 20 20 20 20 20 20 20 20 ......field_name:.[n]T,.........
2f700 66 6e 20 6d 65 74 68 6f 64 4e 61 6d 65 28 29 20 7b 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 2f 2f 20 54 fn.methodName().{}.....}.}..//.T
2f720 68 65 20 77 6f 72 64 20 58 4d 4c 20 6c 6f 73 65 73 20 69 74 73 20 63 61 73 69 6e 67 20 77 68 65 he.word.XML.loses.its.casing.whe
2f740 6e 20 75 73 65 64 20 69 6e 20 5a 69 67 20 69 64 65 6e 74 69 66 69 65 72 73 2e 0a 63 6f 6e 73 74 n.used.in.Zig.identifiers..const
2f760 20 78 6d 6c 5f 64 6f 63 75 6d 65 6e 74 20 3d 0a 20 20 20 20 5c 5c 26 6c 74 3b 3f 78 6d 6c 20 76 .xml_document.=.....\\&lt;?xml.v
2f780 65 72 73 69 6f 6e 3d 22 31 2e 30 22 20 65 6e 63 6f 64 69 6e 67 3d 22 55 54 46 2d 38 22 3f 26 67 ersion="1.0".encoding="UTF-8"?&g
2f7a0 74 3b 0a 20 20 20 20 5c 5c 26 6c 74 3b 64 6f 63 75 6d 65 6e 74 26 67 74 3b 0a 20 20 20 20 5c 5c t;.....\\&lt;document&gt;.....\\
2f7c0 26 6c 74 3b 2f 64 6f 63 75 6d 65 6e 74 26 67 74 3b 0a 3b 0a 63 6f 6e 73 74 20 58 6d 6c 50 61 72 &lt;/document&gt;.;.const.XmlPar
2f7e0 73 65 72 20 3d 20 73 74 72 75 63 74 20 7b 7d 3b 0a 0a 2f 2f 20 54 68 65 20 69 6e 69 74 69 61 6c ser.=.struct.{};..//.The.initial
2f800 73 20 42 45 20 28 42 69 67 20 45 6e 64 69 61 6e 29 20 61 72 65 20 6a 75 73 74 20 61 6e 6f 74 68 s.BE.(Big.Endian).are.just.anoth
2f820 65 72 20 77 6f 72 64 20 69 6e 20 5a 69 67 20 69 64 65 6e 74 69 66 69 65 72 20 6e 61 6d 65 73 2e er.word.in.Zig.identifier.names.
2f840 0a 66 6e 20 72 65 61 64 55 33 32 42 65 28 29 20 2d 26 67 74 3b 20 75 33 32 20 7b 7d 3c 2f 63 6f .fn.readU32Be().-&gt;.u32.{}</co
2f860 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 70 3e 0a 20 20 20 20 20 20 53 65 65 20 74 68 de></pre>.......<p>.......See.th
2f880 65 20 5a 69 67 20 53 74 61 6e 64 61 72 64 20 4c 69 62 72 61 72 79 20 66 6f 72 20 6d 6f 72 65 20 e.Zig.Standard.Library.for.more.
2f8a0 65 78 61 6d 70 6c 65 73 2e 0a 20 20 20 20 20 20 3c 2f 70 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 examples........</p>.......<h2.i
2f8c0 64 3d 22 67 72 61 6d 6d 61 72 22 3e 47 72 61 6d 6d 61 72 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c d="grammar">Grammar</h2>.......<
2f8e0 70 72 65 3e 3c 63 6f 64 65 3e 52 6f 6f 74 20 3d 20 6d 61 6e 79 28 54 6f 70 4c 65 76 65 6c 49 74 pre><code>Root.=.many(TopLevelIt
2f900 65 6d 29 20 45 4f 46 0a 0a 54 6f 70 4c 65 76 65 6c 49 74 65 6d 20 3d 20 45 72 72 6f 72 56 61 6c em).EOF..TopLevelItem.=.ErrorVal
2f920 75 65 44 65 63 6c 20 7c 20 43 6f 6d 70 54 69 6d 65 45 78 70 72 65 73 73 69 6f 6e 28 42 6c 6f 63 ueDecl.|.CompTimeExpression(Bloc
2f940 6b 29 20 7c 20 54 6f 70 4c 65 76 65 6c 44 65 63 6c 20 7c 20 54 65 73 74 44 65 63 6c 0a 0a 54 65 k).|.TopLevelDecl.|.TestDecl..Te
2f960 73 74 44 65 63 6c 20 3d 20 22 74 65 73 74 22 20 53 74 72 69 6e 67 20 42 6c 6f 63 6b 0a 0a 54 6f stDecl.=."test".String.Block..To
2f980 70 4c 65 76 65 6c 44 65 63 6c 20 3d 20 6f 70 74 69 6f 6e 28 56 69 73 69 62 6c 65 4d 6f 64 29 20 pLevelDecl.=.option(VisibleMod).
2f9a0 28 46 6e 44 65 66 20 7c 20 45 78 74 65 72 6e 44 65 63 6c 20 7c 20 47 6c 6f 62 61 6c 56 61 72 44 (FnDef.|.ExternDecl.|.GlobalVarD
2f9c0 65 63 6c 20 7c 20 55 73 65 44 65 63 6c 29 0a 0a 45 72 72 6f 72 56 61 6c 75 65 44 65 63 6c 20 3d ecl.|.UseDecl)..ErrorValueDecl.=
2f9e0 20 22 65 72 72 6f 72 22 20 53 79 6d 62 6f 6c 20 22 3b 22 0a 0a 47 6c 6f 62 61 6c 56 61 72 44 65 ."error".Symbol.";"..GlobalVarDe
2fa00 63 6c 20 3d 20 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 22 3b 22 0a 0a 56 61 cl.=.VariableDeclaration.";"..Va
2fa20 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 6f 70 74 69 6f 6e 28 22 63 6f 6d 70 riableDeclaration.=.option("comp
2fa40 74 69 6d 65 22 29 20 28 22 76 61 72 22 20 7c 20 22 63 6f 6e 73 74 22 29 20 53 79 6d 62 6f 6c 20 time").("var".|."const").Symbol.
2fa60 6f 70 74 69 6f 6e 28 22 3a 22 20 54 79 70 65 45 78 70 72 29 20 6f 70 74 69 6f 6e 28 22 61 6c 69 option(":".TypeExpr).option("ali
2fa80 67 6e 22 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 29 20 22 3d 22 20 45 78 70 72 gn"."(".Expression.")")."=".Expr
2faa0 65 73 73 69 6f 6e 0a 0a 43 6f 6e 74 61 69 6e 65 72 4d 65 6d 62 65 72 20 3d 20 28 43 6f 6e 74 61 ession..ContainerMember.=.(Conta
2fac0 69 6e 65 72 46 69 65 6c 64 20 7c 20 46 6e 44 65 66 20 7c 20 47 6c 6f 62 61 6c 56 61 72 44 65 63 inerField.|.FnDef.|.GlobalVarDec
2fae0 6c 29 0a 0a 43 6f 6e 74 61 69 6e 65 72 46 69 65 6c 64 20 3d 20 53 79 6d 62 6f 6c 20 6f 70 74 69 l)..ContainerField.=.Symbol.opti
2fb00 6f 6e 28 22 3a 22 20 45 78 70 72 65 73 73 69 6f 6e 29 20 22 2c 22 0a 0a 55 73 65 44 65 63 6c 20 on(":".Expression).","..UseDecl.
2fb20 3d 20 22 75 73 65 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 3b 22 0a 0a 45 78 74 65 72 6e 44 65 =."use".Expression.";"..ExternDe
2fb40 63 6c 20 3d 20 22 65 78 74 65 72 6e 22 20 6f 70 74 69 6f 6e 28 53 74 72 69 6e 67 29 20 28 46 6e cl.=."extern".option(String).(Fn
2fb60 50 72 6f 74 6f 20 7c 20 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 29 20 22 3b 22 Proto.|.VariableDeclaration).";"
2fb80 0a 0a 46 6e 50 72 6f 74 6f 20 3d 20 6f 70 74 69 6f 6e 28 22 63 6f 6c 64 63 63 22 20 7c 20 22 6e ..FnProto.=.option("coldcc".|."n
2fba0 61 6b 65 64 63 63 22 20 7c 20 22 73 74 64 63 61 6c 6c 63 63 22 29 20 22 66 6e 22 20 6f 70 74 69 akedcc".|."stdcallcc")."fn".opti
2fbc0 6f 6e 28 53 79 6d 62 6f 6c 29 20 50 61 72 61 6d 44 65 63 6c 4c 69 73 74 20 6f 70 74 69 6f 6e 28 on(Symbol).ParamDeclList.option(
2fbe0 22 61 6c 69 67 6e 22 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 29 20 6f 70 74 69 "align"."(".Expression.")").opti
2fc00 6f 6e 28 22 2d 26 67 74 3b 22 20 54 79 70 65 45 78 70 72 29 0a 0a 56 69 73 69 62 6c 65 4d 6f 64 on("-&gt;".TypeExpr)..VisibleMod
2fc20 20 3d 20 22 70 75 62 22 20 7c 20 22 65 78 70 6f 72 74 22 0a 0a 46 6e 44 65 66 20 3d 20 6f 70 74 .=."pub".|."export"..FnDef.=.opt
2fc40 69 6f 6e 28 22 69 6e 6c 69 6e 65 22 20 7c 20 22 65 78 74 65 72 6e 22 29 20 46 6e 50 72 6f 74 6f ion("inline".|."extern").FnProto
2fc60 20 42 6c 6f 63 6b 0a 0a 50 61 72 61 6d 44 65 63 6c 4c 69 73 74 20 3d 20 22 28 22 20 6c 69 73 74 .Block..ParamDeclList.=."(".list
2fc80 28 50 61 72 61 6d 44 65 63 6c 2c 20 22 2c 22 29 20 22 29 22 0a 0a 50 61 72 61 6d 44 65 63 6c 20 (ParamDecl,.",").")"..ParamDecl.
2fca0 3d 20 6f 70 74 69 6f 6e 28 22 6e 6f 61 6c 69 61 73 22 20 7c 20 22 63 6f 6d 70 74 69 6d 65 22 29 =.option("noalias".|."comptime")
2fcc0 20 6f 70 74 69 6f 6e 28 53 79 6d 62 6f 6c 20 22 3a 22 29 20 28 54 79 70 65 45 78 70 72 20 7c 20 .option(Symbol.":").(TypeExpr.|.
2fce0 22 2e 2e 2e 22 29 0a 0a 42 6c 6f 63 6b 20 3d 20 22 7b 22 20 6d 61 6e 79 28 53 74 61 74 65 6d 65 "...")..Block.=."{".many(Stateme
2fd00 6e 74 29 20 6f 70 74 69 6f 6e 28 45 78 70 72 65 73 73 69 6f 6e 29 20 22 7d 22 0a 0a 53 74 61 74 nt).option(Expression)."}"..Stat
2fd20 65 6d 65 6e 74 20 3d 20 4c 61 62 65 6c 20 7c 20 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 ement.=.Label.|.VariableDeclarat
2fd40 69 6f 6e 20 22 3b 22 20 7c 20 44 65 66 65 72 28 42 6c 6f 63 6b 29 20 7c 20 44 65 66 65 72 28 45 ion.";".|.Defer(Block).|.Defer(E
2fd60 78 70 72 65 73 73 69 6f 6e 29 20 22 3b 22 20 7c 20 42 6c 6f 63 6b 45 78 70 72 65 73 73 69 6f 6e xpression).";".|.BlockExpression
2fd80 28 42 6c 6f 63 6b 29 20 7c 20 45 78 70 72 65 73 73 69 6f 6e 20 22 3b 22 20 7c 20 22 3b 22 0a 0a (Block).|.Expression.";".|.";"..
2fda0 4c 61 62 65 6c 20 3d 20 53 79 6d 62 6f 6c 20 22 3a 22 0a 0a 54 79 70 65 45 78 70 72 20 3d 20 50 Label.=.Symbol.":"..TypeExpr.=.P
2fdc0 72 65 66 69 78 4f 70 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 22 76 61 72 22 0a 0a 42 6c 6f 63 6b refixOpExpression.|."var"..Block
2fde0 4f 72 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 42 6c 6f 63 6b 20 7c 20 45 78 70 72 65 73 73 69 6f OrExpression.=.Block.|.Expressio
2fe00 6e 0a 0a 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 52 65 74 75 72 6e 45 78 70 72 65 73 73 69 6f 6e n..Expression.=.ReturnExpression
2fe20 20 7c 20 42 72 65 61 6b 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 41 73 73 69 67 6e 6d 65 6e 74 45 .|.BreakExpression.|.AssignmentE
2fe40 78 70 72 65 73 73 69 6f 6e 0a 0a 41 73 6d 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 22 61 73 6d 22 xpression..AsmExpression.=."asm"
2fe60 20 6f 70 74 69 6f 6e 28 22 76 6f 6c 61 74 69 6c 65 22 29 20 22 28 22 20 53 74 72 69 6e 67 20 6f .option("volatile")."(".String.o
2fe80 70 74 69 6f 6e 28 41 73 6d 4f 75 74 70 75 74 29 20 22 29 22 0a 0a 41 73 6d 4f 75 74 70 75 74 20 ption(AsmOutput).")"..AsmOutput.
2fea0 3d 20 22 3a 22 20 6c 69 73 74 28 41 73 6d 4f 75 74 70 75 74 49 74 65 6d 2c 20 22 2c 22 29 20 6f =.":".list(AsmOutputItem,.",").o
2fec0 70 74 69 6f 6e 28 41 73 6d 49 6e 70 75 74 29 0a 0a 41 73 6d 49 6e 70 75 74 20 3d 20 22 3a 22 20 ption(AsmInput)..AsmInput.=.":".
2fee0 6c 69 73 74 28 41 73 6d 49 6e 70 75 74 49 74 65 6d 2c 20 22 2c 22 29 20 6f 70 74 69 6f 6e 28 41 list(AsmInputItem,.",").option(A
2ff00 73 6d 43 6c 6f 62 62 65 72 73 29 0a 0a 41 73 6d 4f 75 74 70 75 74 49 74 65 6d 20 3d 20 22 5b 22 smClobbers)..AsmOutputItem.=."["
2ff20 20 53 79 6d 62 6f 6c 20 22 5d 22 20 53 74 72 69 6e 67 20 22 28 22 20 28 53 79 6d 62 6f 6c 20 7c .Symbol."]".String."(".(Symbol.|
2ff40 20 22 2d 26 67 74 3b 22 20 54 79 70 65 45 78 70 72 29 20 22 29 22 0a 0a 41 73 6d 49 6e 70 75 74 ."-&gt;".TypeExpr).")"..AsmInput
2ff60 49 74 65 6d 20 3d 20 22 5b 22 20 53 79 6d 62 6f 6c 20 22 5d 22 20 53 74 72 69 6e 67 20 22 28 22 Item.=."[".Symbol."]".String."("
2ff80 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 0a 0a 41 73 6d 43 6c 6f 62 62 65 72 73 3d 20 22 3a .Expression.")"..AsmClobbers=.":
2ffa0 22 20 6c 69 73 74 28 53 74 72 69 6e 67 2c 20 22 2c 22 29 0a 0a 55 6e 77 72 61 70 45 78 70 72 65 ".list(String,.",")..UnwrapExpre
2ffc0 73 73 69 6f 6e 20 3d 20 42 6f 6f 6c 4f 72 45 78 70 72 65 73 73 69 6f 6e 20 28 55 6e 77 72 61 70 ssion.=.BoolOrExpression.(Unwrap
2ffe0 4e 75 6c 6c 61 62 6c 65 20 7c 20 55 6e 77 72 61 70 45 72 72 6f 72 29 20 7c 20 42 6f 6f 6c 4f 72 Nullable.|.UnwrapError).|.BoolOr
30000 45 78 70 72 65 73 73 69 6f 6e 0a 0a 55 6e 77 72 61 70 4e 75 6c 6c 61 62 6c 65 20 3d 20 22 3f 3f Expression..UnwrapNullable.=."??
30020 22 20 45 78 70 72 65 73 73 69 6f 6e 0a 0a 55 6e 77 72 61 70 45 72 72 6f 72 20 3d 20 22 25 25 22 ".Expression..UnwrapError.=."%%"
30040 20 6f 70 74 69 6f 6e 28 22 7c 22 20 53 79 6d 62 6f 6c 20 22 7c 22 29 20 45 78 70 72 65 73 73 69 .option("|".Symbol."|").Expressi
30060 6f 6e 0a 0a 41 73 73 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 55 6e 77 72 61 on..AssignmentExpression.=.Unwra
30080 70 45 78 70 72 65 73 73 69 6f 6e 20 41 73 73 69 67 6e 6d 65 6e 74 4f 70 65 72 61 74 6f 72 20 55 pExpression.AssignmentOperator.U
300a0 6e 77 72 61 70 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 55 6e 77 72 61 70 45 78 70 72 65 73 73 69 nwrapExpression.|.UnwrapExpressi
300c0 6f 6e 0a 0a 41 73 73 69 67 6e 6d 65 6e 74 4f 70 65 72 61 74 6f 72 20 3d 20 22 3d 22 20 7c 20 22 on..AssignmentOperator.=."=".|."
300e0 2a 3d 22 20 7c 20 22 2f 3d 22 20 7c 20 22 25 3d 22 20 7c 20 22 2b 3d 22 20 7c 20 22 2d 3d 22 20 *=".|."/=".|."%=".|."+=".|."-=".
30100 7c 20 22 26 6c 74 3b 26 6c 74 3b 3d 22 20 7c 20 22 26 67 74 3b 26 67 74 3b 3d 22 20 7c 20 22 26 |."&lt;&lt;=".|."&gt;&gt;=".|."&
30120 61 6d 70 3b 3d 22 20 7c 20 22 5e 3d 22 20 7c 20 22 7c 3d 22 20 7c 20 22 2a 25 3d 22 20 7c 20 22 amp;=".|."^=".|."|=".|."*%=".|."
30140 2b 25 3d 22 20 7c 20 22 2d 25 3d 22 0a 0a 42 6c 6f 63 6b 45 78 70 72 65 73 73 69 6f 6e 28 62 6f +%=".|."-%="..BlockExpression(bo
30160 64 79 29 20 3d 20 42 6c 6f 63 6b 20 7c 20 49 66 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 dy).=.Block.|.IfExpression(body)
30180 20 7c 20 54 72 79 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 7c 20 54 65 73 74 45 78 70 .|.TryExpression(body).|.TestExp
301a0 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 7c 20 57 68 69 6c 65 45 78 70 72 65 73 73 69 6f 6e 28 ression(body).|.WhileExpression(
301c0 62 6f 64 79 29 20 7c 20 46 6f 72 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 7c 20 53 77 body).|.ForExpression(body).|.Sw
301e0 69 74 63 68 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 43 6f 6d 70 54 69 6d 65 45 78 70 72 65 73 73 itchExpression.|.CompTimeExpress
30200 69 6f 6e 28 62 6f 64 79 29 0a 0a 43 6f 6d 70 54 69 6d 65 45 78 70 72 65 73 73 69 6f 6e 28 62 6f ion(body)..CompTimeExpression(bo
30220 64 79 29 20 3d 20 22 63 6f 6d 70 74 69 6d 65 22 20 62 6f 64 79 0a 0a 53 77 69 74 63 68 45 78 70 dy).=."comptime".body..SwitchExp
30240 72 65 73 73 69 6f 6e 20 3d 20 22 73 77 69 74 63 68 22 20 22 28 22 20 45 78 70 72 65 73 73 69 6f ression.=."switch"."(".Expressio
30260 6e 20 22 29 22 20 22 7b 22 20 6d 61 6e 79 28 53 77 69 74 63 68 50 72 6f 6e 67 29 20 22 7d 22 0a n.")"."{".many(SwitchProng)."}".
30280 0a 53 77 69 74 63 68 50 72 6f 6e 67 20 3d 20 28 6c 69 73 74 28 53 77 69 74 63 68 49 74 65 6d 2c .SwitchProng.=.(list(SwitchItem,
302a0 20 22 2c 22 29 20 7c 20 22 65 6c 73 65 22 29 20 22 3d 26 67 74 3b 22 20 6f 70 74 69 6f 6e 28 22 .",").|."else")."=&gt;".option("
302c0 7c 22 20 6f 70 74 69 6f 6e 28 22 2a 22 29 20 53 79 6d 62 6f 6c 20 22 7c 22 29 20 45 78 70 72 65 |".option("*").Symbol."|").Expre
302e0 73 73 69 6f 6e 20 22 2c 22 0a 0a 53 77 69 74 63 68 49 74 65 6d 20 3d 20 45 78 70 72 65 73 73 69 ssion.","..SwitchItem.=.Expressi
30300 6f 6e 20 7c 20 28 45 78 70 72 65 73 73 69 6f 6e 20 22 2e 2e 2e 22 20 45 78 70 72 65 73 73 69 6f on.|.(Expression."...".Expressio
30320 6e 29 0a 0a 46 6f 72 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 3d 20 6f 70 74 69 6f 6e n)..ForExpression(body).=.option
30340 28 22 69 6e 6c 69 6e 65 22 29 20 22 66 6f 72 22 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 ("inline")."for"."(".Expression.
30360 22 29 22 20 6f 70 74 69 6f 6e 28 22 7c 22 20 6f 70 74 69 6f 6e 28 22 2a 22 29 20 53 79 6d 62 6f ")".option("|".option("*").Symbo
30380 6c 20 6f 70 74 69 6f 6e 28 22 2c 22 20 53 79 6d 62 6f 6c 29 20 22 7c 22 29 20 62 6f 64 79 20 6f l.option(",".Symbol)."|").body.o
303a0 70 74 69 6f 6e 28 22 65 6c 73 65 22 20 42 6c 6f 63 6b 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 ption("else".BlockExpression(bod
303c0 79 29 29 0a 0a 42 6f 6f 6c 4f 72 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 42 6f 6f 6c 41 6e 64 45 y))..BoolOrExpression.=.BoolAndE
303e0 78 70 72 65 73 73 69 6f 6e 20 22 6f 72 22 20 42 6f 6f 6c 4f 72 45 78 70 72 65 73 73 69 6f 6e 20 xpression."or".BoolOrExpression.
30400 7c 20 42 6f 6f 6c 41 6e 64 45 78 70 72 65 73 73 69 6f 6e 0a 0a 52 65 74 75 72 6e 45 78 70 72 65 |.BoolAndExpression..ReturnExpre
30420 73 73 69 6f 6e 20 3d 20 6f 70 74 69 6f 6e 28 22 25 22 29 20 22 72 65 74 75 72 6e 22 20 6f 70 74 ssion.=.option("%")."return".opt
30440 69 6f 6e 28 45 78 70 72 65 73 73 69 6f 6e 29 0a 0a 42 72 65 61 6b 45 78 70 72 65 73 73 69 6f 6e ion(Expression)..BreakExpression
30460 20 3d 20 22 62 72 65 61 6b 22 20 6f 70 74 69 6f 6e 28 45 78 70 72 65 73 73 69 6f 6e 29 0a 0a 44 .=."break".option(Expression)..D
30480 65 66 65 72 28 62 6f 64 79 29 20 3d 20 6f 70 74 69 6f 6e 28 22 25 22 29 20 22 64 65 66 65 72 22 efer(body).=.option("%")."defer"
304a0 20 62 6f 64 79 0a 0a 49 66 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 3d 20 22 69 66 22 .body..IfExpression(body).=."if"
304c0 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 20 62 6f 64 79 20 6f 70 74 69 6f 6e 28 ."(".Expression.")".body.option(
304e0 22 65 6c 73 65 22 20 42 6c 6f 63 6b 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 29 0a 0a 54 "else".BlockExpression(body))..T
30500 72 79 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 3d 20 22 69 66 22 20 22 28 22 20 45 78 ryExpression(body).=."if"."(".Ex
30520 70 72 65 73 73 69 6f 6e 20 22 29 22 20 6f 70 74 69 6f 6e 28 22 7c 22 20 6f 70 74 69 6f 6e 28 22 pression.")".option("|".option("
30540 2a 22 29 20 53 79 6d 62 6f 6c 20 22 7c 22 29 20 62 6f 64 79 20 22 65 6c 73 65 22 20 22 7c 22 20 *").Symbol."|").body."else"."|".
30560 53 79 6d 62 6f 6c 20 22 7c 22 20 42 6c 6f 63 6b 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 Symbol."|".BlockExpression(body)
30580 0a 0a 54 65 73 74 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 3d 20 22 69 66 22 20 22 28 ..TestExpression(body).=."if"."(
305a0 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 20 6f 70 74 69 6f 6e 28 22 7c 22 20 6f 70 74 69 ".Expression.")".option("|".opti
305c0 6f 6e 28 22 2a 22 29 20 53 79 6d 62 6f 6c 20 22 7c 22 29 20 62 6f 64 79 20 6f 70 74 69 6f 6e 28 on("*").Symbol."|").body.option(
305e0 22 65 6c 73 65 22 20 42 6c 6f 63 6b 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 29 0a 0a 57 "else".BlockExpression(body))..W
30600 68 69 6c 65 45 78 70 72 65 73 73 69 6f 6e 28 62 6f 64 79 29 20 3d 20 6f 70 74 69 6f 6e 28 22 69 hileExpression(body).=.option("i
30620 6e 6c 69 6e 65 22 29 20 22 77 68 69 6c 65 22 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 nline")."while"."(".Expression."
30640 29 22 20 6f 70 74 69 6f 6e 28 22 7c 22 20 6f 70 74 69 6f 6e 28 22 2a 22 29 20 53 79 6d 62 6f 6c )".option("|".option("*").Symbol
30660 20 22 7c 22 29 20 6f 70 74 69 6f 6e 28 22 3a 22 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 ."|").option(":"."(".Expression.
30680 22 29 22 29 20 62 6f 64 79 20 6f 70 74 69 6f 6e 28 22 65 6c 73 65 22 20 6f 70 74 69 6f 6e 28 22 ")").body.option("else".option("
306a0 7c 22 20 53 79 6d 62 6f 6c 20 22 7c 22 29 20 42 6c 6f 63 6b 45 78 70 72 65 73 73 69 6f 6e 28 62 |".Symbol."|").BlockExpression(b
306c0 6f 64 79 29 29 0a 0a 42 6f 6f 6c 41 6e 64 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 43 6f 6d 70 61 ody))..BoolAndExpression.=.Compa
306e0 72 69 73 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 22 61 6e 64 22 20 42 6f 6f 6c 41 6e 64 45 78 70 risonExpression."and".BoolAndExp
30700 72 65 73 73 69 6f 6e 20 7c 20 43 6f 6d 70 61 72 69 73 6f 6e 45 78 70 72 65 73 73 69 6f 6e 0a 0a ression.|.ComparisonExpression..
30720 43 6f 6d 70 61 72 69 73 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 42 69 6e 61 72 79 4f 72 45 ComparisonExpression.=.BinaryOrE
30740 78 70 72 65 73 73 69 6f 6e 20 43 6f 6d 70 61 72 69 73 6f 6e 4f 70 65 72 61 74 6f 72 20 42 69 6e xpression.ComparisonOperator.Bin
30760 61 72 79 4f 72 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 42 69 6e 61 72 79 4f 72 45 78 70 72 65 73 aryOrExpression.|.BinaryOrExpres
30780 73 69 6f 6e 0a 0a 43 6f 6d 70 61 72 69 73 6f 6e 4f 70 65 72 61 74 6f 72 20 3d 20 22 3d 3d 22 20 sion..ComparisonOperator.=."==".
307a0 7c 20 22 21 3d 22 20 7c 20 22 26 6c 74 3b 22 20 7c 20 22 26 67 74 3b 22 20 7c 20 22 26 6c 74 3b |."!=".|."&lt;".|."&gt;".|."&lt;
307c0 3d 22 20 7c 20 22 26 67 74 3b 3d 22 0a 0a 42 69 6e 61 72 79 4f 72 45 78 70 72 65 73 73 69 6f 6e =".|."&gt;="..BinaryOrExpression
307e0 20 3d 20 42 69 6e 61 72 79 58 6f 72 45 78 70 72 65 73 73 69 6f 6e 20 22 7c 22 20 42 69 6e 61 72 .=.BinaryXorExpression."|".Binar
30800 79 4f 72 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 42 69 6e 61 72 79 58 6f 72 45 78 70 72 65 73 73 yOrExpression.|.BinaryXorExpress
30820 69 6f 6e 0a 0a 42 69 6e 61 72 79 58 6f 72 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 42 69 6e 61 72 ion..BinaryXorExpression.=.Binar
30840 79 41 6e 64 45 78 70 72 65 73 73 69 6f 6e 20 22 5e 22 20 42 69 6e 61 72 79 58 6f 72 45 78 70 72 yAndExpression."^".BinaryXorExpr
30860 65 73 73 69 6f 6e 20 7c 20 42 69 6e 61 72 79 41 6e 64 45 78 70 72 65 73 73 69 6f 6e 0a 0a 42 69 ession.|.BinaryAndExpression..Bi
30880 6e 61 72 79 41 6e 64 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 42 69 74 53 68 69 66 74 45 78 70 72 naryAndExpression.=.BitShiftExpr
308a0 65 73 73 69 6f 6e 20 22 26 61 6d 70 3b 22 20 42 69 6e 61 72 79 41 6e 64 45 78 70 72 65 73 73 69 ession."&amp;".BinaryAndExpressi
308c0 6f 6e 20 7c 20 42 69 74 53 68 69 66 74 45 78 70 72 65 73 73 69 6f 6e 0a 0a 42 69 74 53 68 69 66 on.|.BitShiftExpression..BitShif
308e0 74 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 41 64 64 69 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e tExpression.=.AdditionExpression
30900 20 42 69 74 53 68 69 66 74 4f 70 65 72 61 74 6f 72 20 42 69 74 53 68 69 66 74 45 78 70 72 65 73 .BitShiftOperator.BitShiftExpres
30920 73 69 6f 6e 20 7c 20 41 64 64 69 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 0a 0a 42 69 74 53 68 sion.|.AdditionExpression..BitSh
30940 69 66 74 4f 70 65 72 61 74 6f 72 20 3d 20 22 26 6c 74 3b 26 6c 74 3b 22 20 7c 20 22 26 67 74 3b iftOperator.=."&lt;&lt;".|."&gt;
30960 26 67 74 3b 22 20 7c 20 22 26 6c 74 3b 26 6c 74 3b 22 0a 0a 41 64 64 69 74 69 6f 6e 45 78 70 72 &gt;".|."&lt;&lt;"..AdditionExpr
30980 65 73 73 69 6f 6e 20 3d 20 4d 75 6c 74 69 70 6c 79 45 78 70 72 65 73 73 69 6f 6e 20 41 64 64 69 ession.=.MultiplyExpression.Addi
309a0 74 69 6f 6e 4f 70 65 72 61 74 6f 72 20 41 64 64 69 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 tionOperator.AdditionExpression.
309c0 7c 20 4d 75 6c 74 69 70 6c 79 45 78 70 72 65 73 73 69 6f 6e 0a 0a 41 64 64 69 74 69 6f 6e 4f 70 |.MultiplyExpression..AdditionOp
309e0 65 72 61 74 6f 72 20 3d 20 22 2b 22 20 7c 20 22 2d 22 20 7c 20 22 2b 2b 22 20 7c 20 22 2b 25 22 erator.=."+".|."-".|."++".|."+%"
30a00 20 7c 20 22 2d 25 22 0a 0a 4d 75 6c 74 69 70 6c 79 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 43 75 .|."-%"..MultiplyExpression.=.Cu
30a20 72 6c 79 53 75 66 66 69 78 45 78 70 72 65 73 73 69 6f 6e 20 4d 75 6c 74 69 70 6c 79 4f 70 65 72 rlySuffixExpression.MultiplyOper
30a40 61 74 6f 72 20 4d 75 6c 74 69 70 6c 79 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 43 75 72 6c 79 53 ator.MultiplyExpression.|.CurlyS
30a60 75 66 66 69 78 45 78 70 72 65 73 73 69 6f 6e 0a 0a 43 75 72 6c 79 53 75 66 66 69 78 45 78 70 72 uffixExpression..CurlySuffixExpr
30a80 65 73 73 69 6f 6e 20 3d 20 54 79 70 65 45 78 70 72 20 6f 70 74 69 6f 6e 28 43 6f 6e 74 61 69 6e ession.=.TypeExpr.option(Contain
30aa0 65 72 49 6e 69 74 45 78 70 72 65 73 73 69 6f 6e 29 0a 0a 4d 75 6c 74 69 70 6c 79 4f 70 65 72 61 erInitExpression)..MultiplyOpera
30ac0 74 6f 72 20 3d 20 22 2a 22 20 7c 20 22 2f 22 20 7c 20 22 25 22 20 7c 20 22 2a 2a 22 20 7c 20 22 tor.=."*".|."/".|."%".|."**".|."
30ae0 2a 25 22 0a 0a 50 72 65 66 69 78 4f 70 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 50 72 65 66 69 78 *%"..PrefixOpExpression.=.Prefix
30b00 4f 70 20 50 72 65 66 69 78 4f 70 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 53 75 66 66 69 78 4f 70 Op.PrefixOpExpression.|.SuffixOp
30b20 45 78 70 72 65 73 73 69 6f 6e 0a 0a 53 75 66 66 69 78 4f 70 45 78 70 72 65 73 73 69 6f 6e 20 3d Expression..SuffixOpExpression.=
30b40 20 50 72 69 6d 61 72 79 45 78 70 72 65 73 73 69 6f 6e 20 6f 70 74 69 6f 6e 28 46 6e 43 61 6c 6c .PrimaryExpression.option(FnCall
30b60 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 41 72 72 61 79 41 63 63 65 73 73 45 78 70 72 65 73 73 69 Expression.|.ArrayAccessExpressi
30b80 6f 6e 20 7c 20 46 69 65 6c 64 41 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 53 6c 69 on.|.FieldAccessExpression.|.Sli
30ba0 63 65 45 78 70 72 65 73 73 69 6f 6e 29 0a 0a 46 69 65 6c 64 41 63 63 65 73 73 45 78 70 72 65 73 ceExpression)..FieldAccessExpres
30bc0 73 69 6f 6e 20 3d 20 22 2e 22 20 53 79 6d 62 6f 6c 0a 0a 46 6e 43 61 6c 6c 45 78 70 72 65 73 73 sion.=.".".Symbol..FnCallExpress
30be0 69 6f 6e 20 3d 20 22 28 22 20 6c 69 73 74 28 45 78 70 72 65 73 73 69 6f 6e 2c 20 22 2c 22 29 20 ion.=."(".list(Expression,.",").
30c00 22 29 22 0a 0a 41 72 72 61 79 41 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 22 5b 22 ")"..ArrayAccessExpression.=."["
30c20 20 45 78 70 72 65 73 73 69 6f 6e 20 22 5d 22 0a 0a 53 6c 69 63 65 45 78 70 72 65 73 73 69 6f 6e .Expression."]"..SliceExpression
30c40 20 3d 20 22 5b 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 2e 2e 22 20 6f 70 74 69 6f 6e 28 45 78 .=."[".Expression."..".option(Ex
30c60 70 72 65 73 73 69 6f 6e 29 20 22 5d 22 0a 0a 43 6f 6e 74 61 69 6e 65 72 49 6e 69 74 45 78 70 72 pression)."]"..ContainerInitExpr
30c80 65 73 73 69 6f 6e 20 3d 20 22 7b 22 20 43 6f 6e 74 61 69 6e 65 72 49 6e 69 74 42 6f 64 79 20 22 ession.=."{".ContainerInitBody."
30ca0 7d 22 0a 0a 43 6f 6e 74 61 69 6e 65 72 49 6e 69 74 42 6f 64 79 20 3d 20 6c 69 73 74 28 53 74 72 }"..ContainerInitBody.=.list(Str
30cc0 75 63 74 4c 69 74 65 72 61 6c 46 69 65 6c 64 2c 20 22 2c 22 29 20 7c 20 6c 69 73 74 28 45 78 70 uctLiteralField,.",").|.list(Exp
30ce0 72 65 73 73 69 6f 6e 2c 20 22 2c 22 29 0a 0a 53 74 72 75 63 74 4c 69 74 65 72 61 6c 46 69 65 6c ression,.",")..StructLiteralFiel
30d00 64 20 3d 20 22 2e 22 20 53 79 6d 62 6f 6c 20 22 3d 22 20 45 78 70 72 65 73 73 69 6f 6e 0a 0a 50 d.=.".".Symbol."=".Expression..P
30d20 72 65 66 69 78 4f 70 20 3d 20 22 21 22 20 7c 20 22 2d 22 20 7c 20 22 7e 22 20 7c 20 22 2a 22 20 refixOp.=."!".|."-".|."~".|."*".
30d40 7c 20 28 22 26 61 6d 70 3b 22 20 6f 70 74 69 6f 6e 28 22 61 6c 69 67 6e 22 20 22 28 22 20 45 78 |.("&amp;".option("align"."(".Ex
30d60 70 72 65 73 73 69 6f 6e 20 6f 70 74 69 6f 6e 28 22 3a 22 20 49 6e 74 65 67 65 72 20 22 3a 22 20 pression.option(":".Integer.":".
30d80 49 6e 74 65 67 65 72 29 20 22 29 22 20 29 20 6f 70 74 69 6f 6e 28 22 63 6f 6e 73 74 22 29 20 6f Integer).")".).option("const").o
30da0 70 74 69 6f 6e 28 22 76 6f 6c 61 74 69 6c 65 22 29 29 20 7c 20 22 3f 22 20 7c 20 22 25 22 20 7c ption("volatile")).|."?".|."%".|
30dc0 20 22 25 25 22 20 7c 20 22 3f 3f 22 20 7c 20 22 2d 25 22 0a 0a 50 72 69 6d 61 72 79 45 78 70 72 ."%%".|."??".|."-%"..PrimaryExpr
30de0 65 73 73 69 6f 6e 20 3d 20 49 6e 74 65 67 65 72 20 7c 20 46 6c 6f 61 74 20 7c 20 53 74 72 69 6e ession.=.Integer.|.Float.|.Strin
30e00 67 20 7c 20 43 68 61 72 4c 69 74 65 72 61 6c 20 7c 20 4b 65 79 77 6f 72 64 4c 69 74 65 72 61 6c g.|.CharLiteral.|.KeywordLiteral
30e20 20 7c 20 47 72 6f 75 70 65 64 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 47 6f 74 6f 45 78 70 72 65 .|.GroupedExpression.|.GotoExpre
30e40 73 73 69 6f 6e 20 7c 20 42 6c 6f 63 6b 45 78 70 72 65 73 73 69 6f 6e 28 42 6c 6f 63 6b 4f 72 45 ssion.|.BlockExpression(BlockOrE
30e60 78 70 72 65 73 73 69 6f 6e 29 20 7c 20 53 79 6d 62 6f 6c 20 7c 20 28 22 40 22 20 53 79 6d 62 6f xpression).|.Symbol.|.("@".Symbo
30e80 6c 20 46 6e 43 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e 29 20 7c 20 41 72 72 61 79 54 79 70 65 20 l.FnCallExpression).|.ArrayType.
30ea0 7c 20 28 6f 70 74 69 6f 6e 28 22 65 78 74 65 72 6e 22 29 20 46 6e 50 72 6f 74 6f 29 20 7c 20 41 |.(option("extern").FnProto).|.A
30ec0 73 6d 45 78 70 72 65 73 73 69 6f 6e 20 7c 20 28 22 65 72 72 6f 72 22 20 22 2e 22 20 53 79 6d 62 smExpression.|.("error".".".Symb
30ee0 6f 6c 29 20 7c 20 43 6f 6e 74 61 69 6e 65 72 44 65 63 6c 0a 0a 41 72 72 61 79 54 79 70 65 20 3a ol).|.ContainerDecl..ArrayType.:
30f00 20 22 5b 22 20 6f 70 74 69 6f 6e 28 45 78 70 72 65 73 73 69 6f 6e 29 20 22 5d 22 20 6f 70 74 69 ."[".option(Expression)."]".opti
30f20 6f 6e 28 22 61 6c 69 67 6e 22 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 6f 70 74 69 6f 6e on("align"."(".Expression.option
30f40 28 22 3a 22 20 49 6e 74 65 67 65 72 20 22 3a 22 20 49 6e 74 65 67 65 72 29 20 22 29 22 29 29 20 (":".Integer.":".Integer).")")).
30f60 6f 70 74 69 6f 6e 28 22 63 6f 6e 73 74 22 29 20 6f 70 74 69 6f 6e 28 22 76 6f 6c 61 74 69 6c 65 option("const").option("volatile
30f80 22 29 20 54 79 70 65 45 78 70 72 0a 0a 47 6f 74 6f 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 22 67 ").TypeExpr..GotoExpression.=."g
30fa0 6f 74 6f 22 20 53 79 6d 62 6f 6c 0a 0a 47 72 6f 75 70 65 64 45 78 70 72 65 73 73 69 6f 6e 20 3d oto".Symbol..GroupedExpression.=
30fc0 20 22 28 22 20 45 78 70 72 65 73 73 69 6f 6e 20 22 29 22 0a 0a 4b 65 79 77 6f 72 64 4c 69 74 65 ."(".Expression.")"..KeywordLite
30fe0 72 61 6c 20 3d 20 22 74 72 75 65 22 20 7c 20 22 66 61 6c 73 65 22 20 7c 20 22 6e 75 6c 6c 22 20 ral.=."true".|."false".|."null".
31000 7c 20 22 63 6f 6e 74 69 6e 75 65 22 20 7c 20 22 75 6e 64 65 66 69 6e 65 64 22 20 7c 20 22 65 72 |."continue".|."undefined".|."er
31020 72 6f 72 22 20 7c 20 22 74 68 69 73 22 20 7c 20 22 75 6e 72 65 61 63 68 61 62 6c 65 22 0a 0a 43 ror".|."this".|."unreachable"..C
31040 6f 6e 74 61 69 6e 65 72 44 65 63 6c 20 3d 20 6f 70 74 69 6f 6e 28 22 65 78 74 65 72 6e 22 20 7c ontainerDecl.=.option("extern".|
31060 20 22 70 61 63 6b 65 64 22 29 20 28 22 73 74 72 75 63 74 22 20 7c 20 22 65 6e 75 6d 22 20 7c 20 ."packed").("struct".|."enum".|.
31080 22 75 6e 69 6f 6e 22 29 20 22 7b 22 20 6d 61 6e 79 28 43 6f 6e 74 61 69 6e 65 72 4d 65 6d 62 65 "union")."{".many(ContainerMembe
310a0 72 29 20 22 7d 22 3c 2f 63 6f 64 65 3e 3c 2f 70 72 65 3e 0a 20 20 20 20 20 20 3c 68 32 20 69 64 r)."}"</code></pre>.......<h2.id
310c0 3d 22 7a 65 6e 22 3e 5a 65 6e 3c 2f 68 32 3e 0a 20 20 20 20 20 20 3c 75 6c 3e 0a 20 20 20 20 20 ="zen">Zen</h2>.......<ul>......
310e0 20 20 20 3c 6c 69 3e 43 6f 6d 6d 75 6e 69 63 61 74 65 20 69 6e 74 65 6e 74 20 70 72 65 63 69 73 ...<li>Communicate.intent.precis
31100 65 6c 79 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 45 64 67 65 20 63 61 73 65 73 ely.</li>.........<li>Edge.cases
31120 20 6d 61 74 74 65 72 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 46 61 76 6f 72 20 .matter.</li>.........<li>Favor.
31140 72 65 61 64 69 6e 67 20 63 6f 64 65 20 6f 76 65 72 20 77 72 69 74 69 6e 67 20 63 6f 64 65 2e 3c reading.code.over.writing.code.<
31160 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 4f 6e 6c 79 20 6f 6e 65 20 6f 62 76 69 6f 75 /li>.........<li>Only.one.obviou
31180 73 20 77 61 79 20 74 6f 20 64 6f 20 74 68 69 6e 67 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 s.way.to.do.things.</li>........
311a0 20 3c 6c 69 3e 52 75 6e 74 69 6d 65 20 63 72 61 73 68 65 73 20 61 72 65 20 62 65 74 74 65 72 20 .<li>Runtime.crashes.are.better.
311c0 74 68 61 6e 20 62 75 67 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 43 6f 6d 70 than.bugs.</li>.........<li>Comp
311e0 69 6c 65 20 65 72 72 6f 72 73 20 61 72 65 20 62 65 74 74 65 72 20 74 68 61 6e 20 72 75 6e 74 69 ile.errors.are.better.than.runti
31200 6d 65 20 63 72 61 73 68 65 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 49 6e 63 me.crashes.</li>.........<li>Inc
31220 72 65 6d 65 6e 74 61 6c 20 69 6d 70 72 6f 76 65 6d 65 6e 74 73 2e 3c 2f 6c 69 3e 0a 20 20 20 20 remental.improvements.</li>.....
31240 20 20 20 20 3c 6c 69 3e 41 76 6f 69 64 20 6c 6f 63 61 6c 20 6d 61 78 69 6d 75 6d 73 2e 3c 2f 6c ....<li>Avoid.local.maximums.</l
31260 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 52 65 64 75 63 65 20 74 68 65 20 61 6d 6f 75 6e 74 i>.........<li>Reduce.the.amount
31280 20 6f 6e 65 20 6d 75 73 74 20 72 65 6d 65 6d 62 65 72 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 .one.must.remember.</li>........
312a0 20 3c 6c 69 3e 4d 69 6e 69 6d 69 7a 65 20 65 6e 65 72 67 79 20 73 70 65 6e 74 20 6f 6e 20 63 6f .<li>Minimize.energy.spent.on.co
312c0 64 69 6e 67 20 73 74 79 6c 65 2e 3c 2f 6c 69 3e 0a 20 20 20 20 20 20 20 20 3c 6c 69 3e 54 6f 67 ding.style.</li>.........<li>Tog
312e0 65 74 68 65 72 20 77 65 20 73 65 72 76 65 20 65 6e 64 20 75 73 65 72 73 2e 3c 2f 6c 69 3e 0a 20 ether.we.serve.end.users.</li>..
31300 20 20 20 20 20 3c 2f 75 6c 3e 0a 20 20 20 20 3c 2f 64 69 76 3e 0a 20 20 20 20 0a 20 20 20 20 0a .....</ul>.....</div>...........
31320 20 20 3c 2f 62 6f 64 79 3e 0a 3c 2f 68 74 6d 6c 3e 0a 50 4b 01 02 14 00 14 00 00 00 00 00 00 00 ..</body>.</html>.PK............
31340 21 52 6f 61 ab 2c 14 00 00 00 14 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 !Roa.,..........................
31360 6d 69 6d 65 74 79 70 65 50 4b 01 02 14 00 14 00 00 00 00 00 00 00 21 52 6f 92 d0 0a fc 00 00 00 mimetypePK............!Ro.......
31380 fc 00 00 00 16 00 00 00 00 00 00 00 00 00 00 00 00 00 3a 00 00 00 4d 45 54 41 2d 49 4e 46 2f 63 ..................:...META-INF/c
313a0 6f 6e 74 61 69 6e 65 72 2e 78 6d 6c 50 4b 01 02 14 00 14 00 00 00 00 00 00 00 21 52 f7 75 ad 9d ontainer.xmlPK............!R.u..
313c0 a7 02 00 00 a7 02 00 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 6a 01 00 00 4f 45 42 50 53 2f ......................j...OEBPS/
313e0 63 6f 6e 74 65 6e 74 2e 6f 70 66 50 4b 01 02 14 00 14 00 00 00 00 00 00 00 21 52 73 54 30 2e 86 content.opfPK............!RsT0..
31400 01 00 00 86 01 00 00 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 40 04 00 00 4f 45 42 50 53 2f 6e .....................@...OEBPS/n
31420 61 76 2e 78 68 74 6d 6c 50 4b 01 02 14 00 14 00 00 00 00 00 00 00 21 52 99 93 6f 87 10 0d 03 00 av.xhtmlPK............!R..o.....
31440 10 0d 03 00 11 00 00 00 00 00 00 00 00 00 00 00 00 00 f3 05 00 00 4f 45 42 50 53 2f 69 6e 64 65 ......................OEBPS/inde
31460 78 2e 78 68 74 6d 6c 50 4b 05 06 00 00 00 00 05 00 05 00 35 01 00 00 32 13 03 00 00 00 x.xhtmlPK..........5...2.....