Repository navigation
Bend 2.0.38
- A compiled program's runtime options go between
+RTSand-RTS
(#1466, PR #1530 by viridale). Breaking:./main --threads 4now
passes--threads 4to the program (IO.args); write./main +RTS --threads 4 -RTS. A trailing-RTSmay be left off,BENDRTSholds
options too (the command line wins),--stops option reading and
reaches the program, and an unknown option inside the bracket is an
error.--threadstakes digits,--gputakeson,offor a size in
GBorMB. - JS modules keep their names apart. Breaking for JS hosts: a
constructor's JS tag is its name in the file that declares it, so a
value crosses modules and matches the right arm (#1105, PR #1488 by
oxura); imported export keys and foreign JS def ids keep their:
(#1758, #1759, #1766, PR #1760 by oxura). TCP.sendandTCP.try_sendhand back unsent bytes, a
List<&2, U32>to resume withTCP.send_bytes, so a write cut inside a
UTF-8 character loses nothing (#1764, PR #1765 by oxura). Breaking
for code that read the residue as a String.- Native windows emit
Textevents with the typed characters on
Linux and macOS (#1019, PR #1441 by oxura). - A
Charholds any u32 on every lane; a non-scalar becomes U+FFFD
only where text leaves Bend (#1080, PR #1411 by oxura). --verdict:- The verdict says why each def it lists relies on unsafe or foreign
code (PR #1531 by MattCozendey), and hints when those defs come only
through unused imports (#1463, PR #1558). - A def specialized at a finite
~parameter is checked by the kernel
over each value, so an empty type no longer passes unchecked (#1186,
PR #1225 by nicolas-abril); a~constant takes its model from the
template's instances (PR #1580 by nicolas-abril). - The kernel accepts a self-call on a constructor rebuilt around a
smaller part of its input, as the checker does (#1167, PR #1200 by
nicolas-abril). - Fixes: annotations under η and let inlining (#1665, #1669, PR #1666 by
aaaxn); a bare constructor in a type (#1619, PR #1620 by ScottMoore0);
shared group prefixes (PR #1704 by sebastian-griego); kernel failures
show their details (#1535, PR #1536 by viridale).
- The verdict says why each def it lists relies on unsafe or foreign
- Faster:
- A GPU bang chains its rounds on the device, three command buffers in
flight, with no host round trip per stage (PR #1447 by nicolas-abril). - A flat generic def's spin takes words at its instance's layouts
(#1195, PR #1588). String.orderwalks both strings once: 8x on C, andString.eqof
long strings no longer overflows the JS lane (PR #1459 by aldeni);
String.containsis linear on JS (PR #1628 by sebastian-griego).- Emission allocates 40% less on large files (PR #1617 by
nicolas-abril); word matches with many literals compile faster (PR
#1387 by Iann29). U32.powby squaring andF32.showwithout a second conversion on C
(PRs #1567 and #1591 by sebastian-griego);F32.readrejects bad input
in linear time (PR #1625 by toprameen); expired channel waiters leave
in constant time (PR #1671 by sebastian-griego).- CUDA keeps its L1 cache in
bend_dev(PR #1602 by wakamex).
- A GPU bang chains its rounds on the device, three command buffers in
- Fixes:
- Metal: a full lane stack spills to the heap, so non-tail recursion
under!no longer faults at 1023 frames (#1393, #1394, PR #1439 by
totaland). - C: a shared word is written back to its fork frame slot (PR #1615 by
viridale); a recursive spine is freed cell by cell (#1307, PR #1438 by
oxura); native channels free their rows and unread values (#1268, PR
#1532 by oxura); Nat powers and bit widths take checked paths (#1709,
#1710, PR #1713 by oxura); functions only an effect calls stay
reachable (#1711, #1712, PR #1714 by oxura); the crash trap is
async-signal-safe (PR #1655 by adeerkhan). - IO: ready effects yield to other computations every 64 (#1719, PR
#1723 by oxura);IO.exitflushes buffered output (PR #1519 by
vicmcorrea); file and JS stream writes fail on zero progress (#1445,
PRs #1446 by oxura and #1747 by vicmcorrea); nested JS IO schedulers
are isolated and resume their own channel waiters (#1524, #1761,
#1770, PRs #1525 and #1762 by oxura); UDP receive buffers are bounded
(#1695, PR #1698 by oxura);TCP.connectchecks its arguments on JS
(PR #1618 by vicmcorrea); JSAudio.writecounts whole frames and
paces on monotonic time (PRs #1683 by toprameen and #1597 by
vicmcorrea). - Base:
List.any,all,containsandfindstop once the answer is
known (#1726-#1729, PR #1730 by oxura); prefix checks stop at the
prefix (#1640, PR #1645 by EpsilonPhoenix);F32.roundkeeps negative
zero and rounds once (#1611, PRs #1613 by oxura and #1547 by
vicmcorrea);F32.lerpstays finite and keeps its endpoints (#1607,
#1749, PRs #1608 and #1754 by oxura);F32.to_natkeeps wide values
(#1636, PR #1642 by oxura); JSU32.to_f32keeps zero positive and
scalar F32 host inputs are rounded (#1692, #1568, PRs #1693 and #1569
by oxura). - Effects:
CID/FIDare scanned with the source's own comment rules
(#1604, PR #1653 by adeerkhan); a bad Nat from a JS host says its range
(#1634, PR #1656 by oxura).
- Metal: a full lane stack spills to the heap, so non-tail recursion
- CLI:
bend page.html -o <dir>never overwrites its own page (PR #1690 by
toprameen); inline HTML modules stay apart from real assets and from
each other (#1752, #1753, #1767, PRs #1756 and #1768 by oxura); decoded
module paths are classified right (#1570, PR #1571 by oxura).- Output finishes after short writes to a pipe (PR #1691 by toprameen);
a failed update check keeps the command's status (PR #1603 by
vicmcorrea); filtered Base output keeps@unsafe(PR #1538 by
toprameen).
- Tools: the formatter keeps column-pinned blocks, nested match arms,
inline bodies and mixed line endings (PRs #1302 by dearlordylord, #1755,
#1672 by oxura, #1583, #1584, #1590, #1757 by vicmcorrea and
sebastian-griego); the LSP keeps match scopes across forall bodies (PR
#1791 by vicmcorrea). Breaking for bend-lint rule authors: option
constructors areOptionNum,OptionFlagandOptionText(PR #1565
by vicmcorrea); bend-lint also fixes new buffers, cancelled runs and
downloaded checkouts (PRs #1745, #1746 by oxura, #1587, #1605 by
vicmcorrea).
Install: curl -fsSL https://bend-lang.com/install.sh | sh (or Homebrew: brew install bendlang/bend/bend, or Nix: nix profile install github:bendlang/bend).
sha256:
- 9d5331d01e82dac40dd012953e78221f533f7df7ad7e16b07f1f7bd0dcd088dd bend-2.0.38-darwin-arm64.tar.gz
- 870be3b91290e14259dba432788c71d7190d8984f8606255e5333c3a03896d5a bend-2.0.38-darwin-x64.tar.gz
- 1f7c6e74a6ef7412cf08eee0e4d45fe5960f89d66fdaca2466f6a4856f0d400a bend-2.0.38-linux-arm64.tar.gz
- f19d088b079c9e1a8834ecd153b7d58c11a5f8f9ab1bdb78dbc96a6bf49aaa81 bend-2.0.38-linux-x64.tar.gz