Releases: uiua-lang/uiua
Releases · uiua-lang/uiua
0.14.1
0.14.0
0.14.0 - 2024-12-20
Language
- Breaking Change: Multi-argument
group ⊕
andpartition ⊜
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 ⬚
edscan \\
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
- This makes a lot of common
- Breaking Change: Negative indices to
pick ⊡
andselect ⊏
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 ⍚
, andeach ∵
now support subscriptsdeshape ♭
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)
- It was basically always used with a static rank, and that functionality has been subsumed by subscripted
- Add the
stencil ⧈
modifier, which is a generalization ofwindows ◫
get
,has
, andremove
now support working on multiple key-value pairs at once- Deprecate
trace ⸮
- 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 - Add the
A₁
,A₂
,A₃
,C₂
,C₃
, andE₃
constants which are various kinds of adjacency offsets- They are great for working with
path
- They are great for working with
- 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 usefill ⬚
to fill in new dimensionsun °
reduce /
(format string) now splits a string by a delimiterdo ⍢
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 withrepeat ⍥
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
- You can type it as
- 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
andsignature
modifiers in favor of inline code macros
- Deprecate the experimental
- 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∊
.
- As planned,
- Remove the previously deprecated experimental
⟔ coordinate
function - Remove the previously deprecated experimental
struct
modifier - Remove the previously deprecated
setinv
andsetund
modifiers - Remove the previously deprecated
choose
andpermute
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 theuiua 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
- Add a new pad setting to show line values to the right of the code
- Add Subscripts page
- Update More Stack Manipulation and More Array Manipulation tutorials to include subscripts
- Change their titles from "Advanced" to "More"
- Add new Idioms page
0.14.0-rc.3
You can find the working changelog here.
0.14.0-rc.2
You can find the working changelog here.
0.14.0-rc.1
You can find the working changelog here.
0.14.0-dev.7
You can find the working changelog here.
0.14.0-dev.6
You can find the working changelog here.
0.14.0-dev.5
You can find the working changelog here.
0.14.0-dev.4
You can find the working changelog here.
0.14.0-dev.3
You can find the working changelog here.