freenode/#sicl - IRC Chatlog
Search
8:54:03
beach
I decided to bite the bullet and try to extract the Cleavir environment query functions and classes to a separate repository.
8:54:04
beach
I am gradually moving things from Cleavir into this repository, modifying comments and factoring code as I go along: https://github.com/robert-strandh/Trucler
8:55:13
beach
Any help will be appreciated. Help with the migration, help with the code factoring, help with ideas about customization, help with the creation of implementation-specific methods and subclasses.
8:59:18
beach
Also, the current implementation in Cleavir is quite slow. It traverses the chain of environment extensions several times to build the INFO objects to return, and it does this on every query.
9:00:19
beach
It would be interesting to implement some kind of caching scheme so that several identical queries would be faster.
9:02:27
beach
Each one add one piece of information. Dynamic extent, a type, inline information, etc.
9:03:13
beach
So when the query happens, all this information must be combined. The AND between the types must be computed, the innermost version of inline information must be used, etc, etc.
9:04:28
beach
But each extension (or rather "augmentation") function supplies only one piece of information.
11:33:43
heisig
Good news - I just finished my sealable metaobjects prototype. And I can use it to implement the SICL sequence functions.
11:34:21
heisig
That means that the discriminating function can be avoided whenever the compiler can infer that the sequence in question is of a built-in type.
11:36:05
heisig
The previous version takes 48ns for FINDing something in a specialized vector with a single element. The 'inlined' version takes only 41ns.
11:39:14
beach
I have said this before, but I don't think performance is extremely important for short sequences.
11:40:40
heisig
I know. The more important use case of sealable metaobjects is to allow a generic cl:elt.
11:41:03
heisig
But for that to work, I also have to inline the effective method, not just the discriminating function.
11:42:49
heisig
scymtym: You are more familiar with SBCL internals. Do you spot any problems with the following code: https://github.com/marcoheisig/sealable-metaobjects/blob/master/code/implementation-specific/sbcl.lisp ?
11:47:28
heisig
beach: I am quite productive at the moment. Katharina and I moved in together a few days ago, and we don't yet have internet access at our flat.
11:47:44
scymtym
heisig: not immediately; i would have to study it longer. did you look at pkhuong's code? it's probably solid
11:48:39
heisig
scymtym: pkhuong's code has been invaluable so far. Thanks again for showing it to me.
14:29:09
Bike
beach: you sure you can't just move out the entire Cleavir/Environment director? it doesn't have dependencies besides acclimation, does it?
14:33:03
beach
I could, but I want to factor the code, and I want to introduce INFO classes for generic functions.
14:34:51
beach
Oh, and some things are not independent of the implementation, so they need to stay in Cleavir, like POLICY.
14:53:42
Shinmera
A protocol/architecture for rendering pipelines. As in, it describes and encapsulates different stages and the required resources.
14:54:31
Shinmera
I can only find papers that describe algorithms and their stages, but nothing about a framework or architecture to describe such things.
14:54:59
Shinmera
I remember a talk by some dude from a big studio about their implementation, but I can't find that anymore, and I'm sure it wouldn't be available in paper form anyway
14:57:27
Shinmera
Oh, wait, just found what I was thinking of. https://www.gdcvault.com/play/1022186/Parallelizing-the-Naughty-Dog-Engine
14:59:04
heisig
Shinmera: Kai Selgrad is a Lisper who has previously worked in computer graphics. Maybe you consult him?
20:31:17
Bike
soo i have things more worky than they were, but i still have the question of how to generate an ast outside of a function, so that there's no dynamic environment location set up