Skip to content

Releases: uiua-lang/uiua

latest

30 May 06:26
Compare
Choose a tag to compare
update blog rss feed

0.16.2

22 May 03:34
Compare
Choose a tag to compare

0.16.2 - 2025-05-21

Interpreter

  • Fix a formatter bug

0.16.1

22 May 03:20
Compare
Choose a tag to compare

0.16.1 - 2025-05-21

Interpreter

0.16.0

18 May 23:28
Compare
Choose a tag to compare

0.16.0 - 2025-05-18

You can find the release announcement here.

Language

  • Breaking Change - rows ≡ numeric subscripts now function identically to each ∵'s specifying the rank to operate at
    • Deprecate each ∵, as it is almost never used except for this subscript behavior
    • The formatter will turn existing uses of subscripted each ∵ into subscripted rows ≡
  • Breaking Change - repeat ⍥ and do ⍢ now accumulate excess values into arrays if their function has more outputs than arguments
    • This makes a lot of accumulation patterns much shorter and simpler
    • These loops now always have well-defined signatures
    • This breaks the common pattern of wrapping these loops in []s, which is now unnecessary and will need to be changed in your code
  • Breaking Change - fill ⬚ed scan \\ no longer uses the fill value as the first row
  • Breaking Change - fft now works along every axis of an array rather than only its last
    • This is more consistent with other functions
  • Breaking Change - Overhaul number literals
    • Literals involving eta η, pi π, tau τ, and e may now have a leading coefficient in addition to a denominator, and the symbol may be in the denominator
      • Examples: , 3π/4, 1/τ, 1.5η, 3e
    • Add complex literals
      • The real and imaginary parts are suffixed with r and i respectively. Both can be used alone.
      • Work with fractions and other constants above
      • Examples: 3r4i, 5i, πi/2
  • Breaking Change - Special casing for un ° backward ˜ join ⊂ has been removed
  • There are no longer signature restrictions on try ⍣'s functions
  • Allow for mixed numeric and sided subscripts
  • Stabilize sided subscripts for rows ≡ and inventory ⍚
  • Stabilize un ° under ⍜ for monadic functions
  • Add un ° group ⊕ and un ° partition ⊜ for monadic functions
  • Stabilize negate ¯ subscripts
  • Stabilize base ⊥
  • Stabilize fft
  • Stabilize inline macros
  • The first argument to rotate ↻ can now be rank > 1.
    • This creates an array with multiple copies of the target array rotated by different amounts
  • Output comments now show values on the stack after their line rather than before it
  • Add un ° fill ⬚ed take ↙
  • Add un ° add +, un ° multiply × and un ° divide ÷
    • These split into fraction and whole, sign and magnitude, and denominator and numerator respectively
  • Add un ° inverses for reduce / with a dyadic function (when the function is invertible)
  • Functions can now contains scoped local bindings
    • This allows for simple helper functions as well as passing bindings to macros
  • Give base ⊥ a glyph
  • Add the ln function, which computes the natural logarithm
  • Add the pretty function, which gives the string representation of an array's pretty-printed output
  • Add numeric subscripts for length ⧻ to get the length of a specific axis
  • Add numeric subscripts for shape △ to get the shape of the first few axes
  • Add numeric subscripts for range ⇡ to offset the range
  • Add support for mixed numeric and sided subscripts
  • Greeks rejoice! η, π, and τ can now be used in names (just not as the first letter)
  • Add apng and &apngs functions for encoding and showing APNG animations
  • Deprecate with ⤙ and off ⤚ on noadic and monadic functions
    • There was a lot of disagreement about what the behavior should be
    • They made the movement of data on the stack harder to follow
    • Breaking Change - Change how off ⤚ works on monadic functions
      • This change was made before deprecation was decided
  • Deprecate various environment-relate constants and replace them with noadic functions
    • This prevents the details of the compiling environment being used instead of the details from the actual running environment
    • Deprecrated: Os, Family, Arch, ExeExt, DllExt, Sep, NumProcs
    • Replacements: os, osfamily, arch, exeext, dllext, pathsep, numprocs
  • Add experimental evert ⧋ modifier for operating on the last axes of arrays.
  • Add experimental occurrences ⧆ for marking each row in an array with its occurent count
  • Add experimental progressive indexof ⊘ for finding sequential indices of each row of an array in another
  • Add experimental lexical ordering syntax
    • This enables some function packs and array notation to execute in the order they are normally read
  • Add experimental sided fill ⬚
    • This allows filling from the left instead of the right
  • Add experimental voxels function, which orthographically projects a 3D voxel array to an image
  • Add experimental bytes function for encoding and decoding byte arrays
  • Remove previously deprecated around ’
  • Remove previously deprecated astar
  • Remove previously deprecated trace ⸮

