rune

An embeddable dynamic programming language for Rust.

APACHE-2.0 License

Downloads
259.7K
Stars
1.6K
Committers
28

Bot releases are hidden (Show)

rune - 0.13.3 Latest Release

Published by udoprog 3 months ago

What's Changed

Full Changelog: https://github.com/rune-rs/rune/compare/0.13.2...0.13.3

rune - 0.13.2

Published by udoprog 7 months ago

Full Changelog: https://github.com/rune-rs/rune/compare/0.13.1...0.13.2

rune - 0.13.0

Published by udoprog about 1 year ago

See the release announcement for more information.

What's Changed

New Contributors

Full Changelog: https://github.com/rune-rs/rune/compare/0.12.3...0.13.0

rune -

Published by udoprog over 1 year ago

This is a backport release, which removes the internal assumption that the size of a TypeId is 64-bits (see #550) since this will break soon in a future release.

rune -

Published by udoprog over 1 year ago

Fixed

  • Avoid instance functions during local lookup (#454).

Changed

  • Move macros into the rune crate (#456).
  • Implement AsRef<Module> for Module and make Context::install take it (#459).
  • Recommend Rune for use in documentation.
rune -

Published by udoprog over 1 year ago

Changed

  • Set rust-version to 1.63.
  • Various documentation fixes.

Added

  • Added contains method to string (#449).
rune -

Published by udoprog over 1 year ago

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).
rune -

Published by udoprog over 2 years ago

rune -

Published by udoprog almost 3 years ago

Fixed

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

Published by udoprog almost 3 years ago

Fixed

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

Published by udoprog almost 3 years ago

Fixed

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

Published by udoprog almost 3 years ago

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).
rune -

Published by udoprog almost 3 years ago

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).
rune -

Published by udoprog almost 3 years ago

Changed

  • rune-modules now uses tokio 1.x.

Fixed

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

Published by udoprog over 3 years ago

0.8.0

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).
rune -

Published by udoprog almost 4 years ago

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).