gluon v0.13.0 Release Notes
Release Date: 2019-10-27 // over 4 years ago-
π Performance
- Only do one hash lookup when creating a Symbol (a709c712)
- Shrink Type's size to 48 bytes (from 64) (178180f8)
- π Avoid RefCell in Fixed* structurs (-1%) (de32dbd6)
- Avoid recursion in implicits.rs (89eb836a)
- Only mark types with unbound generics as HAS_GENERICS (3d835a8a)
- Avoid computing the plain name in name_eq (-3%) (a7ac9f80)
- check:
- Use RefCell::get_mut when possible (12441438)
- Remove redundant operations in union (f3d4203a)
- No need to lookup the type again before querying the level (5e4efe37)
- Remove some branches in the occurs check¨ (03e7c3b4)
- Only initialize the variable generator when it is necessary (-3%) (793b6580)
- Only do one lookup/insertion on the implicit definition map (0ea13ff1)
- Narrow down the implicit parititioning further (-10%) (a9c965b4)
- Avoid looking through metadata when checking for an implicit type (4a3662e9)
- Only add implicit fields if the binding is implicit (da861eba, breaks #)
- β‘οΈ optimize: Allocate core syntax directly into arenas (723ec4d6)
- π parser:
- vm:
- Add function inlining (5093137a)
- Eliminate redundant match expressions (945fb83d)
- Implement inter-module dead code elimination (ab1b1b80)
- Avoid tracing global values unless we are in the root gc (-7%) (48a5313e)
- Avoid the bounds check when fetching instructions (c2778e7f)
- Faster updates to the stack frame (2b94a3af)
- Cache the frame offset for the stack (-20%) (0469cb2e)
- Copy instead of clone unrooted gc values (a0396f40)
π₯ Breaking Changes
- Replace Compiler with the ThreadExt trait (c16132eb, breaks #)
- check: Only add implicit fields if the binding is implicit (da861eba, breaks #)
π Bug Fixes
- Don't leak implicit bindings into adjacent scopes (5681ffc5, closes #783)
- β ignore formatting in std.test due to a bug (bdccee6f)
- rerefix formatting (31166161)
- refix formatting (fcb7f0bb)
- fix formatting and apply naming suggesions (6bb0d87c)
- Make the behaviour consistent for
Show Char
(0ff89870) - Avoid infinite loops/extremely slow optimization (dc7ec72a)
- Expand macros inside macros (5a294330)
- β Invalidate text properly so rexpect tests work (92e45081)
- π Don't depend on ansi_term in windows to make windows 7 work (58e2a8b9, closes #777)
- β Add tests and fix the regression with clone_userdata (df078725)
- Ensure that threads are dropped when using child threads (b9efb513)
- check: Handle aliases better in
do
(770e52ea, closes #766) - repl: make the REPL respect --no-std (e7974706)
- std: export missing assertions in std.test (41f4fc52)
- vm:
π Features
- Use implicit Monoids in std.foldable (295b8c3d)
- Add a mutable string type to the ST monad (9ec946b4)
- Allow attributes to be specified on fields inside types (fb35db51)
- Provide std.effect.io as a mirror of std.io (66e49b37)
- Replace Compiler with the ThreadExt trait (c16132eb, breaks #)
- Use salsa for incremental compilation (7bc82532)
- Add history hints and bracket highlight to the REPL (10ef8cdf)
- Use line/column numbers in lambda names (201fdfb9)
- codegen: Map Rust's struct enums to records in Gluon. (afb682e5)
- repl: add --no-std option to gluon.exe (f2c1819f)
- std:
- vm: Make macro errors implement PartialEq, Eq, Hash and Clone (039825ab)