Releases
0.14.0
0.14.0 - 2024-12-20
Language
Breaking Change : Multi-argument group ⊕
and partition ⊜
no longer do reduction. Instead, multiple groups are passed to the function.
The reducing versions were rarely used
This new behavior is more useful
Breaking Change : un °
json
no longer attempts to form multidimensional arrays
This makes deserializing JSON more consistent
Breaking Change : fill ⬚
ed scan \\
now sets the initial value as well as filling row shapes
This behavior is hard to get otherwise
Fixes to existing code should be simple
Breaking Change : obverse ⌅
with a single function now just nullifies the inverse
This makes a lot of common under ⍜
patterns much simpler
Breaking Change : Negative indices to pick ⊡
and select ⊏
now always use a fill value if available
Stabilize subscripts !
They make available a lot of nice functionality
Allow negative subscripts
Add experimental sided subscripts
rows ≡
, inventory ⍚
, and each ∵
now support subscripts
deshape ♭
now supports subscripts
Axes are collapsed to get the given rank
Deprecate rerank ☇
It was basically always used with a static rank, and that functionality has been subsumed by subscripted deshape ♭
and/or the iterating modifiers listed above
The dynamic behavior can still be accessed with °⊸(⧻△)
(though when you would need this is unclear)
Add the stencil ⧈
modifier, which is a generalization of windows ◫
⧈∘
is equivalent to windows ◫
windows ◫
has been deprecated. All existing uses will continue to work and will be formatted as ⧈∘
.
get
, has
, and remove
now support working on multiple key-value pairs at once
Deprecate trace ⸮
It is equivalent to subscripted stack ?
Sequential ?
s, which formatted to trace ⸮
s, now format to subscripted stack ?
Stabilize tuples ⧅
Stabilize sort ⍆
Sorting is a very common operation, and it's useful to have such simple access to it
Stabilize last ⊣
Getting the last row is a very common operation
Stabilize case ⍩
Add the path
modifier, which finds shortest paths
Replaces and deprecates astar
astar
's functionality is still available via path
with a function pack
Add the A₁
, A₂
, A₃
, C₂
, C₃
, and E₃
constants which are various kinds of adjacency offsets
They are great for working with path
Declared signatures that do not match the inferred signature will now cause a warning rather than an error
The function is edited to make the signature correct
orient ⤸
can now use fill ⬚
to fill in new dimensions
un °
reduce /
(format string) now splits a string by a delimiter
do ⍢
now runs its functions at least once, even if their signatures are invalid
This is helpful when initially setting up a loop
un °
now works with repeat ⍥
without a repetition count
This counts the number of repetitions required to converge
Add an ε
shadowable constant for the machine epsilon
You can type it as \\epsilon
Other greek letters can also by typed this way
Add &ep
and &epf
system functions for easier printing to stderr
Functions that work with audio such as audio
now treat the first axis as samples and the second axis as channels
Add # Deprecated!
semantic comments
Change backward 𝄈
's glyph to 𝄈
. Code using ˜
will continue to work and will be formatted as 𝄈
.
Add the experimental or ∨
function
It has a useful reduction identity
It is also GCD
Add experimental inline macros
Deprecate the experimental stringify
and signature
modifiers in favor of inline code macros
Add experimental binary
function, which encodes and decodes arrays into a compact binary representation
Add experimental &b
function, which pauses execution and prints the stack
Remove the previously deprecated member ∊
function
As planned, memberof ∊
's glyph has been changed, and the old one will format to ∊
.
Remove the previously deprecated experimental ⟔ coordinate
function
Remove the previously deprecated experimental struct
modifier
Remove the previously deprecated setinv
and setund
modifiers
Remove the previously deprecated choose
and permute
functions
Remove the previously deprecated experimental ◹ triangle
modifier
Remove the previously deprecated experimental ⑄ chunks
function
Interpreter
The compiler and interpreter have been almost entirely rewritten to use a tree-based execution model rather than a bytecode model
This massively simplifies compilation as well as optimizations and the derivation of inverses
This should not affect any language semantics
Improve pattern matching error messages
Optimize the "root" pattern ⁿ%:1
Optimize format strings applied to strings or boxed strings
Optimize common partition ⊜
patterns
Add an -e
/--experimental
flag to the uiua eval
command to enable experimental features
Add the uiua check
command, which checks that Uiua files compile
More system functions are now run for output comments
Improve formatting of more complex arrays with format strings and &p
Website
You can’t perform that action at this time.