freenode/#lisp - IRC Chatlog
Search
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'"
0:49:35
mrcom
minion: message for Josh_2: EFFECTIVE-SLOT-DEFINITION is a virtual class and should not be directly instantiated. See https://stackoverflow.com/questions/21986977/additional-properties-to-slot-definition
0:49:39
minion
i don't agree - message for josh_2 effective slot definition isn't a virtual class and should not be directly instantiated see httpsstackoverflow comquestions21986977additional properties to slot definition
0:55:03
mrcom
minion: message for Josh_2 EFFECTIVE-SLOT-DEFINITION is a virtual class and should not be directly instantiated. See https://stackoverflow.com/questions/21986977/additional-properties-to-slot-definition
0:55:03
minion
i don't agree - message for josh_2 effective slot definition isn't a virtual class and should not be directly instantiated see httpsstackoverflow comquestions21986977additional properties to slot definition
0:58:43
mrcom
minion: memo for Josh_2: EFFECTIVE-SLOT-DEFINITION is a virtual class and should not be directly instantiated. See https://stackoverflow.com/questions/21986977/additional-properties-to-slot-definition
1:16:46
mrcom
minion: memo for Josh_2: Other notes: looks like you're trying to set up a circular dependency with VALIDATE-SUPERCLASS. "`',slot-names-lock-alist" isn't... what you want. The INITFUNCTION is the proper way to do it, completely overriding :INITFORM and :INITARG.
1:27:44
mrcom
minion: memo for Josh_2: And I suspect your end goal is automatically thread-safe slots. This is a common thought, but kind of a dead-end. The primary issue with thread-safety isn't reading or updating a single slot. It's the higher-level cross-slot operations (e.g. changing STREET-ADDRESS and CITY), cross-object (updating object's address and the ADDRESS-HASH-TABLE that points to it), and global (making sure there's only one obje
1:30:45
mrcom
minion: memo for Josh_2: You'll probably find you need a single mutex per object, and one or more global mutexes. Most importantly, you'll need to define atomic functions/generic functions, and these will be completely aware of the mutexes.
1:31:47
mrcom
minion: memo for Josh_2: In other words, you aren't going to need a broad superclass which invisibly adds lock slots.