Releases: rune-rs/rune
Releases · rune-rs/rune
0.12.1
Added
- Introduce Vm::lookup_function (#439).
- Clear buffer between string-concat arguments (#431).
- Allow constructing Function instances from closures (#420).
- Support documentation for fields in structs / struct variants. (#415).
- File and module docs (#410).
- Add
char::to_int
(#401).
Fixed
- Improve numerical lexing (#432).
- Don't panic on missing last item id (#427).
- Fix language server (#423).
Changed
- Completely rewritten vscode extension (#425).
- Item and module pooling during compilation (#419).
- Always index when introducing compile meta (#418).
- Prioritize removing indexed entries in query_meta (#417).
- Immediately emit doc comments instead of associating them with build meta (#414).
- Support more item-based operations to walk collected metadata (#412).
- Introduce basic HIR for compiling (#404).
0.12.0
0.10.3
0.10.2
0.10.1
0.10.0
For a guide on how to go from 0.9.x 0.10.x, see the upgrade guide for 0.9.x to 0.10.x.
Changed
- Rune is now a single
rune
crate instead of being divided betweenrunestick
andrune
. - Completely overhauled how rune is compiled.
- Changed how diagnostics is emitted.
- Macros now take an explicit
ctx
macro rather than relying onTLS
(#304). - Native functions no longer have to be
Copy
(#329). - Many types that used to be publicly exported are now hidden.
rune test
(andrune bench
) now captures all output (#354).
Added
- We can now compile rune source inside of macros (#302).
- Basic benchmarking tool has been added to
rune-cli
throughrune bench
(#296). Vm::with
has been added so we can call functions like
Value::string_display
that "must be run withing a virtual machine" (#291).
Fixed
0.9.1
Fixed
- Fixed memory leak when defining functions (#273) (thanks MicahSchiewe).
Added
- Enable passing Deref/DerefMut into Rune as Values (#269) (thanks tgolsson).
- Support for deriving
Any
on generic types (#268) (thanks tgolsson). - Add display implementations for byte and bool (#258) (thanks Roba1993).
Changed
0.9.0
0.8.0
0.8.0
Added
- Support for
#[test]
annotations (#218, #222) (thanks tgolsson!). - Add
file!()
andline!()
macros (#168) (thanks tgolsson!). - Support for field functions and derives to implement them (#169, #170).
- Support for
crate
in modules (#172). std::any
APIs for runtime inspection of types (#178) (thanks tgolsson!).- Support for range expressions (#180).
- Missing implementations for
FromValue
conversions fori16
andu16
(#235) (thanks genusistimelord!). - More APIs and iterator-heavy benchmark (#232) (thanks tgolsson!).
- Added initial benchmarks (#189).
- Added cellular automata benchmark (#220) (thanks tgolsson!).
- Added fibonacci and brainfuck benchmarks (#193) (thanks tgolsson!).
- Projection APIs for internal
Ref
/RefMut
(#211). - Many API additions and fixes (#219, #229, #233, #241, #196, #199, #185) (thanks tgolsson!).
- Annotations to improve measuring the performance of individual operations in the VM (#190).
- Pattern matching for booleans (#188) (thanks genusistimelord!).
- Added support for
continue
inside of loops (#183). - Add support for registering and accessing runtime constants (#239).
- Support for panicking pattern binding in function arguments (#195).
- Added parsing for yet-to-be supported path segments (#206).
- Add basic support for threaded execution (#97).
Changed
- Minor changes (#247, #208).
- Improved CLI with
cargo
-like subcommands (#223) (thanks tgolsson!). - Compile-time metadata has been simplified (#163, #164).
- Internal compiler improvements (#173, #174).
- Make types used in
Context
iteration APIs public (#176). - Slim down the size of runtime meta (#177).
- Change and improve how protocol functions are called (#210, #209).
- Improve performance of runtime hashing (#191).
- Improve diagnostics when using an exclusive reference which is not exclusive (#213).
- Improve performance by reducing the number of copies generated (#194).
- Make compile hooks refcounted for increased flexibility (#221).
- Expose LSP server as a modular library for custom uses (#186) (thanks tgolsson!).
- Improve performance of small objects by using BTreeMap for field storage (#231) (thanks tgolsson!).
- Report errors and warnings through same diagnostics structure (#227, #228).
Fixed
- Minor fixes (#198, #201).
- Documentation fixes and improvements (#248, #234, #242) (thanks robojumper, maxmcd, and hvithrafn!).
- Fix negative fractional literals (#184) (thanks tgolsson!).
- Various fixes for use in OxidizeBot (#161).
- Bug with using wrong protocol for
MUL
andDIV
(#167). - Add missing macro modules in rune-wasm (#171) (thanks tgolsson!).
- Fixed buggy visibility checks for paths (#175).
- Various fixes and improvements due to AoC (#181, #187, #192, #197, #203, #204, #205, #216, #217).
- Give
SourceLoader
a lifetime (#245) (thanks tgolsson!). - Fix miscompilation in struct literals (#246) (thanks robojumper!).
- Fix miscompilation in pattern matching (#214).
- Introduced and fixed binding bug (#202).
- Fix so that different variants of the same enum have different equalities (#215).
- Make float associated fns associated (#240) (thanks tgolsson!).
- Bump nanorand to fix incorrect generation of random numbers in
rand
module (#243) (thanks tgolsson!). - Fixed broken assembly of more than one
if else
(#230).
0.7.0
Added
- The Rune project now has a Code of Conduct (#12).
- Support for bitwise operations on numbers (#13, #20).
- Book now has support for highlighting
rune
blocks (#14). - Preliminary support for modules without visibility (#16, #17).
- Debug information for function variable names now reflect source (#24).
- Initial support for macros (#29, #30, #31, #114, #135, #136,
#137, [#138], [#141], [#142], [#143], [#144]). - Add cargo build cache (#36) (thanks shekohex!).
- Rust
quote!
macro for Rune macro authors (#34). - Support for object- and tuple-like field assignments (#38, #39, #40,
#66). - Support for lazy evaluation for and/or (
&&
/||
) (#50) (thanks
seanchen1991!). - Add
AsTokens
,FromValue
,ToValue
, andSpanned
derives (#41, #85,
#87, #88, #113). - Visual studio code extension with syntax highlighting and basic language
server (#46, #47, #48, #60, #74) (thanks killercup!). - Non-zero exit status on script errors (#58, #59) (thanks killercup!).
- Improve CLI by parsing arguments using
structopt
(#51) (thanks
shekohex!). - Executing functions in the virtual machine can use external references
(#52). - Remove unused instruction in
loop
(#53) (thanks genusistimelord!). - Tweak module dependencies to use native Rust modules (#54) (thanks
killercup!). - Internal changes to support a future C FFI (#55).
- Improving module API (#56).
- Extending
http
module to deserialize JSON directly (#57) (thanks
killercup!). - Automatic build releases on tags (#68).
- Fixed locals bug with breaking control in the middle of an index get operation
(#71). - Community site at https://rune-rs.github.io (#75).
- Add WASM-based Playground to community site https://rune-rs.github.io (#77).
- Support for limiting execution of
rune-wasm
(#80). - Support for modules, imports, re-exports, visibility, and path resolution
(#83, #92, #98, #124, #125, #128, #129, #130, #131, #133,
#134, [#148], [#155]) (thanks dillonhicks!). - Add WASM support for a couple of showcased rune modules (#89).
- Added runtime type information (RTTI) for values in Runestick (#90, #112).
- Add a
rand
module torune-modules
(#100) (thanks aspenluxxxy!). - Initial support for constant evaluation (#93, #94, #99, #104, #105,
#106, #107, #117, #122, #123, [#153]). - Add
Args
implementation forVec
([#147]) (thanks MinusGix!). - Export a
Function
variant calledSyncFunction
that is thread-safe ([#149],
[#151]) (thanks MinusGix!). - Support
move
modifier to async blocks and closures to take ownership of
values being used ([#152]). - Basic
Iterator
support ([#156], [#157]) (thanks MinusGix!). - Support for calling protocol functions from native code using
Interface
([#159]).
Changed
- Make units more efficient by separating runtime and compile-time metadata (#24).
- Change the internal representation of
Item
to be more memory efficient (#63). - Make the implementation of
ParseError
andCompileError
more consistent (#65). - Remove the
rune-testing
module (#67). - Made evaluation order of index set operations the same as Rust (#70).
- Make hashing less error prone (#72).
- Various parser changes and tests (#110).
- Various internal changes (#103, #108, #109).
- Parser simplifications (#120, #121).
- Negative literals are handled as expressions (#132).
- Syntax for template strings now follows EcmaScript ([#145]).
Fixed
- Introduced custom highlight.js to fix issue with hidden lines in the book
(#10). - Semi-colons in blocks weren't required, they now are (#32).
- Fixed field assignments (#38, #40) (thanks MinusGix!).
- Book typos (#11, #18, #28, #37) (thanks Sparkpin, seanchen1991,
stoically, and macginitie!). - Fix broken book links (#84, #86) (thanks dillonhicks!).
- Fix pattern miscompilation (#62).
- Fixed bug with Closure optimization where it's being treated as a function
(#21, #22) (thanks MinusGix!). - Fixed a number of clippy lints (#35) (thanks shekohex!).
- Fix using closures in literals, like
(0, || 42)
or#{a: || 42}
(#78). - Shared access guards didn't implement Drop allowing them to leak their guarded
value (#119).