Releases: facebook/starlark-rust
Version 0.13.0
0.13 (Dec 13, 2024)
- Some API changes (but alas, too many for us to enumerate).
- Move to more Python-like type annotations, e.g.
dict[str, int]now. - Support for the
setdata type. - Improve documentation, both the docs and the doc generator.
- Performance improvements.
- More trait implementation (
Trace,Allocative,AllocValueetc). - Bump dependencies.
Version 0.12.0
0.12.0 (Feb 9, 2024)
- Implemented
reverse()forSmallMap. - 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
dashmapfrom 5.4.0 to 5.5.3. - Removed autocompletion on reserved words and some trigger chars for Starlark
LSP. - Updated
hashbrownfrom 0.13.2 to 0.14.3. - Updated
allocativefrom 0.3.1 to 0.3.2.
Version 0.11.0
0.11.0 (Jan 19, 2024)
UnpackValueis no longer implemented forVec. Instead,UnpackList,UnpackTupleorUnpackListOrTuplecan be used.- Added
call_stack()function. - Removed
experimental_regex()function. - Switched from
anyhow::ErrorandDiagnostictostarlark::Errorin 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
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_bincrates. - Expose the AST through
starlark_syntax. - No longer require nightly Rust compiler.
- Change how types are represented, e.g.
{str.type, ""}becomesdict[str, typing.Any]. - Add static type checking options.
- Support f-strings extension.
Version 0.9.0
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.namesto get the symbols in a module. - Change iterators on
Valueto support reduced stack space and enable future garbage collection, removingiterate_collectandwith_iterator. - Improve DAP (debugger) support.
- Improve the performance and fix a few bugs in
%string formatting. - Introduce
StarlarkTypeRepras a trait for things that have a type representation. - Optimise and increase standards conformance of the Starlark standard library.
- Rework how
List/Dictare specified, making their internals private and introducingListRef/DictReffor pointers to them. - Add
AllocStruct,AllocListandAllocDictas helpers to allocate the various types more efficiently. - Remove the
dedupeStarlark function. - Integrate with the
allocativecrate to support theAllocativetrait. - Add more
Traceimplementations. - Support type annotations on assignments.
- Make
Module.loadsalso return theFileSpan. - Add
FrozenModule.get_option. - Add support for integers greater than 32 bits.
- Move to a separate
starlark_mapcrate forSmallMapand optimise it. - Require the
starlark_type!macro. - Change
Module.extra_vto beValue<'v>. - Expose
FrozenHeapfromFreezerandGlobalsBuilder. - Remove
Value::new_int. - In
starlark_modulefunctions must be more explicit - returnanyhow::Result, have an explicit'vparameter, explicitheap/evalarguments. - Add
StringValueLiketo cover string types that are values. - Change the
jsonextension method to bejson.encodeandjson.decode. - Support stable Rust.
- Inline all the relevant pieces of the
gazebolibrary. - Change all
starlark_moduleannotations 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
starlarkbinary spawn the REPL by default. - Many improvements and API changes to the documentation generation code.
- Many improvements to the LSP code.
- Add a
Dialectoption to enable types.
Version 0.8.0
0.8.0 (May 9, 2022)
- Redo
StringValueandFrozenStringValueas aliases forValueTyped<StarlarkStr>andFrozenValueTyped<StarlarkStr>respectively. - Add more trait implementations for
ValueTyped. - Format call stack reports more like Python.
- Implement
FromStrforProfileMode. - Impelement
EqforBorrowHashed. - Minor optimisations throughout.
- Better error messages, e.g for
1 << -2. - Add
StarlarkValue::bit_notfor the bit-negation operator. - In the REPL print non-
Nonevalues. - Add
get_indextoSmallSet. - Add a
Regextype - note this is likely to change API in the next release and is not considered stable. - Upgrade dependencies.
Version 0.7.1
0.7.1 (April 13, 2022)
- Add
MethodsBuilder::alloc.
Version 0.7.0
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 providederive(NoSerialize)to easily add a failingSerialize. - Remove
collection_json. - Support the latest
gazebodependency. SmallSetnow returns anExactSizeIterator.- Many optimisations, particularly around strings.
- Many optimisations to the bytecode compiler.
- Rename functions for working with constant strings.
- Add
StringValuetype, forValues which are known to be strings. - Remove
SimpleValue. - Remove the
Spantype. - Rename
SmallHashResulttoSmallHashValue. - 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
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_memoryfunction. - Improved errors from derivations.
- Changes around function invocation, in particular
Argumentsis now opaque. - Changes around
ConstFrozenString, which is nowStarlarkStrN. - Add
OwnedFrozenValue::owner. - Add
derivesupport forFreeze. - Add more Starlark typed wrappers, such as
StringValueandValueTyped. - Make tuples and lists opaque types, with new functions for allocating them (e.g.
alloc_tuple). - Make all Starlark types implement
Displayin preference tocollect_repr. - Support for documentation annotations on all types.
Version 0.5.0
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_modulecrate tostarlark_derive. - Rename the
walkmethods totraceto align to standard GC literature. - Add
deriveforTrace. - Add
StarlarkAttrsderivation and scheme. - Initial start of documentation generation (still unstable).
- More complete
SmallMapAPI. - Three profiling modes, heap, flame and statement.
- Changes to
invoketo take anArgumentsstructure. - 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
gazeboCoercetrait extensively, in particular required for some of thestarlark_valuemacros. - Delete
dict.copyandlist.copy, since they aren't in the Starlark spec. UnpackValueno longer takes aheapargument.