Skip to content

Latest commit

 

History

History
488 lines (435 loc) · 21.9 KB

CHANGELOG.md

File metadata and controls

488 lines (435 loc) · 21.9 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Fixed

  • Stop depending on yanked futures-core (#372) (thanks d00z3l!).

Fixed

  • Fix rune-cli build when building with default features, as it does when installing from crates.io (#368) (thanks tgolsson!).

Fixed

  • Fix shadowed variables being incorrectly captured (#363).

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 between runestick and rune.
  • Completely overhauled how rune is compiled.
  • Changed how diagnostics is emitted.
  • Macros now take an explicit ctx macro rather than relying on TLS (#304).
  • Native functions no longer have to be Copy (#329).
  • Many types that used to be publicly exported are now hidden.
  • rune test (and rune 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 through rune 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

  • Fixed issue when expanding template literals which prevents properly using them as expressions (#326) (thanks Steven0351!).
  • Constant values are not exported so they can be looked up in the unit (#316, #317) (thanks pkolaczk and tgolsson!).
  • Make SyncFunction documentation visible (#279).

Fixed

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

  • Correctly mark AnyObj::{from_ref, from_mut} as both super unsafe (#265)
  • Various internal refactorings (thanks Roba1993).

Changed

  • rune-modules now uses tokio 1.x.

Fixed

  • Vm::async_call didn't use async completion functions ([#253]) (thanks Roba1993!).

Added

  • Support for #[test] annotations (#218, #222) (thanks tgolsson!).
  • Add file!() and line!() 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 for i16 and u16 (#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 and DIV (#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).

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, and Spanned derives (#41, #85, #87, #88, #113).
  • Visual studio code extension with syntax highlighting and basic language server (#46, #47, #48, #60, #74) (thanks killercup!).
    • As-you-type building (#49).
    • Jump to definitions (#61).
    • Multifile project support (#64).
    • Automatic downloading of language server binary (#69).
  • 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 to rune-modules (#100) (thanks aspenluxxxy!).
  • Initial support for constant evaluation (#93, #94, #99, #104, #105, #106, #107, #117, #122, #123, #153).
  • Add Args implementation for Vec (#147) (thanks MinusGix!).
  • Export a Function variant called SyncFunction 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 and CompileError 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).