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