freenode/#clasp - IRC Chatlog
Search
1:35:15
drmeister
Rather, I'm making the *thread-local-builtins-module* special variable thread local and initialized to NIL and then loading it lazily.
2:23:41
drmeister
Also - I realized I'd left debugging in bclasp on - turning that off for timing...
2:33:45
drmeister
I think this will fix the problem with multithreaded slime - but I haven't tested it yet with cclasp.
3:13:56
drmeister
(defclass foo () ((arga :initarg :arga :accessor arga) (argb :initarg :argb :accessor argb)))
4:25:25
drmeister
::notify Bike We aren't taking full advantage of these new fastgf optimized slot accessors. ECL's std-class-optimized-accessors are still using hash tables. This is revealed by profiling allocation of CLOS objects.
10:36:50
drmeister
::notify kpoek There are instructions about a symbolic link that you may need to use on OS X to get rid of those missing header file messages: https://github.com/drmeister/clasp/wiki/Clasp-0.5-Build-Instructions
12:42:08
Colleen
Bike: drmeister said 8 hours, 41 minutes ago: cclasp works with slime in :spawn mode - we are back in business.
12:42:08
Colleen
Bike: drmeister said 8 hours, 16 minutes ago: We aren't taking full advantage of these new fastgf optimized slot accessors. ECL's std-class-optimized-accessors are still using hash tables. This is revealed by profiling allocation of CLOS objects.
12:52:30
beach
I would like to make the following changes to Generate-AST, CST-to-AST, and AST-to-HIR:
12:52:43
beach
First, Generate-AST and CST-to-AST should not enter the AST corresponding to a variable into the environment. Instead, it should enter an instance of a new class, that we may call VARIABLE and which is not an AST (so it has no source information).
12:52:49
beach
Next, Generate-AST and CST-to-AST should create a new AST for each variable reference, and instead of the name of the variable, the AST should contain a reference to the unique VARIABLE instance. That way, each reference to a variable has its own source location.
12:52:50
beach
To make that work, some changes need to be made to AST-to-HIR, but I think they are fairly limited. It looks like FIND-OR-CREATE-LOCATION needs to be altered so that it uses the VARIABLE to look up the location, rather than using the AST directly.
12:54:51
beach
I should have said: Generate-AST and CST-to-AST should create a new instance of a LEXICAL-AST for each lexical variable reference.
12:57:25
beach
Unfortunately, this change will break all the CST-to-AST tests that I so painstakingly created. :(
12:58:08
beach
But the change is necessary so that we can keep correct source location for each variable reference.
12:58:32
Bike
I think right now we just put... symbols? cleavir env info? in lexical asts, so having dedicated variables makes more sense to me
12:59:43
Bike
so, in the paper i didn't see reference to when fastgf could be applied. can it only be used on direct instances of standard-generic-function, or is it just that for indirect instances we can only make a dispatching tree out of what we get from calls to compute-applicable-methods-using-classes?
13:02:33
beach
The MOP does not allow the result of compute-applicable-methods to be cached as I recall.
13:03:03
Bike
but we can do something like that for standard-generic-function since it's standard and methods can't be defined etc.
13:05:28
Bike
because it would just be caching on the actual objects, which wouldn't recur so much, i guess. a user could define a compute-applicable-methods method that uses identities different from classes or eql specializers.
13:06:42
Bike
anyway, the other thought i had was that it might make sense to compile effective methods directly into the discriminating function. i think that's /allowed/ anytime since nothing seems to state effective methods have to be functions and they aren't accessible, and i think it could be a good idea because most of the time they're pretty simple. any thoughts? i looked through sicl and it doesn't seem to do this.
13:08:20
beach
That ought to be possible, yes. There are many optimizations that I have not yet done in SICL.
13:08:31
drmeister
FYI Clasp's fastgf implementation does test for EQL specializers - and does check if the effective method function can be memoized here:
13:08:31
drmeister
https://github.com/drmeister/clasp/blob/dev/src/lisp/kernel/clos/closfastgf.lsp#L527
13:10:37
drmeister
https://github.com/drmeister/clasp/blob/dev/src/lisp/kernel/clos/closfastgf.lsp#L522
13:17:23
beach
That's not a good reason in my book. It distracts the maintainer and makes him or her look for a more profound reason, such as the existence of special tools.
13:18:49
Shinmera
I'm sure he cares, but is often too deep in things and busy with stuff to think about making thins well readable.
13:19:58
drmeister
What Shinmera said - I'm usually in a headlong rush to get things working because I'm working under extreme pressure - largely self imposed.
13:19:59
beach
Well, a large part of programming is being meticulous and pedantic. When I see messy comments or messy code, I don't get the impression of good quality code.
13:21:06
Shinmera
Some people tend to try and push cleaning things up to a later point in favour of quick progress in the moment. That doesn't mean they don't care about other people reading their code.
13:23:34
Shinmera
That's beside the point. I'm merely arguing that unclean code does not imply that they don't care.
13:27:04
Bike
well, if nothing else, i'm going to look over the fastgf code in the next few days to make adjustments, i can rewrite comments as i do
13:27:30
Bike
i tend to go through erasing #+(or) blocks we're not going to need and so on whenever i make changes in a file
13:28:17
Bike
but as far as not cleaning up though, i just noticed this yesterday and it's probably older than i am https://github.com/drmeister/clasp/blob/master/src/lisp/kernel/lsp/loop2.lsp#L127-L137