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

Changelog History
Page 3

  • v0.9.3 Changes

    October 15, 2018

    ๐Ÿ”‹ Features

    • Allow headers to be part of the response (69dba621)
    • Allow std.http to use https (fb30fda2)
    • vm: Add thread.join (514fd3b5)

    ๐Ÿ› Bug Fixes

    • Ensure all futures on the stack gets polled (d5862e14)
    • โš  Don't generate warnings for VmType and Userdata derives (5979c967)
  • v0.9.2

    October 09, 2018
  • v0.9.1 Changes

    September 24, 2018

    ๐Ÿ”‹ Features

    • Allow implicit resolution if the same binding is included twice (e62a0523)
    • ๐Ÿ‘ Support non-static type parameters in VMType derive (bdc7ecaf)
    • vm: Allow module loaders to contain state (bee61dd8, closes #634)

    ๐Ÿ› Bug Fixes

    • โšก๏ธ Use the field order of the base record in record updates (b60c3e12, closes #509)
    • Don't error on Serialize/Deserialize derives because of missing imports (a598fe23)
    • check: Correct the order of expected and actual hints (beb30ae4, closes #627)
    • vm: Don't remove parent frames in when calling into the vm (4a4fd3b6)
  • v0.9.0 Changes

    September 16, 2018

    ๐ŸŽ Performance

    • Avoid allocating Strings in JSON [de]serialization (694dd14f)
    • recursion: No need to keep state between top level bindings (208d8b74)

    ๐Ÿ› Bug Fixes

    • Handle multiple doc comments and attributes between recursive let bindings (1767019c)
    • Break function types with implicit arguments correctly (2f537e66)
    • Resolve aliases that are hidden behind type variables (b61ea5e9)
    • Resolve types through function aliases (be5374ef)
    • check:
      • Always inserted implicit arguments to implicit_args (f7ffc701, closes #601)
      • Plug soundness holes with higher ranked types (731a9ecd)
      • Don't return non-skolemized types from lambda (b0f283f2)
      • Non-polymorphic records which are a prefix of another do not unify (cc85aae2)
      • Don't panic on partially applied aliases (cc1e613e)
    • doc:
      • Correct the breadcrumbs link of nested modules (81c17c22)
      • Don't rebuild gluon_doc when used outside of the gluon repo (3da6c639)
    • format: Keep the brackets around implicit arguments on the same line (03a1d9f6)
    • repl: Extract record fields using name_eq instead of Symbol::eq (160c1c9c)
    • std: Don't panic if an error is found compiling a std module (b02fa812)
    • vm:
      • Handle out of order drops with RootedValue (2fdc16b6)
      • Restore the vm to a valid state after error has occured (d4f4ec5e)
      • Set the field names of record! created records (8e58159e)
      • Allow spawned actions to be forced multiple times (8b27d649)
      • Correctly assign record field names derive(Pushable) (4a36d825, closes #591)

    ๐Ÿ’ฅ Breaking Changes

    • Allow Pushable to to call back into the vm (8d100dd2, breaks #)
    • Migrate tokio_core uses to tokio (18aa1f0f, closes #462, breaks #)
    • ๐Ÿ“œ parser: Define recursive bindings with rec (552c8f21, breaks #)
    • vm:
      • Remove the unused Root and RootStr types (996fedc1, breaks #)
      • Move Alternative to std.alternative (e961cc24, breaks #)

    ๐Ÿ”‹ Features

    • Hint towards rec let if old 'and' bindings are used (a879194c)
    • โš  Print a hint/warning towards necessary feature gates when importing modules (9b96e511)
    • Prevent type errors from creating cascading errors (7976bcd5)
    • 0๏ธโƒฃ Bound derive(Getable) by 'value byte default (597b6963)
    • Add derive(Serialize) (31799a94)
    • Treat Pushable/Getable derives on newtypes as their inner type (62ad61d9)
    • Allow OpaqueValue to be converted into its inner value (1147ab59)
    • Add JSON serialization (b028ab2d)
    • ๐Ÿ‘ Support the crate_name attribute in getable (81ba45f5)
    • Allow Pushable to to call back into the vm (8d100dd2, breaks #)
    • Migrate tokio_core uses to tokio (18aa1f0f, closes #462, breaks #)
    • Implement Getable for Vec (727e279b)
    • Allow displaying the post-macro expansion AST (53f5cbf9)
    • Add derive(Show) (d8689a73)
    • Add derive(Eq) (c6da284d)
    • check: Let non-function values be used recursively in some contexts (c2027add)
    • codegen: Allow structs to generate record types using derive(VmType) (7a9fb16c)
    • doc:
      • Provide links to sub-directories of modules (3ef34989)
      • Add #[doc(hidden)] to hide bindings in docs (92c8bec6)
      • Update to handlebars 1.0.0-beta.4 (78880ebf, closes #582)
      • Make all types link to their definition (34fff8d1, closes #552)
    • ๐Ÿ“œ parser:
      • Define recursive bindings with rec (552c8f21, breaks #)
      • Add raw string literals (9bda2804, closes #276)
    • vm:
      • Remove the unused Root and RootStr types (996fedc1, breaks #)
      • Let Userdata be returned to Rust (1ea24284)
      • Move Alternative to std.alternative (e961cc24, breaks #)
      • Let Getable return types bound to the lifetime of Variants (#587) (010a7f71)
  • v0.8.1 Changes

    July 01, 2018

    ๐Ÿ› Bug Fixes

    • Reject programs which use lowercase letters for types (bd54a83f)
    • Display type fields with the parameters on the left side of = (ef6fc9bc)
    • Handle type projection in kind check (3b78e370)
    • ๐Ÿ–จ Print the correct source on errors in the repl (159eaf99, closes #568)
    • check: Don't shadow more general variant constructors (182c3960, closes #548)
    • completion: Avoid panicking on env_type_of calls (c63cf2fb)
    • format:
      • Update pretty to avoid panickingon multiline strings in debug mode (bb4d05da)
      • Don't panic on multiline strings (7662f38f)
    • repl:
      • Don't panic on solo array literals (5bffdfa9, closes #555)
      • Don't fail with a parse error on lines only containing a comment (f5819bca, closes #559)

    ๐Ÿ”‹ Features

    • Allow type definitions to be declared inside types (d47508d9)
    • Add debug.show (0c962722)
  • v0.8.0 Changes

    June 14, 2018

    ๐ŸŽ Performance

    • ๐Ÿšš Remove Substitution::set_type (4c751ab6)
    • Avoid running skolemize and instantiate when there is no variables (1a09a745)
    • Don't trim anything when just derefing symbols (~12%) (703e0529)
    • Avoid cloning the name inside Symbols unnecessarily (c1c061a0)
    • ๐Ÿ“œ Avoid allocating a new Arc for each type hole during parsing (8ecdccf1)
    • check: Partition the implicit bindings to reduce the search space (c26c12f3)
    • ๐Ÿ“œ parser:
      • Avoid calling Location::shift unnecessarily (07e00726)
      • Improve performance of is_operator_char (~2%) (3d885997)
      • Reuse the same Kind allocation in the parser (ba6e9816)

    ๐Ÿ› Bug Fixes

    • ๐Ÿ“œ Ensure that missing identifier gets reported despite the infix reparser errors on it (390b2a2c)
    • Emit the correct type Deserialize generated array types (112fe346, closes #542)
    • ๐Ÿ“œ Emit a span inside the actual source for eof parse errors (3d598fbe)
    • Resolve aliases properly in call expressions (b6ac8b65)
    • Ignore symbols outside of the current source for all_symbols (b8a408a1)
    • Get the http example working again (d151ab10)
    • ๐Ÿ–จ Print a newline between each unification error (2241c296)
    • Don't allow string references to be returned from run_expr (b133bf08)
    • Don't lose error messages from sub-modules (5e1bbbef)
    • Take implicits into account in type queries on infix expressions (8651be33)
    • Insert implicit arguments when none one has not been specified (c9a42268)
    • Indent type signatures that are on multiple lines (27eea994)
    • Only report errors from imported modules once (6f3bbd8f)
    • Provide proper line and source information for macro errors (7e924c2c)
    • Don't panic if let bindings has more arguments than declared type (15bf3072)
    • check:
      • Put variants into scope even behind aliases (2d1ba6cb)
      • Propagate the expected type through array expressions (9f0f6571)
      • Don't guess at what type a record is (a4ae10f0, closes #510)
      • Make the pattern's type the expected type (8b075f6f)
      • Propagate type fields even if the type was undefined (f79f1a7e)
      • Point to the exact field that did not exist in type patterns (88865cd4)
      • Replace the type hole with the actual type during subsumption (f2ae746e)
      • Don't generalize tail expressions before replacing implicits.rs (7d7bede2)
      • Don't overwrite implicit variables in renaming (b8de950f)
      • Don't bail out if record fields are undefined (e0863b93)
    • compiler: Merge pattern bindings which appear in multiple alternatives (f8657776)
    • completion:
      • Provide suggestions on whitespace inside record expressions (17a63a04)
      • Don't suggest fields that have already been used for record expressions (7edbe92e)
      • Fix almost all clippy warnings (cd842de0)
    • format:
      • Format doc comments in record expressions (d030cd2c)
      • Always put declared variants on separate lines (859e0acb)
      • Don't touch formatted files if they haven't changed (dabc96db)
    • ๐Ÿ“‡ metadata: Propagate metadata from function arguments (025c73c6)
    • ๐Ÿ“‡ rename: Rename implicit imports (6a3409d1)
    • std:
      • Ensure that ++ gets a fixity assigned to it (020153f7)
      • Correct Show's type (6ab92d13)
    • vm:
      • Don't error on <> when using lazy values from multiple threads (78e5f90b)
      • Allow deserializing functions through RootedValue (6f7531d6)
      • Align garbage collected allocations correctly on 32-bit systems (734bfc5e)

    ๐Ÿ”‹ Features

    • ๐Ÿ“‡ Provide metadata for type patterns (67fcb19e)
    • Display the kind of a type when hovered over (f407d976)
    • Break apart the prelude into separate modules (966750b2, breaks #)
    • Allow primitive types to be exported with record! (6700dc29)
    • Detect and format tuple types as (Int, String, abc) (8697e348)
    • Use #[IDENTIFIER(..)] as the attribute syntax (0300590d, closes #515, breaks #)
    • Improve the error message for unresolved implicits (2bda18b3)
    • Return an error when infix operators are used without fixity (89c7e4a8)
    • Obey the new @infix attribute for operator fixity (1a143b80)
    • โšก๏ธ Update to lalrpop 0.15 (4f59c4c2)
    • Add conversion functions betwen ints and floats (187ac79f)
    • Treat a pattern matched type as if it exists even on type errors (42059db7)
    • ๐Ÿ“š Display sibling modules on the left side of module documentation (c18c6729)
    • ๐Ÿ“š Use bootstrap to get some prettier documentation (bbfee5d0)
    • Make gluon_doc into an executable (dd046531)
    • Generate an index.html file with links to all documented modules (788d2c7e)
    • ๐Ÿ“š Emit html from the documentation generator (30565c1e)
    • ๐Ÿ”ง Allow configuring the import search paths when creating a vm (87e92198)
    • Allow explicit bindings of implicit arguments (79869285)
    • Replace make_ functions with implicits (2a51ece7)
    • Add implicit arguments (9eb8aafd)
    • Filter out unrelated fields in some type errors (63d2ab43)
    • check:
      • Improve error message for applying to many arguments (012bcefb, closes #508)
      • Filter UndefinedField errors (a0ecfd20)
      • Propagate metadata defined on fields in type definitions (c413bbdb)
    • completion:
      • Suggest types in record expressions (8091a845)
      • Provide suggestions for the record field shorthand (eb193aae)
      • Display information about fields in record constructors (3fd96c0e)
    • doc: Add documentation generation (1d199936)
    • repl: Displayed colored errors in the repl (4d053f32)
    • std:
      • Add Show, Eq, Ord etc to std.array (b76e290d)
      • Add Show, Eq, Ord etc to std.stream (e9406d33)
      • Add min and max functions to std.cmp (2f3b8048)
      • Export ++ as a string append function (85a0eeaa)
      • Re-export all std.map functions as implicit functions (64bb7899, breaks #)
    • vm:
      • Display the stacktrace on gluon panics (ebc17487, closes #528)
      • Add from_str_radix to std.int (7d0f705c)
      • Add is_char_boundary and char_at on String (3a63c26c)
      • Add Char <-> Int conversion functions (620df403)
      • Add the std.byte module (ecbbc132)

    ๐Ÿ’ฅ Breaking Changes

    • Break apart the prelude into separate modules (966750b2, breaks #)
    • Use #[IDENTIFIER(..)] as the attribute syntax (0300590d, closes #515, breaks #)
    • std: Re-export all std.map functions as implicit functions (64bb7899, breaks #)
  • v0.7.1 Changes

    February 04, 2018

    ๐Ÿ”‹ Features

    • ๐Ÿš€ Deploy builds using trust and cross (372a278f)
    • ๐Ÿ–จ Export expr pretty printing function to format (646b7c66)
    • Make dependencies unavailable in wasm optional (6e666f73)
    • completion:
      • Make prefix filtering optional (896e985f)
      • Provide signature help through completion (df92dad7)
    • ๐Ÿ“œ parser: Introduce literal pattern for match expressions (6f4dd7f6)

    ๐Ÿ› Bug Fixes

    • Actually return the stack size from the stack_size function (87e4c95e)
    • c-api: Mark C functions as no_mangle (8eee8619)
    • check:
      • Don't print type mismatches betwen EmptyRow (f2dc9ef6)
      • Don't instantiate variables during unification inside aliases (1326ca5d)
    • vm:
      • Use check_translation in all tests (43ca5f62)
      • Fix warning about upcoming breaking change (3918f66c)
  • v0.7.0 Changes

    December 22, 2017

    ๐Ÿ’ฅ Breaking Changes

    • Let the run_script functions execute IO actions (8373f8f5, breaks #)

    ๐Ÿ› Bug Fixes

    • Don't crash in renaming on partial patterns (fdea1724)
    • Don't format Value::String as GcStr() (c8c8ba99)
    • Set the correct spans for renamed identifiers (545f8911)
    • ๐Ÿ”’ Lock the garbage collector before the interner to prevent dead locks (794cdce1)
    • Rename variables in record base expressions (d4270a84)
    • Handle fields being omitted when removing intermediate records (bfac0823)
    • Correctly use traverse_with_key to get access to the keys (abff3b90)
    • base:
      • parameterless ice! macro. (e5346dfa)
      • Don't forget the ForAll type when calling walk_move_type (7b78bd78)
    • check:
      • Don't panic on nested patterns on parameterized types (7e6ef364)
      • Remove spurious println! (95177345)
      • Don't panic if a type is undefined in a variant (e476b1e0)
      • Typecheck a module even if macro expansion fails (5f78fec0)
      • Don't consider global variables for overload resolution (aeade634)
      • generalize_type must not return unified variables ... (437c5224)
    • completion:
      • Don't print duplicate primitive modules (0c4100db)
      • Provide completion for types imported from other modules (923f5cc7)
      • Complete parameterized variant type contructors (d232cc19)
      • Provide pattern completion on record aliases (43abb033)
    • doc: Rearranged sections to make it easier for a first time user to get started and added a section on testing (f4ed3134)
    • format:
      • Layout successive if-else expressions on the same line (18055c8d)
      • Don't remove comments between expressions in blocks (473b583e)
      • Don't put records already on a newline on the beginning line (a66cafcf)
    • import: Prevent multiple threads from compiling the same module (cb522854)
    • ๐Ÿ“œ parser:
      • Accept doc comments before and tokens (90393b9d)
      • Select the correct offside location inside parentheses (4060aad5)
      • Byte literals with unexpected char (18b34794)
      • Float literals with unexpected char (ea537e13)
    • repl:
      • Avoid overflowing the stack when printing values (cd1505ad)
      • Don't exit the repl if compilation errors occur in load (3cf289f5)
      • Print out Char as the "character" instead of code point integer in the repl (6612ceb2, closes #395)
      • Run io expression when running files from the command line (64ed556e, closes #365)
    • vm:
      • Run IO expressions with io.run_expr (e308f1f2)
      • Don't rely on frame_levels to clear frames after errors (3a3205df)
      • Allow async functions to run within the io primitives (e6f611a0)
      • Indent the pretty printing of Value (5d646515)
      • Fix deadlock caused by inconsistent lock ordering (8024d57d)
      • Deep clone partial applications properly (d7877cac)
      • Lock all child gc's and child-threads when collecting (5642b97a)
      • Handle polymorphic records created in parent threads (8570ace5)
      • Don't let rustc think the Array type can't exist (a8db3d5d)
      • child_threads must be traversed for all threads (eac571b9)
      • Tuple indices start at 0, not 6 (655e4526)
      • Don't deadlock when returning the result of resume (99c8d148)

    ๐Ÿ”‹ Features

    • Accept @ patterns in the repl (1b6838ec)
    • ๐Ÿ“œ Add more character parsers to parser.glu (a74726b9)
    • Wrap all macro errors with a span (20c8339a)
    • Display kinds when completing types (1dd43c14)
    • Teach import to accept a path as argument (ed3d0b19)
    • Let the run_script functions execute IO actions (8373f8f5, breaks #)
    • Improve the error message of cyclic dependencies (db540fd7)
    • base:
      • Add a non-panicking version of env_type_of (0a7aea90)
      • Improve method names in MutVisitor (1a24c084)
      • Add PartialEq for spans (ded0d03b)
    • check:
    • completion:
      • Provide completion for primitive modules (ce7100bf)
      • Provide completion for the import! macro (6e791ecb)
      • Provide completion when writing fields before another field (e89f8df7)
      • Don't suggest fields already written in a pattern (bb371410)
      • Suggest type fields inside record patterns (a37222a4)
      • Suggest what fields are available in record patterns (6e1dca2a)
      • Provide completion on do expressions (e45de697)
      • Provide completion for type variables (3b164a45)
      • Provide auto completion for types in let bindings (e7a0c5c8)
      • Provide auto completion in type definitions (79688de8)
    • format: Format do expressions (71157dbd)
    • ๐Ÿ“œ parser:
      • Produce expressions if the in token is missing (a523bec7)
      • Add more operator characters (6a54edbb)
      • Recover from parse errors when nothing follows =, -> ... (d753672e)
      • Parse do expressions (9a97a457)
    • repl:
      • Save and load command history (8fd443b2)
      • Have a long a short form for each repl command (db099216)
      • Allow module loading to be interrupted (196e099e)
      • Don't shutdown the repl on Ctrl-C (088b1a05)
    • std.list: Add filter and sort (d67fc29e)
    • ๐Ÿ“œ std.parser:
    • vm:
      • Add discriminant_value primitive (3d65a559)
      • Return type and value separately from run_expr (6aa5c471)
      • Add a basic wrapper around the rand crate (7210d8dd)
      • Let the record macros have non-rust identifiers for field names (55ccbe1c)
      • Let primitive modules be loaded via import! (91bb7d3f)
      • Re-export map.empty (577cb08b)
  • v0.6.2 Changes

    October 18, 2017

    ๐Ÿ”‹ Features

    • Format all files (recusively) when a directory is given (6ce97c6f)
    • Add a trailing comman on records that take multiple lines (8c3aa951)
    • ๐Ÿ–จ Pretty print record expressions with the .. operator (aeb1d75b)
    • Add the '..' operator to distribute the fields of a record (d6b03cc9)

    ๐Ÿ› Bug Fixes

    • Error on undefined variables in type bindings (ed442110)
    • Return and error on duplicate fields defined in another module (0973b264)
  • v0.6.0 Changes

    October 10, 2017

    ๐Ÿ› Bug Fixes

    • โœ… format/tests/pretty_print.rs (de858796)
    • Replace 'env!("OUT_DIR")' with 'env::var("OUT_DIR").unwrap()' (366c6306)
    • Preserve comments inside types (4a216da8)
    • Mark lines of recursive function definitions (4d5a4b67)
    • Don't crash when querying types on unit expressions (1c36bbbd)
    • Report completions in let patterns (c6172991)
    • Visit Expr::Tuple { typ } (640154b2)
    • Deserilize partial applications properly (0efed42b)
    • Preserve parentheses in nested patterns (d7e238da)
    • Correctly visit all core expressions when walking the tree (0ad8ce00)
    • Preserve newlines between record fields properly (8f169ad3)
    • Don't lose parts of literals when formatting (7b538496)
    • check: Indent types in error messages correctly (6ff9a217)
    • completion:
      • Complete type constructors which are implicitly imported (d336ad37)
    • format:
      • Indent long record pattern matches (c2a5cf34)
      • Preserve block comments in some places (ca125bf1)
      • Preserve comments between let bindings and their bodies (f9836f9c)
    • repl: Evaluate IO expressions automatically in the repl (d9e6e952, closes #334)
    • resolve: Leave aliases over opque types alone (3ac0fd61)

    ๐Ÿ”‹ Features

    • Add impls of VmType, Pushable, Getable for all integer types (0a53bd52)
    • Allow gluon types to be generated from rust types (35d9b804)
    • Provide a way to get all* symbols of a module (d6df46fd)
    • Add find_all_symbols (0602f8d6)
    • Allow doc comments on fields in types (3e9ce940)
    • Vastly improve when comments are kept during formatting (91522578)
    • Display type information about function arguments (fe2ec28d)
    • Fallback to returning information about the enclosing expression (3a8e4c0b)
    • Give more control over what data is returned for completions (7d0bc359)
    • Constant fold binary expressions (10b77ac3)
    • ๐Ÿ–จ Print the commit hash when passing --version to the gluon executable (3a1e5969)
    • ๐Ÿ“œ Rewrite the parser to be Result based instead of continuation based (488b6bdf)
    • Add bytecode serialization and loading (f5d6c752)
    • Make serde an optional dependency (a17c0c75)
    • base: Allow the width to be adjusted before displaying types (2d1d3867)
    • ๐Ÿ“œ parser:
      • Allow projection on types in the parser (b3aaabdf)
      • Let gluon files specify shebang (d104deea)
    • vm:
      • Allow generating a simple ffi binding for rust types (31034b5a)
      • Add parse functions for floats and integers (7e5f70d0)

    ๐ŸŽ Performance

    • vm: Avoid generating unnecessary catch-alls (ebcdba96)