| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
| |
invocation.
Also, makes it benign to registerInitialValue when memoization is disabled.
PiperOrigin-RevId: 191338253
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Roll-forward with fix (equality and hashcode for relevant classes). Also add a bit more debugging info in case of failure.
PiperOrigin-RevId: 190492934
|
|
|
|
|
|
| |
Skyframe, rather than the potentially mutable builder, and @AutoCodec SkylarkAttr.Descriptor.
PiperOrigin-RevId: 190118565
|
|
|
|
| |
PiperOrigin-RevId: 189419493
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
large changes:
1. SerializationContext and DeserializationContext become the owners of the Memoizer if requested. They produce new versions of themselves on demand that are memoization-aware. Because of intricacies of Skylark that I do not fully understand, we inject a Mutability object when starting memoization, and so to be conservative, that injection starts up a new memoization frame, nested if we were already memoizing, just like before. It would be nice to decouple this injection from memoization in the future.
2. MemoizingCodec is deleted, but really ObjectCodec becomes MemoizingCodec, so it lives on. BaseCodec is deleted since it now has only one implementation.
3. The simplified model of registering MemoizingCodecs is adopted for ObjectCodecs: all codecs are registered based on their #getEncodedClass and #additionalEncodedSubclasses. This also allows us to register codecs that are defined using tricky parameter types, since we're no longer trying to reflectively examine them. This required a clean-up of such codecs, and the addition of ArrayListCodec to stop NullableListCodec from making lists unmodifiable when they shouldn't be.
4. @AutoCodec is extended to allow users to specify that memoization should start with this codec.
To ensure bit-equivalence, SkyKeySerializer disables memoization.
PiperOrigin-RevId: 188918251
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
function call.
This is the 2nd attempt at this commit. The first attempt (https://github.com/bazelbuild/bazel/commit/f1013485d41efd8503f9d4f937e17d1b4bc91ed3) was rolled back because it introduced the following two bugs:
(1) The side effects of Environment#enterScope are relevant: it creates and stores a new Continuation that has a reference to the set currently referenced by 'knownGlobalVariables', and then overwrites the value of the variable. When there are e.g. nested function calls, 'knownGlobalVariables' will be wrong in the Environment used to stage the inner call (see the added test for an example).
(2) The finally block in UserDefinedFunction#call assumes the env.enterScope was called. Because of the EvalException (incorrectly) thrown due to (1), this is no longer true.
I restructured the code such that (2) isn't possible and I also added a unit test that would have caught the two bugs.
In my first attempt, I was doing too much - I was also trying to save the CPU-costs in the env.update call (dispatches to the just-created lexical frame, and calls LexicalFrame#put, which does an unnecessary mutability sanity check, etc) and in doing so completely missed the above bugs. Sorry.
RELNOTES: None
PiperOrigin-RevId: 188411737
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Introduced a bug in skylark that caused intellij TAP test to fail. The bug was not caught by any skylark/blaze/bazel tests.
*** Original change description ***
Optimize GC churn of parameter bindings performed before each user defined function call.
RELNOTES: None
PiperOrigin-RevId: 188249713
|
|
|
|
|
|
|
| |
function call.
RELNOTES: None
PiperOrigin-RevId: 188199514
|
|
|
|
|
|
|
| |
(https://github.com/google/copybara/commit/77a0e68eb0b044449b412e939ad25d500d2c12d3).
RELNOTES: None
PiperOrigin-RevId: 187525928
|
|
|
|
|
|
|
| |
a nice consequence, this lets us reduce GC churn since we no longer need to create a frame instance for the lexical frame at a callsite of either a function when the environment is frozen or a builtin function (since builtins cannot modify bindings in their lexical frame).
RELNOTES: None
PiperOrigin-RevId: 187495787
|
|
|
|
|
|
|
| |
Added a little javadoc and tests.
RELNOTES: None
PiperOrigin-RevId: 185569985
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 184649483
|
|
|
|
|
|
|
|
| |
Blaze had its own class to avoid GC from varargs array creation for the precondition happy path. Guava now (mostly) implements these, making it unnecessary to maintain our own.
This change was almost entirely automated by search-and-replace. A few BUILD files needed fixing up since I removed an export of preconditions from lib:util, which was all done by add_deps. There was one incorrect usage of Preconditions that was caught by error prone (which checks Guava's version of Preconditions) that I had to change manually.
PiperOrigin-RevId: 175033526
|
|
|
|
|
|
|
| |
No need to contruct a list for each function call
RELNOTES: None
PiperOrigin-RevId: 173144689
|
|
|
|
|
|
|
| |
Follow-up of unknown commit.
RELNOTES: None
PiperOrigin-RevId: 172922507
|
|
|
|
|
|
|
|
|
| |
All callers that do not use Environment.Builder#setSemantics should call #useDefaultSemantics. A follow-up CL will enforce this requirement.
Motivation: It's more important that we are strict about semantics than about the other builder args. It's too easy for a mistake in semantics to go unnoticed.
RELNOTES: None
PiperOrigin-RevId: 172912829
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 172801656
|
|
|
|
|
|
|
| |
Also remove the use of the @UsesOnlyCoreTypes annotation on SkylarkSemanticsOptions. It was only there to help mark that the options class was safe to put in Skyframe.
RELNOTES: None
PiperOrigin-RevId: 171248504
|
|
|
|
|
|
|
| |
Mainly this just means using getters instead of fields to access option values.
RELNOTES: None
PiperOrigin-RevId: 171101597
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 170343759
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 166857589
|
|
|
|
|
|
|
|
|
| |
Also throw IllegalArgumentException instead of AssertionError.
A follow-up CL will look to eliminate the SkylarkMutable#checkMutable(Location, Environment) override in favor of checkMutable(Location, Mutability). This will make it easier to manipulate Skylark values in specialized contexts aside from normal evaluation.
RELNOTES: None
PiperOrigin-RevId: 163978262
|
|
|
|
|
|
|
| |
Add value-class methods to SkylarkFileDependency and SkylarkImportLookupValue. Remove Java serialization hack from Extension.
RELNOTES: None
PiperOrigin-RevId: 162383283
|
|
|
|
|
|
|
| |
Also refactor FAIL_FAST_HANDLER to throw something more specific than IllegalArgumentException. This bug was masked because the test assertion that would've caught it considered IllegalArgumentException to be an expected error, the same as EvalException.
RELNOTES: None
PiperOrigin-RevId: 161809957
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 161560683
|
|
|
|
|
|
|
| |
It's now easier to customize Printer if in different situations objects should
be printed differently. Also its API is cleaner now. Names of methods of SkylarkValue objects now reflect names of Skylark functions: SkylarkValue#repr and SkylarkPrintableValue#str.
PiperOrigin-RevId: 160635154
|
|
|
|
|
|
|
| |
This can be used to canonically compare ASTs for equality, e.g. in tests.
RELNOTES: None
PiperOrigin-RevId: 160283160
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the flag is activated, variables in list comprehensions do not leak anymore.
Even if a variable was defined before the loop, it's not accessible after the loop.
This change allows us to detect any breakage and ensures that no user is accessing
loop variables after the loop.
This will make possible for us to change the behavior and follow Python 3 semantics
in the future.
RELNOTES: None.
PiperOrigin-RevId: 158895514
|
|
|
|
|
| |
RELNOTES: None
PiperOrigin-RevId: 155507750
|
|
|
|
|
|
|
|
|
| |
Make fields visibility/accessors more idiomatic. Prefer accessors that give a full map of the bindings and inherited bindings, rather than just the keys.
Also increase visibility of some accessors on Mutability.
RELNOTES: None
PiperOrigin-RevId: 155393780
|
|
|
|
|
|
|
|
|
| |
This helps readability, particularly since we also have "isImmutable" for SkylarkValues and in EvalUtils. I considered changing those to isFrozen as well, but we can leave it as-is since the terminology of freezing doesn't necessarily apply to non-Freezable things.
Also rephrased some javadoc.
RELNOTES: None
PiperOrigin-RevId: 155090987
|
|
|
|
|
|
|
|
|
|
|
| |
This is the second of two CLs for making command line options able to affect the Skylark interpreter. For the main kinds of evaluation contexts -- package loading, .bzl loading, rule analysis, aspect analysis, and computed defaults -- the SkylarkSemanticsOptions object is retrieved from Skyframe and passed along to the Environment builder. For other contexts such as tests, default values of builtin functions, and standalone Skylark, flags are currently not processed.
In the future, we may want to split into separate files the options that affect "pure" Skylark vs the options that affect Bazel-flavored Skylark. One possibility is to subclass SkylarkSemanticsOptions into SkylarkBazelSemanticsOptions, and go through an indirection in SkylarkUtils.
We could also pass SkylarkSemanticsOptions to the parser, to support --incompatible_* changes that alter Skylark's syntax. I don't think that's needed at the moment.
RELNOTES: None
PiperOrigin-RevId: 154628391
|
|
|
|
|
|
|
|
|
| |
This matters when the same rule (or other exportable) is bound to multiple
variables, since the identifier of the first variable will become its name.
--
PiperOrigin-RevId: 144881310
MOS_MIGRATED_REVID=144881310
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 143381556
MOS_MIGRATED_REVID=143381556
|
|
|
|
|
|
| |
--
PiperOrigin-RevId: 143373605
MOS_MIGRATED_REVID=143373605
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*** Reason for rollback ***
Broke //src/test/shell/bazel:external_skylark_load_test
See http://ci.bazel.io/job/bazel-tests/BAZEL_VERSION=HEAD,PLATFORM_NAME=linux-x86_64/370/console, for example.
*** Original change description ***
Remove callerLabel from Environment.
It is a Bazel-specific information.
--
MOS_MIGRATED_REVID=140742037
|
|
|
|
|
|
|
| |
It is a Bazel-specific information.
--
MOS_MIGRATED_REVID=140719791
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=140371603
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=140037282
|
|
|
|
|
|
|
| |
Next step will be to move Environment.Phase to SkylarkUtils.BazelInfo
--
MOS_MIGRATED_REVID=139902745
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=138757881
|
|
|
|
|
|
|
|
|
| |
Other fields will follow (is_skylark, phase, callerLabel).
The goal is to make Environment (and more generally Skylark) less dependent
on Bazel.
--
MOS_MIGRATED_REVID=137386248
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=137272887
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=137266170
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The only visible difference for users is that a few more functions are
available in BUILD files. That's fine, this difference was not even
documented.
RELNOTES:
A few functions are added to BUILD files for consistency (hash, dir,
hasattr, getattr) with .bzl files, although they are not very useful.
--
MOS_MIGRATED_REVID=136151633
|
|
|
|
|
| |
--
MOS_MIGRATED_REVID=135816105
|
|
|
|
|
|
|
| |
It was unused in Bazel.
--
MOS_MIGRATED_REVID=135483937
|
|
|
|
|
|
|
|
|
| |
RELNOTES: Global varaiables HOST_CFG and DATA_CFG are deprecated in favor of strings "host"
and "data.
Argument `cfg = "host"` or `cfg = "data"` is mandatory if `executable = True` is provided for a label.
--
MOS_MIGRATED_REVID=133285197
|
|
|
|
|
|
|
| |
This allow us to skip the import validation in non-build usages.
--
MOS_MIGRATED_REVID=130936612
|
|
|
|
|
|
|
| |
RELNOTES[INC]: Skylark: It is an error to shadow a global variable with a local variable after the global has already been accessed in the function.
--
MOS_MIGRATED_REVID=130014492
|