big-baker-75091
05/14/2020, 10:30 AMrbe_autconfig
which tries to guess what the toolchain would be in your docker container. I'm unsure if any of these solutions are optimal at the moment so I wanted to know if you did things differently?
• Why a deamon? I notice Bazel does the same (or at least similar) and you mention in your documentation it is to keep "the action graph warm" - does that mean you're just doing this to keep the action graph in memory? Do you watch for any files that change and update the action graph in the background?
• Does anyone know how the generation of an action graph differs? I assume at a basic level you both try to achieve the same thing. You create a DAG and look what needs rebuilding in the tree when an Action changes. After that, is it just what a Bazel rule and Pants rule actually define as an Action?
• How does one create a build rule for Pants? A very brief look at your documentation doesn't elude to any easy way to create a plugin. Though that could be just me not being thorough enough.hundreds-father-404
05/14/2020, 2:39 PM@rule
def demo(a: A, b: B) -> C:
...
big-baker-75091
05/14/2020, 2:43 PMbig-baker-75091
05/14/2020, 2:45 PMhundreds-father-404
05/14/2020, 2:47 PMhundreds-father-404
05/14/2020, 2:47 PMbig-baker-75091
05/14/2020, 2:51 PMhundreds-father-404
05/14/2020, 2:51 PMnot a language such as Go which has both types and coroutines baked into the language?One of the main reasons is the popularity of Python and accessibility for new developers who haven’t used it before. We wrote the engine in Rust for performance, and the rules API / plugins in Python for accessibility. Another reason is Python’s strong CFFI story, such as a couple Rust projects like the
cpython
crate to talk between Rust and Python.
Also, Python 3 now has types and coroutines baked in as well. (Python 2 kind of did, but not in a robust way.)hundreds-father-404
05/14/2020, 2:54 PMbig-baker-75091
05/14/2020, 2:54 PMbig-baker-75091
05/14/2020, 2:54 PMhundreds-father-404
05/14/2020, 2:55 PMhundreds-father-404
05/14/2020, 2:55 PMSo for you, it’s about expressing what you want done as easily as possible in one language, whilst leaving the harder graph calculation to a compiled language such as Rust.Precisely. Great way to describe it.
big-baker-75091
05/14/2020, 2:58 PMhundreds-father-404
05/14/2020, 3:01 PMhundreds-father-404
05/14/2020, 3:02 PMwitty-crayon-22786
05/14/2020, 4:07 PMwitty-crayon-22786
05/14/2020, 4:08 PMwitty-crayon-22786
05/14/2020, 4:11 PM@rules
being coroutines that can await
more deps. Bazel has a framework internally called skyframe that is similar, but it is not exposed to users (for historical reasons, they say)witty-crayon-22786
05/14/2020, 4:11 PMbig-baker-75091
05/14/2020, 4:22 PMwitty-crayon-22786
05/14/2020, 4:24 PMbig-baker-75091
05/14/2020, 4:24 PMwitty-crayon-22786
05/14/2020, 4:24 PMbig-baker-75091
05/14/2020, 4:25 PMwitty-crayon-22786
05/14/2020, 4:26 PMwitty-crayon-22786
05/14/2020, 4:26 PMbig-baker-75091
05/14/2020, 4:28 PMwitty-crayon-22786
05/14/2020, 4:29 PMwitty-crayon-22786
05/14/2020, 4:35 PMwitty-crayon-22786
05/14/2020, 4:36 PMwitty-crayon-22786
05/14/2020, 4:36 PMbig-baker-75091
05/14/2020, 4:37 PMwitty-crayon-22786
05/14/2020, 4:37 PMwitty-crayon-22786
05/14/2020, 4:37 PMbig-baker-75091
05/14/2020, 5:19 PMwitty-crayon-22786
05/14/2020, 5:21 PMwitty-crayon-22786
05/14/2020, 5:22 PMbig-baker-75091
05/14/2020, 5:30 PMbig-baker-75091
05/14/2020, 5:30 PMwitty-crayon-22786
05/14/2020, 5:33 PMwitty-crayon-22786
05/14/2020, 5:35 PM