freenode/#lisp - IRC Chatlog
Search
5:08:22
beach
jmercouris: Cleavir is a compiler that can be used by any implementation that so wishes.
5:10:23
jmercouris
Without using vendor specific extensions, are there enough functions and accessors to persist a lisp image?
5:10:33
beach
Most Common Lisp compilers could be characterized like that. The specificity of Cleavir is that it can be customized to the specific representations and data structures of any Common Lisp implementation.
5:11:15
jmercouris
it doesn't just use the functions, data types, and accessors defined in the lisp standard
5:11:24
beach
Customized. By the use of methods and subclasses. Just like any other CLOS-based software.
5:13:10
beach
Cleavir turns those details into generic functions and classes that can be altered by the implementation, using subclassing and methods.
5:14:55
jmercouris
I think that would be THE killer feature to convince an implementation to port Cleavir
5:15:18
beach
For SICL, the plan is to stick most of the system in a shared library, so that small executables can be produced for those who are obsessed about that.
5:15:24
jmercouris
I've obviously thought way less about this than you, but that's just an outsider perspective
5:16:55
beach
Either way, that feature is related to the implementation, so Cleavir can't do anything about it.
5:17:49
beach
A thing like that would be VERY implementation specific. I see no way to make it generic.
5:17:51
jmercouris
I guess your goals are more research oriented than anything, so I imagine it doesn't really interst you
5:18:31
beach
I have no interest in digging into the details of every free Common Lisp implementation if that is what you mean.
5:18:47
jmercouris
again, a standard "way" of bundling for the end user, and then handling the implementation specific details
5:19:38
beach
I have absolutely no idea how to even think about creating such a thing, other than a generic function CREATE-BINARY that each implementation would have to define a method on.
5:20:19
jmercouris
you would define those methods like +sbcl... etc, and then a user can just say (create-binary :with-name "binary-name" ...)
5:21:43
beach
The top 5 will last my remaining lifetime, so I don't often look further down the list.
5:31:27
beach
The other thing about Cleavir is that it uses the full Common Lisp language in order for the code to be maintainable and modular. Whereas for instance the SBCL compiler does not use generic functions, because it is needed when CLOS is not available. This fact makes the SBCL compiler much harder to maintain.
5:32:18
beach
Same thing with SICL, it uses the full Common Lisp language to implement most of its features. So for instance SICL LOOP uses generic functions and classes in its expansion code.
5:38:11
beach
There are very few people that have the required knowledge and that are also available for work. But when I find one, I'll consider this option.
5:39:23
jmercouris
And when you train one, they can train another, and then bam, exponential knowledge share
5:39:45
jmercouris
sure, there are losses the further from the source, but if everything is well documented, mistakes can be corrected
5:41:02
beach
I can't afford to pay someone for full-time work. And I certainly can't afford the typical fees in the US or western EU.
5:41:33
jmercouris
but if you made a business case for your work, you could secure a grant, or investment money
5:42:30
jmercouris
I'll give you this, you are possibly the best Lisp coder in existence right now, but I don't think you know anything about business
5:43:01
jmercouris
If you care about the completion of your project, you'd give it a really good hard think
5:43:56
beach
One thing I don't like is when people put words in my mouth. I don't care about the completion of my project enough to manage a business.
5:44:18
jmercouris
beach: You don't care about the completion of your project that you work on every day?
5:45:09
jmercouris
Furthermore, if you don't care about completion, why would you have thought about paying developers?
5:45:27
beach
jmercouris: I am a researcher. I get partial results as my papers show. Clasp has already implemented fast generic function dispatch and it uses Cleavir. That's good enough for me.
5:47:06
jmercouris
I don't mean to upset or anything, if I am bothering you, tell me and I will stop, I just enjoy controversial topics
5:47:17
jmercouris
to see if I can learn something, or understand how you think, so I say provocative things
5:48:23
beach
I would like to see my numerous projects finished, of course. But that is not my highest priority, and if the cost of getting there is too high, then it just won't happen.
5:48:51
beach
Part of the reason it is not high priority is that very few people care about my projects anyway.
5:52:32
beach
Sure, and I do my part, not only for computing, but also for the environment, for the economy, etc. But I am quite pessimistic about the future. But that's off topic.
5:53:09
jmercouris
So, if I understand, you think the impact of your projects is not significant enough based on a proxy measure of overall interest?
5:53:37
jmercouris
And since this is not inline with your goal of bettering the world, why invest oneself fully into it?
5:55:10
jmercouris
So you are satisfied with the amount of positive impact you currently produce, and therefore there is no need to necessarily complete your projects?
5:56:03
beach
My current strategy is to extract some "modules" from SICL and Cleavir (and other projects) to independent repositories, and to write tests and documentation for them.
6:11:03
stylewarning
beach, I might be down to (co?)sponsor a student to help implement some of your research
7:47:01
aeth
beach: Is there any chance that your fast CLOS will one day replace PCL in implementations like SBCL? (I assume that you either already beat its performance or will eventually.) I'm not sure anyone on the planet knows more about CLOS than you.
7:52:18
aeth
Replacing the current dispatch system in SBCL with a faster one would bring an immediate improvement to so many people, e.g. gray streams.
7:54:27
aeth
And a faster CLOS in general would change the architecture of so many things, probably.
7:57:05
aeth
phoe: well, I search "fast generic function dispatch" and the first result I get is http://metamodular.com/generic-dispatch.pdf
8:01:28
phoe
aeth: he talked about it on #lisp methinks some time ago, and showed some preliminary benchmarks.
8:02:14
aeth
It looks like most results are the paper by beach on DuckDuckGo: https://duckduckgo.com/?q=lisp+fast+generic+function+dispatch&t=hf&ia=web
8:28:45
aeth
Maybe I should spend more time to proofread before I write things that are permanently logged on many different websites.
8:33:18
aeth
The problem with IRC is that I'm usually on it when I'm too exhausted to program. So if you want to judge me at my sharpest, read my code, I guess.
8:39:31
aeth
I hope I'm never famous. People might judge me by the source code I write, but 90% of it is when I didn't know better. I just don't have time to replace it all.
8:55:16
Shinmera
Lots of people ask me that and I don't know what to say beyond that I'm terrible at everything else.
9:12:26
JuanDaugherty
it's easy to be productive if you stay immersed in work, particularly work you do under your own control and for yourself
11:11:16
beach
Here is a very very preliminary suggestion for the layout of different windows in Clordane. Comments are welcome. http://metamodular.com/fig-layout.pdf
11:12:45
beach
The backtrace window is present not only when an error has been signaled, but also when the program has stopped at a breakpoint.
11:15:25
phoe
I'd switch the REPL and the error message windows. Makes more sense when the left side is where all the trouble is, and the right side is there you can do stuff to fix it.
11:16:05
phoe
Or rather, the left side is immutable (the stack is read-only, so is the error message), the right side is mutable (you can edit code and evaluate things in the REPL).
11:16:29
Shinmera
I'd also move the message above the trace, since people usually care about the message first
11:17:47
phoe
It might be a SLIME influence, but I don't think I need a separate window for the error message. It can be printed above the stacktrace in its window, just as in the SLIME debugger.
11:20:00
phoe
I generally think people enjoy allocated but unused space on their screen as much as they enjoy allocated but unused space in their memory.
12:01:03
phoe
or do you want a separate window that shows the variables and parameters in the current stack frame?
12:54:07
flip214
(OPEN #P".../..." :DIRECTION :OUTPUT :ELEMENT-TYPE BASE-CHAR :IF-EXISTS :SUPERSEDE :IF-DOES-NOT-EXIST :CREATE) but
13:00:06
beach
phoe: I am not sure. I was considering showing the value of a variable when it is hovered over by the pointer.
13:01:07
beach
phoe: Alternatively, show the live variables together with source near the source window.
13:06:17
flip214
so some option to open a new (X11!) window with the variable inspected would be nice.
13:06:31
flip214
that's what I did for slimv - open another gvim, and inspect the current thing there
13:06:57
flip214
has the nice advantage that multiple such windows can be easily moved around and visually compared, eg. before/after code change etc.
13:23:29
puchacz
but this one is OK, isn't it? (type (function (or character nil) (or character nil)) predicate)
13:26:01
beach
puchacz: I think you need a level of parentheses around the argument type specifiers.
13:26:19
puchacz
beach: compiler accepted it, but I have no way of knowing if it means anything to it
13:31:42
specbot
Declaration Identifiers: http://www.lispworks.com/reference/HyperSpec/Body/03_cc.htm
14:17:36
flip214
when creating a new file but stopping the process with Ctrl-C, the file gets removed again.
14:41:35
puchacz_
by the way, can I create a package with functions named like unicode/string-downcase, and then import this package shadowing string-downcase from common lisp?
14:42:57
beach
You can shadow any name, but you are not allowed to redefine the Common Lisp function. Shadowing means you have the same SYMBOL-NAME but a different SYMBOL-PACKAGE for the names.
14:43:19
phoe
puchacz_: create FOO:SYMBOL-NAME and then (:shadowing-import-from #:foo #:symbol-name)
14:44:08
puchacz_
is it even possible what I want, i.e. to have name like "string-downcase" to refer to different function?
14:45:23
puchacz_
if I do so, will unqualified symbol STRING-DOWNCASE in source file text refer to my function?
14:45:36
phoe
(defpackage #:my-package (:use #:cl) (:shadowing-import-from #:foo #:string-downcase))
16:07:38
borodust
Xach: is that good enough README (i know it's not exactly very helpful) to get included into main quicklisp? https://github.com/borodust/claw#claw
16:15:20
phoe
Xach cares if your project has the author/description/license fields filled in the ASD file and if it builds on SBCL x64 Linux without errors
16:15:52
jackdaniel
actually offical requirement is that it builds on "at least on two CL implementations"
16:16:19
borodust
i'm looking at http://blog.quicklisp.org/2015/01/getting-library-into-quicklisp.html
16:16:29
phoe
jackdaniel: then it was changed, it was just SBCL before since that's what Xach can test on.
16:30:01
borodust
Xach: also, is that acceptable approach? https://github.com/borodust/chipmunk-blob
16:30:36
borodust
Xach: this is still asdf library, it's just that it doesn't really contain author/description...
16:43:33
puchacz_
hi again, I wanted to have (:shadowing-import-from #:unicode-hack :#char-equal ... etc) as symbol-macro, but it is not expanded in defpackage form
16:45:08
puchacz_
how would it work? regular macro, but in defpackage form prefix it with #. like #.(expand-unicode-hack) ?
17:02:11
scymtym
ebzzry: http://lispm.de/lisp/benchmarks.html but most of the results are not very recent to say the least