Releases: uiua-lang/uiua
Releases · uiua-lang/uiua
0.2.0
0.2.0 - 2023-11-09
Language
under⍜withtake↙anddrop↘is now less strict about shape/rank changesrange⇡called on a list of 0 or 1 values is now more consistentfill⬚now works withrotate↻to give non-wrapping behaviorfill⬚now works withfind⌕if the searched-for array is longer than the array being searchedparsenow works withinvert⍘andunder⍜- The output of
find⌕is now the same shape as the array being searched
Interpreter
- Fix a bunch of bugs
- Several performance optimizations
transpose⍉is now much fasterdistribute∺andtribute≐are now much faster if their function is a pervasive built-in- Some other functions are also a bit faster
Website
- Hold shift when copying a link to copy a Markdown link
0.1.0
0.1.0 - 2023-11-03
Language
- Add complex numbers, which can be created with the
complexℂfunction - Add the
do⍢modifier, which repeatedly calls a function as long as a condition holds - Deprecate
break⎋ - Add multi-dimensional
where⊚ join⊂to an empty list now always works regardless of rank of the other arrayeach∵androws≡now work withunder⍜- All ocean functions now work with
under⍜ - Allow multiple values to be returned from
each∵,rows≡,distribute∺,tribute≐,table⊞, andcross⊠ invert⍘atangent∠now produces the sine and cosine of an angle&inow treats paths as relative to the file calling it rather than the current working directory- Rank list functions for the rank-generic modifiers can now take any number of arguments. For any number of aguments greater that 0, an empty numeric list will be pushed before the function is called.
- Add fraction literals with
/ - Parsing multiple formattable functions from words is now smarter
- Remove
bind '. It made code hard to read. It will continue to parse, but will be formatted as(…)
Interpreter
- Add the
uiua standcommand, which creates a standalone executable
Website
- Add Optimizations page
- Add Images and GIFs tutorial
0.0.25
0.0.24
0.0.24 - 2023-10-24
Language
- Add the
reach⟜modifier, which removes the second value from the stack and calls its function. - Change how short spellings of
dip⊙,gap⋅, andidentity∘work- Instead of allowing them to be spelled with 2 characters, they can now be spelled with 1 character as long as there are at least 2 in the sequence.
- If present,
'i'may only come last. reach⟜is included.
- Add 2-letter spellings of
deep≊,abyss≃, andseabed∸to make them consistent withrock⋄.
Interpreter
- Fix a bunch of bugs and crashes
- The formatter now indents bindings that start with a bound function that starts with
&i - The native interpreter no longer automatically checks for updates. You can still check manually with
uiua update?.
Website
- Add challenges to the end of tutorial sections
- Make the introductory examples on the main page less esoteric
- Update the Advanced Stack Manipulation Tutorial to include
reach⟜
Crate
- The Uiua Rust crate is now fully documented and has a decent API
0.0.23
0.0.23 - 2023-10-25
Language
- Implement
under⍜multi-indexpick⊡ - Implement
under⍜partition⊜ - Implement
under⍜group⊕ - Add
send,recv, andtryrecvfunctions for sending values between threads - Add
&fdeand&ftrsystem functions for deleting/trashing files and directories under⍜with system functions that return stream handles calls&clas an inverse- Add the
&rawsystem function for setting the terminal to raw mode - Add the
&gifdsystem function for decoding GIFs
Interpreter
- The interpreter now formats its own diagnostic messages instead of delegating to a library
- Fix a bunch of bugs and crashes
- Add
uiua replcommand - Optimize (
⊢⍏), (⊢⇌⍏), (⊢⍖), and (⊢⇌⍖) to be O(n) instead of O(nlogn) - Optimize (
⊢⊚) to not materialize the indices array
Website
&astnow works on the website by generating a fixed amount of audio- How long the generated audio is can be configured in the editor settings
- Error and diagnostic messages are no-longer all one color
- The pad editor now inserts a trailing newline on format
- Increase thresholds for arrays automatically becoming images or audio
- Split up system functions into more categories on the main docs page
- The bell character
@\bnow plays a sound if printed with&por&pf
Community
- The GitHub Discussions are now open!
0.0.22
0.0.21
0.0.21 - 2023-10-21
Language
- Massive Change - Functions are no longer first-class values. This has many implications:
- Functions can no longer be put in arrays or manipulated as stack values
- Inline functions can now only appear as modifier arguments or bindings
call !has been removed, as there is nothing on the stack to call- Modules have been reworked.
&inow handles both loading a module from a file and importing items from that module. ---scopes are now test scopes.~~~scopes have been removed.- Remove
use, as it is no longer necessary - Boxes still work as normal, but are now their own type distinct from functions
- Remove
sig, as everything that can be on the stack now has the same signature
- Add new syntax for defining custom modifiers
- Add new syntax for calling a function from a list of functions
- Add the
pack⊐modifier, which calls its function and implicitly boxes/unboxes values - Add the
combinate◳modifier, which is a rank-generic version oftable⊞ fold∧is now rank-generic and requires a rank list- Add the
tribute≐modifier, which is a flipped version ofdistribute∺ - Change
level≑'s glyph to reflect its relationship witheach∵,rows≡,distribute∺, andtribute≐. Code using⍚will continue to work and will be formatted as≑. - Add
rock⋄,surface~,deep≊,abyss≃, andseabed∸, which build rank lists to be used withlevel≑and the new rank-generic modifiers - Change
trace⸮'s glyph to letsurface~use~. - Change
match≍'s glyph to avoid confusion with the new ocean functions' glyphs. Code using≅will continue to work and will be formatted as≍. - Stack signatures found to be incorrect at runtime produce an error
- Dyadic math operations now work with
under⍜even if both arguments are outsideunder⍜'s function - Some mathematical functions that previously did not work with
invert⍘andunder⍜when accompanied byflip∶now do
Website
- Add 3 new tutorials
- The orientation of stack values in the output can be flipped in the settings
0.0.20
0.0.20 - 2023-10-16
Language
- Add
regexfunction for matching regular expressions - Add
utffunction for UTF-8 encoding and decoding - Add
&invksystem function for invoking a path to be opened with the system's default program fill⬚can now be used withfirst⊢- Most functions that expect strings as arguments will now dig arbitrarily deep into boxes
- Make
if?signature checking more permissive - The presence of
break⎋in arepeat⍥always requires a stack signature - The
&runiand&runcfunctions now return exit codes - Multiline string now only insert
\nat the end of each line instead of\r\n
Interpreter
- Bugfixes and performance improvements
Website
- Add a page listing common stack idioms
0.0.19
0.0.19 - 2023-10-13
Language
- Add
under⍜both∩ - Remove
restack ⇵for good - Remove
roll ↷andunroll ↶for good @\scan now be used in addition to@to get a space character
Interpreter
- Many performance improvements and memory usage reductions
- Many bug and crash fixes
- Add some additional style diagnostics
- Add more semantic token types to the language server
- Stop using deprecated MarkedString in the language server
Website
- The editor's font size can now be changed
- Improve brackets/quotes behavior in the editor
- HTML is now properly escaped in the editor
- Formatting can now put the cursor to the left of the current token (toggleable in the settings)
0.0.18
0.0.18 - 2023-10-10
Language
- Major Change
distribute∺now takes the array being distributed as its last argument, rather than its first - Add
where⊚function, which returns the indices of an array that have non-zero values if?'s branches can now have a different number of arguments (but not outputs)if?'s condition can now be a list of conditions, and the branch will be chosen for each row in the argument(s)- The reducing versions of
group⊕andpartition⊜now take accumulators. Aggregating versions are unchanged. spawnandwaitno longer have glyphs. Code using↰and↲will continue to work and will be formatted asspawnandwait.&nis no longer a system function and is now callednowunder⍜nowcan be used to time thingscall!can now call functions that return any number of values, not just one- Add hex character escape sequences for string and character literals.
\xNNfor short ASCII codes\uNNNNfor full Unicode sequences
Interpreter
- The formatter now aligns consecutive end-of-line comments
NaNs no longer propogate inmin⌊andmax⌈- Fix a bug that prevented
under⍜multidimensionaltake↙anddrop↘from working - Fix a bug in how
fold∧ordered multiple accumulators - Fix a bug that allowed incorrect signatures to be declared for functions
- Fix a bunch of other bugs and crashes
Website
- Add the Uiua386 font as an option in the editor