# Rux Programming Language > Rux is a compiled, statically typed systems programming language. This site holds the Learn Rux course, the language reference, the CLI and packaging guides, and the standard-package API. ## Documentation Sets - [Rux Programming Language — full documentation](https://rux-lang.dev/llms-full.txt): Every course lesson, reference, CLI, packaging and API page of rux-lang.dev as Markdown. ## Learn Rux The course: getting started, 25 parts from Basics to Projects, one runnable program per lesson. - [Learn Rux](https://rux-lang.dev/raw/docs/learn.md): A free, hands-on course that takes you from installing Rux to writing complete programs — 266 short lessons in 27 parts, each one a runnable package you can read, run and change. - [Install on FreeBSD](https://rux-lang.dev/raw/docs/learn/install/freebsd.md): This guide explains how to install the Rux compiler on FreeBSD from the prebuilt release tarball. There is no native pkg package yet. - [Install on Linux](https://rux-lang.dev/raw/docs/learn/install/linux.md): This guide explains how to install the Rux compiler on Linux — using the universal install script, your distribution's package manager, or the prebuilt release tarball. - [Install on macOS](https://rux-lang.dev/raw/docs/learn/install/macos.md) - [Install on Windows](https://rux-lang.dev/raw/docs/learn/install/windows.md): This guide explains how to install the Rux compiler on Windows, either with the MSI installer or using Scoop, a command-line package manager for Windows. - [Build From Source](https://rux-lang.dev/raw/docs/learn/build.md): This guide explains how to build the Rux compiler from source with CMake, Ninja, and Clang. It works on every platform Rux supports, including platforms without a prebuilt package. - [Visual Studio Code](https://rux-lang.dev/raw/docs/learn/editors/vscode.md): Visual Studio Code is the recommended editor for Rux. The official Rux Language extension adds syntax highlighting for .rux source files. - [Sublime Text](https://rux-lang.dev/raw/docs/learn/editors/sublime.md): The official Rux package for Sublime Text adds syntax highlighting for .rux source files. - [Zed Editor](https://rux-lang.dev/raw/docs/learn/editors/zed.md): Zed is a fast, multiplayer code editor for macOS and Linux. The official Rux extension adds syntax highlighting for .rux source files. - [Your First Project](https://rux-lang.dev/raw/docs/learn/first-project.md): Create a Rux package with rux new, print Hello, World, build and run it, read your first compiler error, and clone the Examples repository the course is built on. - [Learn Rux with AI](https://rux-lang.dev/raw/docs/learn/ai.md): Use Claude Code, Codex or a chat assistant as a study partner for the Rux course — set them up with the right context, use ready-made prompts, and let the compiler check every answer. - [Rux Cheat Sheet](https://rux-lang.dev/raw/docs/learn/cheatsheet.md): The syntax taught across the Learn Rux course on one page — bindings, types, control flow, functions, structs, variants, optionals, errors, generics, ownership and pointers — with a link to the lesson for each. - [Basics](https://rux-lang.dev/raw/docs/learn/basics.md): First programs: printing, values and their types. Twelve short lessons that take you from Hello, World to every primitive type and how to convert between them. - [Hello, World](https://rux-lang.dev/raw/docs/learn/hello.md): Print one line of text — the smallest complete Rux program. - [Comment](https://rux-lang.dev/raw/docs/learn/comment.md): Write the three kinds of comment — //, /* */ and /// — and see that block comments nest. - [Variable](https://rux-lang.dev/raw/docs/learn/variable.md): Name a value with let, and let the compiler infer its type from the value. - [Mutable](https://rux-lang.dev/raw/docs/learn/mutable.md): Declare a variable that can change with var, and give it new values with =. - [Integer](https://rux-lang.dev/raw/docs/learn/integer.md): Meet the integer types — signed and unsigned, from 8 to 512 bits, plus the machine-sized int and uint — and print the range each one holds. - [Float](https://rux-lang.dev/raw/docs/learn/float.md): Store fractional numbers in float64, float32 and the float alias, meet the narrow and wide widths from float8 to float512, and see why a float is only ever an approximation. - [Boolean](https://rux-lang.dev/raw/docs/learn/boolean.md): Hold a yes-or-no value with true, false and bool, and meet the sized boolean types. - [Character](https://rux-lang.dev/raw/docs/learn/character.md): Write single characters with 'A', escapes and \u{...}, and meet char and the sized character types char8 to char512. - [Literal](https://rux-lang.dev/raw/docs/learn/literal.md): Spell numbers in other bases, with digit separators, exponents and suffixes, and see how an unsuffixed literal takes the type of the value beside it. - [Console](https://rux-lang.dev/raw/docs/learn/console.md): Write to the console with Print and PrintLine, and fill {} placeholders with values. - [Const](https://rux-lang.dev/raw/docs/learn/const.md): Name a value the compiler works out before the program runs, and see where const differs from let. - [Convert](https://rux-lang.dev/raw/docs/learn/convert.md): Convert between numeric, character and boolean types with as, and see what a value that does not fit becomes. - [Operators](https://rux-lang.dev/raw/docs/learn/operators.md): Combining values into new ones: arithmetic, comparison, logic and compound assignment, and the precedence that decides which operator applies first. - [Arithmetic](https://rux-lang.dev/raw/docs/learn/arithmetic.md): Calculate with + - * / %, and see why 17 / 5 is 3 for integers but 3.4 for floats. - [Comparison](https://rux-lang.dev/raw/docs/learn/comparison.md): Compare two values with == != < <= > >= and get a bool back. - [Logical](https://rux-lang.dev/raw/docs/learn/logical.md): Combine bools with && || !, and watch short-circuiting skip the right side once the left has decided. - [Assignment](https://rux-lang.dev/raw/docs/learn/assignment.md): Update a variable in place with += and friends, and step it by one with ++ and --. - [Precedence](https://rux-lang.dev/raw/docs/learn/precedence.md): Predict which operator applies first, how same-rank operators group left to right, and when to add parentheses. - [Control flow](https://rux-lang.dev/raw/docs/learn/control-flow.md): Choosing and repeating: if and else if chains, the conditional operator, while, do-while, loop, for over ranges, break, continue, labels and match. - [If](https://rux-lang.dev/raw/docs/learn/if.md): Run a block only when a condition holds, and pick between two blocks with else. - [Else if](https://rux-lang.dev/raw/docs/learn/else-if.md): Choose among several cases with an else if chain, where the first condition that holds wins. - [Ternary](https://rux-lang.dev/raw/docs/learn/ternary.md): Choose between two values inside an expression with condition ? a : b. - [While](https://rux-lang.dev/raw/docs/learn/while.md): Repeat a block while a condition holds, testing it before every pass, so the body may run zero times. - [Do-while](https://rux-lang.dev/raw/docs/learn/do-while.md): Run a loop body first and test afterwards with do { } while condition;, so the body runs at least once. - [Loop](https://rux-lang.dev/raw/docs/learn/loop.md): Repeat with loop, which has no condition and ends only through break. - [Break](https://rux-lang.dev/raw/docs/learn/break.md): Leave a loop early with break, and tell afterwards whether it ran. - [Continue](https://rux-lang.dev/raw/docs/learn/continue.md): Skip the rest of one pass with continue, without leaving the loop. - [Range](https://rux-lang.dev/raw/docs/learn/range.md): Describe a run of integers with a..b or a..=b, read its bounds, and spot an empty range. - [For](https://rux-lang.dev/raw/docs/learn/for.md): Walk every value of a range with for name in range. - [Label](https://rux-lang.dev/raw/docs/learn/label.md): Aim break and continue at an outer loop by giving it a label. - [Match](https://rux-lang.dev/raw/docs/learn/match.md): Choose what to run by comparing one value against a list of arms, with else for the rest. - [Match expression](https://rux-lang.dev/raw/docs/learn/match-expression.md): Use match as an expression whose arms produce the value. - [Functions](https://rux-lang.dev/raw/docs/learn/functions.md): Naming a piece of work and reusing it: parameters and results, early return, recursion, overloads, default arguments, generic functions and callbacks. - [Function](https://rux-lang.dev/raw/docs/learn/function.md): Write functions that take typed parameters and give back a result, and call them from Main. - [Return](https://rux-lang.dev/raw/docs/learn/return.md): Leave a function early with return, and write functions that have no result at all. - [Recursion](https://rux-lang.dev/raw/docs/learn/recursion.md): Solve a problem with a function that calls itself, stopping at a base case. - [Overload](https://rux-lang.dev/raw/docs/learn/overload.md): Give several functions one name and let each call's arguments choose between them. - [Default argument](https://rux-lang.dev/raw/docs/learn/default-argument.md): Give a parameter a default value so calls can leave that argument out. - [Generic](https://rux-lang.dev/raw/docs/learn/generic.md): Write one function with a type parameter that works for many types, inferred or given explicitly. - [Callback](https://rux-lang.dev/raw/docs/learn/callback.md): Pass a named function to another function as a value, typed by its shape like func(int32) -> int32. - [Sequences](https://rux-lang.dev/raw/docs/learn/sequences.md): Many values of one type and small groups of different ones: arrays, nested arrays, read-only and writable slices, variadic functions, tuples and destructuring. - [Array](https://rux-lang.dev/raw/docs/learn/array.md): Store a fixed number of values inline in an int32[4], index them from zero, and see that copying an array copies every element. - [Array repeat](https://rux-lang.dev/raw/docs/learn/array-repeat.md): Build an array of many equal elements with [0; 16], and see that the repeated value is evaluated only once. - [Array nested](https://rux-lang.dev/raw/docs/learn/array-nested.md): Build a two-dimensional grid as an array of arrays, int32[4][3], and walk it by rows and by columns. - [Slice](https://rux-lang.dev/raw/docs/learn/slice.md): Pass arrays of any length to one function through a read-only view, int32[..], and take views of part of an array with ranges. - [Writable slice](https://rux-lang.dev/raw/docs/learn/writable-slice.md): Change an array's elements through a writable view, var int32[..], and see that a view's writability is separate from its binding's mutability. - [Variadic](https://rux-lang.dev/raw/docs/learn/variadic.md): Write a function that takes any number of arguments with args: int32..., and spread a slice back into arguments with args.... - [Tuple](https://rux-lang.dev/raw/docs/learn/tuple.md): Group values without declaring a type, (int32, bool), reach the members with .0 and .1, and return several results from one function. - [Destructure](https://rux-lang.dev/raw/docs/learn/destructure.md): Unpack a tuple into named bindings in one step with let (x, y) = pair;, including nested patterns and _. - [Types](https://rux-lang.dev/raw/docs/learn/types.md): Declare types of your own: structs with named fields, references that borrow instead of copying, methods and constructors, enums, variants that carry data, aliases and function fields. - [Struct](https://rux-lang.dev/raw/docs/learn/struct.md): Group named fields into a type of your own, and build values of it with a struct literal. - [Reference](https://rux-lang.dev/raw/docs/learn/reference.md): Borrow a value with &T, so a function can read it without copying it. - [Mutable reference](https://rux-lang.dev/raw/docs/learn/mutable-reference.md): Lend a value with &var T, so a function can change the caller's value in place. - [Method](https://rux-lang.dev/raw/docs/learn/method.md): Give a type its own functions with extend, and call them on a value as value.Method(). - [Mutating method](https://rux-lang.dev/raw/docs/learn/mutating-method.md): Write methods that change the value they are called on, with self: &var T. - [Constructor](https://rux-lang.dev/raw/docs/learn/constructor.md): Build values through a function named after the type, which can check or compute the fields. - [Extension](https://rux-lang.dev/raw/docs/learn/extension.md): Add methods to a type you did not write, from int to the slice int[..]. - [Enum](https://rux-lang.dev/raw/docs/learn/enum.md): Declare a type whose values are a fixed list of named cases. - [Enum value](https://rux-lang.dev/raw/docs/learn/enum-value.md): Give enum cases chosen numbers, and convert between a case and its number with as. - [Variant](https://rux-lang.dev/raw/docs/learn/variant.md): Declare and build cases that carry data of their own. - [Variant match](https://rux-lang.dev/raw/docs/learn/variant-match.md): Match a variant and bind the data its case carries. - [Type alias](https://rux-lang.dev/raw/docs/learn/type-alias.md): Give an existing type a second name with type, and see why that name is not a new type. - [Function field](https://rux-lang.dev/raw/docs/learn/function-field.md): Store a function in a struct field, so a value carries its behaviour with it. - [Patterns](https://rux-lang.dev/raw/docs/learn/patterns.md): Everything a match arm can say: guards, ranges, tuples, named fields and characters, and why the compiler insists that a match covers every case. - [Guard](https://rux-lang.dev/raw/docs/learn/guard.md): Add a condition to a match arm with pattern if condition =>, and fall through to the next arm when it is false. - [Range pattern](https://rux-lang.dev/raw/docs/learn/range-pattern.md): Match a whole run of integers in one arm with 1..=9 => and 0..10 =>, and narrow a range with a guard. - [Tuple pattern](https://rux-lang.dev/raw/docs/learn/tuple-pattern.md): Decide on several values at once by matching a tuple, with arms such as (0, 0) =>, (x, 0) => and (_, y) =>. - [Struct pattern](https://rux-lang.dev/raw/docs/learn/struct-pattern.md): Take apart a variant case with named fields — .Circle { radius } => — binding, renaming, ignoring or testing each field. - [Character pattern](https://rux-lang.dev/raw/docs/learn/character-pattern.md): Match character literals and escapes such as 'w' and '\n', and a whole class of characters with a range such as 'a'..='z'. - [Exhaustive](https://rux-lang.dev/raw/docs/learn/exhaustive.md): See why a match on a variant must name every case, and why an integer match needs else. - [Optionals](https://rux-lang.dev/raw/docs/learn/optionals.md): A value that may be absent: T?. Six lessons on none, presence patterns, fallbacks with ??, early exits with ?? return, passing absence up with ?, and int??. - [Optional](https://rux-lang.dev/raw/docs/learn/optional.md): Write a value that may be absent as T?, with none for absence and a plain value becoming present on its own. - [Presence](https://rux-lang.dev/raw/docs/learn/presence.md): Open an optional with match: value? for a present value and none for absence. - [Coalesce](https://rux-lang.dev/raw/docs/learn/coalesce.md): Replace absence with a fallback value using ??, which runs the fallback only when it is needed. - [Coalesce exit](https://rux-lang.dev/raw/docs/learn/coalesce-exit.md): Leave a function or loop with ?? return, ?? continue or ?? break when an optional is absent. - [Optional propagate](https://rux-lang.dev/raw/docs/learn/optional-propagate.md): Pass absence up to the caller with ? in a function that returns an optional. - [Nested optional](https://rux-lang.dev/raw/docs/learn/nested-optional.md): Tell two kinds of absence apart with int??, an optional of an optional. - [Errors](https://rux-lang.dev/raw/docs/learn/errors.md): Operations that can fail: T ! E. Sixteen lessons on reporting a failure with fail, handling it with match and catch, passing it on with ?, designing error types, and stopping the program with Panic and Assert when only a bug could be to blame. - [Fallible](https://rux-lang.dev/raw/docs/learn/fallible.md): Return a value or an error with T ! E, where return value; is the success, and tell the two apart with .Success and .Failure. - [Fail](https://rux-lang.dev/raw/docs/learn/fail.md): Leave a fallible function through its failure channel with fail, carrying an error that says what went wrong. - [Unit fallible](https://rux-lang.dev/raw/docs/learn/unit-fallible.md): Write a fallible function with no success value, -> ! E, which succeeds by reaching its end. - [Outcome](https://rux-lang.dev/raw/docs/learn/outcome.md): Store, pass, build and match a fallible's outcome through .Success and .Failure. - [Discard](https://rux-lang.dev/raw/docs/learn/discard.md): See why a fallible result cannot be silently ignored, and how to discard one on purpose. - [Catch](https://rux-lang.dev/raw/docs/learn/catch.md): Recover from a failure with catch, giving one arm per error case. - [Catch fallback](https://rux-lang.dev/raw/docs/learn/catch-fallback.md): Use catch { else => fallback } to get the success or a default value. - [Propagate](https://rux-lang.dev/raw/docs/learn/propagate.md): Hand a failure to the caller with postfix ?, which keeps the success and passes the error on unchanged. - [Error variant](https://rux-lang.dev/raw/docs/learn/error-variant.md): Design an error as a variant whose cases carry exactly the details each failure needs. - [Error mapping](https://rux-lang.dev/raw/docs/learn/error-mapping.md): Pass a failure to the caller with ? else, turning it into your own error and adding context such as a line number. - [Error sum](https://rux-lang.dev/raw/docs/learn/error-sum.md): Let one function fail with either of two error types, ! (DigitError | RangeError), and tell them apart with typed patterns. - [Fallible main](https://rux-lang.dev/raw/docs/learn/fallible-main.md): Declare func Main() -> ! E so ? works at the top level, and see that a failure ends the program with exit status 1 without printing anything. - [Absence to error](https://rux-lang.dev/raw/docs/learn/absence-to-error.md): Turn a missing value into a failure that says what was missing, with option ?? fail. - [Nested fallible](https://rux-lang.dev/raw/docs/learn/nested-fallible.md): Keep two meanings apart by nesting: int? ! E for "the next value, the end, or a failure", and (int ! E1) ! E2 for an answer that can itself be a failure. - [Panic](https://rux-lang.dev/raw/docs/learn/panic.md): Stop the program at once with Core::Panic when something that cannot happen has happened. - [Assert](https://rux-lang.dev/raw/docs/learn/assert.md): Check what the program relies on with Assert, kept in every build, and DebugAssert, which a release build removes. - [Sum types](https://rux-lang.dev/raw/docs/learn/sum-types.md): A value that is one of several types: A | B. Five lessons on building sums, matching them by type and by subset, asking which member is active with is, and passing a smaller sum where a larger one is expected. - [Sum type](https://rux-lang.dev/raw/docs/learn/sum-type.md): Store a value that is one of several types — int32 | bool — and see that a sum is a set of types, where order and duplicates do not matter. - [Typed pattern](https://rux-lang.dev/raw/docs/learn/typed-pattern.md): Match a sum by the type it holds — n: int32 => — and use the member as an ordinary value. - [Subset pattern](https://rux-lang.dev/raw/docs/learn/subset-pattern.md): Match several members of a sum in one arm — box: Square | Rectangle => — and get a smaller sum to pass on. - [The is operator](https://rux-lang.dev/raw/docs/learn/is.md): Ask which member a sum holds — token is Number, token is (Plus | Minus) — and get a bool back, without unpacking anything. - [Sum widening](https://rux-lang.dev/raw/docs/learn/sum-widening.md): Pass a smaller sum — Square | Rectangle — where a larger one — Circle | Square | Rectangle — is expected, and see that the value keeps its member. - [Ownership](https://rux-lang.dev/raw/docs/learn/ownership.md): Who owns a value, and when it is cleaned up. Ten lessons on exclusive borrows, copies and moves with <-, destructors, move-only and custom-copy types, partial moves, defer, and variables that start empty. - [Exclusivity](https://rux-lang.dev/raw/docs/learn/exclusivity.md): Hold one &var borrow of a value at a time, and see that a borrow ends at its last use. - [Copy](https://rux-lang.dev/raw/docs/learn/copy.md): See that a by-value copy is a separate value: changing it never changes its source. - [Move](https://rux-lang.dev/raw/docs/learn/move.md): Hand a value on with <- in a binding, an argument and a return, and see the old name become unusable. - [Destructor](https://rux-lang.dev/raw/docs/learn/destructor.md): Write a destructor, func ~T(self: &var T), and watch when the compiler runs it. - [Non-copyable types](https://rux-lang.dev/raw/docs/learn/no-copy.md): Prohibit copying a type with a bodyless func =, so that it can only be moved. - [Custom copy](https://rux-lang.dev/raw/docs/learn/custom-copy.md): Give = a body so that every copy of a type runs your own code. - [Partial move](https://rux-lang.dev/raw/docs/learn/partial-move.md): See why a single field cannot be moved out of a struct, and take the struct apart with <- to move it out instead. - [Defer](https://rux-lang.dev/raw/docs/learn/defer.md): Register cleanup with defer right where the work starts, and see it run in reverse order on every way out. - [Defer return](https://rux-lang.dev/raw/docs/learn/defer-return.md): See that return keeps its value before deferred code runs, and use that to hand out a value and then advance. - [Initialization](https://rux-lang.dev/raw/docs/learn/initialization.md): Declare a var without a value, and see the compiler insist that every path assigns it before a read. - [Interfaces](https://rux-lang.dev/raw/docs/learn/interfaces.md): Behaviour that many types share: declare an interface, hold any implementing type in one value, and plug your own types into printing, comparison, operators, indexing and for loops. - [Interface](https://rux-lang.dev/raw/docs/learn/interface.md): Declare an interface and make a type keep its promise with extend T : I. - [Interface value](https://rux-lang.dev/raw/docs/learn/interface-value.md): Hold values of different types in one interface-typed variable, and let dynamic dispatch pick the method. - [Interface parameter](https://rux-lang.dev/raw/docs/learn/interface-parameter.md): Pass any implementing type to a function through a borrowed &I or &var I parameter. - [Display](https://rux-lang.dev/raw/docs/learn/display.md): Make a type of your own printable with {} by implementing Display, whose WriteDisplay returns ! FormatError. - [Equatable](https://rux-lang.dev/raw/docs/learn/equatable.md): State what equality means for a type by implementing Core's Equatable and its Equals method. - [Comparable](https://rux-lang.dev/raw/docs/learn/comparable.md): Order values of a type by implementing Core's Comparable, whose Compare answers with an Ordering. - [Structural equality](https://rux-lang.dev/raw/docs/learn/structural-equality.md): Compare structs, tuples, arrays and variants with ==, field by field, without writing any code. - [Operator overload](https://rux-lang.dev/raw/docs/learn/operator-overload.md): Define +, == and other operators for a type of your own. - [Derived operator](https://rux-lang.dev/raw/docs/learn/derived-operator.md): Declare == and <, and get !=, >, <= and >= derived from them. - [Indexer](https://rux-lang.dev/raw/docs/learn/indexer.md): Read and write a type of your own with square brackets by declaring func [] and func []=. - [Iterator](https://rux-lang.dev/raw/docs/learn/iterator.md): Make a type walkable by for with a Next method that returns T?. - [Iterable](https://rux-lang.dev/raw/docs/learn/iterable.md): Give a collection an Iterate method so every for loop gets a fresh iterator. - [Generics](https://rux-lang.dev/raw/docs/learn/generics.md): Types and functions that work for many types: six lessons on generic structs and variants, their methods, interface bounds, and helpers that work for every optional, fallible or sum. - [Generic type](https://rux-lang.dev/raw/docs/learn/generic-type.md): Declare a struct and a variant that take a type parameter — Pair, Reading — and use them at several types. - [Generic method](https://rux-lang.dev/raw/docs/learn/generic-method.md): Give a generic type methods with extend Labeled, including a method with a type parameter of its own. - [Generic bound](https://rux-lang.dev/raw/docs/learn/generic-bound.md): Bound a type parameter by an interface — — so the generic can call its methods, and see that a primitive qualifies only through an implementation. - [Multiple bounds](https://rux-lang.dev/raw/docs/learn/multiple-bounds.md): Require two interfaces at once with , so a generic can both compare and print its values. - [Generic outcome](https://rux-lang.dev/raw/docs/learn/generic-outcome.md): Write reusable helpers over T ! E and T? as generic functions, since optionals and fallibles cannot be extended. - [Generic sum](https://rux-lang.dev/raw/docs/learn/generic-sum.md): Build a sum from type parameters — T | U — see it collapse when T and U are the same type, and end its match in else. - [Text](https://rux-lang.dev/raw/docs/learn/text.md): Strings, formatting, parsing, input and patterns: sixteen lessons on what a literal really is, UTF-8 and Unicode, views, Strings and builders, placeholder specs, Render, ParseInt32, ReadLine, Lines and Join, and regular expressions. - [String literal](https://rux-lang.dev/raw/docs/learn/string-literal.md): See that a string literal is a read-only char8[..] slice: its length counts bytes, escapes write awkward characters, and changing text means copying it first. - [Encoding](https://rux-lang.dev/raw/docs/learn/encoding.md): Write the same text as UTF-8, UTF-16 and UTF-32 with the c8, c16 and c32 prefixes, and see that lengths count code units, not characters. - [String view](https://rux-lang.dev/raw/docs/learn/string-view.md): Borrow text with StringView, checked once to be UTF-8, then trim, search, cut and split it without copying a byte. - [String](https://rux-lang.dev/raw/docs/learn/string.md): Own text with String, which keeps its bytes in allocated memory, and copy it with Clone, which returns String ! TextError. - [String builder](https://rux-lang.dev/raw/docs/learn/string-builder.md): Build text a piece at a time in one growing buffer with StringBuilder, then hand it over as a String with IntoString. - [UTF-8](https://rux-lang.dev/raw/docs/learn/utf8.md): Check bytes with Validate, which fails with a Utf8Failure saying what is wrong and where, and walk text one character at a time with DecodeAt. - [Unicode](https://rux-lang.dev/raw/docs/learn/unicode.md): Count the same text three ways — bytes, scalars and graphemes — and find text where all three counts differ. - [Unicode case](https://rux-lang.dev/raw/docs/learn/unicode-case.md): Change case beyond ASCII, where the full mapping can turn one character into several and the text grows. - [Format](https://rux-lang.dev/raw/docs/learn/format.md): Give a placeholder a width, an alignment and a fill character, so output lines up in columns. - [Format number](https://rux-lang.dev/raw/docs/learn/format-number.md): Spell numbers with a placeholder spec: digits after the point, rounding, scientific notation, number bases, zero padding and an explicit sign. - [Render](https://rux-lang.dev/raw/docs/learn/render.md): Format into a String you keep with Render, which returns String ! FormatError and refuses a wrong pattern before writing anything. - [Parse](https://rux-lang.dev/raw/docs/learn/parse.md): Read a number from text with ParseInt32, which returns int32 ! ParseError and says where malformed or overflowing text went wrong. - [Input](https://rux-lang.dev/raw/docs/learn/input.md): Read lines from standard input with ReadLine, where reaching the end of the input is an IoError whose kind is EndOfStream. - [Lines and joining](https://rux-lang.dev/raw/docs/learn/join-lines.md): Walk the lines of a text with Lines, put pieces back together with Join, and change the case of whole texts with ToUpper, ToLower and FoldCase, which follow Unicode's full mappings. - [Regular expressions](https://rux-lang.dev/raw/docs/learn/regex.md): Compile a regular expression with Regex::New, which returns Regex ! RegexError, test text with IsMatch, find where a match is with Find and FindAt, and turn plain text into a pattern with Escape. - [Regex captures](https://rux-lang.dev/raw/docs/learn/regex-capture.md): Pull the parts of a match out with numbered and named groups through Capture, walk every match with FindAll and the text between them with Split, and make new text with Replace and ReplaceFirst. - [Memory](https://rux-lang.dev/raw/docs/learn/memory.md): Pointers, raw memory and allocators: reach values by address, ask for memory while the program runs, and choose where it comes from — from Alloc and Free to Box, Rc, Arena, FixedBuffer and Pool. - [Pointer](https://rux-lang.dev/raw/docs/learn/pointer.md): Take an address with @, then read through a *T and write through a *var T. - [Out parameter](https://rux-lang.dev/raw/docs/learn/out-parameter.md): Return an answer through a *var T parameter, and see why a fallible T ! E is usually the better choice. - [Raw memory](https://rux-lang.dev/raw/docs/learn/raw-memory.md): Allocate a block with Alloc, clear it with Zero and give it back with Free, checking for null first. - [Pointer arithmetic](https://rux-lang.dev/raw/docs/learn/pointer-arithmetic.md): Move a pointer with + and -, which count whole elements rather than bytes, and walk an array up to an end pointer. - [Pointer slice](https://rux-lang.dev/raw/docs/learn/pointer-slice.md): Turn a pointer and a count into an ordinary slice with p[..n], so raw storage works with for and slice parameters. - [Optional pointer](https://rux-lang.dev/raw/docs/learn/optional-pointer.md): Tell an optional pointer (*T)? from a pointer to an optional *T?, and use each for its own job. - [Layout](https://rux-lang.dev/raw/docs/learn/layout.md): Measure a type's size and alignment with sizeof and alignof, and see the padding that field order puts inside a struct. - [Union](https://rux-lang.dev/raw/docs/learn/union.md): Lay several members over one piece of storage, and keep track yourself of which member holds a value. - [Allocator](https://rux-lang.dev/raw/docs/learn/allocator.md): Allocate through the Allocator interface with SystemAllocator, handling an AllocError before the block is ever used. - [Box](https://rux-lang.dev/raw/docs/learn/box.md): Own one allocated value with Box, which destroys the value and returns its memory when the box's life ends. - [Arena](https://rux-lang.dev/raw/docs/learn/arena.md): Allocate a round of work from an Arena and release all of it at once with Reset. - [Fixed buffer](https://rux-lang.dev/raw/docs/learn/fixed-buffer.md): Allocate from storage you already own with FixedBuffer, which refuses with OutOfMemory once the storage is full. - [Pool](https://rux-lang.dev/raw/docs/learn/pool.md): Reuse fixed-size blocks from a Pool, where a released block goes straight back to the next request of its size. - [Zeroize](https://rux-lang.dev/raw/docs/learn/zeroize.md): Wipe a secret with Zeroize, a clear that the compiler promises never to optimize away. - [Rc](https://rux-lang.dev/raw/docs/learn/rc.md): Share one value between several owners with Rc, whose copies count themselves: the value is read through Get, written through GetMutable only while one handle holds it, and destroyed when the last handle goes. - [Numbers](https://rux-lang.dev/raw/docs/learn/numbers.md): Numbers in depth: integers past 64 bits, the limits of every type, infinity and NaN, working with bits, overflow you can detect or plan for, byte order, and the Math package with its complex numbers. - [Wide integer](https://rux-lang.dev/raw/docs/learn/wide-integer.md): Count past 64 bits with int128, int256 and int512 and their unsigned twins: wide literals, silent widening, explicit narrowing, and the same wrap-around at the edges. - [Number limit](https://rux-lang.dev/raw/docs/learn/number-limit.md): Read a type's limits as associated constants — Min, Max, Bits, Lowest, Epsilon — and ask Core for them inside a generic function. - [Float special](https://rux-lang.dev/raw/docs/learn/float-special.md): See where infinity and NaN come from, why NaN == NaN is false, and how to test for them with IsNaN and IsInfinite. - [Bitwise](https://rux-lang.dev/raw/docs/learn/bitwise.md): Work on individual bits with & | ^ ~, and use masks to set, clear, flip and test flags packed into one byte. - [Shift](https://rux-lang.dev/raw/docs/learn/shift.md): Slide bits with <<, >> and >>>, see how the two right shifts differ on a negative number, and pack three fields into one integer. - [Checked arithmetic](https://rux-lang.dev/raw/docs/learn/checked-arithmetic.md): Detect overflow with AddChecked, SubChecked and MulChecked, which return true on overflow and the result through an out-parameter. - [Wrapping arithmetic](https://rux-lang.dev/raw/docs/learn/wrapping-arithmetic.md): Choose what overflow produces: AddWrapping and friends wrap around on purpose, AddSaturating and friends stop at the limit. - [Checked convert](https://rux-lang.dev/raw/docs/learn/checked-convert.md): Convert between number types with ConvertChecked, which reports when the value did not survive, and clamp with ConvertSaturating. - [Bit operation](https://rux-lang.dev/raw/docs/learn/bit-operation.md): Ask questions about bits with CountOnes, LeadingZeros and TrailingZeros, and turn them around with RotateLeft and RotateRight. - [Endian](https://rux-lang.dev/raw/docs/learn/endian.md): Store and load integers as bytes in an explicit order, big endian or little endian, and see what reading them in the wrong order does. - [Math](https://rux-lang.dev/raw/docs/learn/math.md): Tour the Math package — roots, powers, logarithms, trigonometry and rounding — with the domain of each and the limits of floating-point answers. - [Complex](https://rux-lang.dev/raw/docs/learn/complex.md): Do arithmetic on complex numbers with the Math package's Complex and its four operators, read one as a length and an angle with Abs and Arg, build one with FromPolar, and solve a quadratic whose roots are not real. - [Collections](https://rux-lang.dev/raw/docs/learn/collections.md): Containers from the Collections package: vectors that grow, arrays sized at run time, double-ended queues, hash and tree maps and sets, priority queues, bit sets, small vectors and LRU caches — and how to choose between them. - [Vector](https://rux-lang.dev/raw/docs/learn/vector.md): Push values into a Vector and watch its length and capacity grow apart. - [Dynamic array](https://rux-lang.dev/raw/docs/learn/dynamic-array.md): Make a Collections::Array whose length is chosen at run time, and compare it with an inline int32[4]. - [Deque](https://rux-lang.dev/raw/docs/learn/deque.md): Run a queue with a Deque, adding and removing values at both ends. - [Hash map](https://rux-lang.dev/raw/docs/learn/hash-map.md): Store values under text keys in a HashMap, then look them up, replace them and remove them. - [Hash set](https://rux-lang.dev/raw/docs/learn/hash-set.md): Track which values have been seen with a HashSet, whose Insert reports whether a value was new. - [Tree map](https://rux-lang.dev/raw/docs/learn/tree-map.md): Insert keys into a TreeMap out of order, then walk them in order and ask for a range. - [Tree set](https://rux-lang.dev/raw/docs/learn/tree-set.md): Keep a set of words in a TreeSet, walk it in alphabetical order, and ask which member comes next. - [Priority queue](https://rux-lang.dev/raw/docs/learn/priority-queue.md): Serve support tickets most urgent first with a PriorityQueue, which always hands out its largest element, and turn it into an earliest-first queue of timers by reversing the element type's <. - [Bit set](https://rux-lang.dev/raw/docs/learn/bit-set.md): Keep two people's free days of a month in BitSets, one bit per day, then find the days both, either or only one of them is free with word-at-a-time union, intersection and difference. - [Small vector](https://rux-lang.dev/raw/docs/learn/small-vector.md): Collect the prime factors of numbers in a SmallVector, which keeps up to eight of them inside itself without allocating, and watch the longer lists move to the heap. - [LRU cache](https://rux-lang.dev/raw/docs/learn/lru-cache.md): Put a slow lookup behind an LruCache of three entries, and follow the hits, the misses and which entry each miss evicts when the cache is full. - [Algorithms](https://rux-lang.dev/raw/docs/learn/algorithms.md): Sorting, searching and folding slices with the Algorithms package: seven lessons on sorting in place, linear and binary search, the smallest and largest element, collapsing a slice into one answer, lazy iterator adaptors, and running scans and midpoints. - [Sort](https://rux-lang.dev/raw/docs/learn/sort.md): Sort a slice in place with Sort, SortDescending and SortBy, through a writable view var T[..]. - [Search](https://rux-lang.dev/raw/docs/learn/search.md): Find a value with a linear search: IndexOf returns a uint? that is none when the value is absent, and Contains returns a bool. - [Binary search](https://rux-lang.dev/raw/docs/learn/binary-search.md): Search sorted data in logarithmic time with BinarySearch, and bracket duplicates with LowerBound and UpperBound. - [Min and max](https://rux-lang.dev/raw/docs/learn/min-max.md): Pick the smaller or larger of two values with Min and Max, and find the extremes of a slice with MinIndex and MaxIndex, which return none for an empty one. - [Fold](https://rux-lang.dev/raw/docs/learn/fold.md): Collapse a slice into one answer with Fold and FoldRight, passing the step as a named function. - [Iterator adaptors](https://rux-lang.dev/raw/docs/learn/iterator-adaptor.md): Chain Core's lazy adaptors — Map, Filter, Skip, Take, Enumerate, Zip and Chain — over slices and over an endless iterator, and see that each item is computed only when it is asked for. - [Scan](https://rux-lang.dev/raw/docs/learn/scan.md): Turn a week's sales into running totals and running bests with PartialSum and InclusiveScan, record lengths into offsets with ExclusiveScan, fill a counting sequence with Iota, and find a midpoint that cannot overflow with Midpoint. - [Files](https://rux-lang.dev/raw/docs/learn/files.md): Paths, files and directories with the Path and FileSystem packages: eleven lessons on taking paths apart and building them, reading and writing text and binary files, listing directories, buffering, replacing files safely, and streams in memory. - [Path](https://rux-lang.dev/raw/docs/learn/path.md): Walk a path's components and named parts, and see why a path is not a string. - [Path join](https://rux-lang.dev/raw/docs/learn/path-join.md): Join paths with Join and Push, which place separators correctly, instead of gluing strings. - [Path normalize](https://rux-lang.dev/raw/docs/learn/path-normalize.md): Tidy a path with Normalize, and learn what a purely lexical rewrite cannot know. - [File](https://rux-lang.dev/raw/docs/learn/file.md): Write a text file and read it back, handling every IoError along the way. - [Directory](https://rux-lang.dev/raw/docs/learn/directory.md): Create a scratch directory, list what is in it, and remove it again. - [Metadata](https://rux-lang.dev/raw/docs/learn/metadata.md): Ask the filesystem what a path names with MetadataOf: its kind, size, permissions and times. - [Binary](https://rux-lang.dev/raw/docs/learn/binary.md): Write and read fixed-width binary values, and refuse a record that the file cut short. - [Buffered I/O](https://rux-lang.dev/raw/docs/learn/buffered-io.md): Gather small writes in a BufferedWriter, and watch them reach the file when it fills or flushes. - [Atomic file](https://rux-lang.dev/raw/docs/learn/atomic-file.md): Replace a file whole with WriteAtomically, so a reader never sees it half-written. - [Temporary file](https://rux-lang.dev/raw/docs/learn/temporary-file.md): Create a scratch file with an unguessable name that is deleted when you are done with it. - [Memory streams](https://rux-lang.dev/raw/docs/learn/memory-stream.md): Write binary records into memory with a ByteWriter and read them back with a ByteReader, using the same Writer and Reader code that also writes and reads a file, then test a cut-short input without damaging a file. - [Utilities](https://rux-lang.dev/raw/docs/learn/utilities.md): Durations, clocks, calendar dates and time zones, repeatable and unguessable random numbers, fast hashes, UUIDs and Nano IDs: eleven lessons on the small standard packages most programs reach for. - [Duration](https://rux-lang.dev/raw/docs/learn/duration.md): Build a Duration from any unit and do arithmetic on it, where FromHours, Plus and Times return Duration? because they can overflow. - [Stopwatch](https://rux-lang.dev/raw/docs/learn/stopwatch.md): Measure elapsed time with Instant, a clock that only moves forward, and Since, which refuses a reading pair given the wrong way round. - [Date](https://rux-lang.dev/raw/docs/learn/date.md): Read calendar dates with ParseDate, which returns Date ! TimeParseError and says what was wrong and where, and see how leap years shape the calendar. - [Date and time](https://rux-lang.dev/raw/docs/learn/date-time.md): Pair a DateTime with a UtcOffset to name one moment, and read and write it as RFC 3339 text with ParseRfc3339. - [Random](https://rux-lang.dev/raw/docs/learn/random.md): Build a Pcg64Dxsm generator from a fixed seed and see that the same seed always replays the same numbers. - [Distribution](https://rux-lang.dev/raw/docs/learn/distribution.md): Shape a generator's raw numbers into die rolls with UniformInRange, a random order with Shuffle, and a bell curve with NormalWith. - [Entropy](https://rux-lang.dev/raw/docs/learn/entropy.md): Ask the operating system for unpredictable numbers with NextUint64 and Fill, which return ! EntropyError, and check every failure rather than replacing it with a fixed value. - [Hash](https://rux-lang.dev/raw/docs/learn/hash.md): Fingerprint bytes with Fnv1a64Of, XxHash64Of and Crc32Of, fast hashes that catch accidents but are not cryptographic. - [UUID](https://rux-lang.dev/raw/docs/learn/uuid.md): Make a random identifier with Random, which returns Uuid ! EntropyError, and read and write its strict text form with Parse and {}. - [Nano ID](https://rux-lang.dev/raw/docs/learn/nano-id.md): Make short, URL-safe random identifiers with NanoId::Generate, read them back strictly with NanoId::Parse, and fill a buffer of your own length from a custom alphabet with GenerateNanoId. - [Time zone](https://rux-lang.dev/raw/docs/learn/time-zone.md): Build time zones from POSIX TZ rules with TimeZone::FromRule, read one moment on several clocks with StateAt and ToLocal, and turn a local time back into a moment with Resolve, which tells a time that happened once from one that happened twice or never. - [Data formats](https://rux-lang.dev/raw/docs/learn/data-formats.md): Read and write JSON and TOML, write bytes as Base64 and its relatives, take URLs apart and put them together, and compress data: eight lessons on the formats programs exchange. - [JSON](https://rux-lang.dev/raw/docs/learn/json.md): Parse a JSON document, read typed values out of it, and see malformed input refused with a reason and a position. - [Writing JSON](https://rux-lang.dev/raw/docs/learn/json-write.md): Build a JSON value by hand, write it compact and pretty with WriteValue, and parse the output back to the same text. - [Streaming JSON](https://rux-lang.dev/raw/docs/learn/json-stream.md): Read JSON as a stream of events with JsonEventReader, keeping only the fields you want and stopping cleanly on a broken document. - [TOML](https://rux-lang.dev/raw/docs/learn/toml.md): Parse a TOML document, read integers, floats, dates and arrays from its tables, and see a bad document refused by line and column. - [Writing TOML](https://rux-lang.dev/raw/docs/learn/toml-write.md): Read a TOML document, add a key, write it back with TomlWriteDocument, and check that writing is stable across a round trip. - [Base64 and friends](https://rux-lang.dev/raw/docs/learn/base-encoding.md): Write bytes as text in hexadecimal, Base64 and its URL-safe and unpadded variants, Base32 and Base58, into buffers you provide, and decode them back strictly, with a DecodeError that says what is wrong and where. - [URL](https://rux-lang.dev/raw/docs/learn/url.md): Read a URL with Url::Parse, which normalizes it, take it apart into its components, resolve relative links against it with Resolve, walk and decode its query with Pairs and Decode, and build a query safely with QueryBuilder. - [Compress](https://rux-lang.dev/raw/docs/learn/compress.md): Compress a log with Compress in the raw, zlib and gzip formats and at each Level, get every byte back with Decompress, see the checksum refuse damaged data, and stream the same log into a .gz file and out again with CompressWriter and DecompressReader. - [Packages](https://rux-lang.dev/raw/docs/learn/packages.md): Split a program into modules and packages, depend on libraries from the registry and from disk, build source, static and shared libraries, keep it all tidy with rux fmt, lint, test and doc, and write unit tests and benchmarks. - [Module](https://rux-lang.dev/raw/docs/learn/module.md): Split one package across several source files, group their contents with module A::B { }, and import items or whole modules. - [Visibility](https://rux-lang.dev/raw/docs/learn/visibility.md): Use pub to choose what a library package shows to the packages that depend on it, and see a private item refused across that boundary. - [Package](https://rux-lang.dev/raw/docs/learn/package.md): Read a Rux.toml manifest section by section, and see which of the four package types it declares. - [Dependency](https://rux-lang.dev/raw/docs/learn/dependency.md): Declare registry dependencies, which come from the package cache, beside a path dependency, which is compiled from a directory next to the program. - [Workspace](https://rux-lang.dev/raw/docs/learn/workspace.md): Keep a program and its library in one tree, listed as explicit members of a root [Workspace] manifest. - [Source library](https://rux-lang.dev/raw/docs/learn/source-library.md): Write a library that is compiled into the program using it, so its generic code serves that program's own types. - [Static library](https://rux-lang.dev/raw/docs/learn/static-library.md): Compile a package ahead of time into a native archive, where each pub function becomes a global symbol. - [Shared library](https://rux-lang.dev/raw/docs/learn/shared-library.md): Build a library that programs load at run time, and see that only its pub functions are exported. - [Documentation](https://rux-lang.dev/raw/docs/learn/documentation.md): Describe a public API with /// and /** */ comments and their tags, and generate reference pages from them with rux doc. - [Tooling](https://rux-lang.dev/raw/docs/learn/tooling.md): Keep a package tidy with the other rux commands: format, lint, test and document it, without publishing anything. - [Unit tests](https://rux-lang.dev/raw/docs/learn/unit-test.md): Write #Test() functions with the Test package's Expect checks beside the code they test, and run them with rux test, all of them or only those whose names match a filter. - [Benchmark](https://rux-lang.dev/raw/docs/learn/benchmark.md): Measure how long two searches take with the Test package's benchmarks: a BenchmarkCase per search, Consume to keep the work from being optimized away, and RunBenchmarksWith to repeat each one until it can be timed, after first checking that the searches agree. - [Compile time](https://rux-lang.dev/raw/docs/learn/compile-time.md): Decide what a program contains before it ever runs. Seven lessons on when, the target and build mode, source locations, #Error and #Warn, your own defines, and the intrinsic declarations behind Core. - [When](https://rux-lang.dev/raw/docs/learn/when.md): Choose code while compiling with when and else when, and see that the branches it skips are never even resolved. - [Target](https://rux-lang.dev/raw/docs/learn/target.md): Branch on the operating system and processor a build is for, with #target.os and #target.arch. - [Build mode](https://rux-lang.dev/raw/docs/learn/build-mode.md): Tell a debug build from a release build with #build.mode, and watch DebugAssert disappear from a release build. - [Source location](https://rux-lang.dev/raw/docs/learn/source-location.md): Read the file, line, column and function an expression is written in with #source, and see why a helper reports its own line rather than its caller's. - [Compile error](https://rux-lang.dev/raw/docs/learn/compile-error.md): Stop a build with #Error, raise a warning with #Warn, and silence one lint rule with #Allow. - [Define](https://rux-lang.dev/raw/docs/learn/define.md): Hand a build your own named values with --define, and read them while compiling with #config.Has and #config.Get. - [Intrinsic](https://rux-lang.dev/raw/docs/learn/intrinsic.md): See that int8::Max, #target and Assert reach a program through an extension and intrinsic declarations, by taking them from a small provider package of your own instead of Core. - [Platform](https://rux-lang.dev/raw/docs/learn/platform.md): Step outside Rux to the operating system and the processor. Five lessons on extern and #Link, the C runtime and its types, calling conventions with #Abi, and function bodies written in x86-64 and AArch64 assembly. - [Extern](https://rux-lang.dev/raw/docs/learn/extern.md): Call a function from a system library by declaring it with extern and naming its library with #Link. - [C interop](https://rux-lang.dev/raw/docs/learn/c-interop.md): Call the C runtime through the C package. The program uses C's own types, turns an opaque pointer into a typed one, reads a C struct, makes a variadic call and checks every result for failure. - [ABI](https://rux-lang.dev/raw/docs/learn/abi.md): Give a foreign function a Rux name of your own with #Link's second argument, and state a calling convention with #Abi. - [Assembly](https://rux-lang.dev/raw/docs/learn/asm.md): Write a function body in x86-64 assembly with asm func, and pin the calling convention it reads its arguments from with #Abi. - [ARM assembly](https://rux-lang.dev/raw/docs/learn/asm-arm.md): Write the AArch64 version of an asm func, and use when #target.arch to pick the body that matches the machine being built for. - [Concurrency](https://rux-lang.dev/raw/docs/learn/concurrency.md): Threads and the tools that let them work together: start and join threads, count with atomics, guard data with Mutex and RwLock, share it with Arc, pass it through channels, and coordinate with WaitGroup and Once. - [Thread](https://rux-lang.dev/raw/docs/learn/thread.md): Start threads with Spawn, which moves a function's context to a new thread, and collect each result with Join on its JoinHandle; detach a thread you will not wait for, and ask how many can run at once. - [Atomic](https://rux-lang.dev/raw/docs/learn/atomic.md): Count across threads without a lock: four threads share Atomic values, add to one with FetchAdd, keep a running maximum in the other with a CompareExchange retry loop, and pick a memory order. - [Mutex](https://rux-lang.dev/raw/docs/learn/mutex.md): Guard two balances that must change together with a Mutex: each thread locks it, changes the value through the MutexGuard it gets back, and the lock is released when the guard is dropped. - [Arc](https://rux-lang.dev/raw/docs/learn/arc.md): Share one value between threads with Arc, a counted handle whose copies may be made and dropped on any thread, and change what must change inside it through an Atomic. - [Channel](https://rux-lang.dev/raw/docs/learn/channel.md): Pass values between threads through a bounded Channel: one thread sends, another transforms, Main receives, and closing a channel ends the stream once what was sent has drained. - [Wait group](https://rux-lang.dev/raw/docs/learn/wait-group.md): Wait for a group of detached workers with a WaitGroup — Add before they start, Done as each one's last step, Wait in Main — and collect their answers in numbered slots so the output keeps its order. - [Once](https://rux-lang.dev/raw/docs/learn/once.md): Build a shared lookup table exactly once, by whichever thread needs it first, with a Once module variable, and count each thread's own lookups in a thread var. - [Read-write lock](https://rux-lang.dev/raw/docs/learn/rw-lock.md): Let many threads read a value at once and one thread write it alone with an RwLock, its ReadGuard and its WriteGuard. - [Systems](https://rux-lang.dev/raw/docs/learn/systems.md): The program and the world around it: arguments, environment variables and exit status, child processes and pipes, a command line described once and parsed for free, structured logs, and IP addresses, TCP and UDP over the loopback interface. - [Environment](https://rux-lang.dev/raw/docs/learn/environment.md): Read the program's command-line arguments with ArgumentCount, Argument and Arguments, set, read and remove environment variables with SetVariable, Variable and RemoveVariable, walk them all with Environment, and end early with a status through Exit. - [Child process](https://rux-lang.dev/raw/docs/learn/child-process.md): Start another program with a Command: Run it and read its ExitStatus, Capture its output and error streams, give it an environment variable of its own, talk to it through pipes with Spawn, check on it with TryWait and end it with Kill. The program plays the child itself, so it runs the same on every system. - [Command line](https://rux-lang.dev/raw/docs/learn/command-line.md): Describe a command's options, positional arguments and subcommands as a CommandSpec, check argument lists against it with Parse and ParseProcess, ask the result with Has, Count, Integer and Positional, report a CommandLineError, and print the help text the description writes for free. - [Log](https://rux-lang.dev/raw/docs/learn/log.md): Write structured log records with a Logger: a level, a message and typed Fields, as text or as JSON lines, with levels that filter, context fields on every record, and the process-wide log on standard error. - [IP addresses](https://rux-lang.dev/raw/docs/learn/ip-address.md): Read IPv4 and IPv6 addresses with IpAddress::Parse, write their canonical form with WriteText, tell loopback, private and public addresses apart, and read socket addresses — an address and a port — with SocketAddress::Parse. Text that is not an address is none. - [TCP](https://rux-lang.dev/raw/docs/learn/tcp.md): Run a TCP server and client in one program: a TcpListener bound to an ephemeral port on the loopback address accepts a TcpStream, a client thread connects and sends lines, the server answers each, and Shutdown tells the server the client has finished. - [UDP](https://rux-lang.dev/raw/docs/learn/udp.md): Send datagrams between two UdpSockets on the loopback address: SendTo and ReceiveFrom with an address on every datagram, a reply to the sender, message boundaries that survive, a connected pair that uses Send and Receive, and a read timeout for an answer that never comes. - [Projects](https://rux-lang.dev/raw/docs/learn/projects.md): Seventeen complete small programs that double as checkpoints: each one can be built as soon as you finish the part it follows, from a FizzBuzz after Control flow to a JSON notes file, a tune played through Windows and a grep of your own. - [Thanks](https://rux-lang.dev/raw/docs/learn/thanks.md): Print an ASCII banner and a thank-you to everyone who helps build Rux, using nothing but loops, match expressions and PrintLine. - [FizzBuzz](https://rux-lang.dev/raw/docs/learn/fizz-buzz.md): Count to 100, saying Fizz for multiples of 3, Buzz for multiples of 5 and FizzBuzz for both. - [Temperature](https://rux-lang.dev/raw/docs/learn/temperature.md): Print Celsius and Fahrenheit conversion tables, each column and word produced by a small function. - [Prime](https://rux-lang.dev/raw/docs/learn/prime.md): Find every prime below 100 with the sieve of Eratosthenes, crossing out multiples in an inline array of flags. The limit itself is excluded. - [Calculator](https://rux-lang.dev/raw/docs/learn/calculator.md): Evaluate a list of sums and two tapes of key presses, where every way a sum can fail is a case of an error variant. - [Circle](https://rux-lang.dev/raw/docs/learn/circle.md): Read a radius and print the circle's circumference and area, telling apart the end of input, a read error, text that is not a number, and a number that is not a valid radius. - [Quadratic](https://rux-lang.dev/raw/docs/learn/quadratic.md): Read three coefficients and solve a x² + b x + c = 0, telling apart two real roots, a repeated root, a complex pair, a linear equation, an inconsistent one and an identity. - [Word count](https://rux-lang.dev/raw/docs/learn/word-count.md): Count how often each word appears in a tongue twister, and print the counts in alphabetical order. - [Inventory](https://rux-lang.dev/raw/docs/learn/inventory.md): Keep a shop's stock as structs in a vector and apply a day of orders, refusing the ones that cannot be carried out. - [Statistics](https://rux-lang.dev/raw/docs/learn/statistics.md): Summarise slices of numbers — count, extremes, mean, population and sample variance, and median — including an even count with repeated values, a single value and no values at all. - [Guess](https://rux-lang.dev/raw/docs/learn/guess.md): A number guessing game: find a number from 1 to 100 in seven guesses, with a hint after each one. - [Age](https://rux-lang.dev/raw/docs/learn/age.md): Work out an age in completed years, months and days, where a month that is missing its day ends on its last day. - [Password](https://rux-lang.dev/raw/docs/learn/password.md): Make a 16-character password from 57 easy-to-read characters, drawing every one from the system's entropy with rejection sampling so that no character is favoured. - [Launch](https://rux-lang.dev/raw/docs/learn/launch.md): Run a mission checklist, ask for a countdown from 1 to 10, count down and launch a rocket up the terminal. - [Notes](https://rux-lang.dev/raw/docs/learn/notes.md): Keep a to-do list as JSON in a file: save it, load it back, add to it, and handle a damaged or missing file. - [Melody](https://rux-lang.dev/raw/docs/learn/melody.md): Play the opening of Ode to Joy through the console speaker by calling the Windows Beep function directly. - [Grep](https://rux-lang.dev/raw/docs/learn/grep.md): Search files for lines that match a regular expression, like the Unix tool of the same name, with -i, -n, -c, -v and --help read by the CommandLine package and an exit status that says whether anything matched. Run with no arguments, it takes a tour of fixed command lines over its own source. ## Language reference The precise rules of the Rux language as rux 0.4.0 implements them, chapter by chapter. - [Introduction](https://rux-lang.dev/raw/docs/lang/introduction.md): What the Rux Reference covers, how to read its grammar notation, and how it differs from the Learn Rux course. - [Source Files](https://rux-lang.dev/raw/docs/lang/lexical/source-files.md): How Rux source files are named, encoded and split into tokens: UTF-8 text, whitespace, and the longest-match rule. - [Comments](https://rux-lang.dev/raw/docs/lang/lexical/comments.md): Line, block and documentation comments in Rux: their exact markers, nesting, attachment to declarations, and structured tags. - [Identifiers](https://rux-lang.dev/raw/docs/lang/lexical/identifiers.md): The spelling of Rux identifiers, the names they may not take, and the PascalCase and camelCase conventions rux lint checks. - [Keywords](https://rux-lang.dev/raw/docs/lang/lexical/keywords.md): The 38 reserved words of Rux, what each one introduces, and the contextual words that have a meaning only in certain positions. - [Literals](https://rux-lang.dev/raw/docs/lang/lexical/literals.md): Integer, floating-point, boolean, character and string literals in Rux: their spellings, suffixes and prefixes, escapes, and how each gets its type. - [Operators and Punctuation](https://rux-lang.dev/raw/docs/lang/lexical/operators.md): Every operator and punctuation token in Rux, what each one means, and where its full rules are described. - [Types](https://rux-lang.dev/raw/docs/lang/types/overview.md): The kinds of type in Rux, how type expressions are written and grouped, and which conversions happen implicitly. - [Integers](https://rux-lang.dev/raw/docs/lang/types/integers.md): Rux's signed and unsigned integer types from 8 to 512 bits: ranges, constants, wrapping arithmetic, division rules and conversions. - [Floating-Point](https://rux-lang.dev/raw/docs/lang/types/floating-point.md): The eight floating-point widths in Rux, from float8 to float512: formats, constants, special values, arithmetic, how each width is computed, and conversions. - [Booleans](https://rux-lang.dev/raw/docs/lang/types/booleans.md): The bool type and its wider widths, up to bool512, in Rux: literals, logical operators, conditions, and conversions to and from numbers. - [Characters](https://rux-lang.dev/raw/docs/lang/types/characters.md): Rux's character types: char8 and char16 code units, char32 to char512 Unicode scalar values, literals, comparison and conversions. - [Text](https://rux-lang.dev/raw/docs/lang/types/text.md): How Rux represents text: string literals as read-only char8, char16 and char32 slices, their length, indexing, iteration, storage and limits. - [Type Aliases](https://rux-lang.dev/raw/docs/lang/types/aliases.md): Declaring a second name for a type with type Name = T, what an alias does and does not change, and the built-in aliases bool, byte, char and float. - [Bindings](https://rux-lang.dev/raw/docs/lang/bindings/overview.md): How let and var bind a name to a value, how its type is chosen, the difference between = and <-, mutability, and the scope of a name. - [Constants](https://rux-lang.dev/raw/docs/lang/bindings/constants.md): const declarations: values the compiler computes once, what their initializer may contain, where they may appear, and their use as array sizes. - [Initialization](https://rux-lang.dev/raw/docs/lang/bindings/initialization.md): How a var declared without a value is initialized: a default constructor, or storage the compiler tracks until every path has assigned it. - [Destructuring](https://rux-lang.dev/raw/docs/lang/bindings/destructuring.md): Binding several names at once with tuple and structure patterns in let and var, discarding with _, and why such patterns must be irrefutable. - [Module variables](https://rux-lang.dev/raw/docs/lang/bindings/module-variables.md): Module-level var and thread var: one storage location for the whole program or one per thread, their compile-time initial values, addresses, visibility, and what they may hold. - [Expressions](https://rux-lang.dev/raw/docs/lang/expressions/overview.md): How Rux expressions are built: every operator, its 17 precedence levels and associativity, evaluation order, and how operand types combine. - [Arithmetic](https://rux-lang.dev/raw/docs/lang/expressions/arithmetic.md): The arithmetic operators + - * / % and unary -: operand types, wrapping integer overflow, division by zero, and floating-point results. - [Comparison](https://rux-lang.dev/raw/docs/lang/expressions/comparison.md): The comparison operators == != < <= > >=: which types can be compared, how operand types must agree, NaN, and why comparisons do not chain. - [Logical](https://rux-lang.dev/raw/docs/lang/expressions/logical.md): The logical operators && || and !: bool operands only, short-circuit evaluation, precedence, and the non-short-circuiting & | ^ on bool. - [Bitwise](https://rux-lang.dev/raw/docs/lang/expressions/bitwise.md): The bitwise operators & | ^ and ~: operand types, masks and flags, their low precedence against comparisons, and compound forms. - [Shift](https://rux-lang.dev/raw/docs/lang/expressions/shift.md): The shift operators << >> and >>>: the type of the result, arithmetic and logical right shifts, the range of a shift count, and compound forms. - [Assignment](https://rux-lang.dev/raw/docs/lang/expressions/assignment.md): Assignment with = and <-, the compound operators, ++ and --, what may be assigned to, and why an assignment produces no value. - [Conditional](https://rux-lang.dev/raw/docs/lang/expressions/conditional.md): The conditional operator c ? a : b: the whitespace rule that separates it from propagation, branch types, laziness, nesting and precedence. - [Casts](https://rux-lang.dev/raw/docs/lang/expressions/casts.md): Explicit conversion with as: numeric, bool, character and enum casts, truncation and saturation, constant checks, and casts that are refused. - [Statements](https://rux-lang.dev/raw/docs/lang/statements/overview.md): The statements of a Rux function body, blocks as bodies rather than statements, and the rules every condition follows. - [if](https://rux-lang.dev/raw/docs/lang/statements/if.md): The if statement: conditions, else if chains, a final else, and what to use when a choice must produce a value. - [Loops](https://rux-lang.dev/raw/docs/lang/statements/loops.md): The four loops — while, do while, loop and for — and what for can iterate: arrays, slices, ranges and any type with an iterator. - [break and continue](https://rux-lang.dev/raw/docs/lang/statements/break-continue.md): Leaving a loop with break, skipping to the next pass with continue, loop labels for nested loops, and break and continue inside expressions. - [return](https://rux-lang.dev/raw/docs/lang/statements/return.md): The return statement: returning a value or nothing, the check that every path returns, moving a value out, and return inside expressions. - [match](https://rux-lang.dev/raw/docs/lang/patterns/match.md): The match statement and expression: arms, else, arm bodies, typing the result, and the exhaustiveness rules for each kind of subject. - [Patterns](https://rux-lang.dev/raw/docs/lang/patterns/patterns.md): Every pattern form — literals, ranges, bindings, _, tuples, structures, enum and variant cases, typed patterns, none and presence — and guards. - [Function declarations](https://rux-lang.dev/raw/docs/lang/functions/declaration.md): Declaring a function with func: its name, typed parameters and result type, where functions may be declared, and how a call is checked. - [Parameters](https://rux-lang.dev/raw/docs/lang/functions/parameters.md): How arguments reach a function: read-only by-value parameters, references, default values evaluated at each call, and variadic parameters with spread. - [Overloading](https://rux-lang.dev/raw/docs/lang/functions/overloading.md): Several functions sharing one name: how overloads must differ, the ranking that picks one for a call, and when a call is ambiguous. - [Function types](https://rux-lang.dev/raw/docs/lang/functions/function-types.md): Functions as values: the func(T, U) -> R type, passing functions to parameters, storing them in locals and fields, and what a function value cannot be. - [The Main function](https://rux-lang.dev/raw/docs/lang/functions/main.md): The entry point of an executable package: the forms of Main, how each sets the exit status, and DllMain in a Windows shared library. - [Structs](https://rux-lang.dev/raw/docs/lang/structs/overview.md): Declaring a struct, its fields and their visibility, building values with struct literals, reading and writing fields, value semantics and equality. - [Methods](https://rux-lang.dev/raw/docs/lang/structs/methods.md): Adding functions to a type with extend: the three receiver forms self: &T, self: &var T and self: T, static functions, and how each is called. - [Constructors](https://rux-lang.dev/raw/docs/lang/structs/constructors.md): Constructors in Rux: a receiverless function named after its type that returns the type, called as T(...), overloaded, and run by var x: T;. - [Extensions](https://rux-lang.dev/raw/docs/lang/structs/extensions.md): Adding methods to built-in types with extend: integers, slices and writable slices, aliases, and the types that cannot be extended. - [Enums](https://rux-lang.dev/raw/docs/lang/enums/overview.md): Scalar enumerations: declaring enum cases, the backing integer type and explicit values, naming cases, as conversions in both directions, and matching. - [Variants](https://rux-lang.dev/raw/docs/lang/variants/overview.md): Tagged unions with variant: unit, positional and named cases, generic variants, building a case, structural equality, and the private tag. - [Matching variants](https://rux-lang.dev/raw/docs/lang/variants/matching.md): Taking a variant apart with match: case patterns for unit, positional and named cases, binding payloads, nesting, guards and exhaustiveness. - [Unions](https://rux-lang.dev/raw/docs/lang/unions/overview.md): Untagged overlapping storage with union: declaring members, building a union by naming one member, reading another as a reinterpretation, and layout. - [Tuples](https://rux-lang.dev/raw/docs/lang/tuples/overview.md): Tuple types and values: positional elements read with .0, the unit type (), structural equality without ordering, and when to choose a struct instead. - [Arrays](https://rux-lang.dev/raw/docs/lang/arrays/overview.md): The fixed-size array type T[N]: literals, repeated literals, value semantics, length, bounds-checked indexing, iteration, slicing and flexible tails. - [Slices](https://rux-lang.dev/raw/docs/lang/slices/overview.md): The slice types T[..] and var T[..]: views of contiguous elements, slicing with ranges, .length and .data, writability and lifetimes. - [Ranges](https://rux-lang.dev/raw/docs/lang/ranges/overview.md): The six range forms and their types, .start and .end, and ranges in for loops, slicing and match patterns. - [References](https://rux-lang.dev/raw/docs/lang/references/overview.md): The reference types &T and &var T: implicit borrows, automatic dereference, writing through &var, and where a reference may live. - [Exclusivity](https://rux-lang.dev/raw/docs/lang/references/exclusivity.md): The shared-or-exclusive rule for references: how long a borrow lasts, what counts as overlapping, and the errors that enforce it. - [Pointers](https://rux-lang.dev/raw/docs/lang/pointers/overview.md): Raw pointers *T and *var T: taking an address with @, dereferencing with *, fields through a pointer, null, *opaque and conversions. - [Pointer arithmetic](https://rux-lang.dev/raw/docs/lang/pointers/arithmetic.md): Offsetting a pointer by whole elements with + and -, unchecked indexing p[i], walking a buffer, and what pointer arithmetic does not allow. - [Pointer slicing](https://rux-lang.dev/raw/docs/lang/pointers/slicing.md): Turning a pointer and a count into a slice with p[..n], p[a..b] and p[..=n]: writability, the required end bound, and precedence. - [Optionals](https://rux-lang.dev/raw/docs/lang/optionals/overview.md): The optional type T?: a present value or absence, how optionals are written with a plain value, .Some and none, and how they are matched. - [Coalescing](https://rux-lang.dev/raw/docs/lang/optionals/coalescing.md): The ?? operator: take the value of an optional, or evaluate a fallback — a value, or a jump out with return, break, continue, fail or Panic. - [Optional Propagation](https://rux-lang.dev/raw/docs/lang/optionals/propagation.md): Postfix ? on an optional: continue with the present value, or return none from the enclosing function at once. - [Errors](https://rux-lang.dev/raw/docs/lang/errors/overview.md): The fallible type T ! E: a success or a failure in the return type, written with return, fail, .Success and .Failure. - [Handling Failures](https://rux-lang.dev/raw/docs/lang/errors/handling.md): Inspecting a fallible with match, recovering with postfix catch, and the rules that stop a failure from being discarded silently. - [Error Propagation](https://rux-lang.dev/raw/docs/lang/errors/propagation.md): Postfix ? on a fallible passes a failure to the caller; ? else (e => …) converts it on the way; ?? fail turns absence into a failure. - [Panics](https://rux-lang.dev/raw/docs/lang/errors/panics.md): Stopping the program on a bug: Panic, Assert, DebugAssert, #NoReturn functions, the run-time checks that panic, and what a panic does not do. - [Sum Types](https://rux-lang.dev/raw/docs/lang/sums/overview.md): The sum type A | B: one value of a set of distinct types, normalized as a set, built by injection and widening, and collapsed after generic substitution. - [Sum Patterns](https://rux-lang.dev/raw/docs/lang/sums/patterns.md): Selecting a member of a sum with typed patterns v: T, subset patterns v: A | B, _: T and qualified variant cases, and how coverage is checked. - [Type Tests](https://rux-lang.dev/raw/docs/lang/sums/type-tests.md): The is operator: which member of a sum is active, whether an optional is present, or a static check of a value's exact type. It never narrows. - [Ownership](https://rux-lang.dev/raw/docs/lang/ownership/overview.md): Every value has one owner. = copies a value, <- moves it, and the compiler rejects any read of a name whose value has moved away. - [Copy and Move](https://rux-lang.dev/raw/docs/lang/ownership/copy-and-move.md): Copy and move are generated field by field. A type can replace either with its own body, or prohibit it with a bodyless declaration. - [Destructors](https://rux-lang.dev/raw/docs/lang/ownership/destructors.md): A destructor, func ~T(self: &var T), runs exactly once for each value that still owns its state, newest value first. Panics do not unwind. - [Defer](https://rux-lang.dev/raw/docs/lang/ownership/defer.md): defer registers one statement to run when the enclosing scope ends — last registered, first run, after the return value is captured. - [Interfaces](https://rux-lang.dev/raw/docs/lang/interfaces/overview.md): An interface names a set of method requirements. A type implements it in an extend block, and is then usable as an interface value or a bound. - [Interface Values](https://rux-lang.dev/raw/docs/lang/interfaces/interface-values.md): An interface type holds or borrows any implementing value, and a call through it runs the method of the value inside: dynamic dispatch. - [Core Interfaces](https://rux-lang.dev/raw/docs/lang/interfaces/core-interfaces.md): The interfaces the standard packages build on: Equatable, Comparable and Ordering, Hashable, Iterator and Iterable in Core; Display and Debug in Text. - [Operators](https://rux-lang.dev/raw/docs/lang/interfaces/operators.md): A type overloads a binary operator by declaring a function named after it. Comparisons derive from == and <, and structures compare field by field. - [Indexers](https://rux-lang.dev/raw/docs/lang/interfaces/indexers.md): A type is indexed by declaring func [] to read one element and func []= to write one. The index may be of any type, and overloads are separated by it. - [Iteration](https://rux-lang.dev/raw/docs/lang/interfaces/iteration.md): for walks arrays, slices and ranges directly, and any other type through Next(self: &var T) -> Item? or an Iterate method that hands out an iterator. - [Generics](https://rux-lang.dev/raw/docs/lang/generics/overview.md): Functions, structures and variants take type parameters. Each use is compiled separately, with type arguments written out or inferred from the arguments. - [Generic Types](https://rux-lang.dev/raw/docs/lang/generics/types.md): Structures and variants take type parameters. Every use names its type arguments, and each instantiation is a distinct type with its own layout. - [Generic Methods](https://rux-lang.dev/raw/docs/lang/generics/methods.md): Methods of a generic type use its parameters, and any method may declare type parameters of its own, inferred or written after the method name. - [Bounds](https://rux-lang.dev/raw/docs/lang/generics/bounds.md): A bound, T: A + B, admits only type arguments that provide the interfaces' methods, and lets the generic body call them. It is checked at each use. - [Packages and Modules](https://rux-lang.dev/raw/docs/lang/modules/overview.md): How a Rux package is organised: source files, the package root, and named module A::B { } namespaces nested inside it. - [Imports](https://rux-lang.dev/raw/docs/lang/modules/imports.md): The import declaration: bringing a package's items, modules, compile-time values and primitive constants into scope by path, list or glob. - [Visibility](https://rux-lang.dev/raw/docs/lang/modules/visibility.md): pub and package privacy: what a package shows to dependent packages, member visibility, private modules, and public signatures. - [Compile-Time Evaluation](https://rux-lang.dev/raw/docs/lang/comptime/overview.md): What Rux decides while compiling: constants, sizeof and alignof, when, the # compile-time values, defines, intrinsics and build diagnostics. - [Conditional Compilation](https://rux-lang.dev/raw/docs/lang/comptime/conditional.md): The when construct: compile-time chains and match arms that keep one branch, where when may appear, and what its conditions can read. - [Compile-Time Context](https://rux-lang.dev/raw/docs/lang/comptime/context.md): The compiler-supplied values #target, #build, #compiler and #source: every field, query and enum variant, and how they are read. - [Build Configuration](https://rux-lang.dev/raw/docs/lang/comptime/config.md): #config.Has and #config.Get: user-defined compile-time values from the [Build.Defines] table in Rux.toml and the --define option. - [Intrinsics](https://rux-lang.dev/raw/docs/lang/comptime/intrinsics.md): intrinsic declarations: binding a constant, compile-time value or function to what the compiler implements, and the supported set. - [Build Diagnostics](https://rux-lang.dev/raw/docs/lang/comptime/diagnostics.md): The #Error and #Warn directives: stopping or annotating a build from source, where they may be written, and why they belong inside when. - [Attributes](https://rux-lang.dev/raw/docs/lang/attributes/overview.md): Attribute syntax: #Name(...) calls before a declaration or a parameter, where each attribute is allowed, stacking, and the errors for misuse. - [#Unsendable](https://rux-lang.dev/raw/docs/lang/attributes/unsendable.md): The #Unsendable attribute: marking a type whose values stay on the thread that made them, the Sendable bound it takes away, and the errors for misuse. - [#Link](https://rux-lang.dev/raw/docs/lang/attributes/link.md): The #Link attribute: naming the shared library an extern function or extern block is imported from, and optionally the exported symbol. - [#Abi](https://rux-lang.dev/raw/docs/lang/attributes/abi.md): The #Abi attribute: fixing the calling convention of a function, asm func or extern to .C, .SysV or .Win64, and the default for each target. - [#NoReturn](https://rux-lang.dev/raw/docs/lang/attributes/noreturn.md): The #NoReturn attribute: declaring that a function or extern function never returns to its caller, and what the compiler concludes from it. - [#Warn](https://rux-lang.dev/raw/docs/lang/attributes/warn.md): The #Warn attribute: a compiler warning reported at every use of a function, method, type or constant, typically for deprecation. - [#Error](https://rux-lang.dev/raw/docs/lang/attributes/error.md): The #Error attribute: a compile error reported at every use of a function, type or constant, so a removed or unsupported API explains where to go instead. - [#Allow](https://rux-lang.dev/raw/docs/lang/attributes/allow.md): The #Allow attribute: switching off one rux lint rule — naming.type, naming.const or docs.missing — for a single declaration. - [#Format](https://rux-lang.dev/raw/docs/lang/attributes/format.md): The #Format parameter attribute: marking a format string so the compiler counts its placeholders against the variadic arguments. - [#Test](https://rux-lang.dev/raw/docs/lang/attributes/test.md): The #Test attribute: marking a function as a unit test, what a test function may look like, how rux test runs it, and the errors for misuse. - [Foreign Function Interface](https://rux-lang.dev/raw/docs/lang/ffi/overview.md): extern declarations: calling C functions from Rux, extern blocks and variables, C variadics, type mapping, C strings, pointers and callbacks. - [Linking Libraries](https://rux-lang.dev/raw/docs/lang/ffi/linking.md): Binding extern declarations to shared libraries with #Link, choosing a library per platform with when, and renaming imported symbols. - [Assembly Functions](https://rux-lang.dev/raw/docs/lang/ffi/assembly.md): asm func: functions whose body is x86-64 or AArch64 instructions, their operands and labels, calling conventions, and per-architecture bodies. - [Layout](https://rux-lang.dev/raw/docs/lang/memory/layout.md): sizeof and alignof, alignment and padding, field order, flexible tails, zero-sized types, and the layout of views, optionals, fallibles, sums and unions. - [Atomics](https://rux-lang.dev/raw/docs/lang/memory/atomics.md): Atomic loads, stores, exchanges and read-modify-write operations, memory orderings, fences and spin hints: the Core intrinsics threads share memory through. - [Primitive Types](https://rux-lang.dev/raw/docs/lang/appendix/primitives.md): Every primitive type name in Rux in one table: width, size, family, what it holds, and its literal suffix or prefix. - [Token Reference](https://rux-lang.dev/raw/docs/lang/appendix/tokens.md): Every token kind the Rux lexer produces, with the compiler's name for it and its source spelling. - [Rux Compiled Unit](https://rux-lang.dev/raw/docs/lang/appendix/rcu.md): The RCU object format: header, sections, symbols, relocations, string table and metadata of the units both Rux back ends hand to the linker. - [Rux Language Reference](https://rux-lang.dev/raw/docs/lang.md): The complete reference for the Rux language as implemented by rux 0.4.0 — lexical structure, types, expressions, functions, data types, optionals, errors, ownership, interfaces, generics, modules, compile-time programming and FFI. ## CLI - [Global options](https://rux-lang.dev/raw/docs/cli/global.md): Options accepted before or after every Rux CLI command. - [rux add](https://rux-lang.dev/raw/docs/cli/add.md): Add a dependency to the manifest - [rux build](https://rux-lang.dev/raw/docs/cli/build.md): Build the current package - [rux check](https://rux-lang.dev/raw/docs/cli/check.md): Check package source code for errors without building - [rux clean](https://rux-lang.dev/raw/docs/cli/clean.md): Remove build artifacts - [rux doc](https://rux-lang.dev/raw/docs/cli/doc.md): Generate package documentation - [rux fmt](https://rux-lang.dev/raw/docs/cli/fmt.md): Format source files and manifests - [rux help](https://rux-lang.dev/raw/docs/cli/help.md): Show help information - [rux info](https://rux-lang.dev/raw/docs/cli/info.md): Show package metadata and manifest information - [rux init](https://rux-lang.dev/raw/docs/cli/init.md): Initialize a Rux package in the current directory - [rux install](https://rux-lang.dev/raw/docs/cli/install.md): Install dependencies - [rux lint](https://rux-lang.dev/raw/docs/cli/lint.md): Lint package source files - [rux list](https://rux-lang.dev/raw/docs/cli/list.md): List dependencies - [rux login](https://rux-lang.dev/raw/docs/cli/login.md): Store a registry token for publishing - [rux logout](https://rux-lang.dev/raw/docs/cli/logout.md): Remove a stored registry token - [rux new](https://rux-lang.dev/raw/docs/cli/new.md): Create a new Rux package - [rux pack](https://rux-lang.dev/raw/docs/cli/pack.md): Build the publishable package archive - [rux publish](https://rux-lang.dev/raw/docs/cli/publish.md): Publish the package to the registry - [rux remove](https://rux-lang.dev/raw/docs/cli/remove.md): Remove a dependency from the manifest - [rux run](https://rux-lang.dev/raw/docs/cli/run.md): Build and run the main executable - [rux test](https://rux-lang.dev/raw/docs/cli/test.md): Run all test targets - [rux uninstall](https://rux-lang.dev/raw/docs/cli/uninstall.md): Uninstall dependencies - [rux update](https://rux-lang.dev/raw/docs/cli/update.md): Update dependencies - [rux version](https://rux-lang.dev/raw/docs/cli/version.md): Show version information - [CLI Reference](https://rux-lang.dev/raw/docs/cli.md): Verified reference for the Rux compiler and package-manager command line. ## Packaging - [Package Types](https://rux-lang.dev/raw/docs/packaging/types.md): Manifest Version 1 accepts exactly four case-sensitive package types: - [Yanking](https://rux-lang.dev/raw/docs/packaging/yanking.md): Yanking withdraws a published version from new dependency resolution while leaving it available to builds that already depend on it. It is the way to retire a release that turned out to be broken, insecure, or published by mistake. - [Directory Layout](https://rux-lang.dev/raw/docs/packaging/layout.md): Every package follows a predictable directory layout. The exact contents depend on the package type. - [Package Manifest](https://rux-lang.dev/raw/docs/packaging/manifest.md): Every Rux package is described by a Rux.toml file at its root. It carries the package's identity, metadata, build settings, and dependencies, and it is required for anything that takes part in the build system or a workspace. - [Dependencies](https://rux-lang.dev/raw/docs/packaging/dependencies.md): Dependencies are other packages your project builds against. They are declared in the [Dependencies] table of Rux.toml and managed with the rux command-line tool. - [The Registry](https://rux-lang.dev/raw/docs/packaging/registry.md): The Rux registry hosts published packages. It is browsable at rux-lang.dev/packages and served programmatically from https://api.rux-lang.dev. Reading from it — browsing, searching, downloading, installing — needs no account. - [Namespaces](https://rux-lang.dev/raw/docs/packaging/namespaces.md): A published package is identified by two parts: a namespace and a name. The namespace is the account or organisation that owns the package, so Rux/Io and Acme/Io are different packages that happen to share a name. - [API Tokens](https://rux-lang.dev/raw/docs/packaging/tokens.md): An API token lets the rux command line act on your registry account without a browser. Publishing needs one; browsing and installing do not. - [Publishing](https://rux-lang.dev/raw/docs/packaging/publishing.md): Publishing uploads a package release to the registry, where anyone can depend on it. A published version is permanent. - [Versioning](https://rux-lang.dev/raw/docs/packaging/versioning.md): Every release carries a version in Package.Version. Rux uses strict Semantic Versioning 2.0.0, without a leading v. - [Packaging](https://rux-lang.dev/raw/docs/packaging.md): How Rux packages are built, described, published, and consumed — package types, the Rux.toml manifest, dependencies, namespaces, API tokens, publishing to the registry, versioning, and yanking. ## Standard packages API - [Core](https://rux-lang.dev/raw/docs/api/core.md): Core language intrinsics - [Comparable](https://rux-lang.dev/raw/docs/api/core/comparable.md): Ordering: which of two values of one type comes first. - [Equatable](https://rux-lang.dev/raw/docs/api/core/equatable.md): Equality: whether two values of one type stand for the same thing. - [Hashable](https://rux-lang.dev/raw/docs/api/core/hashable.md): Hashing: the 64-bit summary a table uses to find a value quickly. - [Iterable](https://rux-lang.dev/raw/docs/api/core/iterable.md): A value that can hand out an Iterator over its contents. - [Iterator](https://rux-lang.dev/raw/docs/api/core/iterator.md): A cursor that yields a sequence of items one at a time. - [Sendable](https://rux-lang.dev/raw/docs/api/core/sendable.md): A type whose values may move to another thread: the bound a thread's context and result are written with. - [Iterator adaptors](https://rux-lang.dev/raw/docs/api/core/adaptors.md): Lazy adaptors over any iterator — map, filter, skip, take, enumerate, zip and chain — and walking a slice. - [Booleans](https://rux-lang.dev/raw/docs/api/core/booleans.md): The boolean types bool8 to bool512, with their width constants. The built-in bool is bool8 and shares its constants. - [Build](https://rux-lang.dev/raw/docs/api/core/build.md): Properties of the active build profile and its output. - [Characters](https://rux-lang.dev/raw/docs/api/core/characters.md): The character types char8 to char512, with their width and limit constants. The built-in char is char32 and shares its constants. - [Compiler](https://rux-lang.dev/raw/docs/api/core/compiler.md): Properties of the compiler performing the build. - [Config](https://rux-lang.dev/raw/docs/api/core/config.md): The set of user-defined build values. - [Floating-point types](https://rux-lang.dev/raw/docs/api/core/floating-point.md): The floating-point types float8 to float512, with their width, limit and special-value constants. The built-in float is float64 and shares its constants. - [Integers](https://rux-lang.dev/raw/docs/api/core/integers.md): The signed and unsigned integer types from 8 to 512 bits and the pointer-sized int and uint, with their width and limit constants. The built-in byte is uint8 and shares its constants. - [Ordering](https://rux-lang.dev/raw/docs/api/core/ordering.md): The answer a three-way comparison gives: which side is smaller, or that neither is. - [SemanticVersion](https://rux-lang.dev/raw/docs/api/core/semantic-version.md): A semantic version, as its three numeric core components. - [Source](https://rux-lang.dev/raw/docs/api/core/source.md): The location of the expression that reads it. - [Target](https://rux-lang.dev/raw/docs/api/core/target.md): Properties of the machine the build targets. - [Integer arithmetic](https://rux-lang.dev/raw/docs/api/core/arithmetic.md): Checked, wrapping and saturating arithmetic at every integer width, the limits of an integer type, and the uint64 intrinsics allocation sizes are computed with. - [Atomic intrinsics](https://rux-lang.dev/raw/docs/api/core/atomic.md): The atomic loads, stores, exchanges and read-modify-write operations, memory orders and fences that the Atomic package builds on. - [Bit operations](https://rux-lang.dev/raw/docs/api/core/bits.md): Counting, rotating, reversing and testing the bits of an integer of any width, and a right shift that brings in zeros whatever the sign. - [Byte order](https://rux-lang.dev/raw/docs/api/core/byte-order.md): Converting integers between the target's byte order and little- or big-endian, in a register or through raw bytes at any alignment. - [Checked conversion](https://rux-lang.dev/raw/docs/api/core/conversion.md): Converting between primitive types with a report of whether the value survived, with wrapping on purpose, or clamped to the destination's range. - [Diagnostics](https://rux-lang.dev/raw/docs/api/core/diagnostics.md): Run-time assertions and panics that report and terminate, and the compile-time #Error and #Warn that reject or flag a configuration. - [Float classification](https://rux-lang.dev/raw/docs/api/core/float-classification.md): Asking whether a floating-point value is NaN, infinite, finite or zero, and reading its sign, at every float width. - [Outcomes](https://rux-lang.dev/raw/docs/api/core/outcomes.md): Asking which channel a native fallible T ! E holds without unwrapping it. - [Process start](https://rux-lang.dev/raw/docs/api/core/startup.md): The frame the operating system hands a program when it starts. - [Zeroize](https://rux-lang.dev/raw/docs/api/core/zeroize.md): Overwrites a byte range with zeros, and is never removed however unread those bytes are afterwards. - [Memory](https://rux-lang.dev/raw/docs/api/memory.md): Memory management functions - [Alignment](https://rux-lang.dev/raw/docs/api/memory/alignment.md): Testing addresses for alignment and rounding them to a boundary. - [Heap allocation](https://rux-lang.dev/raw/docs/api/memory/allocation.md): Allocating, resizing and releasing blocks on the system heap. - [Block operations](https://rux-lang.dev/raw/docs/api/memory/blocks.md): Copying, filling, clearing, comparing and searching blocks of bytes. - [Unaligned and byte-order access](https://rux-lang.dev/raw/docs/api/memory/unaligned-access.md): Reading and writing values at any alignment and in either byte order. - [Pages](https://rux-lang.dev/raw/docs/api/memory/pages.md): Address space in whole pages from the operating system, with a protection. - [Allocator](https://rux-lang.dev/raw/docs/api/allocator.md): Allocation contracts and the allocators that meet them - [Allocator](https://rux-lang.dev/raw/docs/api/allocator/allocator.md): The operations every allocator provides. - [AllocError](https://rux-lang.dev/raw/docs/api/allocator/alloc-error.md): Why an allocation, reallocation or release did not do what was asked. - [Arena](https://rux-lang.dev/raw/docs/api/allocator/arena.md): An allocator that advances a pointer and reclaims everything at once. - [Box](https://rux-lang.dev/raw/docs/api/allocator/box.md): One heap-allocated value of T, owned by exactly one holder. - [FixedBuffer](https://rux-lang.dev/raw/docs/api/allocator/fixed-buffer.md): An allocator that advances a pointer through storage it does not own. - [Layout](https://rux-lang.dev/raw/docs/api/allocator/layout.md): A validated allocation request: a size, and the alignment its address must satisfy. - [Pool](https://rux-lang.dev/raw/docs/api/allocator/pool.md): An allocator that serves small blocks from per-class free lists. - [Shared ownership](https://rux-lang.dev/raw/docs/api/allocator/shared.md): Reference-counted handles: Rc within one thread and Arc across threads. - [SystemAllocator](https://rux-lang.dev/raw/docs/api/allocator/system-allocator.md): An allocator that asks the operating system for pages. - [Math](https://rux-lang.dev/raw/docs/api/math.md): Mathematical constants and functions - [Complex numbers](https://rux-lang.dev/raw/docs/api/math/complex.md): Complex numbers at two precisions: arithmetic, polar form, and the elementary functions. - [Absolute value, minimum and maximum](https://rux-lang.dev/raw/docs/api/math/abs-min-max.md): The magnitude of a floating-point value and the smaller or larger of two. - [Classification and special values](https://rux-lang.dev/raw/docs/api/math/classification.md): Telling NaNs, infinities, zeros, subnormals and normal values apart, and making the special ones. - [Exponentials and logarithms](https://rux-lang.dev/raw/docs/api/math/exponential.md): Powers of e and two, and logarithms in base e, two and ten. - [Floating-point representation](https://rux-lang.dev/raw/docs/api/math/float-representation.md): Signs, exponents, neighbouring values and ulp distances of floating-point values. - [Hyperbolic functions](https://rux-lang.dev/raw/docs/api/math/hyperbolic.md): Hyperbolic sine, cosine, tangent and their inverses. - [Integer arithmetic](https://rux-lang.dev/raw/docs/api/math/integer.md): Checked and wrapping integer operations: magnitude, extrema, clamping, GCD, LCM and powers. - [Powers and roots](https://rux-lang.dev/raw/docs/api/math/powers.md): Raising to a power, square and cube roots, and the hypotenuse. - [Rounding and remainders](https://rux-lang.dev/raw/docs/api/math/rounding.md): Rounding to an integral value in a chosen direction, and the floating-point remainder. - [Trigonometry](https://rux-lang.dev/raw/docs/api/math/trigonometry.md): Sine, cosine, tangent, their inverses, and conversion between degrees and radians. - [Constants](https://rux-lang.dev/raw/docs/api/math/constants.md): Mathematical constants, rounded to the nearest float64. - [Text](https://rux-lang.dev/raw/docs/api/text.md): Strings and fundamental text manipulation - [Debug](https://rux-lang.dev/raw/docs/api/text/debug.md): The text a value has for whoever is inspecting a program. - [Display](https://rux-lang.dev/raw/docs/api/text/display.md): The text a value has for a reader. - [ParseFailure](https://rux-lang.dev/raw/docs/api/text/parse-failure.md): A parsing failure that can say where it happened. - [TextWriter](https://rux-lang.dev/raw/docs/api/text/text-writer.md): Somewhere formatted text can be written. - [BufferWriter](https://rux-lang.dev/raw/docs/api/text/buffer-writer.md): A fixed buffer being filled with text from the front. - [CString](https://rux-lang.dev/raw/docs/api/text/c-string.md): Text carrying the terminator C expects, in storage of its own. - [FormatError](https://rux-lang.dev/raw/docs/api/text/format-error.md): Why a formatting operation did not produce the text it was asked for. - [FormatSpec](https://rux-lang.dev/raw/docs/api/text/format-spec.md): Everything a placeholder asked for. - [String](https://rux-lang.dev/raw/docs/api/text/string.md): Text that owns its bytes. - [StringBuilder](https://rux-lang.dev/raw/docs/api/text/string-builder.md): A growable buffer of text. - [StringView](https://rux-lang.dev/raw/docs/api/text/string-view.md): A borrowed run of bytes that has been checked to be UTF-8. - [TextError](https://rux-lang.dev/raw/docs/api/text/text-error.md): What went wrong. - [Utf8Error](https://rux-lang.dev/raw/docs/api/text/utf8-error.md): What was wrong with a byte sequence. - [Transforming text](https://rux-lang.dev/raw/docs/api/text/transform.md): New strings made from old: concatenation, repetition, replacement and ASCII case. - [UTF-8](https://rux-lang.dev/raw/docs/api/text/utf8.md): Encoding, decoding and validating UTF-8, and the limits of a Unicode scalar value. - [Format](https://rux-lang.dev/raw/docs/api/format.md): String conversion and formatting - [ByteCursor](https://rux-lang.dev/raw/docs/api/format/byte-cursor.md): A fixed buffer being filled from the front. - [FixedNat](https://rux-lang.dev/raw/docs/api/format/fixed-nat.md): An unsigned integer of fixed capacity, holding no storage of its own. - [FloatLayout](https://rux-lang.dev/raw/docs/api/format/float-layout.md): The shape of one binary interchange format: where its fields are and what they mean. - [Float128](https://rux-lang.dev/raw/docs/api/format/float128.md): An IEEE binary128 value, held as its bits. - [Float256](https://rux-lang.dev/raw/docs/api/format/float256.md): An IEEE binary256 value, held as its bits. - [Float512](https://rux-lang.dev/raw/docs/api/format/float512.md): An IEEE binary512 value, held as its bits. - [Float80](https://rux-lang.dev/raw/docs/api/format/float80.md): An x87 extended-precision value, held as its eighty bits. - [ParseError](https://rux-lang.dev/raw/docs/api/format/parse-error.md): Why text could not be read as a value. - [Writing characters and booleans](https://rux-lang.dev/raw/docs/api/format/character-text.md): How characters, character slices and booleans render, and how a value that is no character is escaped. - [Float classification and bits](https://rux-lang.dev/raw/docs/api/format/float-bits.md): Whether a float is NaN, infinite or finite, and the bits it is stored as. - [Writing floats](https://rux-lang.dev/raw/docs/api/format/float-text.md): The shortest, fixed-precision and scientific renderings of a float32 or float64. - [Writing integers](https://rux-lang.dev/raw/docs/api/format/integer-text.md): Spelling an integer as text: sign, base prefix, zero padding and digits. - [Parsing integers, booleans and characters](https://rux-lang.dev/raw/docs/api/format/parse.md): Reading an integer of any width and base, a boolean or one character from text. - [Parsing floats](https://rux-lang.dev/raw/docs/api/format/parse-float.md): Reading decimal text into the nearest float32, float64 or wide float, exactly. - [Render](https://rux-lang.dev/raw/docs/api/format/render.md): The text format becomes with its placeholders filled, as a string of its own. - [WriteFormat](https://rux-lang.dev/raw/docs/api/format/write-format.md): Writes format into writer, with each {} replaced by the next argument. - [Unicode](https://rux-lang.dev/raw/docs/api/unicode.md): Unicode character properties, case, normalization and segmentation - [GeneralCategory](https://rux-lang.dev/raw/docs/api/unicode/general-category.md): The Unicode general category, one per scalar value. - [GraphemeBreak](https://rux-lang.dev/raw/docs/api/unicode/grapheme-break.md): The grapheme break class of a scalar value. - [Case mapping](https://rux-lang.dev/raw/docs/api/unicode/case.md): Simple and full upper, lower and title case mappings, and case folding. - [Grapheme clusters](https://rux-lang.dev/raw/docs/api/unicode/graphemes.md): Extended grapheme cluster boundaries, and how many user-perceived characters a text holds. - [Normalization](https://rux-lang.dev/raw/docs/api/unicode/normalization.md): Canonical and compatibility decomposition, and the NFD, NFC, NFKD and NFKC normal forms. - [Character properties](https://rux-lang.dev/raw/docs/api/unicode/properties.md): The canonical combining class and the White_Space, Alphabetic and Numeric properties of a scalar value. - [Scripts](https://rux-lang.dev/raw/docs/api/unicode/scripts.md): The script each code point belongs to. - [Generated tables](https://rux-lang.dev/raw/docs/api/unicode/tables.md): The Unicode 17.0.0 Character Database tables the lookups search. - [Collections](https://rux-lang.dev/raw/docs/api/collections.md): Generic data structures - [Array](https://rux-lang.dev/raw/docs/api/collections/array.md): A fixed-length run of elements on storage this array owns. - [BitSet](https://rux-lang.dev/raw/docs/api/collections/bit-set.md): A growable set of bits. - [CollectionError](https://rux-lang.dev/raw/docs/api/collections/collection-error.md): Why a collection operation could not be completed. - [Deque](https://rux-lang.dev/raw/docs/api/collections/deque.md): A double-ended queue over a circular buffer. - [HashMap](https://rux-lang.dev/raw/docs/api/collections/hash-map.md): A hash table from keys to values. - [HashSet](https://rux-lang.dev/raw/docs/api/collections/hash-set.md): A hash table of distinct values. - [Slice iterators](https://rux-lang.dev/raw/docs/api/collections/iterators.md): The iterators an array, vector or deque hands out to walk its elements by copy or by pointer. - [KeyValue](https://rux-lang.dev/raw/docs/api/collections/key-value.md): One entry of a map, as a value a caller can hold. - [LruCache](https://rux-lang.dev/raw/docs/api/collections/lru-cache.md): A map that holds at most capacity entries and evicts the least recently used. - [PriorityQueue](https://rux-lang.dev/raw/docs/api/collections/priority-queue.md): A max-priority queue over a binary heap. - [SmallVector](https://rux-lang.dev/raw/docs/api/collections/small-vector.md): A growable sequence that holds up to 64 bytes of elements without allocating. - [Table](https://rux-lang.dev/raw/docs/api/collections/table.md): The open-addressing table HashMap and HashSet are both built on. - [TableSeed](https://rux-lang.dev/raw/docs/api/collections/table-seed.md): A hash seed, drawn once and shared by every table that wants one. - [Tree](https://rux-lang.dev/raw/docs/api/collections/tree.md): An ordered collection of entries, kept balanced by colouring. - [TreeMap](https://rux-lang.dev/raw/docs/api/collections/tree-map.md): An ordered map from keys to values. - [TreeSet](https://rux-lang.dev/raw/docs/api/collections/tree-set.md): An ordered set of unique elements. - [Vector](https://rux-lang.dev/raw/docs/api/collections/vector.md): A growable contiguous run of elements on storage this vector owns. - [Comparing](https://rux-lang.dev/raw/docs/api/collections/comparing.md): Ready-made ordering callbacks for the key types a tree map or set is keyed on. - [Hashing](https://rux-lang.dev/raw/docs/api/collections/hashing.md): Ready-made seeded hash and equality callbacks for the key types a hash map or set is keyed on. - [Algorithms](https://rux-lang.dev/raw/docs/api/algorithms.md): Generic algorithms over slices and mutable slices - [Comparing slices](https://rux-lang.dev/raw/docs/api/algorithms/comparing.md): Element-by-element equality, the first difference and lexicographic order between two slices. - [Folding](https://rux-lang.dev/raw/docs/api/algorithms/folding.md): Reducing a slice to one value, and mapping one slice onto another. - [Heaps](https://rux-lang.dev/raw/docs/api/algorithms/heaps.md): A binary max-heap laid out in the slice itself, the building block of a priority queue. - [Minimum and maximum](https://rux-lang.dev/raw/docs/api/algorithms/min-max.md): The smallest and largest elements of a slice, and clamping a value into a range. - [Modifying](https://rux-lang.dev/raw/docs/api/algorithms/modifying.md): Rearranging a slice in place, removing elements, and moving elements between slices. - [Numeric sequences](https://rux-lang.dev/raw/docs/api/algorithms/numeric.md): Running sums and scans, counting sequences, and an overflow-free midpoint. - [Searching](https://rux-lang.dev/raw/docs/api/algorithms/searching.md): Linear queries over a slice in no particular order: whether it holds a value, where, and how many. - [Sorted slices](https://rux-lang.dev/raw/docs/api/algorithms/sorted-slices.md): Binary search and bounds over a slice that is already in order, and checking that it is. - [Sorting](https://rux-lang.dev/raw/docs/api/algorithms/sorting.md): Putting a slice in order in place, unstably with no storage or stably with caller scratch. - [Hash](https://rux-lang.dev/raw/docs/api/hash.md): Named non-cryptographic hashes and checksums - [Hasher](https://rux-lang.dev/raw/docs/api/hash/hasher.md): A hash being computed, one write at a time. - [Adler32](https://rux-lang.dev/raw/docs/api/hash/adler32.md): The Adler-32 of a message, computed a batch of bytes at a time. - [Crc32](https://rux-lang.dev/raw/docs/api/hash/crc32.md): The CRC-32 of a message, computed a byte at a time. - [Crc32c](https://rux-lang.dev/raw/docs/api/hash/crc32c.md): The CRC-32C of a message, computed a byte at a time. - [Fnv1a32](https://rux-lang.dev/raw/docs/api/hash/fnv1a32.md): FNV-1a over 32 bits, computed one byte at a time. - [Fnv1a64](https://rux-lang.dev/raw/docs/api/hash/fnv1a64.md): FNV-1a over 64 bits, computed one byte at a time. - [SipHash24](https://rux-lang.dev/raw/docs/api/hash/sip-hash24.md): SipHash-2-4 over a stream of bytes, keyed with 128 bits. - [XxHash64](https://rux-lang.dev/raw/docs/api/hash/xx-hash64.md): xxHash64 over a stream of bytes, in as many writes as the caller has. - [Random](https://rux-lang.dev/raw/docs/api/random.md): Pseudorandom number generators and distributions - [RandomGenerator](https://rux-lang.dev/raw/docs/api/random/random-generator.md): A source of uniformly distributed 64-bit words. - [Pcg64Dxsm](https://rux-lang.dev/raw/docs/api/random/pcg64-dxsm.md): A PCG64-DXSM generator. - [Reservoir](https://rux-lang.dev/raw/docs/api/random/reservoir.md): A reservoir sample being built. - [SplitMix64](https://rux-lang.dev/raw/docs/api/random/split-mix64.md): The seeding generator: a fast mixer with a 64-bit state, used to spread one seed over a larger one. - [Xoshiro256](https://rux-lang.dev/raw/docs/api/random/xoshiro256.md): A Xoshiro256** generator. - [Distributions](https://rux-lang.dev/raw/docs/api/random/distributions.md): Values from the Bernoulli, exponential, normal, binomial, Poisson, gamma and beta distributions. - [Sampling and shuffling](https://rux-lang.dev/raw/docs/api/random/sampling.md): Shuffling a slice and choosing indices, uniformly or by weight. - [Uniform ranges](https://rux-lang.dev/raw/docs/api/random/uniform.md): Uniform integers and floats in a bounded range. - [Io](https://rux-lang.dev/raw/docs/api/io.md): Streams, console I/O, readers and writers - [Reader](https://rux-lang.dev/raw/docs/api/io/reader.md): Somewhere bytes come from. - [Seeker](https://rux-lang.dev/raw/docs/api/io/seeker.md): A stream whose position can be moved. - [Writer](https://rux-lang.dev/raw/docs/api/io/writer.md): Somewhere bytes go. - [BufferedReader](https://rux-lang.dev/raw/docs/api/io/buffered-reader.md): A reader that fills a buffer in large reads and serves small ones from it. - [BufferedWriter](https://rux-lang.dev/raw/docs/api/io/buffered-writer.md): A writer that gathers small writes into a buffer and sends it in one piece. - [ConsoleWriter](https://rux-lang.dev/raw/docs/api/io/console-writer.md): A TextWriter over standard output that records the stream's failure where the caller can see it. - [IoError](https://rux-lang.dev/raw/docs/api/io/io-error.md): A structured I/O failure: the shared meaning, and the platform's own code beside it. - [Memory streams](https://rux-lang.dev/raw/docs/api/io/memory-stream.md): A reader and a writer over bytes in memory, with seeking. - [StandardError](https://rux-lang.dev/raw/docs/api/io/standard-error.md): Standard error: the same contract as standard output, on the stream reports belong to. - [StandardIn](https://rux-lang.dev/raw/docs/api/io/standard-in.md): Standard input, with the console-versus-redirection question answered at acquisition. - [StandardOut](https://rux-lang.dev/raw/docs/api/io/standard-out.md): Standard output: a byte Writer whose encoding matches where the bytes land. - [StreamWriter](https://rux-lang.dev/raw/docs/api/io/stream-writer.md): A TextWriter over any stream, recording the stream's failure where the caller can see it. - [Binary encoding](https://rux-lang.dev/raw/docs/api/io/binary.md): Fixed-width integers and floats read from a reader and written to a writer in a chosen byte order. - [Print](https://rux-lang.dev/raw/docs/api/io/print.md): Writes a value's text to standard output. - [PrintLine](https://rux-lang.dev/raw/docs/api/io/print-line.md): Writes a value's text to standard output, then a newline. - [ReadLine](https://rux-lang.dev/raw/docs/api/io/read-line.md): Appends the next line of standard input to builder, without its ending. - [FileSystem](https://rux-lang.dev/raw/docs/api/filesystem.md): Files, directories and filesystem operations - [AtomicWrite](https://rux-lang.dev/raw/docs/api/filesystem/atomic-write.md): A file being written to replace target, which appears under that name only when it is complete. - [Capabilities](https://rux-lang.dev/raw/docs/api/filesystem/capabilities.md): What the running system can actually answer, so a caller can ask before it assumes. - [File](https://rux-lang.dev/raw/docs/api/filesystem/file.md): An owned, open file. - [FileStream](https://rux-lang.dev/raw/docs/api/filesystem/file-stream.md): A stored borrow of an open file that speaks the stream interfaces. - [Metadata](https://rux-lang.dev/raw/docs/api/filesystem/metadata.md): Everything a single query can say about a file. - [Permissions](https://rux-lang.dev/raw/docs/api/filesystem/permissions.md): Who may do what to a file, in both spellings the supported systems use. - [TemporaryDirectoryHandle](https://rux-lang.dev/raw/docs/api/filesystem/temporary-directory-handle.md): A temporary directory that owns its name. - [TemporaryFile](https://rux-lang.dev/raw/docs/api/filesystem/temporary-file.md): A temporary file that owns both its contents and its name. - [Directories](https://rux-lang.dev/raw/docs/api/filesystem/directories.md): Creating, deleting and listing directories. - [File operations](https://rux-lang.dev/raw/docs/api/filesystem/file-operations.md): Deleting, renaming, copying and linking files by name. - [Working directory](https://rux-lang.dev/raw/docs/api/filesystem/location.md): The process's current directory, and a path made absolute or canonical against it. - [Native error codes](https://rux-lang.dev/raw/docs/api/filesystem/native-errors.md): A platform's own error code, read as the IoError every operation here reports. - [Path](https://rux-lang.dev/raw/docs/api/path.md): Native operating-system strings and filesystem paths - [OsString](https://rux-lang.dev/raw/docs/api/path/os-string.md): Native text that owns its units. - [OsStringView](https://rux-lang.dev/raw/docs/api/path/os-string-view.md): A borrowed run of native units. - [Path](https://rux-lang.dev/raw/docs/api/path/path.md): A borrowed path. - [PathBuffer](https://rux-lang.dev/raw/docs/api/path/path-buffer.md): An owning, growable path. - [Path syntax](https://rux-lang.dev/raw/docs/api/path/syntax.md): Which units separate segments on this system, and the prefix and root a path opens with. - [Time](https://rux-lang.dev/raw/docs/api/time.md): Durations, monotonic clocks and wall clocks - [Waiter](https://rux-lang.dev/raw/docs/api/time/waiter.md): One wait, however the caller reaches the system. - [Date](https://rux-lang.dev/raw/docs/api/time/date.md): A calendar date that exists. - [DateTime](https://rux-lang.dev/raw/docs/api/time/date-time.md): A date and a time of day together, in some understood offset. - [Duration](https://rux-lang.dev/raw/docs/api/time/duration.md): A span of time: seconds and a fraction, normalized. - [Instant](https://rux-lang.dev/raw/docs/api/time/instant.md): A reading of the monotonic clock. - [OffsetDateTime](https://rux-lang.dev/raw/docs/api/time/offset-date-time.md): A date and time together with the offset from UTC they are stated in. - [Stopwatch](https://rux-lang.dev/raw/docs/api/time/stopwatch.md): A pausable timer over the monotonic clock. - [TimeOfDay](https://rux-lang.dev/raw/docs/api/time/time-of-day.md): A time within a day, to the nanosecond. - [TimeParseError](https://rux-lang.dev/raw/docs/api/time/time-parse-error.md): Why text could not be read as a calendar value. - [Timestamp](https://rux-lang.dev/raw/docs/api/time/timestamp.md): A moment in UTC: seconds since the Unix epoch and a fraction, normalized. - [UtcOffset](https://rux-lang.dev/raw/docs/api/time/utc-offset.md): A fixed shift from UTC, in whole minutes. - [SleepFor](https://rux-lang.dev/raw/docs/api/time/sleep.md): Stops the calling thread for at least span. - [Entropy](https://rux-lang.dev/raw/docs/api/entropy.md): Unpredictable bytes from the operating system - [EntropySource](https://rux-lang.dev/raw/docs/api/entropy/entropy-source.md): Something that can fill a buffer with unpredictable bytes. - [EntropyError](https://rux-lang.dev/raw/docs/api/entropy/entropy-error.md): Why unpredictable bytes could not be obtained. - [SystemEntropy](https://rux-lang.dev/raw/docs/api/entropy/system-entropy.md): The operating system's generator, as an EntropySource. - [Fill](https://rux-lang.dev/raw/docs/api/entropy/fill.md): Fills length bytes of buffer from the operating system. - [NextUint64](https://rux-lang.dev/raw/docs/api/entropy/next-uint64.md): An unpredictable 64-bit value, which is what a generator wants for a seed. - [Json](https://rux-lang.dev/raw/docs/api/json.md): JSON parsing and serialization - [JsonEventReader](https://rux-lang.dev/raw/docs/api/json/json-event-reader.md): Reads a document as events, pulling bytes as it needs them. - [JsonLexer](https://rux-lang.dev/raw/docs/api/json/json-lexer.md): A JSON lexer over a byte slice. - [JsonLimits](https://rux-lang.dev/raw/docs/api/json/json-limits.md): What a caller will accept from a document. - [JsonNumber](https://rux-lang.dev/raw/docs/api/json/json-number.md): A JSON number, held as the text it was written with. - [JsonParseError](https://rux-lang.dev/raw/docs/api/json/json-parse-error.md): Why parsing stopped, and where. - [JsonParser](https://rux-lang.dev/raw/docs/api/json/json-parser.md): A parser over a document. - [JsonValue](https://rux-lang.dev/raw/docs/api/json/json-value.md): A JSON value: one of the six kinds, owning whatever it holds. - [Parse](https://rux-lang.dev/raw/docs/api/json/parse.md): Parses input into a value, rejecting duplicate names. - [WriteValue](https://rux-lang.dev/raw/docs/api/json/write-value.md): Writes value to writer in the given style. - [Toml](https://rux-lang.dev/raw/docs/api/toml.md): TOML parsing, serialization and streaming - [TomlEventReader](https://rux-lang.dev/raw/docs/api/toml/toml-event-reader.md): Reads a document as events, in order, without building a tree. - [TomlLexer](https://rux-lang.dev/raw/docs/api/toml/toml-lexer.md): A TOML lexer over a byte slice. - [TomlParseFailure](https://rux-lang.dev/raw/docs/api/toml/toml-parse-failure.md): Why a document was refused, and where in it. - [TomlParser](https://rux-lang.dev/raw/docs/api/toml/toml-parser.md): A parser over a document. - [TomlScalarError](https://rux-lang.dev/raw/docs/api/toml/toml-scalar-error.md): Why a scalar could not be read, and where in it. - [TomlValue](https://rux-lang.dev/raw/docs/api/toml/toml-value.md): A TOML value: one of the ten kinds, owning whatever it holds. - [Scalars](https://rux-lang.dev/raw/docs/api/toml/scalars.md): Reading TOML integers, floats and date-times from their source text. - [TomlParse](https://rux-lang.dev/raw/docs/api/toml/toml-parse.md): Reads input into a table, or says why it could not and where. - [TomlWriteDocument](https://rux-lang.dev/raw/docs/api/toml/toml-write-document.md): Writes table as a TOML document. - [Uuid](https://rux-lang.dev/raw/docs/api/uuid.md): UUID representation, parsing, formatting and generation - [MonotonicUuid](https://rux-lang.dev/raw/docs/api/uuid/monotonic-uuid.md): A generator of version 7 UUIDs that are strictly increasing, even within one millisecond. - [Uuid](https://rux-lang.dev/raw/docs/api/uuid/uuid.md): A universally unique identifier: sixteen bytes in the standard's own order. - [Random](https://rux-lang.dev/raw/docs/api/uuid/random.md): A version 4 UUID drawn from the operating system's entropy. - [Text form](https://rux-lang.dev/raw/docs/api/uuid/text.md): Reading and writing a UUID in its canonical and URN text forms. - [TimeOrdered](https://rux-lang.dev/raw/docs/api/uuid/time-ordered.md): A version 7 UUID: the current time in its leading bits, entropy in the rest. - [Crypto](https://rux-lang.dev/raw/docs/api/crypto.md): Cryptographic hashes, message authentication codes and key derivation - [Digest](https://rux-lang.dev/raw/docs/api/crypto/digest.md): An incremental digest. - [Blake3](https://rux-lang.dev/raw/docs/api/crypto/blake3.md): An incremental BLAKE3 hash. - [Hmac](https://rux-lang.dev/raw/docs/api/crypto/hmac.md): An incremental HMAC over any digest. - [LegacyMd5](https://rux-lang.dev/raw/docs/api/crypto/legacy-md5.md): An incremental MD5. - [LegacySha1](https://rux-lang.dev/raw/docs/api/crypto/legacy-sha1.md): An incremental SHA-1. - [Sha256](https://rux-lang.dev/raw/docs/api/crypto/sha256.md): An incremental SHA-256 or SHA-224. - [Sha3](https://rux-lang.dev/raw/docs/api/crypto/sha3.md): An incremental SHA-3 hash at any of its four sizes. - [Sha512](https://rux-lang.dev/raw/docs/api/crypto/sha512.md): An incremental SHA-512, SHA-384, SHA-512/224 or SHA-512/256. - [Shake](https://rux-lang.dev/raw/docs/api/crypto/shake.md): An extendable-output function: absorb a message, then read as many bytes as wanted. - [Hkdf](https://rux-lang.dev/raw/docs/api/crypto/hkdf.md): Extract and expand in one call: the whole of HKDF. - [Secrets](https://rux-lang.dev/raw/docs/api/crypto/secrets.md): Comparing secrets in constant time and wiping them so the compiler cannot skip it. - [C](https://rux-lang.dev/raw/docs/api/c.md): C standard library bindings - [timespec](https://rux-lang.dev/raw/docs/api/c/timespec.md): The public timespec data layout. - [tm](https://rux-lang.dev/raw/docs/api/c/tm.md): C's tm: a calendar time broken into its components. - [Types](https://rux-lang.dev/raw/docs/api/c/types.md): C's scalar types under their C names, sized for the current target. - [Mathematics](https://rux-lang.dev/raw/docs/api/c/math.md): C's : the elementary functions and the special floating-point values. - [General utilities](https://rux-lang.dev/raw/docs/api/c/stdlib.md): C's : allocation, number parsing, sorting, pseudo-random numbers and exit codes. - [Strings and memory](https://rux-lang.dev/raw/docs/api/c/string.md): C's : byte-string and raw memory operations. - [Time](https://rux-lang.dev/raw/docs/api/c/time.md): C's : calendar time, processor time and the conversions between them. - [errno](https://rux-lang.dev/raw/docs/api/c/errno.md): Reading C's thread-local errno, and which C runtime it lives in. - [Standard I/O](https://rux-lang.dev/raw/docs/api/c/stdio.md): C's : streams, formatted conversion and the constants that size them. - [Linux](https://rux-lang.dev/raw/docs/api/linux.md): Linux platform bindings - [Timespec](https://rux-lang.dev/raw/docs/api/linux/timespec.md): A duration or an instant, as seconds and nanoseconds. - [Types](https://rux-lang.dev/raw/docs/api/linux/types.md): Linux's scalar types for process, file and user identifiers. - [Directories and links](https://rux-lang.dev/raw/docs/api/linux/directories.md): The working directory, directory entries, removal, renaming and links. - [GetRandom](https://rux-lang.dev/raw/docs/api/linux/get-random.md): Fills up to length bytes of buffer with unpredictable bytes. - [Process](https://rux-lang.dev/raw/docs/api/linux/process.md): Ending the process and asking its identifier. - [Name resolution](https://rux-lang.dev/raw/docs/api/linux/resolve.md): getaddrinfo and the list of addresses it returns. - [Starting processes](https://rux-lang.dev/raw/docs/api/linux/spawn.md): posix_spawn and its file actions, and waiting for and signalling a child. - [System calls](https://rux-lang.dev/raw/docs/api/linux/syscalls.md): The raw system-call entry points and the call numbers they take. - [Threads](https://rux-lang.dev/raw/docs/api/linux/thread.md): POSIX threads: starting, joining and detaching them, their stack size, and the processor count. - [Clocks](https://rux-lang.dev/raw/docs/api/linux/clock.md): Reading clocks and sleeping. - [Dynamic loading](https://rux-lang.dev/raw/docs/api/linux/dynamic.md): The mode flags dlopen takes. - [Errors](https://rux-lang.dev/raw/docs/api/linux/errors.md): The error numbers, and telling a raw result from an error. - [Files](https://rux-lang.dev/raw/docs/api/linux/files.md): Opening, reading, writing and inspecting files through descriptors. - [Futexes](https://rux-lang.dev/raw/docs/api/linux/futex.md): Waiting on a word and waking its waiters through futex. - [Memory](https://rux-lang.dev/raw/docs/api/linux/memory.md): Mapping, protecting and advising on pages of memory. - [Polling](https://rux-lang.dev/raw/docs/api/linux/poll.md): Descriptor flags and the epoll calls a poller waits with. - [Sockets](https://rux-lang.dev/raw/docs/api/linux/socket.md): Address families, socket types and options, and the calls that open, bind and connect sockets. - [FreeBSD](https://rux-lang.dev/raw/docs/api/freebsd.md): FreeBSD platform bindings - [Timespec](https://rux-lang.dev/raw/docs/api/freebsd/timespec.md): A duration or an instant, as seconds and nanoseconds. - [Types](https://rux-lang.dev/raw/docs/api/freebsd/types.md): FreeBSD's scalar types for process, file and user identifiers. - [Directories and links](https://rux-lang.dev/raw/docs/api/freebsd/directories.md): The working directory, directory entries, removal, renaming and links. - [GetRandom](https://rux-lang.dev/raw/docs/api/freebsd/get-random.md): Fills up to length bytes of buffer with unpredictable bytes. - [Process](https://rux-lang.dev/raw/docs/api/freebsd/process.md): Ending the process and asking its identifier. - [Name resolution](https://rux-lang.dev/raw/docs/api/freebsd/resolve.md): getaddrinfo and the list of addresses it returns. - [Starting processes](https://rux-lang.dev/raw/docs/api/freebsd/spawn.md): posix_spawn and its file actions, and waiting for and signalling a child. - [System calls](https://rux-lang.dev/raw/docs/api/freebsd/syscalls.md): The raw system-call entry points and the call numbers they take. - [Threads](https://rux-lang.dev/raw/docs/api/freebsd/thread.md): POSIX threads: starting, joining and detaching them, their stack size, and the processor count. - [Clocks](https://rux-lang.dev/raw/docs/api/freebsd/clock.md): Reading clocks and sleeping. - [Dynamic loading](https://rux-lang.dev/raw/docs/api/freebsd/dynamic.md): The mode flags dlopen takes. - [Errors](https://rux-lang.dev/raw/docs/api/freebsd/errors.md): The error numbers, and telling a raw result from an error. - [Files](https://rux-lang.dev/raw/docs/api/freebsd/files.md): Opening, reading, writing and inspecting files through descriptors. - [Memory](https://rux-lang.dev/raw/docs/api/freebsd/memory.md): Mapping, protecting and advising on pages of memory. - [Polling](https://rux-lang.dev/raw/docs/api/freebsd/poll.md): Descriptor flags and the kqueue filters a poller waits with. - [Sockets](https://rux-lang.dev/raw/docs/api/freebsd/socket.md): Address families, socket types and options, and the calls that open, bind and connect sockets. - [Address waits](https://rux-lang.dev/raw/docs/api/freebsd/umtx.md): Waiting on a word and waking its waiters through _umtx_op. - [macOS](https://rux-lang.dev/raw/docs/api/macos.md): macOS platform bindings - [Timespec](https://rux-lang.dev/raw/docs/api/macos/timespec.md): A duration or an instant, as seconds and nanoseconds. - [Timeval](https://rux-lang.dev/raw/docs/api/macos/timeval.md): A duration or an instant, as seconds and microseconds. - [Types](https://rux-lang.dev/raw/docs/api/macos/types.md): macOS's scalar types for process, file and user identifiers. - [Clocks](https://rux-lang.dev/raw/docs/api/macos/clock.md): Reading clocks and sleeping. - [Directories and links](https://rux-lang.dev/raw/docs/api/macos/directories.md): The working directory, directory entries, removal, renaming and links. - [GetRandom](https://rux-lang.dev/raw/docs/api/macos/get-random.md): Fills length bytes of buffer with unpredictable bytes. - [Process](https://rux-lang.dev/raw/docs/api/macos/process.md): Ending the process and asking its identifier. - [Name resolution](https://rux-lang.dev/raw/docs/api/macos/resolve.md): getaddrinfo and the list of addresses it returns. - [Starting processes](https://rux-lang.dev/raw/docs/api/macos/spawn.md): posix_spawn and its file actions, and waiting for and signalling a child. - [Threads](https://rux-lang.dev/raw/docs/api/macos/thread.md): POSIX threads: starting, joining and detaching them, their stack size, and the processor count. - [Dynamic loading](https://rux-lang.dev/raw/docs/api/macos/dynamic.md): libSystem, and the mode flags dlopen takes. - [Errors](https://rux-lang.dev/raw/docs/api/macos/errors.md): The error numbers, and telling a raw result from an error. - [Files](https://rux-lang.dev/raw/docs/api/macos/files.md): Opening, reading, writing and inspecting files through descriptors. - [Memory](https://rux-lang.dev/raw/docs/api/macos/memory.md): Mapping, protecting and advising on pages of memory. - [Polling](https://rux-lang.dev/raw/docs/api/macos/poll.md): Descriptor flags and the kqueue filters a poller waits with. - [Sockets](https://rux-lang.dev/raw/docs/api/macos/socket.md): Address families, socket types and options, and the calls that open, bind and connect sockets. - [Address waits](https://rux-lang.dev/raw/docs/api/macos/ulock.md): Waiting on a word and waking its waiters through ulock_wait and ulock_wake. - [Windows](https://rux-lang.dev/raw/docs/api/windows.md): Windows platform bindings - [CodePage](https://rux-lang.dev/raw/docs/api/windows/code-page.md): The CodePage values exposed by this package. - [CreationDisposition](https://rux-lang.dev/raw/docs/api/windows/creation-disposition.md): The CreationDisposition values exposed by this package. - [FileTime](https://rux-lang.dev/raw/docs/api/windows/file-time.md): Win32's FILETIME: a count of 100-nanosecond ticks since the start of 1601, UTC. - [SystemInfo](https://rux-lang.dev/raw/docs/api/windows/system-info.md): What GetSystemInfo reports about the machine. - [SystemTime](https://rux-lang.dev/raw/docs/api/windows/system-time.md): Win32's SYSTEMTIME: a broken-down date and time, one field per component. - [Time zone](https://rux-lang.dev/raw/docs/api/windows/time-zone.md): The system's time zone rules, read through GetTimeZoneInformation. - [Types](https://rux-lang.dev/raw/docs/api/windows/types.md): The Win32 scalar and handle types. - [Win32FindDataA](https://rux-lang.dev/raw/docs/api/windows/win32-find-data-a.md): Win32's WIN32_FIND_DATAA: one directory entry, as FindFirstFileA and FindNextFileA fill it. - [Clocks](https://rux-lang.dev/raw/docs/api/windows/clock.md): Performance counters, system time and tick counts. - [Console](https://rux-lang.dev/raw/docs/api/windows/console.md): Allocating, reading and writing the console. - [File system](https://rux-lang.dev/raw/docs/api/windows/file-system.md): Deleting, copying and moving files, directories, attributes, search and links. - [Files](https://rux-lang.dev/raw/docs/api/windows/files.md): Opening, reading, writing and flushing files through handles. - [GetRandom](https://rux-lang.dev/raw/docs/api/windows/get-random.md): Fills length bytes of buffer with unpredictable bytes. - [Memory](https://rux-lang.dev/raw/docs/api/windows/memory.md): Heap allocation, virtual memory and raw memory operations. - [Processes and threads](https://rux-lang.dev/raw/docs/api/windows/process.md): Exiting, threads, waiting and loading libraries. - [Process control](https://rux-lang.dev/raw/docs/api/windows/process-control.md): Starting processes with CreateProcessW, their startup information, inherited handles and waits. - [Address waits](https://rux-lang.dev/raw/docs/api/windows/synch.md): WaitOnAddress and the calls that wake its waiters. - [Text conversion](https://rux-lang.dev/raw/docs/api/windows/text.md): Converting between code pages and UTF-16. - [Errors](https://rux-lang.dev/raw/docs/api/windows/errors.md): The last Win32 error and the codes it reports. - [Winsock](https://rux-lang.dev/raw/docs/api/windows/winsock.md): Starting Winsock, address families, sockets and their options, and name resolution. - [Regex](https://rux-lang.dev/raw/docs/api/regex.md): Regular expressions matched in linear time, with Unicode classes, captures, splitting and replacement - [Errors](https://rux-lang.dev/raw/docs/api/regex/error.md): Why a pattern was refused, and where in it. - [Regex](https://rux-lang.dev/raw/docs/api/regex/regex.md): A compiled regular expression: matching, finding, capturing, splitting and replacing, and escaping text to match it literally. - [Process](https://rux-lang.dev/raw/docs/api/process.md): The running process: its command-line arguments, environment, identifier and exit - [Captured output](https://rux-lang.dev/raw/docs/api/process/capture.md): What a program wrote and how it ended, kept by Command::Capture. - [Child processes](https://rux-lang.dev/raw/docs/api/process/child.md): A started program: waiting for it, killing it, and its standard streams. - [Commands](https://rux-lang.dev/raw/docs/api/process/command.md): Describing a program to start: its arguments, environment, working directory and standard streams. - [Arguments](https://rux-lang.dev/raw/docs/api/process/arguments.md): The command-line arguments the process was started with. - [Environment](https://rux-lang.dev/raw/docs/api/process/environment.md): Reading, setting and removing environment variables. - [Executable](https://rux-lang.dev/raw/docs/api/process/executable.md): The path of the file the process is running. - [Exit](https://rux-lang.dev/raw/docs/api/process/exit.md): Ending the process, and its identifier. - [CommandLine](https://rux-lang.dev/raw/docs/api/commandline.md): Declarative command-line parsing: options, positional arguments, subcommands and generated help - [CommandLineError](https://rux-lang.dev/raw/docs/api/commandline/command-line-error.md): Why the arguments did not match the command. - [Parsed](https://rux-lang.dev/raw/docs/api/commandline/parsed.md): Arguments that matched a command. - [Help](https://rux-lang.dev/raw/docs/api/commandline/help.md): Writing the help, usage and version text generated from a specification. - [Specification](https://rux-lang.dev/raw/docs/api/commandline/spec.md): Declaring a command: its flags, valued options, positional arguments, subcommands and version. - [Log](https://rux-lang.dev/raw/docs/api/log.md): Structured logging: levels, typed fields, text and JSON-lines records, a process-wide log for every thread, and log files that rotate by size - [Fields](https://rux-lang.dev/raw/docs/api/log/field.md): Typed key-value fields that a record carries. - [Levels](https://rux-lang.dev/raw/docs/api/log/level.md): The severity levels, their names, and the level compiled into a build. - [Logger](https://rux-lang.dev/raw/docs/api/log/logger.md): A logger over any writer: levels, context fields and timestamps. - [Records](https://rux-lang.dev/raw/docs/api/log/record.md): The formats a log record is written in: text or JSON lines. - [RotatingFile](https://rux-lang.dev/raw/docs/api/log/rotating-file.md): A log file that starts afresh before a write would take it past a size. - [RotatingStream](https://rux-lang.dev/raw/docs/api/log/rotating-stream.md): A stored borrow of a RotatingFile that speaks Writer, for a Logger to keep. - [Process-wide log](https://rux-lang.dev/raw/docs/api/log/global.md): The log every thread shares, written to standard error. - [TimeZone](https://rux-lang.dev/raw/docs/api/timezone.md): Time zones: the tz database, POSIX rules, the local zone, and local times that happen twice or never - [Errors](https://rux-lang.dev/raw/docs/api/timezone/error.md): Why a time zone could not be loaded. - [Time zones](https://rux-lang.dev/raw/docs/api/timezone/zone.md): A place's rules: loading them, and converting between UTC and local time. - [Net](https://rux-lang.dev/raw/docs/api/net.md): Networking: IP and socket addresses, TCP listeners and streams, UDP sockets, and name resolution - [Addresses](https://rux-lang.dev/raw/docs/api/net/address.md): IPv4, IPv6 and socket addresses: reading them, writing them and classifying them. - [Poller](https://rux-lang.dev/raw/docs/api/net/poller.md): Waits on many sockets at once. - [Resolver](https://rux-lang.dev/raw/docs/api/net/resolver.md): Asks name servers for a host's addresses. - [TCP](https://rux-lang.dev/raw/docs/api/net/tcp.md): Listeners that accept connections, and the streams they produce. - [UDP](https://rux-lang.dev/raw/docs/api/net/udp.md): Datagram sockets and the datagrams they receive. - [Name resolution](https://rux-lang.dev/raw/docs/api/net/resolve.md): The addresses a host name resolves to. - [Test](https://rux-lang.dev/raw/docs/api/test.md): Unit tests: checks with readable failures, and the runner that #Test() functions are gathered into - [Failures](https://rux-lang.dev/raw/docs/api/test/failure.md): The failure a test returns, and skipping a test. - [Runner](https://rux-lang.dev/raw/docs/api/test/runner.md): Running a table of tests with filters, as the generated test runner does. - [Benchmarks](https://rux-lang.dev/raw/docs/api/test/benchmark.md): Measuring how long code takes per iteration, and keeping its results alive. - [Checks](https://rux-lang.dev/raw/docs/api/test/expect.md): Checks that return a readable failure: equality, nearness, text, optionals and outcomes. - [Thread](https://rux-lang.dev/raw/docs/api/thread.md): Threads of execution: starting, joining and detaching them, and asking about the current one - [Errors](https://rux-lang.dev/raw/docs/api/thread/error.md): Why a thread could not be started. - [Starting threads](https://rux-lang.dev/raw/docs/api/thread/spawn.md): Starting a thread on a context, its options, and joining it for its result. - [The current thread](https://rux-lang.dev/raw/docs/api/thread/current.md): Its identifier, giving way to other threads, and how many can run at once. - [Atomic](https://rux-lang.dev/raw/docs/api/atomic.md): Values that threads share without a lock: atomic integers, flags and pointers - [Atomic](https://rux-lang.dev/raw/docs/api/atomic/atomic.md): One value that threads read and change without a lock. - [Sync](https://rux-lang.dev/raw/docs/api/sync.md): Locks, conditions, once-only initialization, semaphores, barriers, wait groups and channels for threads - [Channels](https://rux-lang.dev/raw/docs/api/sync/channel.md): Bounded queues that carry values from thread to thread. - [Counters](https://rux-lang.dev/raw/docs/api/sync/counters.md): Semaphores, barriers and wait groups. - [Locks](https://rux-lang.dev/raw/docs/api/sync/lock.md): A plain lock, and running an initialization exactly once. - [Mutexes](https://rux-lang.dev/raw/docs/api/sync/mutex.md): A value one thread at a time may reach, and the conditions threads wait on while holding it. - [Reader-writer locks](https://rux-lang.dev/raw/docs/api/sync/rw-lock.md): A value many threads may read at once, or one may write. - [Encoding](https://rux-lang.dev/raw/docs/api/encoding.md): Hexadecimal, Base64, Base32, Base58 and percent-encoding of byte sequences - [DecodeError](https://rux-lang.dev/raw/docs/api/encoding/decode-error.md): Why text could not be decoded. - [Streams](https://rux-lang.dev/raw/docs/api/encoding/stream.md): Encoding and decoding through a writer or a reader, a block at a time. - [Base32](https://rux-lang.dev/raw/docs/api/encoding/base32.md): Base32 in the RFC 4648 and Crockford alphabets. - [Base58](https://rux-lang.dev/raw/docs/api/encoding/base58.md): Base58 in the Bitcoin alphabet, which leaves out look-alike characters. - [Base64](https://rux-lang.dev/raw/docs/api/encoding/base64.md): Base64 in its standard and URL-safe alphabets, with or without padding, and a view that prints it. - [Hexadecimal](https://rux-lang.dev/raw/docs/api/encoding/hex.md): Bytes as hexadecimal digits in either case, and a view that prints them. - [Percent-encoding](https://rux-lang.dev/raw/docs/api/encoding/percent.md): Percent-encoding bytes for URLs, with the set of characters left as they are. - [Url](https://rux-lang.dev/raw/docs/api/url.md): URLs: parsing, normalizing and resolving them, and reading and building their queries - [Errors](https://rux-lang.dev/raw/docs/api/url/error.md): Why a URL could not be parsed. - [Query strings](https://rux-lang.dev/raw/docs/api/url/query.md): Reading and building the name-value pairs of a query. - [URLs](https://rux-lang.dev/raw/docs/api/url/url.md): Parsing a URL into its parts and reading them back. - [Compress](https://rux-lang.dev/raw/docs/api/compress.md): Deflate compression in the raw, zlib and gzip formats, as streams and for whole buffers - [Compressing](https://rux-lang.dev/raw/docs/api/compress/deflate.md): A writer that compresses what is written through it. - [Formats and levels](https://rux-lang.dev/raw/docs/api/compress/format.md): The raw, zlib and gzip formats, and the compression levels. - [Decompressing](https://rux-lang.dev/raw/docs/api/compress/inflate.md): A reader that decompresses a stream as it is read. - [Whole buffers](https://rux-lang.dev/raw/docs/api/compress/buffers.md): Compressing and decompressing a whole buffer in one call. - [NanoId](https://rux-lang.dev/raw/docs/api/nanoid.md): Short, URL-safe, unpredictable identifiers in the Nano ID format - [NanoId](https://rux-lang.dev/raw/docs/api/nanoid/nano-id.md): A Nano ID of the standard form: twenty-one characters from NanoIdAlphabet. - [NanoIdError](https://rux-lang.dev/raw/docs/api/nanoid/nano-id-error.md): Why an identifier could not be generated. - [Generating](https://rux-lang.dev/raw/docs/api/nanoid/generate.md): Generating an identifier into a buffer of your own, from any alphabet and entropy source. - [Alphabets](https://rux-lang.dev/raw/docs/api/nanoid/alphabet.md): The default alphabet and length, and checking a custom alphabet. - [API Reference](https://rux-lang.dev/raw/docs/api.md): Reference documentation for the Rux standard packages — the foundation, text, collection, system and data-format packages, cryptography, and the platform bindings for C, Linux, FreeBSD, macOS and Windows. ## Notes - Rux is pre-1.0 and newer than most training data: prefer these pages over what similar languages do. - Complete example programs for every lesson live at https://github.com/rux-lang/Examples.