Commit 0588fed15f

Andrew Kelley <andrew@ziglang.org>
2019-03-13 18:04:55
add documentation for `pub`
closes #1727
1 parent d495dcc
Changed files (1)
doc/langref.html.in
@@ -5890,10 +5890,11 @@ comptime {
       {#see_also|Import from C Header File|@cInclude|@cImport|@cUndef|void#}
       {#header_close#}
       {#header_open|@cImport#}
-      <pre>{#syntax#}@cImport(expression) (namespace){#endsyntax#}</pre>
+      <pre>{#syntax#}@cImport(expression) type{#endsyntax#}</pre>
       <p>
-      This function parses C code and imports the functions, types, variables, and
-      compatible macro definitions into the result namespace.
+      This function parses C code and imports the functions, types, variables,
+      and compatible macro definitions into a new empty struct type, and then
+      returns that type.
       </p>
       <p>
       {#syntax#}expression{#endsyntax#} is interpreted at compile time. The builtin functions
@@ -6320,14 +6321,22 @@ export fn @"A function name that is a complete sentence."() void {}
       {#header_close#}
 
       {#header_open|@import#}
-      <pre>{#syntax#}@import(comptime path: []u8) (namespace){#endsyntax#}</pre>
+      <pre>{#syntax#}@import(comptime path: []u8) type{#endsyntax#}</pre>
       <p>
-      This function finds a zig file corresponding to {#syntax#}path{#endsyntax#} and imports all the
-      public top level declarations into the resulting namespace.
+      This function finds a zig file corresponding to {#syntax#}path{#endsyntax#} and adds it to the build,
+      if it is not already added.
+      </p>
+      <p>
+      Zig source files are implicitly structs, with a name equal to the file's basename with the extension
+      truncated. {#syntax#}@import{#endsyntax#} returns the struct type corresponding to the file.
+      </p>
+      <p>
+      Declarations which have the {#syntax#}pub{#endsyntax#} keyword may be referenced from a different
+      source file than the one they are declared in.
       </p>
       <p>
       {#syntax#}path{#endsyntax#} can be a relative or absolute path, or it can be the name of a package.
-          If it is a relative path, it is relative to the file that contains the {#syntax#}@import{#endsyntax#}
+      If it is a relative path, it is relative to the file that contains the {#syntax#}@import{#endsyntax#}
       function call.
       </p>
       <p>
@@ -6335,7 +6344,9 @@ export fn @"A function name that is a complete sentence."() void {}
       </p>
       <ul>
           <li>{#syntax#}@import("std"){#endsyntax#} - Zig Standard Library</li>
-          <li>{#syntax#}@import("builtin"){#endsyntax#} - Compiler-provided types and variables</li>
+          <li>{#syntax#}@import("builtin"){#endsyntax#} - Compiler-provided types and variables.
+              The command <code>zig builtin</code> outputs the source to stdout for reference.
+          </li>
       </ul>
       {#see_also|Compile Variables|@embedFile#}
       {#header_close#}
@@ -8177,28 +8188,68 @@ all your base are belong to us</code></pre>
       </p>
       <pre><code class="shell">$ zig targets
 Architectures:
-  armv8_2a
-  armv8_1a
-  armv8
-  armv8r
-  armv8m_baseline
-  armv8m_mainline
-  armv7
-  armv7em
-  armv7m
-  armv7s
-  armv7k
-  armv7ve
-  armv6
-  armv6m
-  armv6k
-  armv6t2
-  armv5
-  armv5te
-  armv4t
+  arm
+    v8_4a
+    v8_3a
+    v8_2a
+    v8_1a
+    v8
+    v8r
+    v8m_baseline
+    v8m_mainline
+    v7
+    v7em
+    v7m
+    v7s
+    v7k
+    v7ve
+    v6
+    v6m
+    v6k
+    v6t2
+    v5
+    v5te
+    v4t
   armeb
+    v8_4a
+    v8_3a
+    v8_2a
+    v8_1a
+    v8
+    v8r
+    v8m_baseline
+    v8m_mainline
+    v7
+    v7em
+    v7m
+    v7s
+    v7k
+    v7ve
+    v6
+    v6m
+    v6k
+    v6t2
+    v5
+    v5te
+    v4t
   aarch64
+    v8_4a
+    v8_3a
+    v8_2a
+    v8_1a
+    v8
+    v8r
+    v8m_baseline
+    v8m_mainline
   aarch64_be
+    v8_4a
+    v8_3a
+    v8_2a
+    v8_1a
+    v8
+    v8r
+    v8m_baseline
+    v8m_mainline
   avr
   bpfel
   bpfeb
@@ -8208,7 +8259,6 @@ Architectures:
   mips64
   mips64el
   msp430
-  nios2
   powerpc
   powerpc64
   powerpc64le
@@ -8220,32 +8270,58 @@ Architectures:
   sparcv9
   sparcel
   s390x
-  tce
-  tcele
   thumb
+    v8_4a
+    v8_3a
+    v8_2a
+    v8_1a
+    v8
+    v8r
+    v8m_baseline
+    v8m_mainline
+    v7
+    v7em
+    v7m
+    v7s
+    v7k
+    v7ve
+    v6
+    v6m
+    v6k
+    v6t2
+    v5
+    v5te
+    v4t
   thumbeb
+    v8_4a
+    v8_3a
+    v8_2a
+    v8_1a
+    v8
+    v8r
+    v8m_baseline
+    v8m_mainline
+    v7
+    v7em
+    v7m
+    v7s
+    v7k
+    v7ve
+    v6
+    v6m
+    v6k
+    v6t2
+    v5
+    v5te
+    v4t
   i386
   x86_64 (native)
   xcore
   nvptx
   nvptx64
-  le32
-  le64
-  amdil
-  amdil64
-  hsail
-  hsail64
-  spir
-  spir64
-  kalimbav3
-  kalimbav4
-  kalimbav5
-  shave
   lanai
   wasm32
   wasm64
-  renderscript32
-  renderscript64
 
 Operating Systems:
   freestanding
@@ -8268,7 +8344,6 @@ Operating Systems:
   rtems
   nacl
   cnk
-  bitrig
   aix
   cuda
   nvcl
@@ -8279,11 +8354,14 @@ Operating Systems:
   watchos
   mesa3d
   contiki
+  amdpal
   zen
+  uefi
 
-Environments:
-  unknown
+C ABIs:
+  none
   gnu (native)
+  gnuabin32
   gnuabi64
   gnueabi
   gnueabihf
@@ -8298,9 +8376,8 @@ Environments:
   msvc
   itanium
   cygnus
-  amdopencl
   coreclr
-  opencl</code></pre>
+  simulator</code></pre>
       <p>
       The Zig Standard Library ({#syntax#}@import("std"){#endsyntax#}) has architecture, environment, and operating system
       abstractions, and thus takes additional work to support more platforms.
@@ -8433,6 +8510,19 @@ fn readU32Be() u32 {}
       <p>The codepoint U+000a (LF) (which is encoded as the single-byte value 0x0a) is the line terminator character. This character always terminates a line of zig source code (except possbly the last line of the file).</p>
       <p>For some discussion on the rationale behind these design decisions, see <a href="https://github.com/ziglang/zig/issues/663">issue #663</a></p>
       {#header_close#}
+
+      {#header_open|Keyword Reference#}
+      <p>
+      TODO the rest of the keywords. Most of these can just be links to the relevant section.
+      </p>
+      {#header_open|Keyword: pub#}
+      <p>The {#syntax#}pub{#endsyntax#} in front of a top level declaration makes the
+      declaration available to reference from a different file than the one it is declared in.</p>
+      <p><a href="https://github.com/ziglang/zig/issues/2059">TODO delete pub syntax for fields, or make it do something.</a></p>
+      {#see_also|@import#}
+      {#header_close#}
+      {#header_close#}
+
       {#header_open|Grammar#}
       <pre><code>Root &lt;- skip ContainerMembers eof