libera/#shirakumo - IRC Chatlog
Search
9:16:13
Colleen
<shinmera> Okey, so, I'm going to try and explain this forge problem because I can't seem to figure it out on my own
9:18:01
Colleen
<shinmera> Forge deals with components, on which an operation can be performed. Doing so yields one or more effects. Each operation/component pair (called a 'source') has a list of dependencies, which are effect designators.
9:18:53
Colleen
<shinmera> So for instance you can say "in order to perform the compile-operation on the "a.lisp" component, we depend on the load-effect with parameter "x".
9:19:38
Colleen
<shinmera> Some other part can then come along and say "performing load-operation on the "b.lisp" component will result in a load-effect with parameter "x""
9:21:22
Colleen
<shinmera> Now, in order to make plan computation not insanely expensive by having to cover the entire graph of all known components, there is a subdivision scheme
9:21:50
Colleen
<shinmera> So projects are their own components, with their own effects and operations
9:22:53
Colleen
<shinmera> And then for each project in the plan, a subdivision is performed, where the project needs to designate an effect that needs to be achieved in order to achieve this overall operation.
9:25:27
Colleen
<shinmera> The problem appears when we factor in how this stuff is supposed to be specified by a user
9:31:19
Colleen
<shinmera> Ideally the user would say "this is a lisp project, it has two files a.lisp and b.lisp" and the system would automatically figure out how to construct the necessary effects dependencies to do hte rest
12:09:27
SAL9000
Not sure if this makes sense, but what comes to my mind is iterative helpers/syntax-sugar
12:09:46
SAL9000
Start by mocking up a simple example (your a.lisp, b.lisp thing, but slightly more complex maybe)
12:10:12
SAL9000
That should help you identify common patterns -- thus, the first layer of helpers/syntax-sugar
12:10:54
SAL9000
then for simple projects, the user can use the highest-level helpers, upgrading to the more complex/lower-level ones as necessary in the future
19:24:16
Colleen
<shinmera> Right now I'm dealing with this problem: when you create a component it iterates over its supported operations, and creates effects that it can create in a database.
19:24:39
Colleen
<shinmera> But: now consider something like compile-file, which produces a fasl artefact as output.
19:25:22
Colleen
<shinmera> in order to do that though it needs to know the compiler that's going to be used
21:00:55
SAL9000
Shinmera: represent the path as #<fasl-of #P"foo.lisp"> for the purposes of planning, then convert it to "real" fasl path once you know what compiler is used?