Skip to content

0.13.0

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 22 Oct 02:19
· 90 commits to main since this release

0.13.0 - 2024-10-21

You can find the release announcement here.

Language

  • Breaking Change - minimum ↧ and maximum ↥ now compare boxes lexicographically
    • This makes them consistent with comparison functions like less than <
  • Breaking Change - gen now takes a shape argument and no longer outputs a new seed
  • Breaking Change - &clip now unifies &clget and &clset
  • Breaking Change - type numbers are now:
    • 0 for normal numbers
    • 1 for characters
    • 2 for boxes
    • 3 for complex numbers
    • This orders the types more or less as you're likely to need to handle them
    • In the future, if another number type is added, it can go at the end next to complex numbers
  • The experimental chunks ⑄ function's behavior has been moved to an extension on windows ◫
    • This also allows the specification of "stride"
    • This is inspired by APL's stencil ⌺ behavior
    • chunks ⑄ has been deprecated
  • Stabilize orient ⤸
    • Change its glyph to something with broader font support
    • will continue to work and will be formatted as
  • Add anti ⌝ modifier, which simplifies choosing certain inverses
  • Add obverse ⌅ modifier, which unifies the specification of inverses
  • un ° by ⊸ can now be used to access the "undo" part of a function's under ⍜ functionality
  • Stabilize below ◡
  • Rename ⤙ but and ⤚ with to with ⤙ and off ⤚
  • "Stack macros" are now called "index macros"
    • Stabilize existing placeholder indexing syntax (^0, ^1, etc.)
    • Deprecate existing stack-based macro placeholders (^!, ^., etc.)
  • assert ⍤ at the beginning of a line is now interpreted as a test in some contexts
  • parse ⋕ now parses complex values from both arbiand a+bi formats
  • un ° orient ⤸ is now equivalent to range ⇡ length ⧻ shape △ duplicate .
  • Add a feature to some under ⍜ functions that makes them more permissive of changes in rank
  • under ⍜ un ° bits ⋯ now preserves a minimum bit length
  • under ⍜ reverse ⇌, transpose ⍉, and rotate ↻ are now smarter with respect to the signature of under ⍜'s second function
    • For example ⍜⇌°⊂ behaves in a more useful way
  • under ⍜ length ⧻ now reshapes an array to have the transformed length
  • NaN and indices for pick ⊡ and select ⊏ now get the fill ⬚ value
  • scan \\ now accepts functions that take more than 2 arguments
    • The behavior is similar to the analogous behavior for reduce /
  • Allow on ⟜ to use function packs
  • Allow under ⍜ of scalar keep ▽
  • Add the graphemes function, which splits a string into unicode grapheme clusters
  • Add the &fmd system function, which creates a directory
  • Very large arrays are now displayed more concisely in output
  • Change and enhance the behavior of ; and ;;
    • You can read about the new behavior here
  • Add unicode escape sequences for entering arbitrary characters
    • A double backslash followed by a unicode hex number will format to the corresponding glyph
  • Add the timezone function, which gets the local timezone offset in hours
  • Scoped modules are now delimited by ┌─╴ and └─╴
    • These both format from the existing --- delimiters
  • Add a Lorem constant, which contains the Lorem Ipsum text
  • Add several color constants
  • Add pride flag constants
  • Add Cats image constant
  • Allow &raw to be inverted, acting as a getter for the raw state of the terminal
    • under ⍜&raw sets raw mode, and then returns it to the previous state
  • Experimentally allow fold ∧ to work with any signature
    • Excess values are collected into arrays
  • Add the experimental around ’ function, which duplicates the top value on the stack to the third-to-top position
  • Add experimental tuples ⧅ modifier
    • This unifies and extends the behavior of the choose and permute functions, which are now deprecated
    • This also replaces and deprecates the triangle modifier
  • Add experimental base function
    • This converts to and from base-N digits
  • Add an experimental sort ⍆ function
  • Add an experimental last ⊣ function
    • Getting the last row of an array is very common
  • Add experimental subscript modifiers
    • They modify the behavior of some functions and modifiers
    • You can read more about them here
  • Add experimental data definitions
    • These allow for structured data similar to structs and enums in other languages
    • They also allow a limited form of namable function arguments
    • The experimental struct modifier/macro has been deprecated in favor of data definitions
  • Add the experimental layout function, which renders text into an image array
  • astar no longer errors if no paths are found
  • Remove previously deprecated function strands

Interpreter

  • Add the uiua find command, which finds Uiua code that matches the given unformatted text
  • Add the uiua doc command, which shows the documentation for a function or modifier
  • Add checking for end-of-line signature comments
  • Add webp support to img
  • Some optimizations
  • Tweak the formatter to reduce excess vertical space
  • The formatter now aligns consecutive single-line bindings
  • uiua repl now has a -s/--stack flag to disable clearing the stack after each line
    • Clearing the stack is now the default
    • The -c/--clear has been removed
  • After programs finish executing, the terminal raw mode will be automatically disabled if it was left on.

Website

  • Add Ranges tutorial
  • Update the Inverses tutorial with information about anti ⌝ and obverse ⌅
  • Add an RSS Feed for the blog
  • Update the Testing Tutorial
  • In the pad, files created with &fwa will now persist between runs
  • Add the option to decouple running and formatting in the pad
  • Add a dropdown to the pad to insert named functions
  • Add buttons to the pad to download code and copy a markdown link
  • Git import URLs in the pad can now be Ctrl+clicked to open in a new tab
  • Improve the Constants page