Releases: uiua-lang/uiua
Releases · uiua-lang/uiua
latest
0.16.2
0.16.2 - 2025-05-21
Interpreter
- Fix a formatter bug
0.16.1
0.16.0
0.16.0 - 2025-05-18
You can find the release announcement here.
Language
- Breaking Change -
rows ≡
numeric subscripts now function identically toeach ∵
's specifying the rank to operate at - Breaking Change -
repeat ⍥
anddo ⍢
now accumulate excess values into arrays if their function has more outputs than arguments- This makes a lot of accumulation patterns much shorter and simpler
- These loops now always have well-defined signatures
- This breaks the common pattern of wrapping these loops in
[]
s, which is now unnecessary and will need to be changed in your code
- Breaking Change -
fill ⬚
edscan \\
no longer uses the fill value as the first row - Breaking Change -
fft
now works along every axis of an array rather than only its last- This is more consistent with other functions
- Breaking Change - Overhaul number literals
- Literals involving
eta η
,pi π
,tau τ
, ande
may now have a leading coefficient in addition to a denominator, and the symbol may be in the denominator- Examples:
2π
,3π/4
,1/τ
,1.5η
,3e
- Examples:
- Add complex literals
- The real and imaginary parts are suffixed with
r
andi
respectively. Both can be used alone. - Work with fractions and other constants above
- Examples:
3r4i
,5i
,πi/2
- The real and imaginary parts are suffixed with
- Literals involving
- Breaking Change - Special casing for
un °
backward ˜
join ⊂
has been removed - There are no longer signature restrictions on
try ⍣
's functions - Allow for mixed numeric and sided subscripts
- Implemented for
both ∩
,rows ≡
, andinventory ⍚
- Implemented for
- Stabilize sided subscripts for
rows ≡
andinventory ⍚
- Stabilize
un °
under ⍜
for monadic functions - Add
un °
group ⊕
andun °
partition ⊜
for monadic functions - Stabilize
negate ¯
subscripts - Stabilize
base ⊥
- Stabilize
fft
- Stabilize inline macros
- The first argument to
rotate ↻
can now be rank > 1.- This creates an array with multiple copies of the target array rotated by different amounts
- Output comments now show values on the stack after their line rather than before it
- Add
un °
fill ⬚
edtake ↙
- Add
un °
add +
,un °
multiply ×
andun °
divide ÷
- These split into fraction and whole, sign and magnitude, and denominator and numerator respectively
- Add
un °
inverses forreduce /
with a dyadic function (when the function is invertible) - Functions can now contains scoped local bindings
- This allows for simple helper functions as well as passing bindings to macros
- Give
base ⊥
a glyph - Add the
ln
function, which computes the natural logarithm - Add the
pretty
function, which gives the string representation of an array's pretty-printed output - Add numeric subscripts for
length ⧻
to get the length of a specific axis - Add numeric subscripts for
shape △
to get the shape of the first few axes - Add numeric subscripts for
range ⇡
to offset the range - Add support for mixed numeric and sided subscripts
- Greeks rejoice!
η
,π
, andτ
can now be used in names (just not as the first letter) - Add
apng
and&apngs
functions for encoding and showing APNG animations - Deprecate
with ⤙
andoff ⤚
on noadic and monadic functions- There was a lot of disagreement about what the behavior should be
- They made the movement of data on the stack harder to follow
- Breaking Change - Change how
off ⤚
works on monadic functions- This change was made before deprecation was decided
- Deprecate various environment-relate constants and replace them with noadic functions
- This prevents the details of the compiling environment being used instead of the details from the actual running environment
- Deprecrated:
Os
,Family
,Arch
,ExeExt
,DllExt
,Sep
,NumProcs
- Replacements:
os
,osfamily
,arch
,exeext
,dllext
,pathsep
,numprocs
- Add experimental
evert ⧋
modifier for operating on the last axes of arrays. - Add experimental
occurrences ⧆
for marking each row in an array with its occurent count - Add experimental
progressive indexof ⊘
for finding sequential indices of each row of an array in another - Add experimental lexical ordering syntax
- This enables some function packs and array notation to execute in the order they are normally read
- Add experimental sided
fill ⬚
- This allows filling from the left instead of the right
- Add experimental
voxels
function, which orthographically projects a 3D voxel array to an image - Add experimental
bytes
function for encoding and decoding byte arrays - Remove previously deprecated
around ’
- Remove previously deprecated
astar
- Remove previously deprecated
trace ⸮
Interpreter
- Improve pretty-printed array layout
- High-rank arrays take up less vertical space and more horizontal space
- Box arrays take up less space
- Complex arrays are now compatible with image and GIF functions and will display as such automatically in the pad
- Each pixel is colored via a domain coloring function
- Remove errors when a line is too long
- The formatter will now allow putting multiple function pack branches on a single line
- Optimizations
stencil ⧈
is now optimized when used with with monadic functions that are optimized forrows ≡
- Add sortedness flags to arrays to allow short-circuiting some operations
- Optimize
tuples ⧅
with⋅⋅1
and⋅⧻
- The main sorting algorith for
sort ⍆
is now implemented in the interpreter source code rather than a library- This allows it to sort arrays in place without allocating memory
- Observed performance improvements of ~2.5x
sort ⍆
on lists of bytes now uses counting sort, for massive performance improvements
- LSP improvements
- Completions now properly respect scoping
- Unused private bindings are now dimmed
- Images in the native output window can now be easily copied to the clipboard
- Add an
-x
/--experimental
flag to theuiua repl
command to pre-enable experimental features
0.16.0-rc.1
You can find the working changelog here.
0.16.0-dev.2
You can find the working changelog here.
0.16.0-dev.1
You can find the working changelog here.
0.15.1
0.15.1 - 2025-04-06
Interpreter
- Fix builds on some systems
0.15.0
0.15.0 - 2025-04-03
You can find the release announcement here.
Language
- Breaking Change -
repeat ⍥
anddo ⍢
with net-negative signatures now preserve lower stack values between iterations - Breaking Change -
atangent ∠
now interacts withunder ⍜
similarly tocouple ⊟
andcomplex ℂ
- Add subscripted
on ⟜
,by ⊸
,with ⤙
, andoff ⤚
- These preserve N arguments rather than just the first or last
- Add data definition methods
- Stabilize most of data definitions
- A new section has been added to the tutorial
- Things not stabilized:
- Data functions
- Methods
- Field validators
- Stabilize subscripted
random ⚂
- Signature comments can now use a
$
rather than a?
to automatically label arguments and outputs - Change
backward ˜
's glyph back.𝄈
will continue to work and will be formatted as˜
.- This glyph has much better font support
- Stabilize
backward ˜
- Add
anti ⌝
keep ▽
for parity withselect ⊏
- Add subscripts for
bits ⋯
to force the number of bits - Allow
tuples ⧅
to takeinfinity ∞
as a first argument - Deprecate
over ,
- Stabilize sided subscripts for
both ∩
andbracket ⊓
- Add
un °
with ⤙
andun °
off ⤚
- Add sided subscripts for
reach 𝄐
- Add the
# External!
semantic comment to mark functions that are provided via Rust code- These functions don't require a Uiua implementation and will show up in the LSP
- Calling an
# External!
function that hasn't been bound will throw an error
- Add experimental
self ˙
modifier - Add experimental subscripts to
negate ¯
- This will
multiply ×
a number by the Nth root of unity
- This will
- Remove
&clget
alias for&clip
- Remove previously deprecated
&httpsw
Interpreter
- Add
UIUA_MAX_MB
environment variable to set the maximum size of an array in megabytes- This allows catching memory errors on different systems
- Optimize
absolute value ⌵
complex ℂ
to not create intermediatecomplex ℂ
array
Website
- Add an expanded mode to the pad. Click the ⤢ button to toggle it.
- Change pad icons
- Add new Data Definitions tutorial
- Add a Format String Tricks section to the Working with Strings tutorial
0.15.0-rc.2
You can find the working changelog here.