Skip to content

Releases: facebook/starlark-rust

Version 0.12.0

09 Feb 18:41
Compare
Choose a tag to compare

0.12.0 (Feb 9, 2024)

  • Implemented reverse() for SmallMap.
  • Added a few more traits and functions to OrderedSet.
  • Fixed "go to label" in bzl LSP.
  • Added OwnedFrozenRef.
  • Added call_stack_frame() function.
  • Categorized lexer errors.
  • Used correct error printing in assert.
  • Cleaned up some code around imports, code consistency, and formatting.
  • Fixed multi-line doc generation.
  • Updated dashmap from 5.4.0 to 5.5.3.
  • Removed autocompletion on reserved words and some trigger chars for Starlark
    LSP.
  • Updated hashbrown from 0.13.2 to 0.14.3.
  • Updated allocative from 0.3.1 to 0.3.2.

Version 0.11.0

19 Jan 10:27
Compare
Choose a tag to compare

0.11.0 (Jan 19, 2024)

  • UnpackValue is no longer implemented for Vec. Instead, UnpackList, UnpackTuple or UnpackListOrTuple can be used.
  • Added call_stack() function.
  • Removed experimental_regex() function.
  • Switched from anyhow::Error and Diagnostic to starlark::Error in many APIs.
  • Fix repr() for enums.
  • Various improvements to DAP support.
  • Add a few more traits and functions to SortedMap.
  • Disable the legacy type representation, types as strings such as "bool" are no longer supported. See the revised typing documentation.

Version 0.10.0

17 Oct 20:10
Compare
Choose a tag to compare

0.10.0 (Oct 16, 2023)

There were over eight hundred commits since the last release, with the main areas of change including:

  • Make it work on 32 bit architectures, including WASM.
  • Introduce starlark_syntax, starlark_lsp, starlark_bin crates.
  • Expose the AST through starlark_syntax.
  • No longer require nightly Rust compiler.
  • Change how types are represented, e.g. {str.type, ""} becomes dict[str, typing.Any].
  • Add static type checking options.
  • Support f-strings extension.

Version 0.9.0

05 Jun 17:22
Compare
Choose a tag to compare

0.9.0 (June 5, 2023)

There were over one thousand commits since the last release, with the main areas of change including:

  • Add Module.names to get the symbols in a module.
  • Change iterators on Value to support reduced stack space and enable future garbage collection, removing iterate_collect and with_iterator.
  • Improve DAP (debugger) support.
  • Improve the performance and fix a few bugs in % string formatting.
  • Introduce StarlarkTypeRepr as a trait for things that have a type representation.
  • Optimise and increase standards conformance of the Starlark standard library.
  • Rework how List/Dict are specified, making their internals private and introducing ListRef/DictRef for pointers to them.
  • Add AllocStruct, AllocList and AllocDict as helpers to allocate the various types more efficiently.
  • Remove the dedupe Starlark function.
  • Integrate with the allocative crate to support the Allocative trait.
  • Add more Trace implementations.
  • Support type annotations on assignments.
  • Make Module.loads also return the FileSpan.
  • Add FrozenModule.get_option.
  • Add support for integers greater than 32 bits.
  • Move to a separate starlark_map crate for SmallMap and optimise it.
  • Require the starlark_type! macro.
  • Change Module.extra_v to be Value<'v>.
  • Expose FrozenHeap from Freezer and GlobalsBuilder.
  • Remove Value::new_int.
  • In starlark_module functions must be more explicit - return anyhow::Result, have an explicit 'v parameter, explicit heap/eval arguments.
  • Add StringValueLike to cover string types that are values.
  • Change the json extension method to be json.encode and json.decode.
  • Support stable Rust.
  • Inline all the relevant pieces of the gazebo library.
  • Change all starlark_module annotations to be #[starlark(...)], #[starlark(require = named)] for name-only parameters.
  • Many performance optimisations.
  • Change the API for profiling and add new profiling features.
  • Make the starlark binary spawn the REPL by default.
  • Many improvements and API changes to the documentation generation code.
  • Many improvements to the LSP code.
  • Add a Dialect option to enable types.

