Skip to content

Releases: uiua-lang/uiua

0.12.0-dev.2

21 Jul 03:01
Compare
Choose a tag to compare
0.12.0-dev.2 Pre-release
Pre-release

You can find the working changelog here.

0.12.0-dev.1

12 Jul 22:29
Compare
Choose a tag to compare
0.12.0-dev.1 Pre-release
Pre-release

You can find the working changelog here.

0.11.1

06 Jun 14:53
Compare
Choose a tag to compare

0.11.1 - 2024-06-06

Interpreter

  • Some bug and crash fixes

0.11.0

02 Jun 22:11
Compare
Choose a tag to compare

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

0.10.3

10 Apr 02:34
Compare
Choose a tag to compare

0.10.3 - 2024-04-09

Interpreter

  • Fix a crash involving pervasive operations on some 0-length arrays

0.10.2

09 Apr 01:12
Compare
Choose a tag to compare

0.10.2 - 2024-04-08

Interpreter

0.10.1

07 Apr 20:31
Compare
Choose a tag to compare

0.10.1 - 2024-04-07

Interpreter

  • under ⍜ of pattern matching now works correctly
  • under ⍜ un ° scan \\ now works correctly
  • Style and advice diagnostics are no longer emitted from macros

0.10.0

05 Apr 02:41
Compare
Choose a tag to compare

0.10.0 - 2024-04-04

You can find the release announcement here.

Language

  • Breaking Change - Multiline strings are now also raw strings which do not require escaping
    • They are no longer format strings by default
    • Raw strings can be made format strings with an extra $, i.e. $$ …
  • Breaking Change - try ⍣'s handler function is now passed the original arguments before the error
  • try ⍣ now works with function packs of more than 2 functions
    • This tries each function in the pack in order
  • Switch functions now format to use ⟨⟩ brackets
    • This makes them easier to identify when reading
    • It also allows switch functions to be used as modifier arguments without extra nesting
  • Switch functions now work with under ⍜
  • Add pattern matching with un °
    • Constant values can now be inverted to form a function which errors if the top value on the stack does not match
    • Format strings can be inverted to extract substrings
    • Read more in the new Pattern Matching tutorial
  • Git modules are no longer experimental
    • Modules are added automatically as Git submodules when imported
    • See the Modules tutorial for more information
  • map and related functions insert, has, get, and remove are no longer experimental
  • Add the mask ⦷ function, which creates a mask of occurrences of one array in another
    • This works similarly to find ⌕, but is better when you need a mask or to distinguish between adjacent occurrences
  • Change sine ∿'s glyph
    • is more representative of what it does
    • Most circle glyphs like are used for array functions or stack manipulation
    • will continue to work and will be formatted as
  • under ⍜ join ⊂ now works with arrays of the same rank as long as the row count does not change
  • un ° scan \\ now works with equals = and not equals ≠
  • group ⊕ can now take multidimensional index arrays
  • partition ⊜ can now take multidimensional marker arrays
  • under ⍜ select ⊏ and pick ⊡ now work with duplicate indices if the values at those indices are the same
  • rotate ↻ now works through boxes
  • fold ∧ now works with under ⍜ if its function does
  • inventory ⍚ can now take 3 or more arrays
  • repeat ⍥ can now take non-scalar repetition counts
    • This repeats the function a different number of times for each row of the inputs
  • select ⊏ can now be used with un ° to separate into classify ⊛ and deduplicate ◴
  • Characters can now be multiply ×d or divide ÷d by numbers to possibly toggle their case
  • Add the csv function, which encodes and decodes CSV data
  • Add the &clget and &clset system functions, which allow copying and pasting text to and from the system clipboard
  • Add more shadowable constants
  • Importing modules that use the # Experimental! comment now requires the # Experimental! comment in the importing file
  • Doc comments may now be placed at the end of single-line functions
  • Non-alphabetic identifiers can now be suffixed with ! to make macros
  • Add df, ddf, etc shortcuts for dip ⊙ fix ¤
  • Existing macros are now called "stack macros" to distinguish them from the new "array macros"
  • Add array macros, which allow code to be generated and manipulated at compile time as strings
    • These are specified with a ^ immediately following a binding's arrow
    • They are documented in the Macros tutorial
  • un ° pop ◌ can now be used to retrieve the fill ⬚ value
    • See more details in fill ⬚'s documentation
  • Add the wildcard constant W, which matches any number, and @\W, which matches any character
  • Add the experimental coordinate ⟔ function, which searches an array for a value and returns a multidimensional index
  • Experimental function strands now use the character, which formats from __
  • Add the experimental by ⊸ modifier, which duplicates a function's last argument before calling it
  • Add the experimental quote modifier, which converts a string to code at compile time
    • This is useful in array macros
  • Add # No inline! semantic comment, which prevents a function and its callers from being inlined
    • This enables better stack traces on errors
  • Deprecate bind
    • It undermines the priniciples of the language
    • It makes certain optimizations impossible
    • fill ⬚ and/or map can be used to achieve similar effects
  • Deprecate deal
    • It is rarely used and easy to express with other functions
  • Deprecate experimental shapes and types modifiers in favor of pattern matching
  • Remove cross ⊠ for good
  • Remove unpack ⊐ for good
  • Remove rectify ⌅ for good
  • Remove &i for good
  • Make reduce / with a monadic function a hard error

Interpreter

  • Code is now analyzed for purity
    • All pure top-level expressions will attempt to evaluate at compile time
    • All fragments of code that are pure and have a signature |0.n will be evaluated at compile time
  • Add lots of LSP features
    • Find references
    • Rename is now cross-file
    • On-type formatting (can be toggled in settings)
    • Inlay hints (each can be toggled in settings)
      • Binding function signatures
      • Inline function signatures
      • Values of top-level expressions
    • Code actions
      • Macro expansion
      • Remove output comment
      • Convert between strand and array syntax
    • Completions
      • Shadowable constants
      • Module items when the module reference is partially typed
  • Add the --file <file> option to the uiua repl command
    • This runs a file before starting the REPL
  • Improve the supported binding type coverage of &ffi
  • Add warnings for when a loop in an array may have a variable signature
  • Various performance improvements
    • Optimize and multithread ⊞(/+×), which is a common component of matrix multiplication
  • Lots of bug and crash fixes

Website

  • Tutorials
  • Add some modifier compatibility tables to documentation
  • Hide experimental glyphs in the editor by default
    • They can be toggled on in the settings
  • An # Experimental! comment can now be easily inserted via a settings button or with Ctrl+E
  • Add horizontal scrolling to pad output
  • Pad tabs are now given titles according to their contents
  • The pad now renders strings that are SVG as images
  • Add a pad setting for autoplaying audio

0.9.5

28 Feb 23:37
Compare
Choose a tag to compare

0.9.5 - 2024-02-28

Interpreter

  • Fix a crash in each ∵ of 3 or more arrays

0.9.4

28 Feb 17:15
Compare
Choose a tag to compare

0.9.4 - 2024-02-28

Interpreter

  • Fix a bug with filled multi-dimensional take ↙
  • Fix a crash in rows ≡ of 3 or more arrays