libera/#clasp - IRC Chatlog
Search
13:15:23
yitzi
Because the stuff in dependencies/quicklisp is a "live" quicklisp distribution. If you had wanted to update it you would have had to do `CLASP_QUICKLISP_DIRECTORY=dependencies/quicklisp/ ./build/boehmprecise/clasp --non-interactive --eval "(ql:update-all-dists)"`
13:31:06
drmeister
This is on zeus - I don't have CLASP_QUICKLISP_DIRECTORY set on there but I do have it set on my mac.
13:54:37
drmeister
::notify karlosz I implemented multiple entry points in cclasp for the simple cases that only involve required + optional arguments. If the function lambda list involves &rest or &key or anything else - then the fixed arity entry points jump to the general entry point. You could do the same couldn't you?
14:00:50
Bike
yitzi: i merged your characters request - the tests all passed but for the disassemble thing, except for one that went screwy in a way that i'm pretty sure is unrelated to your PR
14:03:41
drmeister
I'm going to merge the vm branch into main. It builds fine with cando and it fixes a nasty bug from initialization of the partial implementation of the VM
14:08:53
drmeister
I've merged vm into main on zeus. I'm building on zeus to make sure it's clean and then I'll push it. Otherwise I'll have to pull again and build again.
14:11:29
drmeister
This thing about compiled-function-p may need to be cleaned up a bit once the bytecode compiler is in place. We will need to decide if bytecode is compiled. If we decide it isn't, then we need to keep the forms around so that we can compile them - right?
14:15:43
yitzi
When you pull from main you'll need to remove dependencies/ansi-test before rerunning koga
14:16:19
yitzi
Or you can be brave and use `--deep-clean` .... see the log for notes about its usage
14:17:11
Bike
i think the question of compiling bytecode again is a little different from the question of whether compiled-function-p is true of bytecoded functions
14:24:27
drmeister
Then I'll push and we can start the nightly packaging and see if it fixes any problems.
15:24:31
yitzi
drmeister: I am looking at the internal coordinate stuff. Seems like it blows up for vectors on the negative x -axis. Also, can I make sure I understand the angle orientation? Phi is the angle in the yz plane starting at +y and winding towards +z. Theta is the angle from tge x axis with 0 at +x and pi/2 at -x?
15:28:41
drmeister
Does it? I put it on the x-axis. Huh - does z-matrix mean second atom on z-axis? I never thought of that.
15:29:45
yitzi
Yeah. It seems really wonky to me. Your method matches up with the usual spherical coordinates of theta in the xy plane and phi on the z-axis
15:30:17
drmeister
Maybe I'm wrong about that - but it's a convention and the ultimate orientation of the molecule doesn't matter.
15:30:25
yitzi
Putting the second atom on the z-axis scrambles the angles around as I describe. I'm pretty sure.
15:42:42
yitzi
I think it is just coming from trying to normalize the vectors. Instead of doing dot/cross products we invert the coordinate matrix instead, I think that will fix it.
16:52:10
yitzi
drmeister: Looks like we have got some missing defines. Getting https://plaster.tymoon.eu/view/3346#3346
17:03:57
Colleen
karlosz: drmeister said 3 hours, 9 minutes ago: I implemented multiple entry points in cclasp for the simple cases that only involve required + optional arguments. If the function lambda list involves &rest or &key or anything else - then the fixed arity entry points jump to the general entry point. You could do the same couldn't you?
17:05:28
karlosz
hm... the part im getting hung up on is somethng like &optional (x nil x-p). You make an entry point for 0 arguments and 1 arguments, but the 1-argument entry point still needs to set X-P to T, so its not as if the 0 argument entry point could just fall through to the 1 argument entry point
17:24:48
Bike
yitzi: where does koga/ninja put fasls now? i'd like to delete them so i can start rebuilding from bclasp. or is there some koga thing i can use
17:26:47
yitzi
I have a branch to simplify that down to lib/cclasp/ ... not sure if I should finish or wait for bytecode to land
18:01:44
Bike
i wouldn't anticipate a bytecode changeover in the immediate future. we have a ways to go.
18:02:41
Bike
::notify karlosz can we not just have each entry point unconditionally jump to the function body after setting all the parameters? i don't think jumps will be meaningfully slower than fallthrough?
18:12:36
Colleen
karlosz: Bike said 9 minutes, 55 seconds ago: can we not just have each entry point unconditionally jump to the function body after setting all the parameters? i don't think jumps will be meaningfully slower than fallthrough?
18:12:46
karlosz
if i have 7 optionals it seems like kinda of a waste to have defaulting logic repeated 7 times
18:28:58
karlosz
it seems like the presence of supplied-p parameters also makes in-place processing on the stack hard... im thnking we might need an additional args register pointing to the region where the passed args are
18:30:36
karlosz
otherwise if you have (x &optional (y nil y-p) &rest rest-arg) supplying y-p will overwrite the args needed for the rest-arg
19:13:40
karlosz
when calling in from machine code the trampoline doesn't even have to push any of the stuff on the normal stack
19:14:42
karlosz
i don't think its possible to have the args area and the local variable frame overlap
19:15:11
drmeister
Missing defines - did you fix it? I had a fix and got distracted before I pushed.
19:15:35
karlosz
where args is loaded with the arguments - this could be done when calling into a bytecode function
19:16:06
karlosz
the vm also needs an args-count register, but we need that for argument checking anyway
19:16:56
drmeister
Somehow the merges gave me a duplicate bytecode_call function. I removed the second one - it had old code that used those defines.
19:17:45
karlosz
anyway, still figuring out the details. once i get it working in the prototype i will update the vm page
19:19:41
drmeister
karlosz: Regarding "hm... the part im getting hung up on is somethng like &optional (x nil x-p). You make an entry point for 0 arguments and 1 arguments, but the 1-argument entry point still needs to set X-P to T, so its not as if the 0 argument entry point could just fall through to the 1 argument entry point" - agreed. I don't recall what I did - but it's in our argument processing source code.
19:20:40
drmeister
https://github.com/clasp-developers/clasp/blob/main/src/lisp/kernel/cmp/arguments.lisp#L427
19:21:05
Bike
i don't think it's a big deal honestly, most functions don't have &optional parameters, and even if they do they have more like two than seven
19:23:41
drmeister
`compile-only-req-and-opt-arguments` takes an `arity` argument - I think it generates standalone code for each arity of arguments that doesn't depend on any other code.
19:26:21
drmeister
That code evolved from earlier code with a single entry point. I didn't consider any fancy pants ideas like "elegance" or "flow".
19:26:48
drmeister
ACTION subscribes to the "if brute force doesn't work - then you aren't using enough of it" school of programming.
19:31:17
drmeister
stassats: Howdy - we are finally building a bytecode virtual machine to replace our s-expression walking interpreter. We are going to have a bytecode compiler and interpreter implemented in C++. Fun fun!
19:34:58
drmeister
I am oh so tired of the constraints that our s-exp interpreter puts on us. I look forward to ripping out the eval::evaluate(...) and sp_xxx interpreter functions.
19:55:47
karlosz
yeah, that's what i am trying to do. the problem is interleaving the defaulting code, so not everything can be combined into one bytecode instruction
19:56:19
karlosz
i'll try to get the single entry point model working first with &rest and &key then see what opportunities there are
19:59:38
karlosz
actually teaching the vm how to tell where the flow came from may be more complicated though
20:01:54
karlosz
it would have to be something like that, except we can't have a small fixed bound for how many branches to keep, since we actually need it or correctness, not just prediction
20:01:56
drmeister
I'm just tossing out cheap ideas - I'm not doing the hard work of implementing them.
20:55:46
drmeister
yitzi: It looks like the Ubuntu cando build failed because of a spurious file descriptor problem.
22:39:17
drmeister
yitzi: On my M1 Macbook Pro I did `./koga --deep-clean` and then `ninja -C build` and I'm getting that missing symbol ON-REMOVE error.
22:47:49
yitzi
Yes. `jupyter-labextension install -y --no-build @jupyter-widgets/jupyterlab-sidecar && jupyter-labextensions update --all`
22:48:32
yitzi
Meant `jupyter-labextension install -y --no-build @jupyter-widgets/jupyterlab-sidecar && jupyter-labextension update --all`
22:49:32
drmeister
I should add this to the documentation wherever we use jupyter-labextension - correct?
22:58:11
yitzi
I updated the readme on the cando repo. Did they have instructions in the that google doc? if so then yes that needs to be updated.
23:12:44
yitzi
For show I've added some details to its docstring. You can see some examples in demo 5.
23:17:38
yitzi
For reference: https://github.com/cando-developers/cando/blob/32ee982bb5809e96614713e5877354c33e88a0df/src/lisp/leap/commands.lisp#L82-L97
23:18:55
karlosz
more or less settled on a scheme for &key that seems to be compact in bytecode. updated the VM page for that
0:12:45
yitzi
You have to wait for all jobs to fail or end. Then there is a restart button in the upper right hand corner https://i.imgur.com/pyUuJ2d.png
0:39:49
drmeister
::notify karlosz I just realized I'd need to expose stack manipulation functions, closure slot accessing functions, and multiple-value accessing functions if we want to implement the VM in Common Lisp for testing. Should I?