Simon Tournier <zimon.touto...@gmail.com> writes: > On Thu, 02 Nov 2023 at 18:54, Suhail <suh...@bayesians.ca> wrote: > >> If our hypothetical build system (say, ds-build-system) were to admit >> the above invariances, do you foresee some complications that may arise >> that need to be addressed? > > Instead of trying to answer to this question, what comes to my mind when > reading is: > > https://www.joachim-breitner.de/blog/743-Build_tool_semantic_aware_build_systems
Thank you for that reference. Yes, that's in the right spirit. The motivational scenario (packaging data science applications) as well as other specifics are of particular interest to me. From the blog: > A build system like nix is designed around the idea that builds are > relatively cheap, and that any change in a dependency ought to trigger > a rebuild, just to be sure that all build outputs are up-to-date. In addition to the above assumption, software engineering makes another assumption that (at times) needs to be relaxed in data science. In software engineering, the tests are assumed to have a definitive notion of "pass" vs "fail". Whereas in data science applications, the "tests" may not have a definitive "pass" or "fail" semantics and/or may entertain multiple such interpretations. While I have been calling these tests so far, perhaps it may be better to call these something other than that. If so, "statistical report" may be more descriptive. Regardless, we reach the point where it would help us if we had some control over defining what is or isn't substitutable for another. While the blog post is considering this more generally via the use of "equivalence proxies" (e.g., treat A as being substitutable for B if the value of the proxy evaluated at A is the same as the value of the proxy evaluated at B), I am currently limiting myself to the more specific case where I want to be able to treat A as being substitutable for B when I am able to define a computation that takes A as an input and is able to generate B. Note that I am not requiring that I be able to generate A from B. So, in Guix, if I want to create a "type of substitute" which instead of downloading over HTTP/HTTPS runs some other computation how would I go about doing that? > and also the paper: Build à la carte > > https://dl.acm.org/doi/pdf/10.1145/3236774 Thank you for that useful reference. -- Suhail This email is not an offer capable of acceptance, does not evidence an intention to enter into an agreement, has no operative effect until a definitive agreement is signed in writing by both parties, and that no party should act in reliance on the email or any representations of the sender until a definitive agreement is signed in writing by both parties. This email may contain information that is privileged, confidential and/or exempt from disclosure. No waiver whatsoever is intended by sending this e-mail which is intended only for the named recipient(s). Unauthorized use, dissemination or copying is prohibited. If you receive this email in error, please notify the sender and destroy all copies of this email.