Skip to content

Releases: uiua-lang/uiua

0.8.0

31 Jan 16:18
Compare
Choose a tag to compare

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 with unique ◰. Code using will continue to work and will be formatted as .
  • 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 for reduce /, group ⊕, and partition ⊜
    • Breaking Change - Reducing group ⊕ and partition ⊜ 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 - Most non-pervasive monadic functions no longer implicitely unbox their argument
    • This impliciteness led to some unexpected behavior, particularly when getting the length ⧻ or shape △ of a boxed array
    • Exceptions are reverse ⇌ and transpose ⍉, which work on box elements without unboxing them
  • 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 number
  • classify ⊛ and deduplicate ◴ now work with under ⍜
  • &fras and &frab now work with under ⍜
  • 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

0.7.1

19 Dec 02:00
Compare
Choose a tag to compare
0.7.1 Pre-release
Pre-release

0.7.1 - 2023-12-18

Interpreter

  • Fix some bugs and crashes

0.7.0

16 Dec 06:16
Compare
Choose a tag to compare
0.7.0 Pre-release
Pre-release

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 binding
  • repeat can no longer use a negative number of repetitions
  • repeat can now be used with un ° and under
  • reshape now works with under
  • scan \ now works with un ° in some cases
  • setinv and setund 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

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 file
  • uiua 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

07 Dec 18:19
Compare
Choose a tag to compare
0.6.1 Pre-release
Pre-release

0.6.1 - 2023-12-07

Interpreter

  • Make proxy values a little less leaky
  • Make placeholders work properly with both
  • Some other bug and crash fixes

0.6.0

07 Dec 01:51
Compare
Choose a tag to compare
0.6.0 Pre-release
Pre-release

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
  • fill can now be disabled for a function by filling with an empty list
  • parse now has a glyph and is semi-pervasive
    • It was being used enough to warrant a glyph
  • sign ±, floor , ceiling , and round now work with under
  • Add some missing arithmetic inverses and unders involving flip :
  • Change pack's name to unpack , 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 to un °. Code using will continue to work and will be formatted as °.
    • ° is a nicer glyph, and un composes more nicely with the names of invertible functions
  • Deprecate unbox in favor of un ° 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 , or select
  • box ed arrays can once again be compared lexicographically

Interpreter

  • Make stack ? and dump 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

  • Add a token count to the editor (in settings)
  • Files can now be dragged into the editor to open them with &fras
  • &fld now works on the website

0.5.1

03 Dec 04:22
Compare
Choose a tag to compare
0.5.1 Pre-release
Pre-release

0.5.1 - 2023-12-02

Interpreter

0.5.0

03 Dec 00:37
Compare
Choose a tag to compare
0.5.0 Pre-release
Pre-release

0.5.0 - 2023-12-2

Language

  • invert and under now work with stack array notation.
  • Add the stack ? function, which debug-prints the entire stack
  • dump now works with invert and under
  • fill and pack 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 with uiua 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

30 Nov 21:19
Compare
Choose a tag to compare
0.4.1 Pre-release
Pre-release

0.4.1 - 2023-11-30

Interpreter

  • Fix a bug with nested custom modifiers

0.4.0

30 Nov 19:13
Compare
Choose a tag to compare
0.4.0 Pre-release
Pre-release

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
  • Add the experimental all modifier, which is a variadic generalization of both
  • 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 the under -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 for uiua run <file> [args]

Website

  • Allow disabling autorun for pad links

0.3.1

20 Nov 17:10
Compare
Choose a tag to compare
0.3.1 Pre-release
Pre-release

0.3.1 - 2023-11-20

Interpreter

  • Fix some bugs and crashes