Interpreter

  • Improve pretty-printed array layout
    • High-rank arrays take up less vertical space and more horizontal space
    • Box arrays take up less space
  • Complex arrays are now compatible with image and GIF functions and will display as such automatically in the pad
    • Each pixel is colored via a domain coloring function
  • Remove errors when a line is too long
  • The formatter will now allow putting multiple function pack branches on a single line
  • Optimizations
    • stencil ⧈ is now optimized when used with with monadic functions that are optimized for rows ≡
    • Add sortedness flags to arrays to allow short-circuiting some operations
    • Optimize tuples ⧅ with ⋅⋅1 and ⋅⧻
    • The main sorting algorith for sort ⍆ is now implemented in the interpreter source code rather than a library
      • This allows it to sort arrays in place without allocating memory
      • Observed performance improvements of ~2.5x
    • sort ⍆ on lists of bytes now uses counting sort, for massive performance improvements
  • LSP improvements
    • Completions now properly respect scoping
    • Unused private bindings are now dimmed
  • Images in the native output window can now be easily copied to the clipboard
  • Add an -x/--experimental flag to the uiua repl command to pre-enable experimental features

0.16.0-rc.1

14 May 18:00
Compare
Choose a tag to compare
0.16.0-rc.1 Pre-release
Pre-release

You can find the working changelog here.

0.16.0-dev.2

06 May 18:43
Compare
Choose a tag to compare
0.16.0-dev.2 Pre-release
Pre-release

You can find the working changelog here.

0.16.0-dev.1

19 Apr 01:18
Compare
Choose a tag to compare
0.16.0-dev.1 Pre-release
Pre-release

You can find the working changelog here.

0.15.1

06 Apr 23:38
Compare
Choose a tag to compare

0.15.1 - 2025-04-06

Interpreter

  • Fix builds on some systems

0.15.0

03 Apr 18:05
Compare
Choose a tag to compare

0.15.0 - 2025-04-03

You can find the release announcement here.

Language

  • Breaking Change - repeat ⍥ and do ⍢ with net-negative signatures now preserve lower stack values between iterations
  • Breaking Change - atangent ∠ now interacts with under ⍜ similarly to couple ⊟ and complex ℂ
  • Add subscripted on ⟜, by ⊸, with ⤙, and off ⤚
    • These preserve N arguments rather than just the first or last
  • Add data definition methods
  • Stabilize most of data definitions
    • A new section has been added to the tutorial
    • Things not stabilized:
      • Data functions
      • Methods
      • Field validators
  • Stabilize subscripted random ⚂
  • Signature comments can now use a $ rather than a ? to automatically label arguments and outputs
  • Change backward ˜'s glyph back. 𝄈 will continue to work and will be formatted as ˜.
    • This glyph has much better font support
  • Stabilize backward ˜
  • Add anti ⌝ keep ▽ for parity with select ⊏
  • Add subscripts for bits ⋯ to force the number of bits
  • Allow tuples ⧅ to take infinity ∞ as a first argument
  • Deprecate over ,
    • It is part of a stack manipulation paradigm that Uiua is slowly moving away from
    • with ⤙ and below ◡ replace the vast majority of over ,'s use cases
    • You can find a short blog post about this change here
  • Stabilize sided subscripts for both ∩ and bracket ⊓
  • Add un ° with ⤙ and un ° off ⤚
  • Add sided subscripts for reach 𝄐
  • Add the # External! semantic comment to mark functions that are provided via Rust code
    • These functions don't require a Uiua implementation and will show up in the LSP
    • Calling an # External! function that hasn't been bound will throw an error
  • Add experimental self ˙ modifier
  • Add experimental subscripts to negate ¯
    • This will multiply × a number by the Nth root of unity
  • Remove &clget alias for &clip
  • Remove previously deprecated &httpsw

Interpreter

  • Add UIUA_MAX_MB environment variable to set the maximum size of an array in megabytes
    • This allows catching memory errors on different systems
  • Optimize absolute value ⌵complex ℂ to not create intermediate complex ℂ array

Website

0.15.0-rc.2

01 Apr 18:56
Compare
Choose a tag to compare
0.15.0-rc.2 Pre-release
Pre-release

You can find the working changelog here.