Skip to content

0.11.0

Compare
Choose a tag to compare
@github-actions github-actions released this 02 Jun 22:11
· 2100 commits to main since this release

0.11.0 - 2024-06-02

You can find the release announcement here.

Language

  • Breaking Change - un ° fix ¤ now does pattern matching
  • Breaking Change - un ° on ⟜ now does pattern matching in some cases
    • This makes its bevahior conform to the rule that a function's inverse must have the opposite signature
    • Some other cases, such as °⟜+, now properly invert the function
  • Breaking Change - keep ▽ with a scalar counts array now copies each row that many times
    • This matches the behaviors of APL and BQN, and is generally more useful
    • The old behavior can be achieved with /⊂↯
  • Breaking Change - fill ⬚ values are no longer accessible through function calls
  • Stabilize by ⊸!
  • Stabilize repr
  • Add experimental stack swizzles, which allow for more flexible stack reordering
    • Swizzles are written with a λ followed by a list of letters
    • Capital letters fix ¤ the corresponding value
    • The λ formats from ' when it is in front of the letters
  • Add experimental array swizzles, which allow extracting rows from an array in a concise way
    • Swizzles are written with a followed by a list of letters
    • Letters up to m start from the first row, Letters back from z start from the last row
    • Capital letters un ° box □ the corresponding value
    • The formats from '' when it is in front of the letters
  • keep ▽ now works with un °
    • It splits an array into counts and an adjacent deduplication
  • Add the json function, which encodes and decodes JSON strings
  • Add the xlsx function, which encodes and decodes XLSX data
  • bits ⋯ can now take negative numbers
  • un ° bits ⋯ can now take non-booleans
  • Add un ° duplicate . pattern matching
  • Add un ° min ↧ and un ° max ↥ pattern matching
  • insert can now be used with un ° to extract a map entry and pattern match it
  • fill ⬚ed keep ▽'s fill value may now be a list
  • infinity ∞ can now be passed in a list to take ↙ or drop ↘ to take/drop every row along an axis
  • reduce / can now take a function with more than 2 arguments
    • Each additional argument increases the number of arguments passed to reduce / by 1
    • Additional arguments are passed to the function on every iteration
  • try ⍣ signature checking is now more permissive
  • Switch function signature checking is now more permissive with branches that have an assert ⍤ that always triggers
  • first ⊢, first ⊢ reverse ⇌, rise ⍏, and fall ⍖ can now be used on scalars
  • Add the &exit system function, which exits the program with a status code
  • Add the experimental &memcpy system function, which copies the data from &ffi pointers to an array
  • Add the experimental &memfree system function, which frees memory allocated by &ffi functions
  • Add &tlsc and &tlsl system functions, which allow making TLS connections
    • &tlsc replaces &httpsw, which is now deprecated
    • &tlsl is currently experimental and mostly untested
  • &rs will now attempt to read additional bytes to resolve a UTF-8 character
  • [&gife] and [&gifs] now support binary transparency
  • Signatures can now be specified in stack array notation immediately after a [ or {
  • Change how long decimal numbers are formatted
    • Sequences of repeated digits are now replaced with
  • Add argument documentation comments
  • Add some useful shadowable constants for working with compile-time file paths
    • ThisFile - The relative path of the current source file
    • ThisFileName - The name of the current source file
    • ThisFileDir - The directory of the current source file
    • WorkingDir - The compile-time working directory
  • Deprecate function strands
    • They ended up making code less readable
  • Remove previously deprecated primitives:
    • this ↬
    • recur ↫
    • all ⋔
    • cascade ⪾
    • bind λ
    • types
    • shapes
  • Remove several backward compatibile glyphs from the lexer
    • This frees up some glyphs that can now be used as function names

Interpreter

  • Lots of optimizations
  • setinv now emits a warning if the functions do not have opposite signatures
  • Add the --io flag to the uiua fmt command, which formats code from stdin to stdout
  • Lots of bug and crash fixes

Website

  • Add a Documenting Code tutorial
  • Add a Files and Streams tutorial
  • Add an Experimental Features page
  • Rewrite the pad code to use a <textarea> rather than a contenteditable <div>
    • This should make it work better in more browsers, especially on mobile
  • You can now ctrl+click on a glyph in the editor to open its documentation