@@ -1,2 +1,2 @@
-// package bufio implements buffered I/O. It wraps an `io.Stream` interface to provide buffering.
+// Wraps an `io.Stream` interface to provide buffered I/O.
package bufio
@@ -1,4 +1,4 @@
-// package bytes implements procedures for manipulation of byte slices.
+// Procedures for manipulation of `[]byte` slices.
package bytes
import "base:intrinsics"
-// package c just defines the basic types used by C programs.
+// Defines the basic types used by `C` programs for foreign function and data structure interop.
package c
import builtin "base:builtin"
-// package libc declares the commonly used things in "libc" (C standard library).
+// Declares the commonly used things in `libc` (`C` standard library).
package libc
-// package compress is a collection of utilities to aid with other compression packages.
+// A collection of utilities to aid with other `compress`ion packages.
package compress
/*
-// package gzip implements a small GZIP unpacker as an example.
+// A small `GZIP` unpacker.
package compress_gzip
Copyright 2021 Jeroen van Rijn <[email protected]>.
@@ -1,2 +0,0 @@
-// package shoco is an implementation of the shoco short string compressor.
-package compress_shoco
+// `Shoco` short string compression and decompression.
package compress_shoco
-// package zlib implements Deflate decompression.
+// `Deflate` decompression of raw and `ZLIB`-type streams.
package compress_zlib
@@ -1,8 +1,4 @@
-/*
-package avl implements an AVL tree.
-
-The implementation is non-intrusive, and non-recursive.
-*/
+// A non-intrusive and non-recursive implementation of `AVL` trees.
package container_avl
@(require) import "base:intrinsics"
-// package bit_array implements a dynamically-sized array of bits.
+// A dynamically-sized array of bits.
package container_dynamic_bit_array
-// package list implements an intrusive doubly-linked list.
+// An intrusive doubly-linked list.
package container_intrusive_list
-// package lru implements an LRU cache. It automatically removes older entries if its capacity is reached.
-package container_lru
@@ -1,3 +1,4 @@
+// A least-recently-used (`LRU`) cache. It automatically removes older entries if its capacity is reached.
package container_lru
import "base:runtime"
-// package priority_queue implements a Priority Queue data structure.
-package container_priority_queue
+// A priority queue data structure.
package container_priority_queue
import "base:builtin"
-// package queue implements a dynamically resizable double-ended queue/ring-buffer.
-package container_queue
+// A dynamically resizable double-ended queue/ring-buffer.
package container_queue
-// package rbtree implements a red-black tree.
-package container_rbtree
+// A red-black tree with the same API as our AVL tree.
package container_rbtree
-// package small_array implements a dynamic array-like interface on a stack-allocated, fixed-size array.
+// A dynamic array-like interface on a stack-allocated, fixed-size array.
package container_small_array
-// package topological_sort implements a generic O(V+E) topological sorter.
-package container_topological_sort
@@ -1,11 +1,7 @@
+// A generic `O(V+E)` topological sorter implementation. This is the fastest known method for topological sorting.
+// Odin's map type is being used to accelerate lookups.
package container_topological_sort
- The following is a generic O(V+E) topological sorter implementation.
- This is the fastest known method for topological sorting and Odin's
- map type is being used to accelerate lookups.
_ :: intrinsics
@@ -1,6 +1,5 @@
-package aead implements a generic interface to Authenticated Encryption with Associated Data algorithms.
+A generic interface to Authenticated Encryption with Associated Data (`AEAD`) algorithms.
Both a one-shot and context based interface are provided, with similar
usage. If multiple messages are to be sealed/opened via the same key,
@@ -1,5 +1,5 @@
-package aegis implements the AEGIS-128L and AEGIS-256 AEAD algorithms.
+`AEGIS-128L` and `AEGIS-256` AEAD algorithms.
Where AEAD stands for Authenticated Encryption with Additional Data.
-package aes implements the AES block cipher and some common modes.
+The `AES` block cipher and some common modes.
See:
- [[ https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.197-upd1.pdf ]]
-package blake2b implements the BLAKE2b hash algorithm.
+`BLAKE2b` hash algorithm.
- [[ https://datatracker.ietf.org/doc/html/rfc7693 ]]
-package blake2s implements the BLAKE2s hash algorithm.
+`BLAKE2s` hash algorithm.
-package chacha20 implements the ChaCha20 and XChaCha20 stream ciphers.
+`ChaCha20` and `XChaCha20` stream ciphers.
- [[ https://datatracker.ietf.org/doc/html/rfc8439 ]]
-package chacha20poly1305 implements the CHACHA20_POLY1305 and XChaCha20_Poly1305 AEAD algorithms.
+`AEAD_CHACHA20_POLY1305` and `AEAD_XChaCha20_Poly1305` algorithms.
-// package crypto implements a selection of cryptography algorithms and useful helper routines.
+// A selection of cryptography algorithms and useful helper routines.
package crypto
-package deoxysii implements the Deoxys-II-256 Authenticated Encryption with Additional Data algorithm.
+`Deoxys-II-256` Authenticated Encryption with Additional Data (`AEAD`) algorithm.
- [[ https://sites.google.com/view/deoxyscipher ]]
- [[ https://thomaspeyrin.github.io/web/assets/docs/papers/Jean-etal-JoC2021.pdf ]]
-package ed25519 implements the Ed25519 EdDSA signature algorithm.
+`Ed25519` EdDSA signature algorithm.
- [[ https://datatracker.ietf.org/doc/html/rfc8032 ]]
-package hash provides a generic interface to the supported hash algorithms.
+A generic interface to the supported hash algorithms.
A high-level convenience procedure group `hash` is provided to easily
accomplish common tasks.
-package hkdf implements the HKDF HMAC-based Extract-and-Expand Key Derivation Function.
+`HKDF` HMAC-based Extract-and-Expand Key Derivation Function.
See: [[ https://www.rfc-editor.org/rfc/rfc5869 ]]
*/
-package hmac implements the HMAC MAC algorithm.
+`HMAC` message authentication code (`MAC`) algorithm.
- [[ https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.198-1.pdf ]]
-package kmac implements the KMAC MAC algorithm.
+`KMAC` message authentication code (`MAC`) algorithm.
- [[ https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-185.pdf ]]
-package keccak implements the Keccak hash algorithm family.
+`Keccak` hash algorithm family.
During the SHA-3 standardization process, the padding scheme was changed
thus Keccac and SHA-3 produce different outputs. Most users should use
-package md5 implements the MD5 hash algorithm.
+`MD5` hash algorithm.
WARNING: The MD5 algorithm is known to be insecure and should only be
used for interoperating with legacy applications.
-package sha1 implements the SHA1 hash algorithm.
+`SHA1` hash algorithm.
WARNING: The SHA1 algorithm is known to be insecure and should only be
-package pbkdf2 implements the PBKDF2 password-based key derivation function.
+`PBKDF2` password-based key derivation function.
See: [[ https://www.rfc-editor.org/rfc/rfc2898 ]]
-package poly1305 implements the Poly1305 one-time MAC algorithm.
+`Poly1305` one-time MAC algorithm.
-package ristretto255 implement the ristretto255 prime-order group.
+Ristretto255 prime-order group.
- [[ https://www.rfc-editor.org/rfc/rfc9496 ]]
-package sha2 implements the SHA2 hash algorithm family.
+`SHA2` hash algorithm family.
- [[ https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf ]]
-package sha3 implements the SHA3 hash algorithm family.
+`SHA3` hash algorithm family.
The SHAKE XOF can be found in crypto/shake. While discouraged if the
pre-standardization Keccak algorithm is required, it can be found in
-package shake implements the SHAKE and cSHAKE XOF algorithm families.
+`SHAKE` and `cSHAKE` XOF algorithm families.
The SHA3 hash algorithm can be found in the crypto/sha3.
-package siphash Implements the SipHash hashing algorithm.
+`SipHash` hashing algorithm.
Use the specific procedures for a certain setup. The generic procedures will default to Siphash 2-4.
-package sm3 implements the SM3 hash algorithm.
+`SM3` hash algorithm.
- [[ https://datatracker.ietf.org/doc/html/draft-sca-cfrg-sm3-02 ]]
-package tuplehash implements the TupleHash and TupleHashXOF algorithms.
+`TupleHash` and `TupleHashXOF` algorithms.
-package x25519 implements the X25519 (aka curve25519) Elliptic-Curve Diffie-Hellman key exchange protocol.
+`X25519` (aka `curve25519`) Elliptic-Curve Diffie-Hellman key exchange protocol.
- [[ https://www.rfc-editor.org/rfc/rfc7748 ]]
-package x448 implements the X448 (aka curve448) Elliptic-Curve Diffie-Hellman key exchange protocol.
+`X448` (aka `curve448`) Elliptic-Curve Diffie-Hellman key exchange protocol.
-// package pe implements a reader for the PE executable format for debug purposes.
+// A reader for the Windows `PE` executable format for debug purposes.
package debug_pe
-// package debug implements a stack trace library. Only works when debug symbols are enabled `-debug`.
+// Stack trace library. Only works when debug symbols are enabled using `-debug`.
package debug_trace
Example:
-package dynlib implements loading of shared libraries/DLLs and their symbols.
+Cross-platform loading of shared libraries/DLLs and their symbols.
The behaviour of dynamically loaded libraries is specific to the target platform of the program.
For in depth detail on the underlying behaviour please refer to your target platform's documentation.
+// `Base32` encoding and decoding, as specified in `RFC 4648`.
package encoding_base32
// Base32 encoding/decoding implementation as specified in RFC 4648.
-// package base32 implements Base32 encoding and decoding, as specified in RFC 4648.
-package encoding_base32
+// `Base64` encoding and decoding.
package encoding_base64
import "core:io"
-// package base64 implements Base64 encoding and decoding.
-package encoding_base64
-// package cbor implements encoding and decoding types from/into RCF 8949 compatible CBOR binary.
+// Encoding and decoding types from/into `RCF 8949` compatible `CBOR` binary.
package encoding_cbor
Package cbor encodes, decodes, marshals and unmarshals types from/into RCF 8949 compatible CBOR binary.
-package csv reads and writes comma-separated values (CSV) files.
+Reader and writer for comma-separated values (`CSV`) files, per `RFC 4180`.
This package supports the format described in [[ RFC 4180; https://tools.ietf.org/html/rfc4180.html ]]
- Package endian implements a simple translation between bytes and numbers with specific endian encodings.
+ A simple translation between bytes and numbers with specific endian encodings.
buf: [100]u8
- package entity implements a unicode `&entity;` encoder and decoder.
+ Encode and decode `rune`s to/from a Unicode `&entity;`.
This code has several procedures to map unicode runes to/from different textual encodings.
- SGML/XML/HTML entity
-// package hex implements encoding and decoding of hex-encoded binary, e.g. `0x23` -> `#`.
+// Encoding and decoding of hex-encoded binary, e.g. `0x23` -> `#`.
package encoding_hex
-package hxa implements Eskil Steenberg's HxA 3D asset interchange format.
+Eskil Steenberg's `HxA` 3D asset interchange format.
HxA is a interchangeable graphics asset format.
Designed by Eskil Steenberg. @quelsolaar / eskil 'at' obsession 'dot' se / www.quelsolaar.com
-// package ini implements a variant of the `.ini` file format with `key = value` entries in `[sections]`.
+// Reader and writer for a variant of the `.ini` file format with `key = value` entries in `[sections]`.
package encoding_ini
-// package json implements encoding and decoding JSON in strict JSON, JSON5 and BitSquid variants.
-package encoding_json
+// Encoding and decoding JSON in strict `JSON`, `JSON5` and `BitSquid` variants.
package encoding_json
import "core:strings"
-package uuid implements Universally Unique Identifiers according to RFC 4122, with additions from RFC 9562.
+Universally Unique Identifiers (`UUID`) according to `RFC 4122`, with additions from `RFC 9562`.
The UUIDs are textually represented and read in the following string format:
`00000000-0000-v000-V000-000000000000`
@@ -1,7 +1,6 @@
-package uuid/legacy implements versions 3 and 5 of UUID generation, both of
-which are using hashing algorithms (MD5 and SHA1, respectively) that are known
-these days to no longer be secure.
+Versions 3 and 5 of `UUID` generation, both of which use legacy (`MD5` + `SHA1`) hashes.
+Those are known these days to no longer be secure.
package uuid_legacy
-package varint implements LEB128 variable integer encoding and decoding, as used by DWARF & DEX files.
+`LEB128` variable integer encoding and decoding, as used by `DWARF` & `DEX` files.
Author of this Odin package: Jeroen van Rijn
-package xml implements a parser for a useful subset of the XML specification.
+A parser for a useful subset of the `XML` specification.
A from-scratch XML implementation, loosely modelled on the [[ spec; https://www.w3.org/TR/2006/REC-xml11-20060816 ]].
-package flags implements a command-line argument parser.
+Command-line argument parser.
It works by using Odin's run-time type information to determine where and how
to store data on a struct provided by the program. Type conversion is handled
-package fmt implements formatted I/O with procedures similar to C's printf and Python's format.
+Formatted `I/O` with procedures similar to `C`'s printf and `Python`'s format.
The format 'verbs' are derived from C's but simpler.
Printing
-// package hash implements crc32, crc64, adler32, djb, fnv, jenkins, murmur and other hashes.
+// `crc32`, `crc64`, `adler32`, `djb`, `fnv`, `jenkins`, `murmur` and other hashes.
package hash
-// package xxhash implements Yann Collet's xxhash.
+// Yann Collet's `xxhash`.
//
// [[ xxhash Fast Hash Algorithm; https://cyan4973.github.io/xxHash/ ]]
package xxhash
-// package bmp implements a Microsoft BMP image reader and writer.
+// Reader and writer for Microsoft `BMP` images.
package core_image_bmp
import "core:image"
-// package image implements a general 2D image library to be used with other image related packages.
+// General 2D image types and procedures to be used with other image related packages.
package image
-// package jpeg implements a reader for baseline JPEG images.
+// Reader for baseline `JPEG` images.
package jpeg
import "core:bytes"
-package netpbm implements readers and writers for PBM, PGM, PPM, PAM and PFM images.
+Readers and writers for `PBM`, `PGM`, `PPM`, `PAM` and `PFM` images.
Formats:
-package png implements a PNG image reader.
+Reader for `PNG` images.
The PNG specification is at [[ https://www.w3.org/TR/PNG/ ]].
-// package qoi implements a QOI image reader.
+// Reader and writer for `QOI` images.
// The QOI specification is at [[ https://qoiformat.org ]].
package qoi
-// package tga implements a TGA image reader and writer for 8-bit RGB and RGBA images.
+// Reader and writer for 8-bit RGB and RGBA `TGA` images.
package tga
-// package io provides basic interfaces for generic data stream primitives.
+// Basic interfaces for generic data stream primitives.
// The purpose of this package is wrap existing data structures and their
// operations into an abstracted stream interface.
package io
-// package log implements the context.Logger interface.
+// Implementations of the `context.Logger` interface.
package log
@@ -1,7 +0,0 @@
-// package big implements arbitrary precision integers and rationals.
-package math_big
-For the theoretical underpinnings, see Knuth's The Art of Computer Programming, Volume 2, section 4.3.
-The code started out as an idiomatic source port of libTomMath, which is in the public domain, with thanks.
+// Arbitrary precision integers and rationals.
package math_big
-// package bits implements bit-level operations, including the ability to set or toggle individual bits in an integer.
+// Bit-level operations, including the ability to set or toggle individual bits in an integer.
package math_bits
-// package cmplx implements trigonometric and other mathematic operations on complex numbers.
+// Trigonometric and other mathematic operations on complex numbers.
package math_cmplx
-// package ease implements easing procedures and flux easing used for animations.
+// Easing procedures and flux easing used for animations.
package ease
import "core:math"
-// package fixed implements fixed-point rational numbers and conversion to/from `f64`.
+// Fixed-point rational numbers and conversion to/from `f64`.
package math_fixed
-// package linalg implements linear algebra procedures useful for 3D spatial transformations.
+// Linear algebra procedures useful for 3D spatial transformations.
package linalg
-// package glsl implements a GLSL-like mathematics library plus numerous other utility procedures.
+// `GLSL`-like mathematics library plus numerous other utility procedures.
package math_linalg_glsl
-// package hlsl implements a HLSL-like mathematics library plus numerous other utility procedures.
+// `HLSL`-like mathematics library plus numerous other utility procedures.
package math_linalg_hlsl
-// package math implements typical trignometric and other basic math routines.
+// Typical trignometric and other basic math routines.
package math
- package noise implements the OpenSimplex2 noise algorithm.
+ `OpenSimplex2` noise algorithm.
Ported from [[ https://github.com/KdotJPG/OpenSimplex2 }].
Copyright 2022 Yuki2 [[ https://github.com/NoahR02 ]]
-// package rand implements various random number generators.
+// Random number generators.
package rand
-package mem implements various allocators and provides helpers for dealing with memory, pointers and slices.
+Various allocators and provides helpers for dealing with memory, pointers and slices.
The documentation below describes basic concepts, applicable to the `mem`
package.
-// package tlsf implements a Two Level Segregated Fit memory allocator.
+// Two Level Segregated Fit memory allocator.
package mem_tlsf
-package virtual implements a platform agnostic way to reserve/commit/decommit virtual memory.
+A platform agnostic way to reserve/commit/decommit virtual memory.
virtual.Arena usage
-package net implements cross-platform Berkeley Sockets, DNS resolution and associated procedures.
+Cross-platform Berkeley Sockets, `DNS` resolution and associated procedures.
Features:
- Supports Windows, Linux and OSX.