Skip to content

Latest commit

 

History

History
253 lines (232 loc) · 18.8 KB

changelog.md

File metadata and controls

253 lines (232 loc) · 18.8 KB

Uiua Changelog

Uiua is not yet stable.

0.0.24 - 2023-10-??

If you are reading this on the website, then these changes are live here.

Crate

0.0.23 - 2023-10-25

Language

Interpreter

  • The interpreter now formats its own diagnostic messages instead of delegating to a library
  • Fix a bunch of bugs and crashes
  • Add uiua repl command
  • Optimize (), (), (), and () to be O(n) instead of O(nlogn)
  • Optimize () to not materialize the indices array

Website

  • &ast now 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 @\b now plays a sound if printed with &p or &pf

Community

0.0.22 - 2023-10-21

Language

  • Custom modifier placeholders (^) must now be immediately followed by a signature. This reduces the number of signatures that have to be declared everywhere else.

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. &i now 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 of table
  • fold is now rank-generic and requires a rank list
  • Add the tribute modifier, which is a flipped version of distribute
  • Change level 's glyph to reflect its relationship with each , rows , distribute , and tribute . Code using will continue to work and will be formatted as .
  • Add rock , surface ~, deep , abyss , and seabed , which build rank lists to be used with level and the new rank-generic modifiers
  • Change trace 's glyph to let surface ~ 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 outside under 's function
  • Some mathematical functions that previously did not work with invert and under when accompanied by flip now do

Website

0.0.20 - 2023-10-16

Language

  • Add regex function for matching regular expressions
  • Add utf function for UTF-8 encoding and decoding
  • Add &invk system function for invoking a path to be opened with the system's default program
  • fill can now be used with first
  • 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 a repeat always requires a stack signature
  • The &runi and &runc functions now return exit codes
  • Multiline string now only insert \n at the end of each line instead of \r\n

Interpreter

  • Bugfixes and performance improvements

Website

0.0.19 - 2023-10-13

Language

  • Add under both
  • Remove restack ⇵ for good
  • Remove roll ↷ and unroll ↶ for good
  • @\s can 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 - 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 and partition now take accumulators. Aggregating versions are unchanged.
  • spawn and wait no longer have glyphs. Code using and will continue to work and will be formatted as spawn and wait.
  • &n is no longer a system function and is now called now
  • under now can be used to time things
  • call ! can now call functions that return any number of values, not just one
  • Add hex character escape sequences for string and character literals.
    • \xNN for short ASCII codes
    • \uNNNN for full Unicode sequences

Interpreter

  • The formatter now aligns consecutive end-of-line comments
  • NaNs no longer propogate in min and max
  • Fix a bug that prevented under multidimensional take and drop 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

0.0.17 - 2023-10-07

Language

  • Add GIF encoding with &gife
  • Rename constant to box .
  • Add unbox , which unboxes a boxed array
  • Major Change: Some uses of call ! will no longer compile without declaring a stack signature. When unboxing box ed arrays, you can use unbox instead, which has a well-defined signature.
  • Add fall function, which gives the indices of the array if it were sorted descending
  • Change grade name and glyph to rise to reflect its relationship with fall . Code using will continue to work and will be formatted as .
  • try now puts arguments to its first function above the error value when calling the error handler
  • fold can now use multiple accumulators
  • Improve dump output formatting
  • dump is now a monadic modifier. Its function preprocesses each value before dumping it.
  • Add the sig function, which returns the stack signature of a value
  • A negative dimensions in the shape passed to reshape can now be in any position, not just the first or last
  • Functions with ASCII glyphs now also format from their names
  • Add a advice diagnostic about the captialization of binding names

Interpreter

Website

  • Add GIF output
  • Execution time limit is now 2 seconds by default but can be customized

0.0.16 - 2023-10-05

Interpreter

  • Fix a crash and a bug that could occur when creating nested arrays that pull in values.

0.0.15 - 2023-10-05

This version changes a lot of glyphs. If you are coming from the previous version, most of the old glyphs will be automatically formatted to the new ones. The only change you may need to make is replacing all ^s with |s.

