thuna` has quit [Remote host closed the connection]
ym has quit [Ping timeout: 260 seconds]
akoana has joined #commonlisp
euandreh has quit [Remote host closed the connection]
euandreh has joined #commonlisp
nij- has joined #commonlisp
dra_ has quit [Quit: Leaving]
Fare has quit [Remote host closed the connection]
Fare has joined #commonlisp
paul0 has joined #commonlisp
euandreh has quit [Remote host closed the connection]
euandreh has joined #commonlisp
karlosz has quit [Read error: Connection reset by peer]
karlosz has joined #commonlisp
euandreh has quit [Remote host closed the connection]
euandreh has joined #commonlisp
euandreh has quit [Remote host closed the connection]
akoana has quit [Quit: leaving]
junkrunner has quit [Ping timeout: 256 seconds]
junkrunner has joined #commonlisp
junkrunner has quit [Remote host closed the connection]
karlosz has quit [Quit: karlosz]
Fare has quit [Remote host closed the connection]
euandreh has joined #commonlisp
euandreh has quit [Remote host closed the connection]
euandreh has joined #commonlisp
Bike has quit [Quit: leaving]
Bike has joined #commonlisp
Fare has joined #commonlisp
Fare has quit [Ping timeout: 260 seconds]
Fare has joined #commonlisp
pjb has quit [Ping timeout: 252 seconds]
paul0 has quit [Remote host closed the connection]
paul0 has joined #commonlisp
waleee has quit [Ping timeout: 252 seconds]
Catie has quit [Quit: sQuit]
pfd has quit [Ping timeout: 260 seconds]
Bike has quit [Quit: Lost terminal]
aartaka has joined #commonlisp
<beach>
nij-: Why don't you just make the heap bigger?
<nij->
beach there's a limit on my machine
<beach>
Oh? Why is that?
<nij->
Isn't there only 16G of RAM on a usual laptop?
<beach>
nij-: I am not talking about RAM, but about virtual memory. You are about to implement your own virtual memory it seems.
<beach>
I don't think there is any relation between allowed heap size and available RAM.
<beach>
Or does your operating system not use virtual memory?
<nij->
Do you mean I can use disk as memory?
<beach>
Or SSD. That's what virtual memory does. And it seems to me that you want to use external memory anyway, to implement a specific "virtual memory" yourself, which is bound to be worse.
<nij->
Hmm I see. I will see if virtual memory is a solution. Which way would you suggest?
<beach>
?
<hayley>
Make a lot of swap space.
<beach>
Increase the heap.
<beach>
Either way, if you are going to use disk memory, you are talking many orders of magnitude slower than RAM, so you are probably in for some performance problems anyway.
<beach>
If I were you, I would buy a bigger computer, or see whether you an install more RAM.
<beach>
With a week or so worth of salary (which is at least what it is going to take you to implement your virtual memory), you can buy a decent computer.
<hayley>
A specific virtual memory might have better locality of reference, still.
<beach>
Sure, if nij- ever gets it to work properly, within a reasonable budget.
<nij->
You can install.. more RAM?
<hayley>
(Reminds me to get back to my FPGA stuff; my back-of-hand estimations for the space and time needed aren't pretty, and so I am looking into custom hardware.)
<beach>
I suppose that depends on your computer. But RAM is not very expensive these days. At least not compared to the effort you will have to make to get this thing to work.
<hayley>
(Ah, now I know why my laptop wasn't charging, the charger is unplugged.)
<nij->
I got a macbook m2 laptop.
<nij->
Very stupid question: can I install extra ram via usb?
<hayley>
You cannot.
<beach>
nij-: Did you check how much RAM that computer can have? It has got to be in the specifications for it.
<nij->
ok.. and macbook is hard to mess around
<hayley>
Using the internal SSD as swap space should be...bearable. From memory, macOS will let you swap until you run out of disk space.
<nij->
Memory 16GB - is that what you mean?
<hayley>
Yep, that's it.
<nij->
Hmmmm now I don't know what's the best way to approach.
<nij->
My intermediate results organize themselves as a higher dimensional database.
<nij->
Before this conversation, I almost decided to store them into an sql database.
<nij->
(Because slicing is "fast".)
<beach>
In my book, the best approach is what makes me do the least amount of work, within a reasonable cost, of course.
<nij->
beach How would you approach this, if the data are higher dimensional?
<beach>
I would buy more RAM.
<beach>
Or a real computer if necessary.
<nij->
By that I mean, the keys are plist, and the values could be any other Lisp objects.
<pjb>
rainthree: yes. enums can be used for two purposes, and in lisp, we have to choose one.
<pjb>
rainthree: symbolic (keywords), or value (defconstant).
<pjb>
If you want to combine with logical or, you need values, so a defenum macro that generates defconstant.
<_death>
if you just need logior, maybe defbitfield makes sense.. otherwise, you can write your own operator that takes an enum type and expression and computes the right value
<rainthree>
thank you pjb and _death
cosimone has joined #commonlisp
pranavats has joined #commonlisp
pranavats has left #commonlisp [Error from remote client]
morganw has joined #commonlisp
Bung has joined #commonlisp
random-nick has joined #commonlisp
<nij->
,ping
<pjb>
pong
ym has quit [Ping timeout: 264 seconds]
<nij->
Any way to invoke gc automatically when it hits 80% of max heap space?
<sabra>
pjb:Thank you. I had already collected the first two pages of google search, but that did not give me some of the other suggestions you have.
cmack has quit [Ping timeout: 256 seconds]
rainthree3 has joined #commonlisp
azimut has joined #commonlisp
<pjb>
nij-: you may call (room t), this may call the gc. Otherwise, you should use implementation specific API to call the GC; after all, your implementation may have NO gc!
rainthree has quit [Ping timeout: 264 seconds]
<nij->
My impls is sbcl.
<hayley>
ROOM does not call the garbage collector on SBCL.
<nij->
room outputs to string, but doesn't give me float numbers indicating the usage of heap
<hayley>
And SBCL will trigger garbage collection every time you cons up 1/20 of the heap. What should happen if you use more than 80% of the heap?
<hayley>
(SWCL (note second letter) also has a panic mode which collects more aggressively if the heap is more than ~85% used from memory.)
<mfiano>
(trivial-garbage:gc :full t) ?
<nij->
mfiano I'm looking for a way to run that when certain condition is hit.
<nij->
So the question is, how to write certain-condition that indicates heap usage in percentage?
seletz has quit [Ping timeout: 268 seconds]
<nij->
(room) doesn't give me structures. It only output strings to stream.
<hayley>
There isn't a standard way to do it; you should peer into src/code/room.lisp (from memory) to figure out how to do it in SBCL.
<mfiano>
The heap is not anything the language is concerned with. You're going to have to dig into each implementation for that, and it's going to be unreliable at best.
<nij->
Why is it going to be unreliable?
<mfiano>
Because dynamic space usage can fluctuate wildly during different levels of generational clensing.
<hayley>
As Gil Tene once said, what would happen if your heap usage-watching thread decided to not feel like running for five minutes?
<nij->
Why would the thread do that?
<nij->
And also, I think I will just put (when .. (gc)) in the loop.
<hayley>
Hard to say why, but it does suggest that you might be too late to force GC if your thread reacts slowly, for whatever reason.
<hayley>
The original quote, for reference, was "What could happen (and sneak in) if this one instruction takes 10 minutes to execute?"
rainthree has quit [Read error: Connection reset by peer]
varjag has quit [Quit: ERC (IRC client for Emacs 27.1)]
molson has quit [Remote host closed the connection]
molson has joined #commonlisp
<beach>
I have two ASDF systems in two different files. The two share a significant number of component files. So I was thinking of a read-time form like #.*COMPONENTS* in the :components part of each system definition. But this idea requires a different file to be read first, so that in this different file, I can set the value of *COMPONENTS*.
<beach>
The problem with this idea is of course that nothing happens until the ASDF system definition file is read, so nothing can happen before that. So I guess I need ideas for a different solution to this problem. Any ideas? The solution might be simple. I just don't see it.
rainthree has joined #commonlisp
<beach>
I suppose I could try to use REINITIALIZE-INSTANCE on my system definitions once the variable has been set.
rainthree3 has quit [Ping timeout: 260 seconds]
rainthree3 has joined #commonlisp
<beach>
I can't split out a common parent system, because, although there are many components in common, an essential component differs between the two, and must be compiled and loaded before the others.
rainthree has quit [Ping timeout: 260 seconds]
<beach>
Actually, let me explain it more precisely. The main difference between the two systems is that each one starts with a different file "packages-a" and "packages-b", and the list of common components must follow the "packages-x" file.
<beach>
Is the order between the :DEPENDS-ON systems respected by ASDF?
<beach>
If so, I could define a separate system for each of the "packages-x" files, and one common parent system for the common files. Then the two final systems would have two dependencies, with the packages system first.
<beach>
As in (defsystem packages-a :components ((:file "packages-a"))) in one file (defsystem packages-b :components ((:file "packages-b"))) in another file, (defsystem common :components (<lots>)), and finally (defsystem final-a :depends-on (packages-a common)) and (defsystem final-b :depends-on (packages-b common))
Major_Biscuit has quit [Ping timeout: 265 seconds]
Jach has quit [Ping timeout: 256 seconds]
<_death>
maintaining two lists instead of one to avoid such complexity doesn't sound too bad to me
<beach>
I see.
<beach>
I often find that although ASDF is defined to be very flexible, there are simple (and I presume fairly common) things like this that cannot be expressed easily. At least not with my knowledge of ASDF.
<_death>
it may also be possible to have the two systems defined in a single file (and a symlink?)
<beach>
I precisely wanted to avoid a single file.
Inline has quit [Quit: Leaving]
rangahy has joined #commonlisp
Jach has joined #commonlisp
<_death>
others may know better solutions.. I try to keep my asdf-related use to the basics, and so don't delve much into it
<beach>
Yes, me too. But then occasionally I run into problems like this.
<beach>
Thanks for your support, though.
nij- has quit [Ping timeout: 265 seconds]
markb1 has quit [Quit: Leaving]
matt` has joined #commonlisp
epony has quit [Read error: Connection reset by peer]
igemnace has quit [Quit: WeeChat 3.7.1]
igemnace has joined #commonlisp
rangahy has quit [Ping timeout: 264 seconds]
heisenberg2 has joined #commonlisp
rangahy has joined #commonlisp
anticomputer has quit [Remote host closed the connection]
anticomputer has joined #commonlisp
heisenberg2 has left #commonlisp [#commonlisp]
Fare has joined #commonlisp
famicom_guy has quit [Ping timeout: 246 seconds]
famicom_guy has joined #commonlisp
rangahy has quit [Ping timeout: 265 seconds]
Bike has joined #commonlisp
ym has quit [Ping timeout: 265 seconds]
nij- has joined #commonlisp
<pjb>
beach: basically: #.(with-open-file (in (merge-pathnames "common.sexp" *load-truename*)) (read in))
seletz has joined #commonlisp
seletz has quit [Ping timeout: 264 seconds]
euandreh has quit [Quit: euandreh]
euandreh has joined #commonlisp
thuna` has joined #commonlisp
euandreh has quit [Client Quit]
euandreh has joined #commonlisp
Inline has joined #commonlisp
nij- has quit [Ping timeout: 260 seconds]
euandreh has quit [Read error: Connection reset by peer]
euandreh has joined #commonlisp
Fare has quit [Ping timeout: 260 seconds]
<splittist>
The packages-a, packages-b, common, final-a, final-b didn't sound too bad to me.
ym has joined #commonlisp
mariari has quit [Read error: Connection reset by peer]
tyson2 has quit [Remote host closed the connection]
rgherdt_ has joined #commonlisp
pfd has joined #commonlisp
rgherdt has quit [Ping timeout: 260 seconds]
euandreh has quit [Read error: Connection reset by peer]
euandreh has joined #commonlisp
mariari has joined #commonlisp
karlosz has joined #commonlisp
lisp123 has joined #commonlisp
<pjb>
The alternative is to use #+/#- to select packages-a or package-b in the common system.
<pjb>
It wouldn't work well with asdf.
varjag has joined #commonlisp
nij- has joined #commonlisp
nij- has quit [Remote host closed the connection]
nij- has joined #commonlisp
euandreh has quit [Quit: euandreh]
Major_Biscuit has joined #commonlisp
Brucio-61 has quit [Ping timeout: 260 seconds]
scymtym has quit [Ping timeout: 265 seconds]
euandreh has joined #commonlisp
igemnace has quit [Remote host closed the connection]
akoana has joined #commonlisp
Brucio-61 has joined #commonlisp
euandreh has quit [Remote host closed the connection]
rainthree3 has quit [Ping timeout: 265 seconds]
cage has quit [Quit: rcirc on GNU Emacs 27.1]
euandreh has joined #commonlisp
beach` has joined #commonlisp
paul0 has quit [Quit: Leaving]
beach has quit [Ping timeout: 256 seconds]
gilberth has joined #commonlisp
Bung has quit [Remote host closed the connection]
lisp123 has quit [Ping timeout: 260 seconds]
lisp123 has joined #commonlisp
jmdaemon has joined #commonlisp
cosimone` has quit [Remote host closed the connection]
lisp123 has quit [Read error: Connection reset by peer]