gluon v0.3.0 Release Notes
Release Date: 2017-02-01 // about 7 years ago-
๐ Version 0.3.0 improves the experience of writing gluon by a significant amount thanks to a few ๐ different improvements. The main reason for this is the rewrite of gluon's parser to use LALRPOP ๐ which just started with the intent of making the parser easier to maintain but with error recovery โ added to LALRPOP the parser is now able to typecheck broken code which is used to drive code completion.
Another big addition to the usability of gluon is that an experimental debugger has been added to the ๐ visual code plugin! This initial implementation provides breakpoints, pausing and variable inspection.
๐ Lastly gluon has gotten support for asynchronous functions through tokio! It is now possible to write Rust functions which return a
Future
and gluon will automatically suspend the running gluon program and return a new future which drives the program until completion. As an example of this a http server ๐ built on hyper is currently in the PR queue just waiting for a tokio based release of hyper.๐ Bug Fixes
- Ensure that the gluon library can be built without any features (347adea5)
- ๐จ Print closures as
name: value
using debug information (880e6006) - Allow lambdas to appear on the right side of an infix expression (1f587349)
- ๐ Avoid rebuilding the parser crate even if nothing has changed (322e7ed2)
- Don't panic when compiling partially compiled constructors (6fb552ea, closes #202)
- check:
- compiler:
- completion: Don't pick the wrong types from unordered record patterns (f283de18)
- ๐ parser:
- vm:
- Allow hook functions to return asynchronous results (52820e94)
- Don't introduce an Unknown scope when calling functions (f4f81fd7)
- Don't return an error for exiting to a locked scope (81f6d956)
- Don't emit line information for macro expanded code (4f056beb)
- Deep clone OpaqueValue when it is sent between disjoint threads (ba7f316c)
- Make get_global's type check act as a type signature check (eee79952)
- Implement Getable for Function (73f4feb0)
๐ Performance
- Allocate AppVec directly instead of using intermediate Vecs (b0bc41f2)
- Use SmallVec in the Type::App variant (a26c1062)
๐ Features
- Make load_script return a future (a8df68a5)
- ๐ Add a future which can avoid creating an event loop for sync calls (d2132fc8)
- Implement explicit kinds on type alias parameters (8a82cfdd)
- Allow querying the number of frames on the stack in the debug api (a012274c)
- Provide the index for each local through the debug interface (6ba5b44f)
- Add a function to query upvars from a Frame (cf67386a)
- Add a compiler option for controlling whether to emit debug information (6c552806)
- Add an iterator over upvariable names (a098c902)
- Allow the hook to yield and later resume execution (2aea009f)
- Add variable name retrieval for the debug interface (aa47e4dd)
- Add an extra parameter to HookFn which can be queried for debug information (01a041a9)
- Add flags to control when the hook function is called (29230dbe)
- ๐จ Allow the width to be specified in the value printer (1481f3f4)
- ๐จ Allow the value printer to limit the depth of the printed value (8d92cf08)
- ๐ Rewrite parser using LALRPOP (cc3d3267)
- Add a macro for encoding gluon records into rust types (1d5f67b3)
- Add a macro for describing gluon record patterns (e0151e2f)
- ๐ Visit and reparse all nested infix expressions (0c531107)
- ๐ parser: Return valid a valid AST after parsing an invalid expression (1cdd0e31)
- vm:
- Make the compiler pipeline return futures for executing (c0d355e2)
- Allow extern functions to return futures (120f9d1d)
- Add types to all variables in the debug info (38674f1f)
- Add a pretty printer on vm values (0288e0a4)
- Add a from_ut8 method for converting
Array Byte
intoString
(a336a49f) - Implement clone on OpaqueValue and Function (b56549c4)