libera/commonlisp - IRC Chatlog
Search
11:14:20
jackdaniel
result is usually optional, so adding one more variable at the end doesn't hurt I think
11:19:30
jackdaniel
http://www.lispworks.com/documentation/HyperSpec/Body/03_dd.htm also speaks of parameters (not parameter variables)
13:01:03
_death
ordinary job posting sites would be nice as well.. so that if I search "lisp" I get at least one posting :)
13:04:35
jackdaniel
ACTION expects of some brave lisp hacker developing 90%-feature-complete job posting and browsing engine after reading this exchange
13:34:34
etimmons
Shinmera: Very nice :). If you're going where I think you're going with the list of module names passed to define-project I'm very excited.
13:34:44
etimmons
Shinmera: ASDF's single :class argument has annoyed me a couple times in the past.
13:35:55
Shinmera
parsing is still done by the first listed module, but yes you can list several. one extra module I already have is to allow specifying versions based on git repo state.
13:40:30
etimmons
Yeah, I saw a git module in the repo! It currently looks like any module but the first does nothing (other than being loaded), but I figured that's because it's still being developed
13:42:13
madnificent
Is there any good infrastructure for managing processes? Thinking of moving some heavy-hit components from Elixir to Common Lisp due to processing constraints on the former.
13:42:20
etimmons
Yeah, I imagine that's tricky. But I was referring to the full list of modules not being attached to the project instance. Or are they and I'm missing something?
13:44:21
etimmons
Shinmera: In https://github.com/Shinmera/forge/blob/master/project.lisp#L143, only the first module is used; the rest are load-module'd and then discarded.
13:44:42
etimmons
I was expecting all modules to either influence the project class or be shoved into a slot for the project
13:45:08
Shinmera
Once the project has been parsed I'm not sure what the purpose of the modules would be
13:49:31
Shinmera
etimmons: right. auxiliar modules so far were intended to provide extensions somewhere in the system that don't directly affect project parse behaviour.
13:50:30
mfiano
Shinmera, etimmons: Is there a reason you both are independently developing similar tools? Do the ideas not overlap in many ways or something? I just thought it might be better to create a suite of tools like the SICL project that can be used by anyone wishing to create a build tool.
13:50:46
etimmons
Shinmera: I was assuming those methods would be specialized on the project class and you would do some sort of dynamic mixins stuff to have all the modules influence the project class
13:51:19
Shinmera
madnificent: unfortunately to my knowledge there's no current implementation with support for lightweight threads, and doing it manually is a pain.
13:51:25
madnificent
jackdaniel: Looking for higher abstractions like asynchronous messenger abstractions.
13:52:53
Shinmera
mfiano: etimmons is working on a ql replacement. I'm working on an ASDF replacement. We're already talking about integrating the two.
13:53:08
madnificent
Shinmera: Perhaps I got dragged away with it being closer than jackdaniel's idea. We can work with worker pools. We currently process ~5k queries per second. The many threads in the BEAM VM have their cost for our type of workloads in terms of immutable data structures anyway. We probably don't need over 20k open connections anyhow so I think we should be able to work with dedicated threads if need be.
13:54:01
madnificent
We certainly need multithreading for the processing load. We currently scale 24cores with 48threads very linearly and I don't see why we wouldn't be able to replicate that in Lisp when I look at the workload.
13:54:04
Shinmera
madnificent: Good luck! I rewrote my chat server thing in elixir since I couldn't get it stable in Lisp, but that's saying more about me than anything I imagine :)
13:54:29
mfiano
I've been using CLPM for a couple months and have been happy. Having an ASDF alternative too would be even more welcome :)
13:57:31
etimmons
mfiano: Yeah, I'm pretty excited about Forge. Both it and CLPM take the approach of doing the heavy lifting outside of the development image.
13:59:11
Shinmera
One of Forge's main goals is to allow building in the current image with no trace left behind of the build operation itself.
14:00:06
jackdaniel
etimmons: while mere a prototype -- https://gitlab.common-lisp.net/dkochmanski/esdf (it even has asdf compat layer, I've made ql work with it)
14:00:47
mfiano
A software eternity ago. I must jump to Python in time for the 4.x compatibility disaster
14:01:04
jackdaniel
Shinmera: I had a sour exchange on #lisp a few minutes ago about that ,) either way, time for me - laters
14:01:54
jackdaniel
etimmons: dont' take it too seriously, it didn't pass to a "usable" stage and my projects are already time-starved as they are
14:04:25
etimmons
Xach: Total change of subject, but can you make sure Planet Lisp is pulling its feed from https://www.timmons.dev/tag/common-lisp-rss.xml ? Some day I'll probably blog about something other than Common Lisp :)
14:09:19
madnificent
Shinmera: problem with Elixir is that you can't mutate objects. We parse and transform SPARQL queries and the AST becomes fairly large. Transforming that means transforming many tiny things. I am a bit in doubt as the BEAM knows it can throw away a thread, where the Lisp runtime has to execute GC across threads once everything has been processed.
14:09:51
madnificent
Shinmera: Do you know of good queues and/or mailboxes libraries? If anything has a good name, I'd love to know about it.
14:10:10
Shinmera
Haven't used anything myself so I can't say, I just remember hearing of Erlang-inspired libraries.
14:16:22
etimmons
Xach: Thanks! Also, not sure if you saw, but I did open a PR for a compressing stream in salza2.
14:17:24
etimmons
Xach: I also opened a PR on QL controller to try and improve dependency extraction for package-inferred-systems
14:37:57
mfiano
madnificent: I remember. Though sexml is the library of yours I used the most back then :)
15:00:22
Josh_2
Okay MOP question. I have a library that heavily relies on a metaclass I have made, however when I first load the library I have to make an instance of a class that uses my metaclass 3 times before the slots are initialize properly
15:03:05
Josh_2
Man I get some weird behaviour with MOP until I go and recompile that specific class
15:16:45
Josh_2
Okay now I'm really confused. When I make-instance my my repl and check the slot-values in its superclass they all look how I expect them
15:17:04
Josh_2
however when I make an instance of the same class within a function call none of the slot-values exist
15:24:03
Josh_2
well my execution function is getting double called, I'll have to figure that one out
15:25:20
madnificent
Any benchmark comparisons including Common Lisp (SBCL preferably) containing many threads and if possible containing GC intensive workloads?
16:04:02
madnificent
Related to netfarm perhaps? Anything is welcome hayley and I should see DMs arrive too.
16:07:46
Shinmera
I don't know the broader context. I wrote the initial lockless hash table implementation, and she's been hammering away at it for a while.
16:34:09
madnificent
Shinmera: was that incompatible with later SBCL releases? I checked something about it but dismissed it for some reason.
16:51:23
Gnuxie
she will explain it when she wakes up, but as i understand it Threadmill only works with older versions of SBCL, and she doesn't recommend her portable hash table library over luckless yet.
16:52:52
Shinmera
If anyone wants to pick up the slack and document the library + add some more small useful primitives like a queue and a stack, that would be great
16:58:16
Gnuxie
Also madnificent, if you need a portable mailbox and queue library "safe-queue" by deadtrickster is good, but it isn't lockless or anything fancy iirc.
19:14:02
Josh_2
I am trying to (setf (slot-value <instance with my own superclass> 'txn) 0) and I keep getting the condition that slot is missing. I have checked both the direct and effective slots
19:14:14
Josh_2
its not missing. Do I have to provide a method for something like slot-value-using-class?
21:37:31
semz
The only way I can think of is to unintern it and make it inaccessible (latter probably not a big concern for keywords), but that probably causes all kinds of problems unless you know a lot about how the keyword came to be and will be used.
21:46:30
Josh_2
Seems all the symbols I would be interested in garbage collecting start with a $ sign
22:24:32
Josh_2
Just gonna keep using jojo, seems that if I *really* want to clean up the keywords package I can just unintern symbols starting with & that are exactly 44 long
22:45:20
White_Flame
44 chars * 8 bytes per char worst case * 14000 keywords = "only" 4.7MB of raw string text
22:46:30
hayley
madnificent: Well, some of the decentralise2 benchmarks are CPU and GC heavy (particuarly network simulations).
22:49:56
hayley
What's funny is that hash table benchmarks tend to try really hard to _not_ allocate. But my code is evil and hammers on some mailboxes and even deletes from hash tables (gasp!), which tends to give the GC a bad time.
22:50:53
hayley
I believe safe-queue is lockless on SBCL, but otherwise it falls back to lparallel which might or might not lock.
22:52:07
hayley
And I don't recommend Threadmill because it only seems to work well on UMA machines with < 40 threads or so. Else the SIMD lookup becomes a problem.
22:53:00
hayley
In testing, it also very rarely drops messages (1 in 10 million-ish) so I've apparently done something wrong.
23:00:21
hayley
(Oh, and Threadmill works on newer versions of SBCL, I just had problems w.r.t fixing a bug in how AVX instructions are assembled. But I found SSE2 to be no slower, and heisig fixed that recently, so it should be unnecessary.)