Releases: uiua-lang/uiua
Releases · uiua-lang/uiua
0.8.0
0.8.0 - 2024-01-31
Language
- Add the
content ⊔
modifier, which unboxes its function's arguments before calling it - Add the
unique ◰
function, which creates a mask of the first occurrence of each unique value in an array- Change
deduplicate ◴
's glyph to reflect its relationship withunique ◰
. Code using⊖
will continue to work and will be formatted as◴
.
- Change
table ⊞
now works on rows of arrays but keeps it's optimizations for lists- You never wanted element-wise combinations of multi-dimensional arrays anyway
- Deprecate
cross ⊠
, as it is now redundant - This is technically a breaking change, but it is unlikely to break much code
fill ⬚
can now be used to specify default accumulators forreduce /
,group ⊕
, andpartition ⊜
- Breaking Change - Reducing
group ⊕
andpartition ⊜
no longer take a required accumulator - Breaking Change -
fill ⬚
can no longer be temporarily disabled. Try to scope it to the smallest function.
- Breaking Change - Reducing
- Breaking Change - Most non-pervasive monadic functions no longer implicitely unbox their argument
- This impliciteness led to some unexpected behavior, particularly when getting the
length ⧻
orshape △
of a boxed array - Exceptions are
reverse ⇌
andtranspose ⍉
, which work on box elements without unboxing them
- This impliciteness led to some unexpected behavior, particularly when getting the
- Unicode escape sequences that are not 2 or 4 bytes long can now be specified with
\u{…}
- Change
pop ◌
's glyph to make it look good in planet notation. Code using;
will continue to work and will be formatted as◌
. un °
reduce /
multiply ×
now gives the prime factorization of a numberclassify ⊛
anddeduplicate ◴
now work withunder ⍜
&fras
and&frab
now work withunder ⍜
- Completely remove the deprecated
unbox ⊔
- Add experimental hashmap functions, which operate on a box array as if it is a hashmap
- Add experimental
bind
modifier, which binds local values within a function- This introduces some non-tacitness to the language
Interpreter
- The internal byte array type is now used in more places, which should improve performance a bit
&ime
and&imd
now support the QOI image format- Lots of bug and crash fixes
Website
- Add a new tutorial: Thinking With Arrays
0.7.1
0.7.0
0.7.0 - 2023-12-15
Language
- An entire Uiua codebase is now compiled before it is executed, rather than compiling and executing line-by-line
- Add the
memo
modifier, which memoizes a function - Add the
comptime
modifier, which runs a function at compile time &i
can now only be used as the first function in a bindingrepeat
⍥
can no longer use a negative number of repetitionsrepeat
⍥
can now be used withun
°
andunder
⍜
reshape
↯
now works withunder
⍜
scan
\
now works withun
°
in some casessetinv
andsetund
are no longer experimental- Add output comments, which the formatter fills with values from the stack
- Make an empty comment starting with
n
additional#
s - The formatter will replace the comment with the top
n
values from the stack - Output comments in functions will show a number of values present on the stack for each time the function is called
- Make an empty comment starting with
Interpreter
- LSP improvements
- Add hover information on binding references
- Add signatures to binding hover information
- Add same-file binding rename support
- Add same-file goto definition support
- Add the
uiua build
command, which emits a.uasm
bytecode file uiua run
can now run a.uasm
bytecode fileuiua stand
now embeds the bytecode assembly in the executable- Multiple compiler errors can now be emitted at once
- Bug and crash fixes
- Performance improvements
Website
- Add an Inverses tutorial
- Each tutorial challenge now contains 1 or 2 answers
0.6.1
0.6.0
0.6.0 - 2023-12-06
Language
fix
¤
now works with binary pervasive functions- This removes the need for some uses of
rows
≡
and should be a bit faster
- This removes the need for some uses of
fill
⬚
can now be disabled for a function by filling with an empty listparse
⋕
now has a glyph and is semi-pervasive- It was being used enough to warrant a glyph
sign
±
,floor
⌊
,ceiling
⌈
, andround
⁅
now work withunder
⍜
- Add some missing arithmetic inverses and unders involving
flip
:
- Change
pack
's name tounpack
⊐
, and it no longer implicitly boxes values (only unboxes them)- Implicit boxing could lead to unexpected and inconsistent behavior
- Change
invert
's name and glyph toun
°
. Code using⍘
will continue to work and will be formatted as°
.°
is a nicer glyph, andun
composes more nicely with the names of invertible functions
- Deprecate
unbox
⊔
in favor ofun
°
box
□
- It can still be typed the same way!
- Deprecate
reduce
/
with a monadic function- This created poorly-defined stack signatures that changed depending on the length of the array being reduced
un
°
with stack array and planet notations, i.e.°[⊙⊙∘]
, can be used instead, as it has a well-defined signature- For operating on just part of an array, use
under
⍜
take
↙
,drop
↘
, orselect
⊏
box
□
ed arrays can once again be compared lexicographically
Interpreter
- Make
stack
?
anddump
output show call stack - Show type and shape information when pretty-printing empty arrays with rank 2 or greater
- Improve language server hover information
- Bug and crash fixes
Website
0.5.1
0.5.0
0.5.0 - 2023-12-2
Language
invert
⍘
andunder
⍜
now work with stack array notation.- Add the
stack
?
function, which debug-prints the entire stack dump
now works withinvert
⍘
andunder
⍜
fill
⬚
andpack
⊐
are now exclusive- Change how
regex
works to be more powerful - Add special syntax for splitting/joining lines of code
'
will split a line without changing semantics''
will combine two lines without changing semantics
- The way pervasive functions work with
box
□
ed arrays is now more consistent - Remove
reach
,distribute
,tribute
,level
,combinate
, and all ocean functions for good
Interpreter
- Add a style diagnostic about lines that are too long
- Add some other style diagnostics
- Replace
uiua check-update
withuiua update
, which will update the interpreter by installing a new version with Cargo - Bug and crash fixes
Website
- Multiline strings can now be toggled like comments with ctrl+4
0.4.1
0.4.0
0.4.0 - 2023-11-30
Language
windows
◫
can now take negative window sizes- Add an experimental distinction for some functions/modifiers
- Experimental features are opt-in and must be enabled by putting an
# Experimental!
comment at the top of a file
- Experimental features are opt-in and must be enabled by putting an
- Add the experimental
all
⋔
modifier, which is a variadic generalization ofboth
∩
- Add the experimental
rectify
⌅
function, which sets a function's inverse to itself - Add the experimental
setinv
modifier, which sets the inverse of a function - Add the experimental
setunder
modifier, which sets theunder
⍜
-compatible inverse of a function - Add the experimental
this
↬
modifier, which sets a function to recur to - Add the experimental
recur
↫
modifier, which calls a function recursively - Allow custom modifiers to use switch function syntax
sign
±
now normalizes complex numbers- Change
type
mapping - Deprecate
reach
⟜
Interpreter
- Fix some bugs and crashes
- Improve some formatting with multiline functions and switch functions
identity
∘
no longer formats from()
- Allow
uiua <file> [args]
as a shortcut foruiua run <file> [args]
Website
- Allow disabling autorun for pad links