docs/Lix/release-notes/rl-2.4/index.html

3416 lines
67 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Aux Documentation">
<meta name="author" content="Nixpkgs Aux, and Lix Contributors">
<link rel="canonical" href="https://docs.auxolotl.org/Lix/release-notes/rl-2.4/">
<link rel="prev" href="../rl-2.3/">
<link rel="next" href="../rl-2.5/">
<link rel="icon" href="../../../assets/aux-logo.svg">
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.29">
<title>Release 2.4 (2021-11-01) - Aux Docs</title>
<link rel="stylesheet" href="../../../assets/stylesheets/main.76a95c52.min.css">
<link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.bunny.net/css?family=IBM+Plex+Sans:300,300i,400,400i,700,700i%7CIBM+Plex+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"IBM Plex Sans";--md-code-font:"IBM Plex Mono"}</style>
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<meta property="og:type" content="website" >
<meta property="og:title" content="Release 2.4 (2021-11-01) - Aux Docs" >
<meta property="og:description" content="Aux Documentation" >
<meta property="og:image" content="https://docs.auxolotl.org/assets/images/social/Lix/release-notes/rl-2.4.png" >
<meta property="og:image:type" content="image/png" >
<meta property="og:image:width" content="1200" >
<meta property="og:image:height" content="630" >
<meta property="og:url" content="https://docs.auxolotl.org/Lix/release-notes/rl-2.4/" >
<meta name="twitter:card" content="summary_large_image" >
<meta name="twitter:title" content="Release 2.4 (2021-11-01) - Aux Docs" >
<meta name="twitter:description" content="Aux Documentation" >
<meta name="twitter:image" content="https://docs.auxolotl.org/assets/images/social/Lix/release-notes/rl-2.4.png" >
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="blue">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#release-24-2021-11-01" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../../.." title="Aux Docs" class="md-header__button md-logo" aria-label="Aux Docs" data-md-component="logo">
<img src="../../../assets/aux-logo.svg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Aux Docs
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Release 2.4 (2021-11-01)
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="blue" aria-label="Dark Mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Dark Mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3 3.19.09m3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95 2.06.05m-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31Z"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="blue" aria-label="Light Mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Light Mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5c-.84 0-1.65.15-2.39.42L12 2M3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29L3.34 7m.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14L3.36 17M20.65 7l-1.77 3.79a7.023 7.023 0 0 0-2.38-4.15l4.15.36m-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29L20.64 17M12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44L12 22Z"/></svg>
</label>
</form>
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://git.auxolotl.org/auxolotl/docs" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.777 0a2.9 2.9 0 1 1-2.529 4.322H12.91a4.266 4.266 0 0 0-4.265 4.195v2.118a7.076 7.076 0 0 1 4.147-1.42l.118-.002h1.338a2.9 2.9 0 0 1 5.43 1.422 2.9 2.9 0 0 1-5.43 1.422H12.91a4.266 4.266 0 0 0-4.265 4.195v2.319A2.9 2.9 0 0 1 7.222 24 2.9 2.9 0 0 1 5.8 18.57V8.589a7.109 7.109 0 0 1 6.991-7.108l.118-.001h1.338A2.9 2.9 0 0 1 16.778 0ZM7.223 19.905a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Zm9.554-10.464a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.39Zm0-7.735a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Z"/></svg>
</div>
<div class="md-source__repository">
auxolotl/docs
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../../.." class="md-tabs__link">
Aux Documentation Hub
</a>
</li>
<li class="md-tabs__item">
<a href="../../../TODO/" class="md-tabs__link">
TODO
</a>
</li>
<li class="md-tabs__item">
<a href="../../../Aux/" class="md-tabs__link">
Aux
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../../" class="md-tabs__link">
Lix
</a>
</li>
<li class="md-tabs__item">
<a href="../../../NixOS/appstream/" class="md-tabs__link">
NixOS
</a>
</li>
<li class="md-tabs__item">
<a href="../../../Nixpkgs/" class="md-tabs__link">
Nixpkgs
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../../.." title="Aux Docs" class="md-nav__button md-logo" aria-label="Aux Docs" data-md-component="logo">
<img src="../../../assets/aux-logo.svg" alt="logo">
</a>
Aux Docs
</label>
<div class="md-nav__source">
<a href="https://git.auxolotl.org/auxolotl/docs" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.777 0a2.9 2.9 0 1 1-2.529 4.322H12.91a4.266 4.266 0 0 0-4.265 4.195v2.118a7.076 7.076 0 0 1 4.147-1.42l.118-.002h1.338a2.9 2.9 0 0 1 5.43 1.422 2.9 2.9 0 0 1-5.43 1.422H12.91a4.266 4.266 0 0 0-4.265 4.195v2.319A2.9 2.9 0 0 1 7.222 24 2.9 2.9 0 0 1 5.8 18.57V8.589a7.109 7.109 0 0 1 6.991-7.108l.118-.001h1.338A2.9 2.9 0 0 1 16.778 0ZM7.223 19.905a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Zm9.554-10.464a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.39Zm0-7.735a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Z"/></svg>
</div>
<div class="md-source__repository">
auxolotl/docs
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../.." class="md-nav__link">
<span class="md-ellipsis">
Aux Documentation Hub
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../../TODO/" class="md-nav__link">
<span class="md-ellipsis">
TODO
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../../Aux/" class="md-nav__link">
<span class="md-ellipsis">
Aux
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked>
<div class="md-nav__link md-nav__container">
<a href="../../" class="md-nav__link ">
<span class="md-ellipsis">
Lix
</span>
</a>
<label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Lix
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../glossary/" class="md-nav__link">
<span class="md-ellipsis">
Glossary
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../quick-start/" class="md-nav__link">
<span class="md-ellipsis">
Quick Start
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../Advanced-Topics/" class="md-nav__link">
<span class="md-ellipsis">
Advanced Topics
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../Command-Reference/" class="md-nav__link">
<span class="md-ellipsis">
Command Reference
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../Package-Management/" class="md-nav__link">
<span class="md-ellipsis">
Package Management
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../architecture/" class="md-nav__link">
<span class="md-ellipsis">
Architecture
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../contributing/" class="md-nav__link">
<span class="md-ellipsis">
Contributing
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../installation/" class="md-nav__link">
<span class="md-ellipsis">
Installation
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../language/" class="md-nav__link">
<span class="md-ellipsis">
Language
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../protocols/" class="md-nav__link">
<span class="md-ellipsis">
Protocols
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_12" checked>
<div class="md-nav__link md-nav__container">
<a href="../" class="md-nav__link ">
<span class="md-ellipsis">
Release notes
</span>
</a>
<label class="md-nav__link " for="__nav_4_12" id="__nav_4_12_label" tabindex="0">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_12_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4_12">
<span class="md-nav__icon md-icon"></span>
Release notes
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../rl-0.10.1/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.10.1 (2006-10-11)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.10/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.10 (2006-10-06)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.11/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.11 (2007-12-31)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.12/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.12 (2008-11-20)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.13/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.13 (2009-11-05)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.14/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.14 (2010-02-04)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.15/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.15 (2010-03-17)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.16/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.16 (2010-08-17)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.5/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.5 and earlier
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.6/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.6 (2004-11-14)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.7/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.7 (2005-01-12)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.8.1/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.8.1 (2005-04-13)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.8/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.8 (2005-04-11)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.9.1/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.9.1 (2005-09-20)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.9.2/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.9.2 (2005-09-21)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-0.9/" class="md-nav__link">
<span class="md-ellipsis">
Release 0.9 (2005-09-16)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.0/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.0 (2012-05-11)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.1/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.1 (2012-07-18)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.10/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.10 (2015-09-03)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.11.10/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.11.10 (2017-06-12)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.11/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.11 (2016-01-19)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.2/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.2 (2012-12-06)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.3/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.3 (2013-01-04)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.4/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.4 (2013-02-26)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.5.2/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.5.2 (2013-05-13)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.5/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.5 (2013-02-27)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.6.1/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.6.1 (2013-10-28)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.6/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.6 (2013-09-10)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.7/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.7 (2014-04-11)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.8/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.8 (2014-12-14)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-1.9/" class="md-nav__link">
<span class="md-ellipsis">
Release 1.9 (2015-06-12)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.0/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.0 (2018-02-22)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.1/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.1 (2018-09-02)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.10/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.10 (2022-07-11)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.11/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.11 (2022-08-24)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.12/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.12 (2022-12-06)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.13/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.13 (2023-01-17)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.14/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.14 (2023-02-28)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.15/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.15 (2023-04-11)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.16/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.16 (2023-05-31)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.17/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.17 (2023-07-24)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.18/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.18 (2023-09-20)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.2/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.2 (2019-01-11)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.3/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.3 (2019-09-04)
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Release 2.4 (2021-11-01)
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Release 2.4 (2021-11-01)
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#highlights" class="md-nav__link">
<span class="md-ellipsis">
Highlights
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#other-features" class="md-nav__link">
<span class="md-ellipsis">
Other features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#incompatible-changes" class="md-nav__link">
<span class="md-ellipsis">
Incompatible changes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#contributors" class="md-nav__link">
<span class="md-ellipsis">
Contributors
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../rl-2.5/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.5 (2021-12-13)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.6/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.6 (2022-01-24)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.7/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.7 (2022-03-07)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.8/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.8 (2022-04-19)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.9/" class="md-nav__link">
<span class="md-ellipsis">
Release 2.9 (2022-05-30)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../rl-2.90/" class="md-nav__link">
<span class="md-ellipsis">
Lix 2.90 "Vanilla Ice Cream" (2024-07-10)
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../../NixOS/appstream/" class="md-nav__link">
<span class="md-ellipsis">
NixOS
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../../Nixpkgs/" class="md-nav__link">
<span class="md-ellipsis">
Nixpkgs
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#highlights" class="md-nav__link">
<span class="md-ellipsis">
Highlights
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#other-features" class="md-nav__link">
<span class="md-ellipsis">
Other features
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#incompatible-changes" class="md-nav__link">
<span class="md-ellipsis">
Incompatible changes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#contributors" class="md-nav__link">
<span class="md-ellipsis">
Contributors
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="release-24-2021-11-01">Release 2.4 (2021-11-01)</h1>
<p>This is the first release in more than two years and is the result of
more than 2800 commits from 195 contributors since release 2.3.</p>
<h3 id="highlights">Highlights</h3>
<ul>
<li>Nix's <strong>error messages</strong> have been improved a lot. For instance,
evaluation errors now point out the location of the error:</li>
</ul>
<div class="highlight"><pre><span></span><code>$ nix build
error: undefined variable &#39;bzip3&#39;
at /nix/store/449lv242z0zsgwv95a8124xi11sp419f-source/flake.nix:88:13:
87| [ curl
88| bzip3 xz brotli editline
| ^
89| openssl sqlite
</code></pre></div>
<ul>
<li>
<p>The <strong><code>nix</code> command</strong> has seen a lot of work and is now almost at
feature parity with the old command-line interface (the <code>nix-*</code>
commands). It aims to be <a href="../../contributing/cli-guideline/">more modern, consistent and pleasant to
use</a> than the old CLI. It is still
marked as experimental but its interface should not change much
anymore in future releases.</p>
</li>
<li>
<p><strong>Flakes</strong> are a new format to package Nix-based projects in a more
discoverable, composable, consistent and reproducible way. A flake
is just a repository or tarball containing a file named <code>flake.nix</code>
that specifies dependencies on other flakes and returns any Nix
assets such as packages, Nixpkgs overlays, NixOS modules or CI
tests. The new <code>nix</code> CLI is primarily based around flakes; for
example, a command like <code>nix run nixpkgs#hello</code> runs the <code>hello</code>
application from the <code>nixpkgs</code> flake.</p>
</li>
</ul>
<p>Flakes are currently marked as experimental. For an introduction,
see <a href="https://www.tweag.io/blog/2020-05-25-flakes/">this blog
post</a>. For detailed
information about flake syntax and semantics, see the <a href="../../Command-Reference/New-CLI/nix3-flake/"><code>nix flake</code>
manual page</a>.</p>
<ul>
<li>
<p>Nix's store can now be <strong>content-addressed</strong>, meaning that the hash
component of a store path is the hash of the path's
contents. Previously Nix could only build <strong>input-addressed</strong> store
paths, where the hash is computed from the derivation dependency
graph. Content-addressing allows deduplication, early cutoff in
build systems, and unprivileged closure copying. This is still <a href="https://discourse.nixos.org/t/content-addressed-nix-call-for-testers/12881">an
experimental
feature</a>.</p>
</li>
<li>
<p>The Nix manual has been converted into Markdown, making it easier to
contribute. In addition, every <code>nix</code> subcommand now has a manual
page, documenting every option.</p>
</li>
<li>
<p>A new setting that allows <strong>experimental features</strong> to be enabled
selectively. This allows us to merge unstable features into Nix more
quickly and do more frequent releases.</p>
</li>
</ul>
<h3 id="other-features">Other features</h3>
<ul>
<li>
<p>There are many new <code>nix</code> subcommands:</p>
</li>
<li>
<p><code>nix develop</code> is intended to replace <code>nix-shell</code>. It has a number
of new features:</p>
<ul>
<li>
<p>It automatically sets the output environment variables (such as
<code>$out</code>) to writable locations (such as <code>./outputs/out</code>).</p>
</li>
<li>
<p>It can store the environment in a profile. This is useful for
offline work.</p>
</li>
<li>
<p>It can run specific phases directly. For instance, <code>nix develop
--build</code> runs <code>buildPhase</code>.</p>
</li>
<li>
<p>It allows dependencies in the Nix store to be "redirected" to
arbitrary directories using the <code>--redirect</code> flag. This is
useful if you want to hack on a package <em>and</em> some of its
dependencies at the same time.</p>
</li>
</ul>
</li>
<li>
<p><code>nix print-dev-env</code> prints the environment variables and bash
functions defined by a derivation. This is useful for users of
other shells than bash (especially with <code>--json</code>).</p>
</li>
<li>
<p><code>nix shell</code> was previously named <code>nix run</code> and is intended to
replace <code>nix-shell -p</code>, but without the <code>stdenv</code> overhead. It
simply starts a shell where some packages have been added to
<code>$PATH</code>.</p>
</li>
<li>
<p><code>nix run</code> (not to be confused with the old subcommand that has
been renamed to <code>nix shell</code>) runs an "app", a flake output that
specifies a command to run, or an eponymous program from a
package. For example, <code>nix run nixpkgs#hello</code> runs the <code>hello</code>
program from the <code>hello</code> package in <code>nixpkgs</code>.</p>
</li>
<li>
<p><code>nix flake</code> is the container for flake-related operations, such as
creating a new flake, querying the contents of a flake or updating
flake lock files.</p>
</li>
<li>
<p><code>nix registry</code> allows you to query and update the flake registry,
which maps identifiers such as <code>nixpkgs</code> to concrete flake URLs.</p>
</li>
<li>
<p><code>nix profile</code> is intended to replace <code>nix-env</code>. Its main advantage
is that it keeps track of the provenance of installed packages
(e.g. exactly which flake version a package came from). It also
has some helpful subcommands:</p>
<ul>
<li>
<p><code>nix profile history</code> shows what packages were added, upgraded
or removed between each version of a profile.</p>
</li>
<li>
<p><code>nix profile diff-closures</code> shows the changes between the
closures of each version of a profile. This allows you to
discover the addition or removal of dependencies or size
changes.</p>
</li>
</ul>
<p><strong>Warning</strong>: after a profile has been updated using <code>nix profile</code>,
it is no longer usable with <code>nix-env</code>.</p>
</li>
<li>
<p><code>nix store diff-closures</code> shows the differences between the
closures of two store paths in terms of the versions and sizes of
dependencies in the closures.</p>
</li>
<li>
<p><code>nix store make-content-addressable</code> rewrites an arbitrary closure
to make it content-addressed. Such paths can be copied into other
stores without requiring signatures.</p>
</li>
<li>
<p><code>nix bundle</code> uses the <a href="https://github.com/matthewbauer/nix-bundle"><code>nix-bundle</code>
program</a> to convert a
closure into a self-extracting executable.</p>
</li>
<li>
<p>Various other replacements for the old CLI, e.g. <code>nix store gc</code>,
<code>nix store delete</code>, <code>nix store repair</code>, <code>nix nar dump-path</code>, <code>nix
store prefetch-file</code>, <code>nix store prefetch-tarball</code>, <code>nix key</code> and
<code>nix daemon</code>.</p>
</li>
<li>
<p>Nix now has an <strong>evaluation cache</strong> for flake outputs. For example,
a second invocation of the command <code>nix run nixpkgs#firefox</code> will
not need to evaluate the <code>firefox</code> attribute because it's already in
the evaluation cache. This is made possible by the hermetic
evaluation model of flakes.</p>
</li>
<li>
<p>The new <code>--offline</code> flag disables substituters and causes all
locally cached tarballs and repositories to be considered
up-to-date.</p>
</li>
<li>
<p>The new <code>--refresh</code> flag causes all locally cached tarballs and
repositories to be considered out-of-date.</p>
</li>
<li>
<p>Many <code>nix</code> subcommands now have a <code>--json</code> option to produce
machine-readable output.</p>
</li>
<li>
<p><code>nix repl</code> has a new <code>:doc</code> command to show documentation about
builtin functions (e.g. <code>:doc builtins.map</code>).</p>
</li>
<li>
<p>Binary cache stores now have an option <code>index-debug-info</code> to create
an index of DWARF debuginfo files for use by
<a href="https://github.com/edolstra/dwarffs"><code>dwarffs</code></a>.</p>
</li>
<li>
<p>To support flakes, Nix now has an extensible mechanism for fetching
source trees. Currently it has the following backends:</p>
</li>
<li>
<p>Git repositories</p>
</li>
<li>
<p>Mercurial repositories</p>
</li>
<li>
<p>GitHub and GitLab repositories (an optimisation for faster
fetching than Git)</p>
</li>
<li>
<p>Tarballs</p>
</li>
<li>
<p>Arbitrary directories</p>
</li>
</ul>
<p>The fetcher infrastructure is exposed via flake input specifications
and via the <code>fetchTree</code> built-in.</p>
<ul>
<li>
<p><strong>Languages changes</strong>: the only new language feature is that you can
now have antiquotations in paths, e.g. <code>./${foo}</code> instead of <code>./. +
foo</code>.</p>
</li>
<li>
<p><strong>New built-in functions</strong>:</p>
</li>
<li>
<p><code>builtins.fetchTree</code> allows fetching a source tree using any
backends supported by the fetcher infrastructure. It subsumes the
functionality of existing built-ins like <code>fetchGit</code>,
<code>fetchMercurial</code> and <code>fetchTarball</code>.</p>
</li>
<li>
<p><code>builtins.getFlake</code> fetches a flake and returns its output
attributes. This function should not be used inside flakes! Use
flake inputs instead.</p>
</li>
<li>
<p><code>builtins.floor</code> and <code>builtins.ceil</code> round a floating-point number
down and up, respectively.</p>
</li>
<li>
<p>Experimental support for recursive Nix. This means that Nix
derivations can now call Nix to build other derivations. This is not
in a stable state yet and not well
<a href="https://github.com/NixOS/nix/commit/c4d7c76b641d82b2696fef73ce0ac160043c18da">documented</a>.</p>
</li>
<li>
<p>The new experimental feature <code>no-url-literals</code> disables URL
literals. This helps to implement <a href="https://github.com/NixOS/rfcs/pull/45">RFC
45</a>.</p>
</li>
<li>
<p>Nix now uses <code>libarchive</code> to decompress and unpack tarballs and zip
files, so <code>tar</code> is no longer required.</p>
</li>
<li>
<p>The priority of substituters can now be overridden using the
<code>priority</code> substituter setting (e.g. <code>--substituters
'http://cache.nixos.org?priority=100 daemon?priority=10'</code>).</p>
</li>
<li>
<p><code>nix edit</code> now supports non-derivation attributes, e.g. <code>nix edit
.#nixosConfigurations.bla</code>.</p>
</li>
<li>
<p>The <code>nix</code> command now provides command line completion for <code>bash</code>,
<code>zsh</code> and <code>fish</code>. Since the support for getting completions is built
into <code>nix</code>, it's easy to add support for other shells.</p>
</li>
<li>
<p>The new <code>--log-format</code> flag selects what Nix's output looks like. It
defaults to a terse progress indicator. There is a new
<code>internal-json</code> output format for use by other programs.</p>
</li>
<li>
<p><code>nix eval</code> has a new <code>--apply</code> flag that applies a function to the
evaluation result.</p>
</li>
<li>
<p><code>nix eval</code> has a new <code>--write-to</code> flag that allows it to write a
nested attribute set of string leaves to a corresponding directory
tree.</p>
</li>
<li>
<p>Memory improvements: many operations that add paths to the store or
copy paths between stores now run in constant memory.</p>
</li>
<li>
<p>Many <code>nix</code> commands now support the flag <code>--derivation</code> to operate
on a <code>.drv</code> file itself instead of its outputs.</p>
</li>
<li>
<p>There is a new store called <code>dummy://</code> that does not support
building or adding paths. This is useful if you want to use the Nix
evaluator but don't have a Nix store.</p>
</li>
<li>
<p>The <code>ssh-ng://</code> store now allows substituting paths on the remote,
as <code>ssh://</code> already did.</p>
</li>
<li>
<p>When auto-calling a function with an ellipsis, all arguments are now
passed.</p>
</li>
<li>
<p>New <code>nix-shell</code> features:</p>
</li>
<li>
<p>It preserves the <code>PS1</code> environment variable if
<code>NIX_SHELL_PRESERVE_PROMPT</code> is set.</p>
</li>
<li>
<p>With <code>-p</code>, it passes any <code>--arg</code>s as Nixpkgs arguments.</p>
</li>
<li>
<p>Support for structured attributes.</p>
</li>
<li>
<p><code>nix-prefetch-url</code> has a new <code>--executable</code> flag.</p>
</li>
<li>
<p>On <code>x86_64</code> systems, <a href="https://lwn.net/Articles/844831/"><code>x86_64</code> microarchitecture
levels</a> are mapped to additional
system types (e.g. <code>x86_64-v1-linux</code>).</p>
</li>
<li>
<p>The new <code>--eval-store</code> flag allows you to use a different store for
evaluation than for building or storing the build result. This is
primarily useful when you want to query whether something exists in
a read-only store, such as a binary cache:</p>
</li>
</ul>
<div class="highlight"><pre><span></span><code>## nix path-info --json --store https://cache.nixos.org
--eval-store auto nixpkgs#hello
</code></pre></div>
<p>(Here <code>auto</code> indicates the local store.)</p>
<ul>
<li>
<p>The Nix daemon has a new low-latency mechanism for copying
closures. This is useful when building on remote stores such as
<code>ssh-ng://</code>.</p>
</li>
<li>
<p>Plugins can now register <code>nix</code> subcommands.</p>
</li>
<li>
<p>The <code>--indirect</code> flag to <code>nix-store --add-root</code> has become a no-op.
<code>--add-root</code> will always generate indirect GC roots from now on.</p>
</li>
</ul>
<h3 id="incompatible-changes">Incompatible changes</h3>
<ul>
<li>The <code>nix</code> command is now marked as an experimental feature. This
means that you need to add</li>
</ul>
<div class="highlight"><pre><span></span><code>experimental-features = nix-command
</code></pre></div>
<p>to your <code>nix.conf</code> if you want to use it, or pass
<code>--extra-experimental-features nix-command</code> on the command line.</p>
<ul>
<li>The <code>nix</code> command no longer has a syntax for referring to packages
in a channel. This means that the following no longer works:</li>
</ul>
<div class="highlight"><pre><span></span><code><span class="go">nix build nixpkgs.hello ## Nix 2.3</span>
</code></pre></div>
<p>Instead, you can either use the <code>#</code> syntax to select a package from
a flake, e.g.</p>
<div class="highlight"><pre><span></span><code><span class="go">nix build nixpkgs#hello</span>
</code></pre></div>
<p>Or, if you want to use the <code>nixpkgs</code> channel in the <code>NIX_PATH</code>
environment variable:</p>
<div class="highlight"><pre><span></span><code><span class="go">nix build -f &#39;&lt;nixpkgs&gt;&#39; hello</span>
</code></pre></div>
<ul>
<li>The old <code>nix run</code> has been renamed to <code>nix shell</code>, while there is a
new <code>nix run</code> that runs a default command. So instead of</li>
</ul>
<div class="highlight"><pre><span></span><code><span class="go">nix run nixpkgs.hello -c hello ## Nix 2.3</span>
</code></pre></div>
<p>you should use</p>
<div class="highlight"><pre><span></span><code><span class="go">nix shell nixpkgs#hello -c hello</span>
</code></pre></div>
<p>or just</p>
<div class="highlight"><pre><span></span><code><span class="go">nix run nixpkgs#hello</span>
</code></pre></div>
<p>if the command you want to run has the same name as the package.</p>
<ul>
<li>
<p>It is now an error to modify the <code>plugin-files</code> setting via a
command-line flag that appears after the first non-flag argument to
any command, including a subcommand to <code>nix</code>. For example,
<code>nix-instantiate default.nix --plugin-files ""</code> must now become
<code>nix-instantiate --plugin-files "" default.nix</code>.</p>
</li>
<li>
<p>We no longer release source tarballs. If you want to build from
source, please build from the tags in the Git repository.</p>
</li>
</ul>
<h3 id="contributors">Contributors</h3>
<p>This release has contributions from
Adam Höse,
Albert Safin,
Alex Kovar,
Alex Zero,
Alexander Bantyev,
Alexandre Esteves,
Alyssa Ross,
Anatole Lucet,
Anders Kaseorg,
Andreas Rammhold,
Antoine Eiche,
Antoine Martin,
Arnout Engelen,
Arthur Gautier,
aszlig,
Ben Burdette,
Benjamin Hipple,
Bernardo Meurer,
Björn Gohla,
Bjørn Forsman,
Bob van der Linden,
Brian Leung,
Brian McKenna,
Brian Wignall,
Bruce Toll,
Bryan Richter,
Calle Rosenquist,
Calvin Loncaric,
Carlo Nucera,
Carlos D'Agostino,
Chaz Schlarp,
Christian Höppner,
Christian Kampka,
Chua Hou,
Chuck,
Cole Helbling,
Daiderd Jordan,
Dan Callahan,
Dani,
Daniel Fitzpatrick,
Danila Fedorin,
Daniël de Kok,
Danny Bautista,
DavHau,
David McFarland,
Dima,
Domen Kožar,
Dominik Schrempf,
Dominique Martinet,
dramforever,
Dustin DeWeese,
edef,
Eelco Dolstra,
Ellie Hermaszewska,
Emilio Karakey,
Emily,
Eric Culp,
Ersin Akinci,
Fabian Möller,
Farid Zakaria,
Federico Pellegrin,
Finn Behrens,
Florian Franzen,
Félix Baylac-Jacqué,
Gabriella Gonzalez,
Geoff Reedy,
Georges Dubus,
Graham Christensen,
Greg Hale,
Greg Price,
Gregor Kleen,
Gregory Hale,
Griffin Smith,
Guillaume Bouchard,
Harald van Dijk,
illustris,
Ivan Zvonimir Horvat,
Jade,
Jake Waksbaum,
jakobrs,
James Ottaway,
Jan Tojnar,
Janne Heß,
Jaroslavas Pocepko,
Jarrett Keifer,
Jeremy Schlatter,
Joachim Breitner,
Joe Pea,
John Ericson,
Jonathan Ringer,
Josef Kemetmüller,
Joseph Lucas,
Jude Taylor,
Julian Stecklina,
Julien Tanguy,
Jörg Thalheim,
Kai Wohlfahrt,
keke,
Keshav Kini,
Kevin Quick,
Kevin Stock,
Kjetil Orbekk,
Krzysztof Gogolewski,
kvtb,
Lars Mühmel,
Leonhard Markert,
Lily Ballard,
Linus Heckemann,
Lorenzo Manacorda,
Lucas Desgouilles,
Lucas Franceschino,
Lucas Hoffmann,
Luke Granger-Brown,
Madeline Haraj,
Marwan Aljubeh,
Mat Marini,
Mateusz Piotrowski,
Matthew Bauer,
Matthew Kenigsberg,
Mauricio Scheffer,
Maximilian Bosch,
Michael Adler,
Michael Bishop,
Michael Fellinger,
Michael Forney,
Michael Reilly,
mlatus,
Mykola Orliuk,
Nathan van Doorn,
Naïm Favier,
ng0,
Nick Van den Broeck,
Nicolas Stig124 Formichella,
Niels Egberts,
Niklas Hambüchen,
Nikola Knezevic,
oxalica,
p01arst0rm,
Pamplemousse,
Patrick Hilhorst,
Paul Opiyo,
Pavol Rusnak,
Peter Kolloch,
Philipp Bartsch,
Philipp Middendorf,
Piotr Szubiakowski,
Profpatsch,
Puck Meerburg,
Ricardo M. Correia,
Rickard Nilsson,
Robert Hensing,
Robin Gloster,
Rodrigo,
Rok Garbas,
Ronnie Ebrin,
Rovanion Luckey,
Ryan Burns,
Ryan Mulligan,
Ryne Everett,
Sam Doshi,
Sam Lidder,
Samir Talwar,
Samuel Dionne-Riel,
Sebastian Ullrich,
Sergei Trofimovich,
Sevan Janiyan,
Shao Cheng,
Shea Levy,
Silvan Mosberger,
Stefan Frijters,
Stefan Jaax,
sternenseemann,
Steven Shaw,
Stéphan Kochen,
SuperSandro2000,
Suraj Barkale,
Taeer Bar-Yam,
Thomas Churchman,
Théophane Hufschmitt,
Timothy DeHerrera,
Timothy Klim,
Tobias Möst,
Tobias Pflug,
Tom Bereknyei,
Travis A. Everett,
Ujjwal Jain,
Vladimír Čunát,
Wil Taylor,
Will Dietz,
Yaroslav Bolyukin,
Yestin L. Harrison,
YI,
Yorick van Pelt,
Yuriy Taraday and
zimbatm.</p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Licenced MIT
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://git.auxolotl.org/auxolotl/docs" target="_blank" rel="noopener" title="Aux Docs Repo" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.777 0a2.9 2.9 0 1 1-2.529 4.322H12.91a4.266 4.266 0 0 0-4.265 4.195v2.118a7.076 7.076 0 0 1 4.147-1.42l.118-.002h1.338a2.9 2.9 0 0 1 5.43 1.422 2.9 2.9 0 0 1-5.43 1.422H12.91a4.266 4.266 0 0 0-4.265 4.195v2.319A2.9 2.9 0 0 1 7.222 24 2.9 2.9 0 0 1 5.8 18.57V8.589a7.109 7.109 0 0 1 6.991-7.108l.118-.001h1.338A2.9 2.9 0 0 1 16.778 0ZM7.223 19.905a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Zm9.554-10.464a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.39Zm0-7.735a1.194 1.194 0 1 0 0 2.389 1.194 1.194 0 0 0 0-2.389Z"/></svg>
</a>
<a href="https://forum.aux.computer/" target="_blank" rel="noopener" title="Aux Forum" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12.103 0C18.666 0 24 5.485 24 11.997c0 6.51-5.33 11.99-11.9 11.99L0 24V11.79C0 5.28 5.532 0 12.103 0zm.116 4.563a7.395 7.395 0 0 0-6.337 3.57 7.247 7.247 0 0 0-.148 7.22L4.4 19.61l4.794-1.074a7.424 7.424 0 0 0 8.136-1.39 7.256 7.256 0 0 0 1.737-7.997 7.375 7.375 0 0 0-6.84-4.585h-.008z"/></svg>
</a>
<a href="https://wiki.auxolotl.org/" target="_blank" rel="noopener" title="Aux Wiki" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17.801 13.557c.148.098.288.202.417.313 1.854 1.6 3.127 4.656 2.582 7.311-1.091-.255-5.747-1.055-7.638-3.383-.91-1.12-1.366-2.081-1.569-2.885a5.65 5.65 0 0 0 .034-.219c.089.198.197.35.313.466.24.24.521.335.766.372.304.046.594-.006.806-.068l.001.001c.05-.015.433-.116.86-.342.325-.173 2.008-.931 3.428-1.566Zm-7.384 1.435C9.156 16.597 6.6 18.939.614 18.417c.219-1.492 1.31-3.019 2.51-4.11.379-.345.906-.692 1.506-1.009.286.168.598.332.939.486 2.689 1.221 3.903 1.001 4.89.573a1.3 1.3 0 0 0 .054-.025 6.156 6.156 0 0 0-.096.66Zm4.152-.462c.38-.341.877-.916 1.383-1.559-.389-.15-.866-.371-1.319-.591-.598-.29-1.305-.283-2.073-.315a4.685 4.685 0 0 1-.804-.103c.014-.123.027-.246.038-.369.062.104.673.057.871.057.354 0 1.621.034 3.074-.574 1.452-.608 2.55-1.706 3.022-3.225.474-1.52.22-3.091-.168-3.952-.169.709-1.453 2.381-1.926 2.871-.473.489-2.381 2.296-2.972 2.921-.7.74-.688.793-1.332 1.302-.202.19-.499.402-.563.53.027-.338.039-.675.027-.997a7.653 7.653 0 0 0-.032-.523c.322-.059.567-.522.567-.861 0-.224-.106-.247-.271-.229.075-.894.382-3.923 1.254-4.281.218.109.831.068.649-.295-.182-.364-.825-.074-1.081.266-.28.374-.956 2.046-.92 4.324-.113.014-.174.033-.322.033-.171 0-.321-.04-.433-.05.034-2.275-.714-3.772-.84-4.169-.12-.375-.491-.596-.781-.596-.146 0-.272.056-.333.179-.182.363.459.417.677.308.706.321 1.156 3.519 1.254 4.277-.125-.006-.199.035-.199.233 0 .311.17.756.452.843a.442.442 0 0 0-.007.03s-.287.99-.413 2.189a4.665 4.665 0 0 1-.718-.225c-.714-.286-1.355-.583-2.019-.566-.664.018-1.366.023-1.804-.036-.438-.058-.649-.15-.649-.15s-.234.365.257 1.075c.42.607 1.055 1.047 1.644 1.18.589.134 1.972.18 2.785-.377.16-.109.317-.228.459-.34a8.717 8.717 0 0 0-.013.626c-.289.753-.571 1.993-.268 3.338 0-.001.701-.842.787-2.958.006-.144.009-.271.01-.383.052-.248.103-.518.148-.799.072.135.151.277.234.413.511.842 1.791 1.37 2.383 1.49.091.019.187.032.285.038Zm-1.12.745c-.188.055-.445.1-.713.059-.21-.031-.45-.11-.655-.316-.169-.168-.312-.419-.401-.789a9.837 9.837 0 0 0 .039-.82l.049-.243c.563.855 1.865 1.398 2.476 1.522.036.008.072.014.109.02l-.013.009c-.579.415-.76.503-.891.558Zm6.333-2.818c-.257.114-4.111 1.822-5.246 2.363.98-.775 3.017-3.59 3.699-4.774 1.062.661 1.468 1.109 1.623 1.441.101.217.09.38.096.515a.57.57 0 0 1-.172.455Zm-9.213 1.62a1.606 1.606 0 0 1-.19.096c-.954.414-2.126.61-4.728-.571-2.023-.918-3.024-2.157-3.371-2.666.476.161 1.471.473 2.157.524.282.021.703.068 1.167.125.021.209.109.486.345.829l.001.001c.451.651 1.134 1.119 1.765 1.262.622.141 2.083.182 2.942-.407a3.12 3.12 0 0 0 .132-.093l.001.179a6.052 6.052 0 0 0-.221.721Zm5.512-1.271a17.49 17.49 0 0 1-1.326-.589c.437.042 1.054.083 1.692.108-.121.162-.244.323-.366.481Zm.932-1.26c-.12.17-.245.343-.373.517-.241.018-.478.03-.709.038a29.05 29.05 0 0 1-.741-.048c.608-.065 1.228-.252 1.823-.507Zm.22-.315c-.809.382-1.679.648-2.507.648-.472 0-.833.018-1.139.039v.001c-.324-.031-.665-.039-1.019-.054a3.555 3.555 0 0 1-.152-.009c.102-.002.192-.006.249-.006.363 0 1.662.034 3.151-.589 1.508-.632 2.645-1.773 3.136-3.351.37-1.186.31-2.402.086-3.312.458-.336.86-.651 1.147-.91.501-.451.743-.733.848-.869.199.206.714.864.685 2.138-.036 1.611-.606 3.187-1.501 4.154a9.099 9.099 0 0 1-1.321 1.132 11.978 11.978 0 0 0-.644-.422l-.089-.055-.051.091c-.184.332-.5.825-.879 1.374ZM4.763 5.817c-.157 1.144.113 2.323.652 3.099.539.776 2.088 2.29 3.614 2.505.991.14 2.055.134 2.055.134s-.593-.576-1.114-1.66c-.521-1.085-.948-2.104-1.734-2.786-.785-.681-1.601-1.416-2.045-1.945-.444-.53-.59-.86-.59-.86s-.656.175-.838 1.513Zm14.301 4.549a9.162 9.162 0 0 0 1.3-1.12c.326-.352.611-.782.845-1.265 1.315.145 2.399.371 2.791.434 0 0-.679 1.971-3.945 3.022l-.016-.035c-.121-.26-.385-.594-.975-1.036Zm-11.634.859a8.537 8.537 0 0 1-.598-.224c-1.657-.693-2.91-1.944-3.449-3.678-.498-1.601-.292-3.251.091-4.269.225.544.758 1.34 1.262 2.01a3.58 3.58 0 0 0-.172.726c-.163 1.197.123 2.428.687 3.24.416.599 1.417 1.62 2.555 2.193-.128.002-.253.003-.376.002Zm-1.758-.077c-.958-.341-1.901-.787-2.697-1.368C-.07 7.559 0 6.827 0 6.827s1.558-.005 3.088.179c.03.126.065.251.104.377.557 1.791 1.851 3.086 3.562 3.803l.047.019a4.254 4.254 0 0 1-.267-.026h-.001c-.401-.053-.595-.135-.595-.135l-.157-.069-.092.144-.017.029Zm6.807-1.59c.086.017.136.058.136.145 0 .197-.242.5-.597.597l-.01-.161a.887.887 0 0 0 .283-.243c.078-.099.142-.217.188-.338Zm-1.591.006c.033.1.076.197.129.282.061.097.134.18.217.24l-.021.083c-.276-.093-.424-.293-.424-.466 0-.078.035-.119.099-.139Zm-.025-.664c-.275-.816-.795-2.022-1.505-2.179-.296.072-.938.096-.691-.145.246-.24 1.085-.048 1.283.217.145.194.744.806 1.011 1.737l.032.227a.324.324 0 0 0-.13.143Zm1.454-.266c.251-.99.889-1.639 1.039-1.841.197-.265 1.036-.457 1.283-.217.247.241-.395.217-.691.145-.69.152-1.2 1.296-1.481 2.109a.364.364 0 0 0-.067-.059.37.37 0 0 0-.092-.043l.009-.094Zm4.802-2.708a9.875 9.875 0 0 1-.596.705c-.304.315-1.203 1.176-1.963 1.916.647-.955 1.303-1.806 2.184-2.376.123-.08.249-.161.375-.245Z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../../..", "features": ["content.tooltips", "search.highlight", "navigation.tabs", "navigation.indexes", "navigation.prune"], "search": "../../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../../assets/javascripts/bundle.fe8b6f2b.min.js"></script>
</body>
</html>