Skip to content
This repository has been archived by the owner on Oct 18, 2021. It is now read-only.

Amulet 1.0.0.0

Latest
Compare
Choose a tag to compare
@plt-amy plt-amy released this 01 Jan 21:28
· 1209 commits to master since this release

Improvements

Compiler

  • Improve type class ambiguity check.
  • amc now exits with a "1" when compilation fails.
  • amc supports allows turning warnings into errors using -Werror (fail on all errors) and -Werror=123 (fail on a specific error code).
  • Lex negative numbers.
  • When run with --time, amc will produce a timing report detailing how long each stage took.
  • Add a "Lua static" backend, which embeds a Lua interpreter in an executable.
  • Improve the REPL, adding a :h[elp] command (@CrazedProgrammer)
  • Implement the "static argument transform", lifting functions with constant arguments out.
  • Relax the value restriction for constrained values.

Standard library

  • Add an either type (@davidgarland).
  • Add eq and ord instances for ( * ).
  • Add library for modifying mutable arrays

Bug fixes

  • Fix name resolution issues with neted modules.
  • Correctly handle transitive dependencies when loading files in the REPL.
  • Fix parsing of aligned prefix operators.
  • Fix several lowering issues with patterns.
  • Escape Lua variables which could potentially clash with Lua builtins.
  • Fix several pattern-matching checker issues.

Language Server Support

Amulet now comes with an LSP server. This allows us to display diagnoastics and fixes in any editor supporting the protocol, rather than having editor-specific integration!

  • If you're using Emacs, amulet-mode integrates with the fantastic lsp-mode automatically.
  • We have a VS Code extension, though this is not currently on the marketplace, so I'm afraid you'll have to build and install it manually.

The editor integration is still relatively simple, missing many key features like auto-complete or go-to-definition, but we hope to expand it in the future.