Version 0.8.0

09 May 09:38
Compare
Choose a tag to compare

0.8.0 (May 9, 2022)

  • Redo StringValue and FrozenStringValue as aliases for ValueTyped<StarlarkStr> and FrozenValueTyped<StarlarkStr> respectively.
  • Add more trait implementations for ValueTyped.
  • Format call stack reports more like Python.
  • Implement FromStr for ProfileMode.
  • Impelement Eq for BorrowHashed .
  • Minor optimisations throughout.
  • Better error messages, e.g for 1 << -2.
  • Add StarlarkValue::bit_not for the bit-negation operator.
  • In the REPL print non-None values.
  • Add get_index to SmallSet.
  • Add a Regex type - note this is likely to change API in the next release and is not considered stable.
  • Upgrade dependencies.

Version 0.7.1

09 May 07:42
Compare
Choose a tag to compare

0.7.1 (April 13, 2022)

  • Add MethodsBuilder::alloc.

Version 0.7.0

22 Mar 13:44
Compare
Choose a tag to compare

There have been many changes since the last release, focused on performance and features. These changes caused a number of API changes and behavioural changes, the most significant of which are listed below.

  • Requires all Starlark types support Serialize, and provide derive(NoSerialize) to easily add a failing Serialize.
  • Remove collection_json.
  • Support the latest gazebo dependency.
  • SmallSet now returns an ExactSizeIterator.
  • Many optimisations, particularly around strings.
  • Many optimisations to the bytecode compiler.
  • Rename functions for working with constant strings.
  • Add StringValue type, for Values which are known to be strings.
  • Remove SimpleValue.
  • Remove the Span type.
  • Rename SmallHashResult to SmallHashValue.
  • Improve error messages on the wrong number of positional arguments.
  • Remove some float-related functions from the API.
  • Adjust the profiling API to make it more modular.
  • Add support for validators when freezing.

Version 0.6.0

22 Nov 13:13
Compare
Choose a tag to compare

There have been many changes since the last release, focused on performance, documentation, type safety and profiling. These changes caused a number of API changes and behavioural changes, the most significant of which are listed below.

  • Support for newer versions of anyhow.
  • Some error messages contain "did you mean" suggestions.
  • Addition of a bytecode interpreter, with associated performance gains.
  • Constant propagation and speculative execution during compilation.
  • Removed mutability around the file loader and set_loader.
  • Several new forms of profiling, making use of the new extra_memory function.
  • Improved errors from derivations.
  • Changes around function invocation, in particular Arguments is now opaque.
  • Changes around ConstFrozenString, which is now StarlarkStrN.
  • Add OwnedFrozenValue::owner.
  • Add derive support for Freeze.
  • Add more Starlark typed wrappers, such as StringValue and ValueTyped.
  • Make tuples and lists opaque types, with new functions for allocating them (e.g. alloc_tuple).
  • Make all Starlark types implement Display in preference to collect_repr.
  • Support for documentation annotations on all types.

Version 0.5.0

27 Aug 09:44
Compare
Choose a tag to compare

There have been many changes since the last release, primarily focused on performance (up to 100x in some benchmarks). These changes caused a number of API changes, the most significant of which are listed below.

  • Rename the starlark_module crate to starlark_derive.
  • Rename the walk methods to trace to align to standard GC literature.
  • Add derive for Trace.
  • Add StarlarkAttrs derivation and scheme.
  • Initial start of documentation generation (still unstable).
  • More complete SmallMap API.
  • Three profiling modes, heap, flame and statement.
  • Changes to invoke to take an Arguments structure.
  • Changed to iteration APIs.
  • Many semantic improvements to non-ASCII strings.
  • Refinements to types and how they work.
  • Mark a few additional APIs as unsafe.
  • Use the gazebo Coerce trait extensively, in particular required for some of the starlark_value macros.
  • Delete dict.copy and list.copy, since they aren't in the Starlark spec.
  • UnpackValue no longer takes a heap argument.

Version 0.4.0

06 Apr 11:57
Compare
Choose a tag to compare