zig/lib/docs/index.html
Andrew Kelley ec95e00e28 flatten lib/std/special and improve "pkg inside another" logic
stage2: change logic for detecting whether the main package is inside
the std package. Previously it relied on realpath() which is not portable.
This uses resolve() which is how imports already work.

 * stage2: fix cleanup bug when creating Module
 * flatten lib/std/special/* to lib/*
   - this was motivated by making main_pkg_is_inside_std false for
     compiler_rt & friends.
 * rename "mini libc" to "universal libc"
2022-05-06 22:41:00 -07:00

663 lines
18 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Documentation - Zig</title>
<link rel="icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAgklEQVR4AWMYWuD7EllJIM4G4g4g5oIJ/odhOJ8wToOxSTXgNxDHoeiBMfA4+wGShjyYOCkG/IGqWQziEzYAoUAeiF9D5U+DxEg14DRU7jWIT5IBIOdCxf+A+CQZAAoopEB7QJwBCBwHiip8UYmRdrAlDpIMgApwQZNnNii5Dq0MBgCxxycBnwEd+wAAAABJRU5ErkJggg==">
<style>
:root {
font-size: 1em;
--ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
--mono: "Source Code Pro", monospace;
--tx-color: #141414;
--bg-color: #ffffff;
--link-color: #2A6286;
--sidebar-sh-color: rgba(0, 0, 0, 0.09);
--sidebar-pkg-bg-color: #f1f1f1;
--sidebar-pkglnk-tx-color: #141414;
--sidebar-pkglnk-tx-color-hover: #fff;
--sidebar-pkglnk-tx-color-active: #000;
--sidebar-pkglnk-bg-color: transparent;
--sidebar-pkglnk-bg-color-hover: #555;
--sidebar-pkglnk-bg-color-active: #FFBB4D;
--search-bg-color: #f3f3f3;
--search-bg-color-focus: #ffffff;
--search-sh-color: rgba(0, 0, 0, 0.18);
--help-sh-color: rgba(0, 0, 0, 0.75);
}
html, body { margin: 0; padding:0; height: 100%; }
a {
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
.hidden {
display: none;
}
/* layout */
.canvas {
display: flex;
flex-direction: column;
width: 100vw;
height: 100vh;
overflow: hidden;
margin: 0;
padding: 0;
font-family: var(--ui);
color: var(--tx-color);
background-color: var(--bg-color);
}
.banner {
background-color: darkred;
text-align: center;
color: white;
padding: 15px 5px;
}
.banner a {
color: bisque;
text-decoration: underline;
}
.flex-main {
display: flex;
overflow-y: hidden;
z-index: 100;
}
.flex-filler {
flex-grow: 1;
flex-shrink: 1;
}
.flex-left {
width: 12rem;
max-width: 15vw;
min-width: 9.5rem;
overflow: auto;
-webkit-overflow-scrolling: touch;
overflow-wrap: break-word;
flex-shrink: 0;
flex-grow: 0;
z-index: 300;
}
.flex-right {
display: flex;
overflow: auto;
-webkit-overflow-scrolling: touch;
flex-grow: 1;
flex-shrink: 1;
z-index: 200;
}
.flex-right > .wrap {
width: 60rem;
max-width: 85vw;
flex-shrink: 1;
}
.help-modal {
z-index: 400;
}
/* sidebar */
.sidebar {
font-size: 1rem;
background-color: var(--bg-color);
box-shadow: 0 0 1rem var(--sidebar-sh-color);
}
.sidebar .logo {
padding: 1rem 0.35rem 0.35rem 0.35rem;
}
.sidebar .logo > svg {
display: block;
overflow: visible;
}
.sidebar h2 {
margin: 0.5rem;
padding: 0;
font-size: 1.2rem;
}
.sidebar h2 > span {
border-bottom: 0.125rem dotted var(--tx-color);
}
.sidebar .packages {
list-style-type: none;
margin: 0;
padding: 0;
background-color: var(--sidebar-pkg-bg-color);
}
.sidebar .packages > li > a {
display: block;
padding: 0.5rem 1rem;
color: var(--sidebar-pkglnk-tx-color);
background-color: var(--sidebar-pkglnk-bg-color);
text-decoration: none;
}
.sidebar .packages > li > a:hover {
color: var(--sidebar-pkglnk-tx-color-hover);
background-color: var(--sidebar-pkglnk-bg-color-hover);
}
.sidebar .packages > li > a.active {
color: var(--sidebar-pkglnk-tx-color-active);
background-color: var(--sidebar-pkglnk-bg-color-active);
}
.sidebar p.str {
margin: 0.5rem;
font-family: var(--mono);
}
/* docs section */
.docs {
padding: 1rem 0.7rem 2.4rem 1.4rem;
font-size: 1rem;
background-color: var(--bg-color);
overflow-wrap: break-word;
}
.docs .search {
width: 100%;
margin-bottom: 0.8rem;
padding: 0.5rem;
font-size: 1rem;
font-family: var(--ui);
color: var(--tx-color);
background-color: var(--search-bg-color);
border-top: 0;
border-left: 0;
border-right: 0;
border-bottom-width: 0.125rem;
border-bottom-style: solid;
border-bottom-color: var(--tx-color);
outline: none;
transition: border-bottom-color 0.35s, background 0.35s, box-shadow 0.35s;
border-radius: 0;
-webkit-appearance: none;
}
.docs .search:focus {
background-color: var(--search-bg-color-focus);
border-bottom-color: #ffbb4d;
box-shadow: 0 0.3em 1em 0.125em var(--search-sh-color);
}
.docs .search::placeholder {
font-size: 1rem;
font-family: var(--ui);
color: var(--tx-color);
opacity: 0.5;
}
.docs a {
color: var(--link-color);
}
.docs p {
margin: 0.8rem 0;
}
.docs pre {
font-family: var(--mono);
font-size:1em;
background-color:#F5F5F5;
padding:1em;
overflow-x: auto;
}
.docs code {
font-family: var(--mono);
font-size: 1em;
}
.docs h1 {
font-size: 1.4em;
margin: 0.8em 0;
padding: 0;
border-bottom: 0.0625rem dashed;
}
.docs h2 {
font-size: 1.3em;
margin: 0.5em 0;
padding: 0;
border-bottom: 0.0625rem solid;
}
#listNav {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #f1f1f1;
}
#listNav li {
float:left;
}
#listNav li a {
display: block;
color: #000;
text-align: center;
padding: .5em .8em;
text-decoration: none;
}
#listNav li a:hover {
background-color: #555;
color: #fff;
}
#listNav li a.active {
background-color: #FFBB4D;
color: #000;
}
#listSearchResults li.selected {
background-color: #93e196;
}
#tableFnErrors dt {
font-weight: bold;
}
.examples {
list-style-type: none;
margin: 0;
padding: 0;
}
.examples li {
padding: 0.5em 0;
white-space: nowrap;
overflow-x: auto;
}
.docs td {
margin: 0;
padding: 0.5em;
max-width: 27em;
text-overflow: ellipsis;
overflow-x: hidden;
}
/* help dialog */
.help-modal {
display: flex;
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
justify-content: center;
align-items: center;
background-color: rgba(0, 0, 0, 0.15);
backdrop-filter: blur(0.3em);
}
.help-modal > .dialog {
max-width: 97vw;
max-height: 97vh;
overflow: auto;
font-size: 1rem;
color: #fff;
background-color: #333;
border: 0.125rem solid #000;
box-shadow: 0 0.5rem 2.5rem 0.3rem var(--help-sh-color);
}
.help-modal h1 {
margin: 0.75em 2.5em 1em 2.5em;
font-size: 1.5em;
text-align: center;
}
.help-modal dt, .help-modal dd {
display: inline;
margin: 0 0.2em;
}
.help-modal dl {
margin-left: 0.5em;
margin-right: 0.5em;
}
.help-modal kbd {
display: inline-block;
padding: 0.3em 0.2em;
font-size: 1.2em;
font-size: var(--mono);
line-height: 0.8em;
vertical-align: middle;
color: #000;
background-color: #fafbfc;
border-color: #d1d5da;
border-bottom-color: #c6cbd1;
border: solid 0.0625em;
border-radius: 0.1875em;
box-shadow: inset 0 -0.0625em 0 #c6cbd1;
cursor: default;
}
/* tokens */
.tok-kw {
color: #333;
font-weight: bold;
}
.tok-str {
color: #d14;
}
.tok-builtin {
color: #0086b3;
}
.tok-comment {
color: #777;
font-style: italic;
}
.tok-fn {
color: #900;
font-weight: bold;
}
.tok-null {
color: #008080;
}
.tok-number {
color: #008080;
}
.tok-type {
color: #458;
font-weight: bold;
}
/* dark mode */
@media (prefers-color-scheme: dark) {
:root {
--tx-color: #bbb;
--bg-color: #111;
--link-color: #88f;
--sidebar-sh-color: rgba(128, 128, 128, 0.09);
--sidebar-pkg-bg-color: #333;
--sidebar-pkglnk-tx-color: #fff;
--sidebar-pkglnk-tx-color-hover: #fff;
--sidebar-pkglnk-tx-color-active: #000;
--sidebar-pkglnk-bg-color: transparent;
--sidebar-pkglnk-bg-color-hover: #555;
--sidebar-pkglnk-bg-color-active: #FFBB4D;
--search-bg-color: #3c3c3c;
--search-bg-color-focus: #000;
--search-sh-color: rgba(255, 255, 255, 0.28);
--help-sh-color: rgba(142, 142, 142, 0.5);
}
.docs pre {
background-color:#2A2A2A;
}
#listNav {
background-color: #333;
}
#listNav li a {
color: #fff;
}
#listNav li a:hover {
background-color: #555;
color: #fff;
}
#listNav li a.active {
background-color: #FFBB4D;
color: #000;
}
#listSearchResults li.selected {
background-color: #000;
}
#listSearchResults li.selected a {
color: #fff;
}
.tok-kw {
color: #eee;
}
.tok-str {
color: #2e5;
}
.tok-builtin {
color: #ff894c;
}
.tok-comment {
color: #aa7;
}
.tok-fn {
color: #e33;
}
.tok-null {
color: #ff8080;
}
.tok-number {
color: #ff8080;
}
.tok-type {
color: #68f;
}
}
@media only screen and (max-width: 750px) {
.canvas {
overflow: auto;
}
.flex-main {
flex-direction: column;
display: block;
}
.sidebar {
min-width: calc(100vw - 2.8rem);
padding-left: 1.4rem;
padding-right: 1.4rem;
}
.logo {
max-width: 6.5rem;
}
.flex-main > .flex-filler {
display: none;
}
.flex-main > .flex-right > .flex-filler {
display: none;
}
.flex-main > .flex-right > .wrap {
max-width: 100vw;
}
.flex-main > .flex-right > .wrap > .docs {
padding-right: 1.4rem;
background: transparent;
}
.packages {
display: flex;
flex-wrap: wrap;
}
.table-container table {
display: flex;
flex-direction: column;
}
.table-container tr {
display: flex;
flex-direction: column;
}
.examples {
overflow-x: scroll;
-webkit-overflow-scrolling: touch;
max-width: 100vw;
margin-left: -1.4rem;
margin-right: -1.4rem;
}
.examples li {
width: max-content;
padding-left: 1.4rem;
padding-right: 1.4rem;
}
.mobile-scroll-container {
overflow-x: scroll;
-webkit-overflow-scrolling: touch;
margin-left: -1.4rem;
margin-right: -1.4rem;
max-width: 100vw;
}
.mobile-scroll-container > .scroll-item {
margin-left: 1.4rem;
margin-right: 1.4rem;
box-sizing: border-box;
width: max-content;
display: inline-block;
min-width: calc(100% - 2.8rem);
}
}
</style>
</head>
<body class="canvas">
<div class="banner">These docs are experimental. <a href="https://kristoff.it/blog/zig-new-relationship-llvm/">Progress depends on the self-hosted compiler</a>, <a href="https://github.com/ziglang/zig/wiki/How-to-read-the-standard-library-source-code">consider reading the stdlib source in the meantime</a>.</div>
<div class="flex-main">
<div class="flex-filler"></div>
<div class="flex-left sidebar">
<nav>
<div class="logo">
<svg version="1.1" viewBox="0 0 150 80" xmlns="http://www.w3.org/2000/svg">
<g fill="#f7a41d">
<path d="m0,-0.08899l0,80l19,0l6,-10l12,-10l-17,0l0,-40l15,0l0,-20l-35,0zm40,0l0,20l62,0l0,-20l-62,0zm91,0l-6,10l-12,10l17,0l0,40l-15,0l0,20l35,0l0,-80l-19,0zm-83,60l0,20l62,0l0,-20l-62,0z" shape-rendering="crispEdges"></path>
<path d="m37,59.91101l-18,20l0,-15l18,-5z"></path>
<path d="m113,19.91101l18,-20l0,15l-18,5z"></path>
<path d="m96.98,0.54101l36.28,-10.4l-80.29,89.17l-36.28,10.4l80.29,-89.17z"></path>
</g>
</svg>
</div>
<div id="sectPkgs" class="hidden">
<h2><span>Packages</span></h2>
<ul id="listPkgs" class="packages"></ul>
</div>
<div id="sectInfo" class="hidden">
<h2><span>Zig Version</span></h2>
<p class="str" id="tdZigVer"></p>
<h2><span>Target</span></h2>
<p class="str" id="tdTarget"></p>
</div>
</nav>
</div>
<div class="flex-right">
<div class="wrap">
<section class="docs">
<input type="search" class="search" id="search" autocomplete="off" spellcheck="false" placeholder="`s` to search, `?` to see more options">
<p id="status">Loading...</p>
<div id="sectNav" class="hidden"><ul id="listNav"></ul></div>
<div id="fnProto" class="hidden">
<div class="mobile-scroll-container"><pre id="fnProtoCode" class="scroll-item"></pre></div>
</div>
<h1 id="hdrName" class="hidden"></h1>
<div id="fnNoExamples" class="hidden">
<p>This function is not tested or referenced.</p>
</div>
<div id="declNoRef" class="hidden">
<p>
This declaration is not tested or referenced, and it has therefore not been included in
semantic analysis, which means the only documentation available is whatever is in the
doc comments.
</p>
</div>
<div id="tldDocs" class="hidden"></div>
<div id="sectParams" class="hidden">
<h2>Parameters</h2>
<div id="listParams"></div>
</div>
<div id="sectFnErrors" class="hidden">
<h2>Errors</h2>
<div id="fnErrorsAnyError">
<p><span class="tok-type">anyerror</span> means the error set is known only at runtime.</p>
</div>
<div id="tableFnErrors"><dl id="listFnErrors"></dl></div>
</div>
<div id="sectSearchResults" class="hidden">
<h2>Search Results</h2>
<ul id="listSearchResults"></ul>
<p id="sectSearchAllResultsLink" class="hidden"><a href="">show all results</a></p>
</div>
<div id="sectSearchNoResults" class="hidden">
<h2>No Results Found</h2>
<p>Press escape to exit search and then '?' to see more options.</p>
</div>
<div id="sectFields" class="hidden">
<h2>Fields</h2>
<div id="listFields"></div>
</div>
<div id="sectTypes" class="hidden">
<h2>Types</h2>
<ul id="listTypes"></ul>
</div>
<div id="sectNamespaces" class="hidden">
<h2>Namespaces</h2>
<ul id="listNamespaces"></ul>
</div>
<div id="sectGlobalVars" class="hidden">
<h2>Global Variables</h2>
<div class="table-container">
<table>
<tbody id="listGlobalVars"></tbody>
</table>
</div>
</div>
<div id="sectFns" class="hidden">
<h2>Functions</h2>
<div class="table-container">
<table>
<tbody id="listFns"></tbody>
</table>
</div>
</div>
<div id="sectValues" class="hidden">
<h2>Values</h2>
<div class="table-container">
<table>
<tbody id="listValues"></tbody>
</table>
</div>
</div>
<div id="sectErrSets" class="hidden">
<h2>Error Sets</h2>
<ul id="listErrSets"></ul>
</div>
<div id="fnExamples" class="hidden">
<h2>Examples</h2>
<ul id="listFnExamples" class="examples"></ul>
</div>
</section>
</div>
<div class="flex-filler"></div>
</div>
</div>
<div id="helpDialog" class="hidden">
<div class="help-modal">
<div class="dialog">
<h1>Keyboard Shortcuts</h1>
<dl><dt><kbd>?</kbd></dt><dd>Show this help dialog</dd></dl>
<dl><dt><kbd>Esc</kbd></dt><dd>Clear focus; close this dialog</dd></dl>
<dl><dt><kbd>s</kbd></dt><dd>Focus the search field</dd></dl>
<dl><dt><kbd></kbd></dt><dd>Move up in search results</dd></dl>
<dl><dt><kbd></kbd></dt><dd>Move down in search results</dd></dl>
<dl><dt><kbd></kbd></dt><dd>Go to active search result</dd></dl>
</div>
</div>
</div>
<script src="data.js"></script>
<script src="main.js"></script>
</body>
</html>