Skip to content

Latest commit

 

History

History
156 lines (129 loc) · 7.56 KB

CHANGELOG.md

File metadata and controls

156 lines (129 loc) · 7.56 KB

Starlark

0.11 (Unreleased)

  • UnpackValue is no longer implemented for Vec. Instead, UnpackList, UnpackTuple or UnpackListOrTuple can be used.
  • Added call_stack() function.
  • Removed experimental_regex()
  • Switched from anyhow::Error and Diagnostic to starlark::Error in many APIs

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.

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.

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.

0.7.1 (April 13, 2022)

  • Add MethodsBuilder::alloc.

0.7.0 (March 22, 2022)

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.

0.6.0 (November 22, 2021)

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.

0.5.0 (August 26, 2021)

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.

0.4.0 (April 6, 2021)

0.3.2

  • Commits and tag exist in https://github.com/indygreg/starlark-rust.
  • Changed dependency versions from X.Y.Z to X.Y to allow adopting newer point releases.
  • lalrpop crate upgraded from 0.16 to 0.19 and code ported to enable building on Rust 1.56+.
  • Fixed compiler warnings on Rust 1.56+ related to semicolons in macro expansions.

0.3.1 and before