You may want to read the new version of the Advanced Stack Manipulation Tutorial to understand the reason for so many of these changes.

Language

  • Add the bracket modifier, which calls two functions each on different arguments
  • Change fill 's glyph to reflect its relationship with box . Code using with continue to work and will be formatted as .
  • Change share name and glyph to fork . Code using will continue to work and will be formatted as .
  • Change noop · name and glyphs to identity to reflect its relationship with gap and dip . Code using · will continue to work and will be formatted as .
  • Change identity 's signature from |0.0 to |1.1
  • Add the gap modifier, which discards a value then calls its function. It is mainly intended to be used with fork .
  • Change dip 's glyph to reflect its relationship with gap and identity . Code using will continue to work and will be formatted as .
  • Change both 's glyph to reflect its relationship with fork . Code using will continue to work and will be formatted as .
  • distribute now works with any number of arguments. Only the first argument is distributed.
  • fill now works with reshape
  • reshape now allow negative numbers to denote derived dimensions
  • Change the modifier termination character to | instead of ^
  • Remove old versions of fork and trident
  • Add the &httpsw function for making HTTPS requests

Interpreter

  • Add formatter configuration options. See the readme for details.
  • Checking for updates is less zealous, and can be disabled with the --no-update flag to uiua run or uiua watch

Website

  • Running code in the Pad editor updates the URL to prevent work from accidentally being lost

Pre-Version Updates

2023-10-03

Language

  • Add the share modifier, which unifies and deprecates fork and trident
  • [bind '] no longer calls its functions immediately. This should not change any reasonable existing code.
  • Change how partition and group work with dyadic functions to be consistent with reduce /
  • Deprecate restack . It was never a good idea.
  • Remove the overloaded behavior of call !. It no longer behaves like an if-else when used with a list of functions.
    • You can replace all existing instances of that use case with !⊡:
  • Add the if ? modifier, which calls one of two functions based on a condition

2023-10-02

Language

  • both can now be used with a function that takes any number of arguments.
  • Various bug and crash fixes

Interpreter

  • Tell the user when the interpreter can be updated

2023-10-01

  • Add the dip modifier, which temporarily pops a value
  • Deprecate roll↷ and unroll↶
  • Add under keep
  • Add dump function, which prints the entire stack

2023-09-30

Language

  • Remove the |1.1 signature restriction for under 's second function
  • Remove the rank function
  • Remove the restriction that all functions in a non-scalar function array all have the compatible signatures
  • Whether a binding is a constant or a function is now independent of how many values are on the stack
  • Add a system for non-error diagnostics
    • Add advice about redundant uses of each

Interpreter

  • Allow passing --no-format to uiua watch
  • &sc now returns 0 if EOF is input

Website

  • &sc now works on the website by showing a prompt

2023-09-29

Language

  • Make binding names case-sensitive
  • Add ^ syntax to terminate modifier parsing. There is a basic example in the tutorial.
  • Add &runi and &runc functions for running commands
  • Add &cd function for changing the current working directory
  • Add shadowable constants like e and os
  • Change trident argument order to make it easier to reason about
  • Enable fill for keep if the amount list is shorter than the kept array

Interpreter

  • Add uiua eval command which evaluates a Uiua expression and prints the result
  • Watch commands no longer try to open the file being watched
  • Fix a bug that made numbers that were 1e-12 format to 0

Website

  • Make a space character @ more visible by underlining the space
  • Improve cursor movement when formatting in the editor

2023-09-28

Language

  • Add this changelog
  • Add trace ~ function
    • Debug-prints the value on top of the stack without popping it
    • Shows the line and column number too
  • Add both modifier
    • This can change code like /(|2 ⊂!∶!∶) {"a" "bc" "def"}
    • To just /'⊂∩! {"a" "bc" "def"}
  • Turn the term pair syntactic construct into a modifier called bind '

Interpreter

  • Fix some correctness bugs related to under and invert
  • Fix a crash when trying to reverse an empty array

Website