bazel syntax: make Eval private

Make Eval private. It should never have been public.
Mostly it was used as a hook for the debugger (via subclassing).
Now the debugger installs a hook directly into a global variable
that Eval inspects before executing each statement.

Make all package-visible functions of Eval static.
It should become the sole locus of knowledge about the tree-walking evaluator.
A follow-up change will move all tree-based evaluation logic from
Expressions into this class (Statements are done already).

Environment.evaluate(String) has been split into an expression flavor
(debugEval) and a file flavor (debugExec). If we eliminate the
pointless Debuggable interface these can become static methods in
EvalUtils, in a follow-up.
This is a behavior change to the debugger: entering "x=1; x+1"
will execute x+1 only for its effects; its value, as a statement,
is now None, not 2.

Delete DebugServerUtils.
Combine its install and remove methods as setDebugger, and move it to EvalUtils.

Delete DebugCallable (unused).
Delete DebugAwareEval (obsolete).

PiperOrigin-RevId: 268941210
13 files changed
tree: 684988c31b2214ba2b39487a642acd5a62a767a0
  1. .bazelci/
  2. examples/
  3. scripts/
  4. site/
  5. src/
  6. third_party/
  7. tools/
  8. .bazelrc
  9. .gitattributes
  10. .gitignore
  11. AUTHORS
  12. BUILD
  13. CHANGELOG.md
  14. CODEOWNERS
  15. combine_distfiles.py
  16. combine_distfiles_to_tar.sh
  17. compile.sh
  18. CONTRIBUTING.md
  19. CONTRIBUTORS
  20. distdir.bzl
  21. ISSUE_TEMPLATE.md
  22. LICENSE
  23. README.md
  24. WORKSPACE
README.md

Bazel

{Fast, Correct} - Choose two

Build and test software of any size, quickly and reliably.

  • Speed up your builds and tests: Bazel only rebuilds 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.

Getting Started

Documentation

Contributing to Bazel

See CONTRIBUTING.md

Build status

Bazel is released in ‘Beta’. See the product roadmap to learn about the path toward a stable 1.0 release.