Skip to content

Releases: otabekoff/pleno

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 14:15
9a8dc5a

Pleno 0.2.0: the work toward 1.0. Every example in the documentation runs, errors that used to pass silently now fail loudly, and the docs have a tutorial and a playground that run Pleno in the browser.

Install

macOS and Linux:

curl -fsSL https://raw.githubusercontent.com/otabekoff/pleno/main/scripts/install.sh | sh

Windows (PowerShell):

irm https://raw.githubusercontent.com/otabekoff/pleno/main/scripts/install.ps1 | iex

Homebrew: brew install otabekoff/tap/pleno. Or download an archive below: each contains pleno, plm, pleno-lsp, pleno-dap and pleno-repl for one platform. The VS Code extension is pleno-language-v0.2.0.vsix.

Downloads are verified by checksums and Sigstore signatures; see the code signing policy. Windows binaries are not yet Authenticode-signed.

Changed

  • Reading an undefined name is an error (undefined variable 'foo') instead of null, and pleno check reports undefined names.
  • An unhandled promise rejection ends the program with an error instead of a warning.
  • A failing std:test test fails pleno test, plm test and pleno run.
  • Relative imports resolve from the importing file's folder, not the working directory.
  • plm publish and plm search need PLENO_REGISTRY; there is no default registry.
  • Uncaught exceptions print their message instead of the error map.
  • Division and modulo by zero are errors for every Int and Float combination.
  • A program whose top-level await can never finish ends with an error instead of exiting silently.
  • Calling a method a map does not have names the method (Map has no method 'contains') instead of Null is not callable.

Added

  • Backtick strings, generic type aliases, extend <T> Array<T>, enum methods after ;, and return in match arms.
  • Result and Option type annotations.
  • Every standard library module can be imported as a namespace (import { Path } from "std:path"), plus std:core and std:promise.
  • DateTime and Duration, JSON.stringifyPretty, Regex.split, Benchmark.measure, Log.setLevel, prefixed loggers, and collection helpers.
  • pleno check --json; colored output on terminals (NO_COLOR and FORCE_COLOR are respected).
  • VS Code extension 0.2.0, which can install the toolchain.
  • A new documentation site with a tutorial and a playground that runs Pleno in the browser (WebAssembly). Every example in the docs is checked in CI.

Fixed

  • Infinity and NaN, 64-bit integers, enum type annotations, typed catch branches, contravariant interfaces, the pipeline operator with arguments, and iterating a channel.
  • The formatter keeps comments, escapes and syntax it used to drop or break.
  • Crashes on deeply nested code in the language server, and on malformed generic annotations in the compiler.
  • A VM crash (index out of bounds) when a plain function returned a call to an async function that was waiting, and async functions called from map, filter and other built-ins returning null instead of their promise.
  • test() with an async fn body reports its result when the body finishes, and a failure after an await fails the run.
  • Promise.all put results in the wrong places, dropped some, and never finished when it mixed promises with plain values.
  • Built-in functions called through a value (xs |> map(f)) could call the wrong function in the WebAssembly build.
  • std:test output now goes wherever the program's output goes (the playground, the debugger).
  • Path.resolve no longer returns \\?\ paths or mixed separators on Windows; Math.randomInt(n, n) returns n; unwrap() on an Err shows the error.

Full changelog: v0.1.0...v0.2.0

Nightly Build (8cdc7657746306f39c2cdf47039c182528ae0bb3)

Choose a tag to compare

Automated nightly build for commit 8cdc765.

Nightly Build (3357e7d89d340d6a043fbbc2459c21ac602346fb)

Choose a tag to compare

Automated nightly build for commit 3357e7d.

Nightly Build (a3200cb7bdb84bdd7c24ceb9d2a4a66b9d3c7c2e)

Choose a tag to compare

Automated nightly build for commit a3200cb.

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Feb 19:53

Full Changelog: v0.1.6...v0.1.0

Nightly Build (7b58c12a4d7ede00d33f216d773395ea1d22e2da)

Choose a tag to compare

Automated nightly build for commit 7b58c12.