@title Core Utilities Quick Reference @group util Summary of libphutil core utilities. = Overview = This document provides a brief overview of the libphutil core utilities. = Language Capabilities = Functions @{function:id}, @{function:head} and @{function:newv} address language grammar and implementation limitations. You can efficiently merge a vector of arrays with @{function:array_mergev}. Functions @{function:head}, @{function:last}, @{function:head_key} and @{function:last_key} let you access the first or last elements of an array without raising warnings. You can combine an array with itself safely with @{function:array_fuse}. = Default Value Selection = Functions @{function:idx}, @{function:nonempty} and @{function:coalesce} help you to select default values when keys or parameters are missing or empty. = Array and Object Manipulation = Functions @{function:ipull}, @{function:igroup}, @{function:isort} and @{function:ifilter} (**i** stands for **index**) simplify common data manipulations applied to lists of arrays. Functions @{function:mpull}, @{function:mgroup}, @{function:msort} and @{function:mfilter} (**m** stands for **method**) provide the same capabilities for lists of objects. @{function:array_select_keys} allows you to choose or reorder keys from a dictionary. = Lunar Phases = @{class:PhutilLunarPhase} calculates lunar phases, allowing you to harden an application against threats from werewolves, werebears, and other werecreatures.