0.11.0
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
- Swizzles are written with a
- Add experimental array swizzles, which allow extracting rows from an array in a concise way
keep ▽
now works withun °
- 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 numbersun °
bits ⋯
can now take non-booleans- Add
un °
duplicate .
pattern matching - Add
un °
min ↧
andun °
max ↥
pattern matching insert
can now be used withun °
to extract a map entry and pattern match itfill ⬚
edkeep ▽
's fill value may now be a listinfinity ∞
can now be passed in a list totake ↙
ordrop ↘
to take/drop every row along an axisreduce /
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
- Each additional argument increases the number of arguments passed to
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 ⍏
, andfall ⍖
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 &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
…
- Sequences of repeated digits are now replaced with
- Add argument documentation comments
- You can read more about this in the new Documenting Code tutorial
- Add some useful shadowable constants for working with compile-time file paths
ThisFile
- The relative path of the current source fileThisFileName
- The name of the current source fileThisFileDir
- The directory of the current source fileWorkingDir
- 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
- Optimize the pattern
/F⊞F
to use much less memory and be an order of magnitude faster in some cases - Optimize
group ⊕
andpartition ⊜
withlength ⧻
,first ⊢
, andfirst ⊢
reverse ⇌
- Optimize iterating modifiers with a top-level
fork ⊃
orbracket ⊓
- Optimize
≡
⋅
constant
and∵
⋅
constant
patterns- The speed improvement is on the order of 70x
- Optimize the pattern
[⍥⚂…
- Optimize
length ⧻
deduplicate ◴
- Optimize the pattern
setinv
now emits a warning if the functions do not have opposite signatures- Add the
--io
flag to theuiua 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 acontenteditable
<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