Skip to content

Releases: uiua-lang/uiua

0.14.1

23 Dec 21:03
Compare
Choose a tag to compare

0.14.1 - 2024-12-23

Interpreter

  • Various bug fixes related to shapes, types, fills, and optimizations

0.14.0

20 Dec 23:44
Compare
Choose a tag to compare

0.14.0 - 2024-12-20

Language

  • Breaking Change: Multi-argument group ⊕ and partition ⊜ no longer do reduction. Instead, multiple groups are passed to the function.
    • The reducing versions were rarely used
    • This new behavior is more useful
  • Breaking Change: un ° json no longer attempts to form multidimensional arrays
    • This makes deserializing JSON more consistent
  • Breaking Change: fill ⬚ed scan \\ now sets the initial value as well as filling row shapes
    • This behavior is hard to get otherwise
    • Fixes to existing code should be simple
  • Breaking Change: obverse ⌅ with a single function now just nullifies the inverse
    • This makes a lot of common under ⍜ patterns much simpler
  • Breaking Change: Negative indices to pick ⊡ and select ⊏ now always use a fill value if available
  • Stabilize subscripts!
    • They make available a lot of nice functionality
    • Allow negative subscripts
    • Add experimental sided subscripts
  • rows ≡, inventory ⍚, and each ∵ now support subscripts
  • deshape ♭ now supports subscripts
    • Axes are collapsed to get the given rank
  • Deprecate rerank ☇
    • It was basically always used with a static rank, and that functionality has been subsumed by subscripted deshape ♭ and/or the iterating modifiers listed above
    • The dynamic behavior can still be accessed with °⊸(⧻△) (though when you would need this is unclear)
  • Add the stencil ⧈ modifier, which is a generalization of windows ◫
    • ⧈∘ is equivalent to windows ◫
    • windows ◫ has been deprecated. All existing uses will continue to work and will be formatted as ⧈∘.
  • get, has, and remove now support working on multiple key-value pairs at once
  • Deprecate trace ⸮
    • It is equivalent to subscripted stack ?
    • Sequential ?s, which formatted to trace ⸮s, now format to subscripted stack ?
  • Stabilize tuples ⧅
  • Stabilize sort ⍆
    • Sorting is a very common operation, and it's useful to have such simple access to it
  • Stabilize last ⊣
    • Getting the last row is a very common operation
  • Stabilize case ⍩
  • Add the path modifier, which finds shortest paths
    • Replaces and deprecates astar
    • astar's functionality is still available via path with a function pack
  • Add the A₁, A₂, A₃, C₂, C₃, and E₃ constants which are various kinds of adjacency offsets
    • They are great for working with path
  • Declared signatures that do not match the inferred signature will now cause a warning rather than an error
    • The function is edited to make the signature correct
  • orient ⤸ can now use fill ⬚ to fill in new dimensions
  • un ° reduce / (format string) now splits a string by a delimiter
  • do ⍢ now runs its functions at least once, even if their signatures are invalid
    • This is helpful when initially setting up a loop
  • un ° now works with repeat ⍥ without a repetition count
    • This counts the number of repetitions required to converge
  • Add an ε shadowable constant for the machine epsilon
    • You can type it as \\epsilon
    • Other greek letters can also by typed this way
  • Add &ep and &epf system functions for easier printing to stderr
  • Functions that work with audio such as audio now treat the first axis as samples and the second axis as channels
  • Add # Deprecated! semantic comments
  • Change backward 𝄈's glyph to 𝄈. Code using ˜ will continue to work and will be formatted as 𝄈.
  • Add the experimental or ∨ function
    • It has a useful reduction identity
    • It is also GCD
  • Add experimental inline macros
    • Deprecate the experimental stringify and signature modifiers in favor of inline code macros
  • Add experimental binary function, which encodes and decodes arrays into a compact binary representation
  • Add experimental &b function, which pauses execution and prints the stack
  • Remove the previously deprecated member ∊ function
    • As planned, memberof ∊'s glyph has been changed, and the old one will format to .
  • Remove the previously deprecated experimental ⟔ coordinate function
  • Remove the previously deprecated experimental struct modifier
  • Remove the previously deprecated setinv and setund modifiers
  • Remove the previously deprecated choose and permute functions
  • Remove the previously deprecated experimental ◹ triangle modifier
  • Remove the previously deprecated experimental ⑄ chunks function

Interpreter

  • The compiler and interpreter have been almost entirely rewritten to use a tree-based execution model rather than a bytecode model
    • This massively simplifies compilation as well as optimizations and the derivation of inverses
    • This should not affect any language semantics
  • Improve pattern matching error messages
  • Optimize the "root" pattern ⁿ%:1
  • Optimize format strings applied to strings or boxed strings
  • Optimize common partition ⊜ patterns
  • Add an -e/--experimental flag to the uiua eval command to enable experimental features
  • Add the uiua check command, which checks that Uiua files compile
  • More system functions are now run for output comments
  • Improve formatting of more complex arrays with format strings and &p

Website

0.14.0-rc.3

17 Dec 03:46
Compare
Choose a tag to compare
0.14.0-rc.3 Pre-release
Pre-release

You can find the working changelog here.

0.14.0-rc.2

16 Dec 08:44
Compare
Choose a tag to compare
0.14.0-rc.2 Pre-release
Pre-release

You can find the working changelog here.

0.14.0-rc.1

13 Dec 22:59
Compare
Choose a tag to compare
0.14.0-rc.1 Pre-release
Pre-release

You can find the working changelog here.

0.14.0-dev.7

08 Dec 04:35
Compare
Choose a tag to compare
0.14.0-dev.7 Pre-release
Pre-release

You can find the working changelog here.

0.14.0-dev.6

04 Dec 04:48
Compare
Choose a tag to compare
0.14.0-dev.6 Pre-release
Pre-release

You can find the working changelog here.

0.14.0-dev.5

01 Dec 03:13
Compare
Choose a tag to compare
0.14.0-dev.5 Pre-release
Pre-release

You can find the working changelog here.

0.14.0-dev.4

29 Nov 23:53
Compare
Choose a tag to compare
0.14.0-dev.4 Pre-release
Pre-release

You can find the working changelog here.

0.14.0-dev.3

26 Nov 20:48
Compare
Choose a tag to compare
0.14.0-dev.3 Pre-release
Pre-release

You can find the working changelog here.