Repository navigation
Releases: otabekoff/pleno
Releases · otabekoff/pleno
Release list
v0.2.0
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 | shWindows (PowerShell):
irm https://raw.githubusercontent.com/otabekoff/pleno/main/scripts/install.ps1 | iexHomebrew: 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 ofnull, andpleno checkreports undefined names. - An unhandled promise rejection ends the program with an error instead of a warning.
- A failing
std:testtest failspleno test,plm testandpleno run. - Relative imports resolve from the importing file's folder, not the working directory.
plm publishandplm searchneedPLENO_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
awaitcan 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 ofNull is not callable.
Added
- Backtick strings, generic type aliases,
extend <T> Array<T>, enum methods after;, andreturnin match arms. ResultandOptiontype annotations.- Every standard library module can be imported as a namespace (
import { Path } from "std:path"), plusstd:coreandstd:promise. DateTimeandDuration,JSON.stringifyPretty,Regex.split,Benchmark.measure,Log.setLevel, prefixed loggers, and collection helpers.pleno check --json; colored output on terminals (NO_COLORandFORCE_COLORare 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
catchbranches, 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,filterand other built-ins returningnullinstead of their promise. test()with anasync fnbody reports its result when the body finishes, and a failure after anawaitfails the run.Promise.allput 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:testoutput now goes wherever the program's output goes (the playground, the debugger).Path.resolveno longer returns\\?\paths or mixed separators on Windows;Math.randomInt(n, n)returnsn;unwrap()on anErrshows the error.
Full changelog: v0.1.0...v0.2.0