Skip to content

Latest commit

 

History

History
60 lines (49 loc) · 5.88 KB

CHANGELOG.md

File metadata and controls

60 lines (49 loc) · 5.88 KB

v0.2.0 (2016-09-25)

Version 0.2.0 consists of a few critical bug fixes, numerous usability improvements such as prettier printing of types and auto completion in the REPL as well as two additions to the language itself.

Row-polymorphic records are added to the type system (albeit in a slightly limited capacity) as well as type holes. More additions building on these features will be added in a backwards compatible way in upcoming versions.

In addition to the user visible changes listed here the internals have seen a lot of legacy cruft removed, in major part thanks to @brendanzab.

Features

  • Use InFile to display source information for parse errors (7026d8a3)
  • Use starts_with and ends_with from Rust instead of gluon (5144ee29)
  • Rename io.print to io.println and add io.print (0a6b65bd)
  • Implement unification of row polymorphic records (df007c6e)
  • Improve readability of large types by splitting them onto multiple lines (1c296ac9)
  • Add holes to the type syntax, and use them when building the AST (fb9bd82c)
  • Rename (*) to Type (8a3e1945)
  • Repl UX improvements (2ed0a35b)
  • base: Use quick-error for instantiate::Error (96a8c631)
  • check:
    • Attempt to generate variable starting with a unique letter (f3c2e625)
  • parser:
    • Use string slices in tokens (e0b7d840)
    • Emit spans from the lexer instead of just locations (e2a17a3a)
  • repl: Add completion to the repl (ee4d0b60)
  • vm:
    • Implement field access of polymorphic records (4696cedc)
    • Allow the heap size on each thread to be limited (f8a71f4c)
    • Return Result instead of Status in Pushable::push (584c3590)
    • read GLUON_PATH from env var and add to new_vm (#79) (e7254a40)

Bug Fixes

  • Don't gluon panic when writing only a colon (:) in the repl (7864c449)
  • Only print a Stacktrace on panics (c059bfd3)
  • Surround operators with parens when pretty-printing (7ccc6f22, closes #60)
  • Rename windows file separators characters ('\') to '.' as well (207bfc9a)
  • Add a space before : when pretty printing types (a9b160c3)
  • Print ',' as separator between each type of a record (d72d3e1b)
  • Don't return None from Source::location when byte is at end of file (5aee09a5)
  • check:
    • Fail typechecking when records use a field more than once (7bb8f0bd)
    • Handle unification with Type::Hole (2912727f)
    • Detect recursive types for which unification do not terminate (22b3c82e)
  • completion:
    • Give completion for local variables when pointing to whitespace (5c59a795)
  • repl:
    • Allow :i to be used on primitive types (fe458488)
    • Include the prelude when using :t (bb0f1347)

Performance

  • Use a single mutex for both the stack and gc (20fb0645)

  • use fnv instead of SipHasher for HashMaps. add type FnvMap (#106) (4a64c68d)

  • check:

    • Avoid traversing the entire stack when generalizing (29352bc3)
    • Avoid recreating new App instances in unroll_app unnecessarily (ba4db236)