Releases: uiua-lang/uiua
Releases · uiua-lang/uiua
0.13.0
0.13.0 - 2024-10-21
You can find the release announcement here.
Language
- Breaking Change -
minimum ↧
andmaximum ↥
now compare boxes lexicographically- This makes them consistent with comparison functions like
less than <
- This makes them consistent with comparison functions like
- Breaking Change -
gen
now takes a shape argument and no longer outputs a new seed - Breaking Change -
&clip
now unifies&clget
and&clset
- Breaking Change -
type
numbers are now:0
for normal numbers1
for characters2
for boxes3
for complex numbers- This orders the types more or less as you're likely to need to handle them
- In the future, if another number type is added, it can go at the end next to complex numbers
- The experimental
chunks ⑄
function's behavior has been moved to an extension onwindows ◫
- This also allows the specification of "stride"
- This is inspired by APL's
stencil ⌺
behavior chunks ⑄
has been deprecated
- Stabilize
orient ⤸
- Change its glyph to something with broader font support
⮌
will continue to work and will be formatted as⤸
- Add
anti ⌝
modifier, which simplifies choosing certain inverses - Add
obverse ⌅
modifier, which unifies the specification of inverses un °
by ⊸
can now be used to access the "undo" part of a function'sunder ⍜
functionality- Stabilize
below ◡
- Rename
⤙ but
and⤚ with
towith ⤙
andoff ⤚
with ⤙
has been stabilized
- "Stack macros" are now called "index macros"
- Stabilize existing placeholder indexing syntax (
^0
,^1
, etc.) - Deprecate existing stack-based macro placeholders (
^!
,^.
, etc.)
- Stabilize existing placeholder indexing syntax (
assert ⍤
at the beginning of a line is now interpreted as a test in some contexts- See the updated Testing Tutorial for more information
parse ⋕
now parses complex values from botharbi
anda+bi
formatsun °
orient ⤸
is now equivalent torange ⇡
length ⧻
shape △
duplicate .
- Add a feature to some
under ⍜
functions that makes them more permissive of changes in rank under ⍜
un °
bits ⋯
now preserves a minimum bit lengthunder ⍜
reverse ⇌
,transpose ⍉
, androtate ↻
are now smarter with respect to the signature ofunder ⍜
's second function- For example
⍜⇌°⊂
behaves in a more useful way
- For example
under ⍜
length ⧻
now reshapes an array to have the transformed lengthNaN
and∞
indices forpick ⊡
andselect ⊏
now get thefill ⬚
valuescan \\
now accepts functions that take more than 2 arguments- The behavior is similar to the analogous behavior for
reduce /
- The behavior is similar to the analogous behavior for
- Allow
on ⟜
to use function packs - Allow
under ⍜
of scalarkeep ▽
- Add the
graphemes
function, which splits a string into unicode grapheme clusters - Add the
&fmd
system function, which creates a directory - Very large arrays are now displayed more concisely in output
- Change and enhance the behavior of
;
and;;
- You can read about the new behavior here
- Add unicode escape sequences for entering arbitrary characters
- A double backslash followed by a unicode hex number will format to the corresponding glyph
- Add the
timezone
function, which gets the local timezone offset in hours - Scoped modules are now delimited by
┌─╴
and└─╴
- These both format from the existing
---
delimiters
- These both format from the existing
- Add a
Lorem
constant, which contains the Lorem Ipsum text - Add several color constants
- Add pride flag constants
- Add
Cats
image constant - Allow
&raw
to be inverted, acting as a getter for the raw state of the terminal - Experimentally allow
fold ∧
to work with any signature- Excess values are collected into arrays
- Add the experimental
around ’
function, which duplicates the top value on the stack to the third-to-top position - Add experimental
tuples ⧅
modifier- This unifies and extends the behavior of the
choose
andpermute
functions, which are now deprecated - This also replaces and deprecates the
triangle
modifier
- This unifies and extends the behavior of the
- Add experimental
base
function- This converts to and from base-N digits
- Add an experimental
sort ⍆
function - Add an experimental
last ⊣
function- Getting the last row of an array is very common
- Add experimental subscript modifiers
- They modify the behavior of some functions and modifiers
- You can read more about them here
- Add experimental data definitions
- These allow for structured data similar to
struct
s andenum
s in other languages - They also allow a limited form of namable function arguments
- The experimental
struct
modifier/macro has been deprecated in favor of data definitions
- These allow for structured data similar to
- Add the experimental
layout
function, which renders text into an image array astar
no longer errors if no paths are found- Remove previously deprecated function strands
Interpreter
- Add the
uiua find
command, which finds Uiua code that matches the given unformatted text - Add the
uiua doc
command, which shows the documentation for a function or modifier - Add checking for end-of-line signature comments
- These are documented in the Documenting Code tutorial
- Add
webp
support toimg
- Some optimizations
- Pervasive function machinery has been totally rewritten
- Observed performance improvements of up to 12x
fill ⬚
ed array creation has been totally rewritten- Observed performance improvements:
- ~1.2x in the best case
- ~5x in the average case
- ~450x in the worst case
- Observed performance improvements:
rows ≡
on ⟜
/by ⊸
random ⚂
/constant
memberof ∈
range ⇡
for scalar inputs torange ⇡
memberof ∈
rerank ☇
1
range ⇡
for rank 1 inputs torange ⇡
first ⊢
un °
sort ⍆
to just pick an element
- Pervasive function machinery has been totally rewritten
- Tweak the formatter to reduce excess vertical space
- The formatter now aligns consecutive single-line bindings
uiua repl
now has a-s/--stack
flag to disable clearing the stack after each line- Clearing the stack is now the default
- The
-c/--clear
has been removed
- After programs finish executing, the terminal raw mode will be automatically disabled if it was left on.
Website
- Add [Ranges](https://uiua.org...
0.13.0-rc.6
You can find the working changelog here.
0.13.0-rc.5
You can find the working changelog here.
0.13.0-rc.4
You can find the working changelog here.
0.13.0-rc.3
You can find the working changelog here.
0.13.0-rc.2
You can find the working changelog here.
0.13.0-rc.1
You can find the working changelog here.
0.13.0-dev.2
You can find the working changelog here.
0.13.0-dev.1
You can find the working changelog here.