freenode/#sicl - IRC Chatlog
Search
6:02:01
no-defun-allowed
The "tombstone only when group is full" part of Kulukundis's hash table only would work concurrently if we can CAS out entire groups of metadata, as that's the only way we can tell if any other thread updated the group metadata. If we want to run with 8 element groups, then the implementation has to be able to CAS 64-bit words. If we want to run with 16 elements or more, using SIMD, then that length has to be CASable
6:04:03
no-defun-allowed
AMD64 provides 16-byte CAS but not larger; I don't know if a larger group is a good idea though, as the Abseil libraries only optimise for 16-byte groups.
6:47:34
no-defun-allowed
Shinmera: I got resizing to go considerably faster by increasing the minimum number of elements copied at a time while resizing. Now Luckless is even a bit faster with my worst-case program which removes everything it puts.
7:13:44
no-defun-allowed
The only noticeable pauses with testing decentralise2 are garbage collection pauses, which are partly my own fault, for running SBCL with a large heap, and not adjusting the collection settings.
7:39:18
no-defun-allowed
Though I should go through my changes, and see what was only attempting to avoid copying, and see what actually makes sense now.
7:46:42
no-defun-allowed
There's some documentation in <https://github.com/no-defun-allowed/luckless/blob/master/documentation.lisp>, but it might be too short.
8:28:37
no-defun-allowed
Oh, and I don't know what I did, but now I blew the stack in a loop with %help-copy and %put-if-match. Isn't it supposed to not do that?
9:13:14
no-defun-allowed
Maybe the hash table is having a very bad day, where some key is still too far from the first location probed, so it decides to resize the new data table that it's copying into. Copying does call back into %put-if-match...
9:54:03
no-defun-allowed
But then that should be impossible, as %put-if-match always starts resizing if we exceed the probe limit. And it doesn't crash on my laptop, so I can assume something has gone terribly wrong with compiling everything somehow.
11:08:13
beach
This is unbelievable. I reached the limit of nested "enumerate"s in LaTeX, so I looked for a solution, and found that the "enumitem" package allows an arbitrary nesting depth. But I still get an error when I go beyond 7 or so, despite having declared that I want 10 or more. I mean, who wrote this shit? We haven't programmed like that for half a century.
11:09:09
no-defun-allowed
Doesn't TeX have...a few limits on things, like counters? But if you can declare another one, then it does seem pretty stupid.
11:10:31
beach
It has several limits on things. My theoretician colleagues think Donald Knuth is a great programmer, but that's just because they have no clue about what great programming is about.
11:11:50
beach
Different cases of where lexical variables can be found and when they are needed further along, for the purpose of register allocation.
11:12:16
heisig
To assume any particular interaction with a computer doesn't require a full-featured programming language is a very popular mistake.
11:12:30
beach
So, here I am trying to come up with some serious work on register allocation, and I run into arbitrary limits of my documentation tool. Totally unbelievable.
11:12:54
heisig
It is also a horrible mistake, because not having access to a full-featured programming language ruins productivity.
11:14:09
no-defun-allowed
One irrelevant thought is that on LibreOffice, seven levels of nesting gives you just half the page width for text, so it vaguely makes sense why you would stop there. But it's still absurd.
11:14:46
heisig
I'd be in for rewriting TeX. Given the amount of TeX I produce, such a rewrite would probably amortize well before I retire.
11:15:18
Shinmera
it has a lot of other good things like proper unicode support out of the box, ttf fonts without weird kludges, etc.
11:17:09
heisig
No, even such a rewrite can't fix all the existing libraries that are totally broken because they had to be implemented in TeX.
11:19:30
heisig
On the other hand, the consistent input format is one of the main reasons why TeX got so popular in the first place.
11:20:24
Shinmera
In any case, switching engine should be as simple as https://github.com/Shinmera/talks/blob/master/els2019-shader-pipeline/paper.tex#L519-L524 supposing you're using AucTeX.
11:20:29
no-defun-allowed
One version of the indexing package would try to emit an entry for a function named %foo, and then confuse itself when reading the index file.
11:22:08
no-defun-allowed
I could almost like the Scribble notation, where one writes @foo[bar baz]{quux} which is sugar for (foo bar baz "quux"), but it doesn't handle multiple {} parts like @foo{bar}{baz}, so I can't write @defun{cons}{car cdr}.
11:24:06
beach
Shinmera: I see the TeX-engine comment, but I don't understand what program is reading it?
11:26:26
no-defun-allowed
Otherwise, passing around objects of distinct types, like a "normal" programming language is great. But Scribble generates either HTML or TeX, so it's at the whim of those engines, and it is very opinionated on how to emit those, like doing some stuff to flush all newlines with TeX, which messes with macro writing.
11:28:20
beach
There is a possibility that I am not using the right command to set the depth, but the documentation for the enumitem package is not terribly explicit about it.
11:35:25
jackdaniel
there is plenty of literature about the time travel topic, so there *must be* something to it! ;)
13:58:08
splittist
Those terrible troglodytes in the business world who cling to their Words (updated weekly) and Excels (now with LET, and LAMBDA coming soon) while the academy invents the future with... TeX.
14:47:23
beach
http://metamodular.com/SICL/sicl-specification.pdf is what I am working on. Specifically, please look at pages 92 and 93 (PDF pages 102 and 103) for the different cases I came up with for register allocation of one single type of instruction, and only item 8 is handled so far.
14:48:45
beach
And please tell me whether you think I am on the right track or whether this is completely wrong.
14:58:37
beach
And this is just the beginning. No callee-saves registers yet. And no ... what was the name again... re-something for recomputing rather than spilling.
15:00:59
beach
Also, since register allocation is going to be totally important, I am willing to make the technique a bit more complex so as to improve the result.
15:02:44
beach
It is probably possible to factor the description (and the associated code), but I would rather start with a more complete case analysis.