bazel syntax: eliminate unnecessary array copying Before, EvalUtils.toCollection would return a view (if given a Sequence) but a copy if given a Dict. This makes it inefficient and also hard to reason about. This change replaces it with Starlark.toIterable and Starlark.toArray: the first always returns a view, the second a copy. Also: - CallUtils: eliminate array copying in handling of *args and **kwargs. - Start removing Location parameters from everything we touch. Location is automatically added to EvalExceptions by the interpreter. - MethodLibrary: eliminate array copies in sorted, reverse, tuple, list, enumerate. - Also in string.join, string.partition. Simplify the latter function. - Improve text of an error message. - Declare Starlark.len, which returns the length of a string or iterable. This change removes support for Starlark Map other than Dict, because there are none today. PiperOrigin-RevId: 282682290
{Fast, Correct} - Choose two
Build and test software of any size, quickly and reliably.
Speed up your builds and tests: Bazel rebuilds only what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.
One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.
Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.
Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.
Follow our tutorials:
See CONTRIBUTING.md