All Versions
35
Latest Version
Avg Release Cycle
48 days
Latest Release
929 days ago

Changelog History
Page 2

  • v0.14.0 Changes

    April 14, 2020

    πŸ› Bug Fixes

    • Rework how hanging lambda/parens are handled (732f09f3)
    • Accept filenames that start with ./.. as modules (01e450bb)
    • Don't deadlock when collecting and cloning a thread concurrently (5886f59f)
    • check: Reject programs which misspecifies the number of patterns (248387d9, closes #807)
    • doc: Correct the style.css path (4e629ab5)
    • format: Improve tuple multiline formatting (5122fe38)

    πŸ”‹ Features

    • πŸ‘― Add AstClone to clone arena allocated ASTs (3ee7bd28)
    • Compile modules in parallel using salsa-async (e0ab1811)
    • Compile modules in parallel (57fca165)
    • Add Function::call_any (2c06104f)
    • Export Array from the prelude (16eb3456)
    • Allow serde_json::Value to be marshalled to std.json.Value (aabdec86)
    • check:
      • Avoid propagating errors on lift_io! misuse (3dbabe53)
      • Avoid generating more errors from a type that could not be imported (752e2bce)

    🐎 Performance

    • Avoid some unnecessary allocations (089bae4c)
    • Shrink the size of Pattern (75fb8840)
    • Avoid hashing symbols twice (0cfb52c8)
    • Allocate all temporaries into the same Vec (af945c4a)
    • compiler: Hoist a remove_alias call out from match alternatives (c13172e2)
  • v0.13.1 Changes

    October 29, 2019

    πŸ› Bug Fixes

    • Don't deadlock when collecting and cloning a thread concurrently (d7368950)
    • doc: Correct the style.css path (2cee5cff)
  • v0.13.0 Changes

    October 27, 2019

    🐎 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:
      • Shrink the Token type and remove it's need to Drop (3016f251)
      • Simplify tokenization iterators (c7061c7b)
    • 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:
      • Don't (rust) panic in string.split_at (50f937b3, closes #757)
      • Accept trailing comma in record macros (f35c0b96, closes #770)

    πŸ”‹ 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:
      • add ordering assertions (3efac996)
      • add a few functions to std.test & std.effect.error (58e00431)
    • vm: Make macro errors implement PartialEq, Eq, Hash and Clone (039825ab)
  • v0.12.0 Changes

    July 06, 2019

    πŸ› Bug Fixes

    • 🚚 Remove Userdata and Trace impls for RwLock and Mutex (e90f02b5)
    • Add missing negate function from the prelude (0091f475)
    • Refer to registered types by their full name (a2daace6, breaks #)
    • Handle newtypes with a public field (d1fef968, closes #713)
    • Don't ICE on unapplied, aliased constructors (2a44a0db)
    • check:
    • codegen: Return exactly the same type on VmType derive on enum (375d3e9a)
    • compiler: Don't panic when matching a tuple against an alias (777bd310, closes #749)
    • std:
      • cleaned up statet.glu exports (5d8864f9)
      • export wrap_monad from transformer.glu (0e9d7bc4)
    • vm:
      • Check if a collection is needed when creating a child thread (86e4b9f7)
      • Automatically remove the elements added to pushed data (8cd5152b, closes #719)

    🐎 Performance

    • Use NonNull for garbage collected pointers (9c66eded)
    • Don't recurse into already visited records to find implicits (b50061f5)
    • Avoid recursing into non-implicit types (c35b29e6)
    • Use SmallVec in Partition (d8c549bf)
    • Use a scoped collections over a persistent in implicit resolution (d13097e2)
    • Memoize implicit attribute lookups (-3%) (254af75e)
    • Speedup Symbol::module (9566a377)
    • Avoid creating function types unnecessarily (170f4673)
    • compiler:
      • Shrink the core::Expr type to 40 bytes (from 72) (779d1b65)
      • Copy elements directly into arena (cd2dd366)

    πŸ”‹ Features

    • Add gc::Mutex (d6e12460)
    • Automatically unroot values stored in Gc allocated values (6ebc398f, closes #746)
    • Add derive for Traverseable (844418df)
    • Allow mutable references to be passed to gluon (602220b5)
    • Add std.env (b561c8d6)
    • Implement woobly type propagation (a0b84525)
    • codegen: Add the newtype attribute (40854638)
    • completion:
      • Match on the symbols in type declarations (9d28ba10)
      • Return scoped symbols in the all_symbols query (94a385af)
      • Match on the symbols in type declarations (8fe083af)
      • Return scoped symbols in the all_symbols query (1ad302b0)
    • doc: Link to the github source (da75875b)
    • vm: Allow references to be passed through (3a92b176)

    πŸ’₯ Breaking Changes

    • Refer to registered types by their full name (a2daace6, breaks #)
  • v0.11.2 Changes

    March 26, 2019

    πŸ”‹ Features

    • doc: Don't display the full path to types in the documentation (a669faaa)

    πŸ› Bug Fixes

    • πŸ— Ignore mdbook for osx builds (7755967a)
    • check: The alias reduction stack must be cleared between unifying function arguments (170072a4)
    • doc:
      • Correct all the remaining links in docs (494675fe)
      • Point breadcrumb links correctly (2a9cca72)
      • Point Rust defined types to their doc location (b170f2f3)
      • Don't generate dead links in the documentation (04131b71)
      • Point sibling module links correctly (3bbf4a99)
  • v0.11.1 Changes

    February 13, 2019

    πŸ› Bug Fixes

    • πŸš€ Don't build release artifacts with full debug info (fe935835)
    • check: Subsume implicit functions with forall correctly (6de5c256)
  • v0.11.0 Changes

    February 11, 2019

    🐎 Performance

    • πŸ›  Re-use the value buffers used in fixed structures (40ca7bfd)
    • Avoid recursing when zonking a type without variables (4a482c76)
    • Avoid recursing in gather_foralls (6a38f437)
    • ⚑️ Optimized definition_name for the non-: case (1713a442)
    • Avoid recursing more in occurs check (c0acb066)
    • Use VecMap for type variable -> type lookup (e5f086c9)
    • πŸ‘― Avoid some clones when adding implicit bindings (86b2c9a6)
    • Use HashTrie over RedBlackTree (878f311a)
    • Avoid allocating new ArcKind in Type::kind (2911d7ef)
    • Properly rename type projections (fb6f3e14)
    • πŸ›  Don't allocate individual boxes for values in Fixed{Map,Vec} (b2532a17)
    • πŸ“‡ Speedup global metadata lookup (2c0477c7)
    • 🌐 Intern alias groups in translation (e20a1dba)
    • Avoid some recursion when unpacking aliases with AliasRef::typ (64edfb05)
    • Avoid recomputing generalization for the same type (0732ce1a)
    • Compare and hash types by the minimum necessary (75174cdf)
    • Avoid doing two hash lookups in interning (e3a3556c)
    • base: Remove an indirection in aliases (8327a035)
    • check:
      • Re-use the allocations for variables (d569cdc2)
      • Cuts the max memory use roughly in half on the lisp benchmark (5b91b6d3)
      • Avoid allocations for the field duplication check (18abf71e)
      • Partition implicit lookup more (e80f683d)
      • Don't look in the global context for non-globals (45bc2ad6)
      • Optmize occurs check (2ce4ec07)
    • kindcheck:
      • Avoid some unnecessary kind allocations (0afc648d)
      • Use a HashMap for lookups and cache computed kinds (27571ea5)
    • πŸ“‡ metadata: Use Arc to do shallow clones of Metadata (-4%) (4faf41b0)
    • πŸ“œ parser:
      • Pre-allocate space for record fields (d1f3cfec)
      • Shrink LALRPOP's internal symbol size by boxing (c845f753)
    • translate: Fix N2 behavior in translation due to type replacements. (14fc70fb)

    πŸ”‹ Features

    • check: Allow non-Type kinded types at the top of aliases (126ecebb, closes #186)

    πŸ› Bug Fixes

    • Honor the compiler settings through all import!'s (4da5b5f9)
    • check: Take the parameters of record type fields into account when inserting forall (b390db10)
    • doc: Don't display an empty module section (39478e07)
    • kindcheck: Force scoped type variables to have the same type in each scope (cadbc29c)
    • πŸ“‡ rename: Don't try to rename symbols if they are only defined in an earlier compilation (56c115ed)
    • std.http: Don't let one slow TLS connection block the server (68cc1286)
  • v0.10.1 Changes

    January 27, 2019

    🐎 Performance

    • πŸ‘ Use &mut to get better LLVM optimization (-2%) (7bd988e5)
    • Take the type directly from the pattern during record pattern compile (5fc9b2e8)
    • πŸ“œ parser:
      • Avoid one branch in Tokenizer::bump (parse_prelude: -6%) (9cf39d4b)
      • Shrink lalrpop's symbol size slightly (fff12fab)
    • vm:
      • Use more specialized functions (cd057689)
      • Add and use extend for Stack manipulation (41c9f0f6)
    • vm/translate:
      • Avoid one field lookup loop in pattern desugaring (292edb70)
      • Hoist a remove_alias call outside the loop (37fe8762)
      • Avoid doing replacement for trivial matches (bfbab7fd)
      • Use FnvMap with variable replacement (e6c4b614)

    πŸ› Bug Fixes

    • Always do a gluon panic on arithemtic overflow (82838a96)
    • std.http: Don't return NotReady if the http stream is broken (a93ed235)
  • v0.10.0 Changes

    January 05, 2019

    πŸ”‹ Features

    • Implement extensible effects (40185f22)
    • πŸ“œ Recover from more parser errors and errors in imports (693b560a)
    • Improve error recovery in let and do (ed5670c3)
    • Make std.json.de.deserialize simpler to use (0a6b2517, breaks #)
    • Add seq expressions (f452c2e3)
    • πŸ“š Display submodules in module documentation (fdab790f)
    • Add --open to gluon doc (89a93c59)
    • Don't have format depend on the main crate (55005236)
    • Add std.effect.alt (b9d65fb1)
    • Allow the prompt and color to be set from the REPL (3aa8f7d8)
    • πŸ“œ Let row polymorphic record types be parsed (fb41cde3)
    • Use i64 as the integer type in the vm (7ed0c1ef)
    • Add feature to switch debug status inside repl (b48d180c)
    • Add general purpose debugging status (92797784)
    • check:
      • Remove the alias dependence for variants (8c4678c7)
      • Remove the alias dependence for variants (16980eb4)
    • std:
      • Move when to std.applicative (2fd47247)
      • Add the Reader effect (14322f7e)
      • Add the State effect (092a0d05)
      • Add open_file_with and create_file to std.io (5b2a031f)
      • Add std.io.throw (ef756280)
      • Add Read File and Write File instances (1b86ae44, breaks #)
      • Add std.array.is_empty (8a65bc0f)
      • Add std.io.write (571e827c)
      • Add std.array.slice (d5f8e190)
      • Add std.io.read (689a42cc)
      • Add std.disposable (066655d1)
      • Expose functions for overflowing/saturating arithmetic in std.int and std.byte (ebfb68a0)

    🐎 Performance

    • Don't have generalize_type be N2 (16ba38a2)
    • 🚚 Remove redundant HashMap (7a07da19)
    • doc: Parallelize the documentation output (f3b24712)

    πŸ› Bug Fixes

    • πŸ“š Sort the modules in the documentation (1193d729)
    • πŸ‘ Rewrite higher ranked type inference to support ST (b52a1471)
    • Display the alias in type errors in more cases (61a9a6fe)
    • Consistently put then on the same line as if (6d00a89c, closes #495)
    • πŸ‘ Handle implicit forall insertion better (27be87ef)
    • Handle exhaustive matching on forall wrapper variants (8789f6a3)
    • Handle forall before variant constructors (8b2fcbed)
    • Handle forall before variant constructors (7e472abd)
    • Fix get_debug_level method to return cloned value instead of using lock (f1c40257)
    • Use fmt::Display trait to obtain to_string method (cdc13ce4)
    • πŸ–¨ Prevent printing out the contents of functions to the repl when debug status is not set (3824695a)
    • check:
      • Abort implicit checking immediately on infinite loops (b4e859c5)
      • Multiple fixes with higher ranked types (67a502f7, closes #603)
      • Distionguish forall in the top of aliases (69b0753b)
      • Avoid instantiating higher ranked types in function arguments (2750d242)
      • Distionguish forall in the top of aliases (aee2389c)
      • Avoid instantiating higher ranked types in function arguments (f4fc5451)
    • std:
      • removed explicit eq parameter from elem (b8c1c2a9)
      • fix a couple typos in a couple std modules (d4c1ddf0)
    • vm: Forward all functions in the VmType impl of RuntimeResult (9d6c7f45)

    πŸ’₯ Breaking Changes

    • Make std.json.de.deserialize simpler to use (0a6b2517, breaks #)
    • std: Add Read File and Write File instances (1b86ae44, breaks #)
  • v0.9.4 Changes

    October 21, 2018

    πŸ› Bug Fixes

    • codegen: Fix Type::variant call for VmType derive (48e1e11b)