freenode/#sicl - IRC Chatlog
Search
4:22:01
no-defun-allowed
The feedback from the reviewers was very insightful. One thing though: is "abstraction inversion" a well-established term? The term has a Wikipedia page, so I was hoping it would be understood without a definition.
4:24:20
beach
It might not be something that is fresh in memory of every referee. You might as well explain it briefly.
4:49:05
splittist
This discussion of abstraction inversion leads me to wonder whether it has any meaning at all https://wiki.c2.com/?AbstractionInversion
4:51:44
no-defun-allowed
The definition I know is loosely "building a low-level abstraction on top of a high-level abstraction", which can appear if one wants to use features which are not provided by the high-level abstraction.
4:54:49
no-defun-allowed
(For example, phoe's implementation of Common Lisp control flow forms using Java's exception system. And in the paper, I argue that the "room" protocol provided by Matrix [the communication platform] forces too many design decisions, limiting reuse.)
5:18:51
beach
heisig: And, congratulations to you for finishing another important step in the ELS process.
5:22:09
beach
Not only heavy duty. It requires a lot of diplomacy, and some non-trivial knowledge about the subject.
5:23:29
beach
I have seen program chairs (not for ELS) in the past who just denied all responsibility and took the average of the referee reports. One such program chair was my colleague, and I was absolutely furious.
5:25:57
heisig
Yes, it is a bit involved. But I've been an author myself often enough to know how valuable it is to get decent feedback, and what difference a good letter of acceptance or rejection can make.
5:31:32
beach
Now the question in my mind is, do I need to take into account the remarks of the referee that rejected my paper? :) That referee has the most remarks, so I could save a lot of work by ignoring those remarks. :)
5:34:49
beach
Heh, I actually didn't read the remarks yet. It was more like a philosophical question.
5:46:20
no-defun-allowed
RAM firmware? From what I remember, it didn't seem like any DDR memory commands needed complex control logic, but that may not be the case.
5:48:19
beach
ebrasca: There are no good existing RISC-V computers (yet). It doesn't hurt to know several different architectures.
5:53:28
beach
OK, this is Monday and Monday mornings are chaotic around here. I will be mostly off for the next hour or so.
5:54:09
no-defun-allowed
Sometimes NOP is a macro for something like MOV, r0, r0 (as it is on ARM), but it can be used as a little delay, or for instruction alignment, or the processor may require it due to pipelining (such as old MIPS).
5:58:14
no-defun-allowed
According to <https://en.wikipedia.org/wiki/NOP_(code)#Machine_language_instructions> NOP is a macro for r0 ← r0 OR 0
6:02:02
no-defun-allowed
I don't think anyone does learn them all. I'd even bet that no one knows all the x86-64 instructions.
6:03:12
beach
ebrasca: My experience is that you learn instructions as you need them. You typically don't set out to learn them all.
6:09:11
fiddlerwoaroof
The time difference still makes it difficult for me: last year I attempted to attend, but it was pretty late
6:11:58
moon-child
heh, it's not about reverse-engineering the architecture. (That is a ... completely different kind of undertaking.) Really, it's just an assembly book, with a slight focus on reverse-engineering extant programs
6:16:03
no-defun-allowed
heisig: Just to check, how do I communicate with the shepherd? Do I just reply to your notification with the adjusted paper?
6:31:51
heisig
no-defun-allowed: You should be able to upload new revisions on Easychair. If you want to contact your shepherd, you can send the message to me an I pass it on.
7:17:17
beach
fiddlerwoaroof: Yes, it would have been better with a physical location. Then all the people from far away could take a few days to adjust to the time zone.
8:15:40
beach
I was willing to take a performance hit when I replaced my desktop tower with this small OCTO computer. But the SICL boot procedure runs faster with the OCTO: 33 seconds on the OCTO compared to 38 seconds on the desktop.
8:17:35
beach
I still have to buy myself a "USB C splitter", and verify that I can drive my three screens with it, but they claim it is the way to do it, and I hope they are right.
8:26:52
pjb
And foremost, the execution model was simplier, you could know what instruction sequence was fastest just counting cycles. With pipelines, predictions, and re-ordering, nowadays it's impossible to do it by hand, and it would depend on the target processor anyways.
8:27:59
pjb
IIRC, gcc performs dynamic explorations to find the best instruction sequences, this cannot be determined easily anymore.
8:28:58
moon-child
I saw a talk last year at pldi about applying neural networks to autovectorizers, because it's just too computationally complex to be done optimally otherwise
8:29:40
moon-child
(still not 'optimal' in all cases, but it got very favourable results compared with the brute-force solution)
8:31:23
heisig
Yes, you need something like https://llvm.org/docs/CommandGuide/llvm-mca.html to estimate the performance of some machine code.
8:33:12
heisig
On the other hand, programs that are limited by instruction throughput or the number of arithmetic units are very much the exception.
8:34:25
moon-child
I think that's an oversimplification. Certainly, if there's a single scarce resource, it's memory bandwidth. But that doesn't mean reducing alu usage won't improve overall performance at least somewhat in 99% of cases
11:00:24
lukego
but I think there are definite genres of program that have different performance limits. for some it will be memory bandwidth, for others execution units, for others latency at various levels of the memory hierarchy, etc.
11:03:22
lukego
I'd like to try static analyzers some time but I've always relied on CPU performance counters coupled with staring at disassembly
11:46:37
lukego
(intel have some interesting docs about this e.g. a "top down" method to try and work out where your performance bottlenecks are by following a flowchart to tell you which performance counters to consult, partly automated by some open source tooling they've published)
11:46:50
lukego
and I guess VTune is free now which is probably a hundred times better than any method I've used
12:53:19
scymtym
i'm experimenting with an approach for considering context in the highlighting style computation: https://techfak.de/~jmoringe/semantic-highlighting-2.png . note how, for example, variable, function and type names are bold when they appear in a "definition" context and not bold when they appear in a "reference" context. i will try to upload a document that outlines the approach and open questions later today
13:32:10
beach
scymtym: That seems like a great idea to me. In general, I am in favor of somewhat subtle hints in the form of font, color, background, etc., at least when possible, rather than some more spectacular indications that can distract the developer.
13:34:23
scymtym
beach: sure. however, i'm not really designing the aesthetics and ergonomics at this point. i'm currently trying to highlight all things in different ways based on what /could/ make sense later, so that i can collect the technical requirements
13:35:23
beach
Then I'll just say that I think it is a great idea to distinguish between defining occurrences and using occurrences.
13:40:01
scymtym
i'm trying to initially list all requirements and later accept or reject individual ones for implementation based on usefulness, implementation difficulty, etc.
13:45:07
splittist
at least one of the old lisp systems used to UPCASE symbols in the (equivalent of?) COMMON-LISP package. I wonder what a 'rainbow symbols' (in analogy to 'rainbow parens' would look like?
13:48:05
splittist
I guess one could also mark out the symbols in extended LOOP forms that will be treated as loop keywords. This would require an extensible LOOP to report such symbol names, of course.
13:48:36
scymtym
another possibility would be (slightly) underlining symbols for which documentation (not necessarily a docstring) is available. this could also consider the namespace so that (list …) would link to the entry for function and (let ((list …)) …) wouldn't link anywhere
13:49:41
beach
I think you have given all this a lot of thought and I think many of your ideas sound quit good to me.
13:49:43
scymtym
right. i haven't done underlining and background colors so far because other hints are easier to do in the CLIM-based demo. but i definitely want to include those
13:52:00
splittist
a thin border around the format controls in a format string (not that the system can know to what use a string will be put).
13:55:12
scymtym
the system can parse format control strings but, as you point out, knowing which string is a format control string can at best be estimated conservatively
13:55:33
splittist
a faint menacing throb for ERROR; an arrow connecting the GO to the TAG; a mechanical typewriter animation for TERPRI; STOP ME BEFORE I ...
13:56:03
scymtym
that said, identifying STRING in (format <anything> STRING …) is not out of the question
13:57:11
scymtym
i totally want arrows between uses and definitions. but probably only when you place the cursor/pointer over one
13:59:01
scymtym
drracket does it this way: https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fmiro.medium.com%2Fmax%2F1520%2F1*5T7UGXxXcn9oqLAoyh23pw.png&f=1&nofb=1
14:02:32
jackdaniel
perhapsa presentation method highlight-presentation-pair modelled after http://bauhh.dyndns.org:8000/clim-spec/23-3.html#_1172 ;?
14:04:45
scymtym
jackdaniel: that's a good point. i haven't found an appropriate mechanism in CLIM yet. so far (for example in clouseau) i (ab)use HIGHLIGHT-PRESENTATION for such things
14:58:41
heisig
scymtym: Your demos and ideas are always super impressive. Thank you for sharing them.
15:00:13
heisig
I usually prefer very modest syntax highlighting. Too much different colors and font styles can easily be overwhelming.
15:01:50
heisig
So macros should look different than functions, because they may have non-obvious semantics.
15:02:13
heisig
And I like to have each level of parentheses in a different color, so that I don't accidentally mess up indentation.
15:02:20
beach
heisig: I think if the fonts, colors and styles carry some information, you would soon get used to it. But I agree that totally arbitrary things like highlighting every keyword, is really hard to read.
15:03:38
scymtym
heisig: thanks. i believe there is usually an indirection such that a pattern which matches a certain part of the input is not mapped to a concrete highlighting style but some sort of name which can be mapped to a concrete highlighting style in a "theme". i think doing something similar will be easy and will not affect the hard parts of the architecture much
15:04:33
heisig
Another thing I'd love to have is that lexical variable definitions and their use have the same color, at least once shadowed variables are involved.
15:04:39
beach
heisig: Exactly my point. Traditional highlighting does not assist in any way, so it becomes annoying.
15:07:21
scymtym
heisig: identical colors for definitions and associated uses is a very interesting idea. it also adds new requirements i haven't considered before
15:08:18
heisig
I am just trying to recall all the things that caused me trouble in the past, and that could have been avoided by syntax highlighting.
15:12:33
beach
How many nested levels of scope does a program typically have. It would be interesting to consider a particular color for each level. But at the same time, avoiding a complete fruit salad, of course.
15:13:08
beach
Then, for example, it would be totally obvious when a variable refers to an outer scope.
15:14:24
heisig
My proposal would be to only start the fruit salad for variables that are shadowed at least once.
15:16:47
beach
In fact, pretty much anything that reflects semantics would be WAY better than what we now have.
15:18:12
beach
I mean, consider what we get with things like (let ((defmethod... or (let ((check-thing...
15:39:40
beach
All that the version in SICL does is to convert a list of symbols to an integer representing a bitmap.
15:46:34
scymtym
this is what i have so far for the highlighting approach: https://techfak.de/~jmoringe/editor-design/semantic-highlighting.html
15:57:00
beach
scymtym: I see I need to read this document very carefully, but I would already like to point out a missing comma that changes the meaning with respect to what I think you want to say...
15:58:19
beach
"The above example only considers the abstract syntax tree which is insufficient in general". The meaning as it stands is that the syntax tree is insufficient. And the example only considers insufficient syntax trees.
16:01:19
beach
I'll continue reading, and trying to understand the traversal example, but it may be too late in the day for me to make sense of it. If so, I'll get back to you when I am in better shape.