Skip to content

Bend 2.0.35

Choose a tag to compare

@Lorenzobattistela Lorenzobattistela released this 03 Oct 11:32
  • M1 and M2 run the GPU again (#1154, PR #1274 by nicolas-abril): since
    2.0.29 Apple's compiler died building the GPU program of any program with
    a ! on M1 and M2 chips; M3 and M4 were never affected.
  • A library's names stay its own (#1045, #1124, #1184, PR #1156 by
    nicolas-abril): a name the entry file declares as lib.None no longer
    takes the key of lib.bend's own None, so its foreign CID(None)
    means the constructor its Bend code means, and C no longer takes the
    wrong arm or frees into the wrong size class.
  • Less memory on the CPU (PRs #1171, #1269 by nicolas-abril): the host
    grows fewer tasks up front and splits a drain into finer units, so
    parallel tree-matmul peaks at 14.5 MB instead of 68.5 MB and kmeans at
    10.8 MB instead of 22.9 MB, with every bench as fast or faster. A spin
    called in a jump's argument frees the variable it was lent, so a loop
    over a list no longer keeps the old list's cells (81.6 MB to 1.6 MB, PR
    #1243 by mizchi). U32 / and % divide directly on the host and CUDA;
    only Metal keeps its workaround (PR #1277 by nicolas-abril).
  • Arrays of equality proofs build in JS and C (#1130, PR #1219 by oxura).
  • A deadline or a timer fires while computations keep the loop busy
    (#1122, PR #1245 by nicolas-abril): IO.within and IO.sleep no longer
    wait for a channel pipeline to end.
  • Fixes:
    • A chain of more than about 86 U32 or 130 F32 operators builds in C
      (#1123, PR #1239 by nicolas-abril).
    • bend f.bend -o f.c builds at -O0 with clang 19 and later, for a
      debug build (PR #1074 by aldeni).
    • A type with deeply nested sums compiles without hundreds of MB (#1270,
      PRs #1196 and #1244 by vicmcorrea).
    • A template with many instances names them in linear time, not
      quadratic (#1271, PR #1275 by nicolas-abril).
    • IO.random_u32 answers Fail on the JS lane, as on C, instead of
      ending the run (#1146, PR #1198 by Yi-111-a).
    • A match on a binder a constructor column closed says so and lists the
      causes (#1134, PR #1226 by nicolas-abril).
    • bend ... | head keeps the command's exit status when the reader
      closes early (#1211, PR #1214 by oxura).
    • --verdict --publish is refused instead of publishing unchecked
      (#1191, PR #1199 by vicmcorrea).
    • --publish drops a leading byte order mark, so a package whose LICENSE
      was saved with one imports (PR #1188).
    • --verdict: model search is bounded (#1181, PR #1218 by oxura);
      recursive groups follow live references only (#1212, PR #1215 by
      oxura); a dead fallback past the last constructor checks (#1204); an
      empty datatype goes out with D.efq : D -> <> (#1183); a specialized
      argument is elaborated at each use (#1168, #1178); a match inside a type
      goes at the goals bend2 checked it at (#1157).

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:

  • 2582f25057a519c330e6875798b784b727d4201f1c1f6944a105348f0eb8972e bend-2.0.35-darwin-arm64.tar.gz
  • 7e59da4513e32ea7526464b342344a992a56372cdf62e0c55a30e9ce26baaeef bend-2.0.35-darwin-x64.tar.gz
  • 09b813073241628f590f2c2fe420299ec25e4dddd6cf3fdc49c9486339989564 bend-2.0.35-linux-arm64.tar.gz
  • 63039d1a119f716767ac5a7d8fe0717cfacf219c6c253c35192148e0dade722f bend-2.0.35-linux-x64.tar.gz