freenode/#lisp - IRC Chatlog
Search
11:56:15
scymtym
ebrasca: i know. if you record a video about your work, i'm sure phoe would schedule it for a future installment of the online meetup
11:57:16
beach
It seems McCLIM is largely unknown to people. Maybe one talk should be about the listener, "debugger", and the integration of Clouseau.
11:59:00
scymtym
ebrasca: maybe i misunderstood what you were getting at. i just wanted to say that if you want to present your work, it shouldn't be a problem
11:59:50
_death
scymtym: here's a backtrace for the lock issue https://plaster.tymoon.eu/view/1980#1980
12:05:48
scymtym
_death: can you get a backtrace form McCLIM port thread when the image is in this state?
12:12:06
jackdaniel
n.b, it would be fantastic if the videos were available outside yt/twitch gardens, i.e as torrents
12:14:05
scymtym
_death: maybe the problem is also related to the inspected value. it seems to be printing the long list when trying to display documentation for the "swap place values" command. a very long list or putting that list in a vector alone doesn't trigger anything for me. is the value you were inspecting easy to reproduce?
12:19:08
scymtym
_death: anything "around" that in terms of composite objects containing the list or similar? i can't get the list alone to cause any problems
12:23:06
scymtym
i suspect two issues: 1) clouseau does not abbreviate the object representation when printing the command help 2) clx can get stuck when writing overlong requests (or something more specific to string-related requests)
12:23:23
jackdaniel
this warning is a known problem with a proposed solution blocked by drei design. uf, that was a long sentence
12:25:30
scymtym
_death: if you surround the (format stream "Drag ~A onto another slot to ...") call in Apps/Clouseau/src/commands.lisp with (let ((*print-length* 30) (*print-circle* t)), does the issue persist?
12:27:42
scymtym
(the proper fix will involve Clouseau's WITH-PRINT-ERROR-HANDLING and WITH-SAFE-AND-TERSE-PRINTING)
12:31:15
scymtym
yeah, there are multiple help messages one of which is chosen depending on the destination object and pressed modifiers. they probably all lack the necessary printer setup
12:34:34
scymtym
thank you for experimenting. i have now reproduced the issue with default *PRINT-LENGTH* etc.
13:24:30
_death
it is possible to attempt to swap the value of a pseudo-place, which signals a no-applicable-method-error
13:26:43
scymtym
that must be a missing (supports PLACE (eql :setf)) method or a failure to use the READ-ONLY-PLACE mixin
13:29:32
scymtym
of course, i meant the architecture has the necessary features and the problem is thus a "configuration error"
13:38:55
_death
it already uses read-only-place.. I think the drag-swap-place-values tester needs a little tweaking.. like a (and (safe-valuep object) (supportsp object 'setf)) in case from-object is nil
13:41:47
scymtym
right, i might have forgotten to finish this or rather adapt it to McCLIM changes regarding the names of the tester arguments
14:06:47
_death
the graph example was also very cool, though the layout algo could be improved for larger graphs https://i.imgur.com/14uWrs0.png
14:08:09
jackdaniel
a few people mentioned on the issue tracker ,that they are working on alternative layouts, but nothing came in as a pull request so far
14:19:51
jackdaniel
_death: if you are interested in extending graph functionality, then the file to look at is Core/clim-core/graph-formatting.lisp
14:20:22
jackdaniel
the interface is not documented (and not exported :), but it is possible to add new types of graph
14:21:44
jackdaniel
(define-graph-type :pretty-dawg pretty-dag-graph-output-record), and then add a few methods
14:54:07
garbochock
Good afternoon, lisp newbie here. I have a question about looking up documentation. I'm aware of (describe 'function). However, currently as I'm going through 'practical common lisp', I came across (eql value :unspecific) - and wanted to figure out what (the keyword?) ":unspecific" means. On (describe 'eql) I get no information. This type of situation have come up before, and I would be interested to know how one would go about getti
14:56:14
beach
So, apparently, it is possible that the variable VALUE can take on that symbol as a value.
14:58:08
garbochock
Ah thank you, I was looking for some magical meaning behind it. Just a symbol, thanks!
15:01:37
garbochock
Indeed, looked up context and it appears pathname-name and pathname-type can return :unspecific.
15:04:06
aeth
garbochock: The only way to "document" keywords afaik would be to define a member or eql type, e.g. (deftype possibly-specific () "Docstring here." `(member :unspecific :specific)) or (deftype unspecific () "Docstring here." `(eql :unspecific)) where obviously the member type is more useful.
15:04:31
aeth
Of course, this is one direction, from type to keyword(s)/symbol(s), and not the other way, so you still couldn't find it from describe.
15:05:46
aeth
It's definitely possible that a keyword (especially a common one) could be part of more than one member type.
15:12:06
aeth
(I doubt either would be useful in that specific example, since I'm guessing it's either a non-keyword or :unspecific)
15:23:26
phoe
every symbol inside that package is automatically exported and it becomes a constant that evaluates to itself
15:24:19
phoe
so you can use them kinda-sorta-like enums in other languages, except you do not need to declare them beforehand
15:24:56
phoe
they inherit the trait of symbols where they have identity, and so :FOO is EQ/EQL only to :FOO and nothing else, which is why that bit of PCL code used an EQL comparison with a keyword
15:46:05
beach
Josh_2: Oh, and scymtym had a great presentation for the online Lisp meeting today, in case you missed it.
15:52:22
sm2n
beach, I was wondering if the lispos paper on your website being replaced with an older version was on purpose?
15:56:14
Josh_2
beach: I see the presentations you made for CL, very impressed by your choice of beamer theme :P
15:59:04
sm2n
in particular, I think graphics would have to be integrated all the way down, because otherwise you can't maintain security
16:02:48
sm2n
current architectures all run the userland part of the graphics stack in a single process generally, so you end up with at least two different levels of privileges - in the graphics stack, and as mediated by the os kernel with user permissions or whatever
16:04:07
sm2n
but even if you consider things that are supposed to fix the issue, like wayland, it's still quite bad - you can't manage permissions for a computation in a single place
16:05:31
beach
I am trying to think how that would impact a single-address-space architecture without processes.
16:06:57
beach
sm2n: So I guess you are right, that it has to be integrated "all the way down", as opposed to copying existing architectures.
16:10:55
beach
There is no concept of ownership of capabilities. Who ever is in possession of one can use it.
16:12:37
sm2n
what's the unit of modularity? i.e at what level of granularity can I assign trust rankings to computations on my machine?
16:14:13
beach
Not sure what that means. The object store plays the role of a traditional file system. It contains ACLs, so when a user wants to obtain an object from the object store, then the ACL is checked and the user is handed a capability.
16:16:13
sm2n
more concrete: say I download a program off the internet, I want to run it in such a way that I can guarantee that it cannot do certain things, like I dunno, uploading all my private cat photos
16:17:21
beach
If you load the program into a first-class global environment that doesn't have your photos in it, then it can't access them.
16:18:27
sm2n
maybe environments could be represented graphically like how qubes has borders around vms
16:19:43
beach
First-class global environments were designed for that kind of isolation. My typical use case is to put the code generator of the compiler in a separate first-class global environment, so that ordinary code can't alter it and thereby making the entire system unsafe.
16:22:57
beach
I think again, you would obtain some kind of object to be used for the operations, and that object would be a capability. So it would be like `open' but for a window/frame/whatever.
16:23:44
sebboh
Hi all. This might be my first time visiting here in 2020? Oof. Anyway, I really like ikiwiki, but I don't speak perl, and so I've never really modified or extended it, and when one of my ikiwiki sites breaks, it stays broken.. Is there some CL-based wiki-like static site generator backed by some RCS? The web-based editing that ikiwiki offers is not really necessary for me, I think.
16:26:01
sm2n
would require very careful choices on what the capabilities are though, but it seems doable
16:29:12
sm2n
but if I run a graphical program, how do I know what capabilities it has? is it just required to specify it beforehand
16:29:55
beach
The graphics program does not have any capabilities. The thread that runs that program obtains capabilities to be used in graphics operations.
16:30:27
sebboh
So, https://gitlab.common-lisp.net/vsedach/cliki2 seems to be the cannonical site. But, it's not clear to me that CLiki2 meets the requirements I named, or if it was just a casual response to a subset of my query. :)
16:31:46
beach
I think it would be best to draw up a scenario. That would make things more concrete.
16:32:32
beach
But I am reaching the end of a very long day, and my (admittedly small) family is going to announce that dinner is served in just a little while, so we may have to continue this discussion some other day.
16:42:38
czrrrr
https://clipwatching.com/cbxbkbaip66m/Some_of_my_metal_detector_finds_in_this_year_from_B.C._300_to_modern_things.mp4.html
16:45:24
scymtym
phoe: i wanted to ask multiple times but forgot (or i already asked and forgot the answer): do you also make the slides available?
17:33:05
Bike
hey jackdaniel, quick question if you're around - does "return @logxor(2,x,ecl_make_fixnum(-1));" mean 2 xor x xor -1, or does the 2 just indicate the number of arguments so that it's x xor -1
17:53:29
Fare
jackdaniel, there was a bug report about ECL and ASDF recently regarding :init-name, did you see it?
18:02:40
jackdaniel
Fare: it should pass init-name argument from the build operatation to the operator in ecl
18:05:00
jackdaniel
afair I've opened issue in asdf issue tracker at some point of time when the init-name argument became more meaningful, but I may be wrong with this memory
18:07:55
Fare
jackdaniel, I'm not developing asdf anymore, but I believe rpgoldman could use your help figuring out what to do. Apparently the recent change to ASDF doesn't work well in all situations, particularly so for bundle operations.
18:12:00
jackdaniel
asdf bundled with ecl is not really a fork, rather a freezed version from before 3.2 jump with few fixes backported. I have not time to play catch with asdf changes, but users are free to use upstream version at their own discretion
18:12:48
jackdaniel
as of helping with figuring the right thing: the right thing is to carry the initarg :init-name from the function invocation in asdf:build-* down to the call to c::build-* function from ecl's compiler
18:14:26
jackdaniel
I find control flow in asdf with sideways, downward and whatever operations too hard to follow to tell how the initarg should be passed, this is certainly a very clever program control, maybe just too clever for me
18:19:47
Fare
What initarg? To c::build-* function? It is wholly orthogonal to ASDF dependencies, and should not care about the operations having any kind of dependencies.
18:24:00
Fare
The dependency protocol was explained I believe in the extended version of my ELS 2014 article.
18:24:31
Fare
Yes, it's elaborate, but mostly you don't need to know about it unless you're writing ASDF extensions. It doesn't affect c::build* initargs.
18:36:16
jackdaniel
if you look at the old version of asdf, the function asdf:make-build had an argument called init-name. it may be still accessed from extra-build-args, which (in upstream) asdf are only passed if the operation is a subtype of image-op. I don't know what magic goes on in between, but later (in upstream) asdf init-args are being getf from build-args and passed to cmp:builder in function create-image, not
18:36:22
jackdaniel
from extra-build-args, so that may be it. in (not upstream) asdf it is indeed part of "normal" build args.
18:37:50
jackdaniel
as of elaborate explanations for various design decisions, I believe that you wrote one, and I probably read it at some point; but that's beside the point, I'm just saying that it is too much spaghetti to me
18:43:28
jackdaniel
Fare: this is a merge request where I have mentioned the issue, at that point of time asdf did not have make-build because it was removed: https://gitlab.common-lisp.net/asdf/asdf/-/merge_requests/76
19:19:01
Fare
For reference, I added your remarks to https://gitlab.common-lisp.net/asdf/asdf/-/issues/38
19:20:23
Fare
I would just object that this code heavy in small incremental class and method definitions is the opposite of spaghetti. It's more like rice. Not that this makes understanding necessarily easier.
19:22:44
aeth
I don't understand this. Outside of SLIME, SBCL doesn't error. Inside of SLIME, SBCL errors with an invalid array index, probably with the underlying stream buffer. CCL is the same. In the terminal, ECL always errors, saying that unread-char has been called twice. ECL has the same index issue inside of SLIME. (with-input-from-string (s "1") (let ((c (read-char s))) (print c) (unread-char c)))
19:23:48
Fare
the longest function in ASDF is compute-action-stamp, that's 92 lines with comments, 59 lines when trivially reformatted without comments.
19:24:13
aeth
It looks like swank+slime overrides string input streams with its own custom stream that doesn't properly unread... It also looks like ECL 16.1.3 independently has its own issue with trying to call UNREAD-CHAR on string input streams
19:26:35
froggey
Fare: demo 5 was released a few weeks ago, I think there was a short video posted earlier today
19:26:51
aeth
froggey: I guess I should've been suspicious when SBCL (but only SBCL, not the other two) told me swank was involved
19:29:00
froggey
the two primary file systems are the local fs, which is implemented entirely in-image and relys on saving the world to actually persist data, and the other is the remote fs, a simple network file system
19:29:25
froggey
there are also implementations of fat & ext2/3/4, but I didn't write them so I don't know much about the state of them
19:45:48
froggey
hardware interrupts can interrupt the GC, as the handlers are written to be safe for that. no allocating or accessing memory that the GC might move
19:46:32
froggey
a bit of a problem for audio, as the non-interrupt code that fills output buffers gets paused when GCs occur, but other devices deal with it fine
19:47:30
froggey
also disk drivers are written so they operate "under" the GC. they do all their allocation up-front at device initialization time and don't touch copyable memory
19:52:19
elias_
can anyone drop an example of a good initial project to help me learn and exercise some important concepts in lisp?
19:58:33
elias_
so is that to say, study that code and aim to recreate something similar? i like the idea of trying to implement regex
20:05:31
Xach
elias_: not necessarily recreate, but it covers a lot of techniques and tools in the cl toolbox that are applicable to other things
20:21:15
pve
elias_: Use drakma and cl-ppcre to fetch news headlines from a few news sites and display them in a terminal. You can also use cl-ppcre to filter the headlines based on interesting keywords, or come up with a more creative filtering method.
20:45:40
phoe
scymtym: I only upload the videos, BUT if you make them available in some location then I can add the link to video description.
20:51:42
scymtym
phoe: thanks. i will think about it. my main concern is such a link going dead after some time
20:54:56
scymtym
now that i think about it, something in https://common-lisp.net/project/mcclim/ seems plausible
21:12:57
Fare
jackdaniel, still here? Can you comment on rpgoldman's question in https://gitlab.common-lisp.net/asdf/asdf/-/issues/38 ?
23:19:21
Josh_2
I'm trying to use compute-slots to add an extra slot using the MOP but I keep getting the same error https://plaster.tymoon.eu/view/1983#1983 (this is my first time messing with the MOP directly)
23:20:43
Josh_2
the function compiles but when I create an instance of 'locked-object i get the error "no applicable method for the generic function 'slot-definition-allocation' when called with 'EFFECTIVE-SLOT-DEFINITION METALOCK::SLOT-LOCKS'"