{"push_id":1564802895,"size":6,"distinct_size":1,"ref":"refs/heads/new_pytest_run2","head":"f1d4823fca6ff1935378a39027177d066704ab50","before":"bdf18abdbb891b954905ff765e62839d57c1d02e","commits":[{"sha":"d3d02b7a9bc27babbcee999a0ec2e062a1237b7c","author":{"name":"Nick Howard","email":"be6da9f607f26e1ba272c330953b3a54c4a030bc@baroquebobcat.com"},"message":"[engine] remove Field type in favor of using String directly (#4256)\n\n### Problem\r\nThe `Field` type is opaque to the Rust code, which makes passing strings as field names from the Rust  side awkward (see #4207)\r\n\r\n### Solution\r\n\r\n* Replace `Field` usages with `String` on the Rust side. \r\n* Use `Buffer`s for the Python -> Rust components, and `(ptr, len)` for Rust -> Python.\r\n* Pass Rust a type id for Python's `str` so that externs that do type checks stay happy.\r\n\r\n### Result\r\n\r\nRust can now reference fields with strings instead of needing to be passed a string from Python.\r\n\r\ncloses #4207","distinct":false,"url":"https://api.github.com/repos/benjyw/pants/commits/d3d02b7a9bc27babbcee999a0ec2e062a1237b7c"},{"sha":"daf5dc4f2eb3558f96c458d2b4714d60dc23f2ed","author":{"name":"Peiyu Wang","email":"d174f8fb0d546c0de85a0b484162cd0c833dc038@gmail.com"},"message":"[engine] `Storage` clean ups  (#4257)\n\n### Problem\r\n\r\n`Storage` is due for clean up. \r\n\r\n1. `lmdb` is no longer useful because everything fits in memory, we do not need to pass objects across process boundaries.\r\n2. For the same reason, there is no need to store object's serialized form.\r\n\r\n### Solution\r\n\r\n1. Removed lmdb storage.\r\n2. Replace key to pickled object mapping with key to original object mapping.\r\n\r\nContinue to use pickle to compute digest since from experiment we did in #2969 it's faster than msgpack or json for our use case. It's possible we can improve from here but will defer the optimization until that's necessary.","distinct":false,"url":"https://api.github.com/repos/benjyw/pants/commits/daf5dc4f2eb3558f96c458d2b4714d60dc23f2ed"},{"sha":"9ae05fc117888a51ebb061b539892e9b62bba2de","author":{"name":"Nick Howard","email":"be6da9f607f26e1ba272c330953b3a54c4a030bc@baroquebobcat.com"},"message":"[engine] Use Value in invoke_runnable as the function instead of Function (#4258)\n\n### Problem\r\n\r\nSometimes we want to be able to invoke Python functions from Rust that are not pickleable. Right now, we use the `Function` struct. It requires a `Key` to have been constructed for the function in order to use it. Building keys requires pickling, so unpickleable functions cannot be called from Rust.\r\n\r\n### Solution\r\n\r\nUse Value instead of Function for runnable calls. Value doesn't have to require a pickle, so unpickleable functions can be represented with it.\r\n\r\nThe one funny bit here is `Key::new_with_anon_type_id`. `val_for` doesn't check the type id of the passed key, so this works. It could be cleaner though.","distinct":false,"url":"https://api.github.com/repos/benjyw/pants/commits/9ae05fc117888a51ebb061b539892e9b62bba2de"},{"sha":"559a1bc13d2497b777e460cc3a56ac087b6d14de","author":{"name":"Benjy Weinberger","email":"a509d487a5f8dbb865a9ea050fc89e4377b3af8b@gmail.com"},"message":"A Dockerfile for building a pants development image. (#4260)\n\nUseful for chasing down linux-only problems on MacOS.\r\n\r\nNote: Required a fix in bootstrap.sh. mktemp requires six X's\r\n      at the end of a pattern (at least on Alpine Linux).","distinct":false,"url":"https://api.github.com/repos/benjyw/pants/commits/559a1bc13d2497b777e460cc3a56ac087b6d14de"},{"sha":"31a8f6453e66c5b4043c745aa0b73cbfcd857bdf","author":{"name":"Stu Hood","email":"50abbb3a4290d1d6c08c7e8a002d0c743d331242@twitter.com"},"message":"[engine] Make Graph.get generic and make Externs static (#4261)\n\n### Problem\r\n\r\nCurrently, any `Node` running in the `Graph` results in a `Value`, but this limits what can be stored in the Graph to things that can be represented as python objects. Moving forward (particularly for #4172), we want to be able to store rust types directly in the graph, to avoid roundtrips to python in many cases.\r\n\r\nAdditionally: the `Externs` class (despite representing 100% static resources on the python side) was not stored statically on the rust side. This meant that it had to be passed into a bunch of contexts explicitly, which (in particular) made it impossible to directly implement `Clone`/`Debug` for `Value`. \r\n\r\n### Solution\r\n\r\nRename `Node` to `NodeKey` (since it is used as both the unique identifier and inputs of a Node), rename `Step` to `Node`, since it encompasses the relevant requirements of a `Node` better than the struct does, and Make `Graph.get` generic on the type of `Node`. A `Node` implementation can be converted `Into` a `NodeKey`, and its result can be consumed out of `NodeResult` (which currently only contains `Value`, but will contain rust types in future).\r\n\r\nAlso, `Externs` were made static, and all utility methods therein are now accessed statically. A few traits (`Clone`/`Debug`) can now be utilized directly for `Value` and its containing types.\r\n\r\n### Result\r\n\r\nEasier usage of Externs, and important preparation for #4172.","distinct":false,"url":"https://api.github.com/repos/benjyw/pants/commits/31a8f6453e66c5b4043c745aa0b73cbfcd857bdf"},{"sha":"f1d4823fca6ff1935378a39027177d066704ab50","author":{"name":"Benjy Weinberger","email":"a509d487a5f8dbb865a9ea050fc89e4377b3af8b@gmail.com"},"message":"A PytestRun task for the new Python pipeline.\n\nA copy of the old one, with appropriate changes.\n\nRequired a couple of small fixes in PythonExecutionTaskBase\nand GatherSources.","distinct":true,"url":"https://api.github.com/repos/benjyw/pants/commits/f1d4823fca6ff1935378a39027177d066704ab50"}]}
{"actor":{"display_login":"benjyw"}}