freenode/#lisp - IRC Chatlog
Search
17:08:10
jackdaniel
oh, I'm even credited there, cool! (I'm going to make a coffee and contemplate my fame ,)
17:09:44
scymtym
_death: you would have to talk to dougk. he is basically the code owner of sb-sprof now
17:11:20
scymtym
flip214: that's expected. the whole thing is prototype quality at best. but a few others and i have used it to diagnose actual issues
17:13:16
flip214
hmmm, no, that gives me READ error during LOAD: Package CLIM.FLAMEGRAPH.BACKEND.SB-SPROF does not exist.
17:13:34
scymtym
you can keep that if the systems loads. just remove the sprof source in CALL-WITH-RECORDING
17:17:47
scymtym
you could also try disabling the memory source. that one records gc events and memory statistics
18:05:18
scymtym
flip214: in a container, i built SBCL 2.1.3 from source, cloned all libraries from github and tried the example. i can't reproduce the freeze, sorry
18:18:08
fiddlerwoaroof
etimmons: the goal of CLPM to be "A package manager for Common Lisp that strives to cleanly separate the package manager process itself from the client image that uses it." is the opposite of what I want
18:18:27
fiddlerwoaroof
I want all the metadata about the history of an image to be within the image at all times
18:22:03
etimmons
Interesting. What metadata do you want in the image? The main focus of multiple processes in CLPM is to offload things like HTTP(S), git, untaring, etc.
18:25:15
etimmons
The metadata that stays in the image is whatever ASDF needs to find the files on the filesystem. But more could possibly be added.
18:36:36
fiddlerwoaroof
For one thing, I'd like the information about the origin of a system to be in the repository: git url, commit hash, etc.
18:38:21
fiddlerwoaroof
But, also, I like how quicklisp and ASDF pull things that are usually external tools into the image
18:38:49
fiddlerwoaroof
Things that go the opposite direction generally seem to be solving problems I don't have
19:08:28
etimmons
It'd be neat to have an interface defined for that, separate from any particular package manager. If that existed, I'd happily make CLPM expose info via that interface.
21:13:50
jmercouris
I think it would help if you had a little cookbook so people could get started with CLPM
21:14:00
jmercouris
I tried following your presentation, but the format was incredibly difficult to follow for me
21:53:08
etimmons
jmercouris: I am! And yeah, I really need to make some more accessible resources. I tend to be long winded on things like this. I think the last half of my ELS paper is a decent starting point for "I just want to use CLPM; what do I need to do?"
22:10:32
xristos
etimmons: some suggestions for clpm, i'd do away with the installation part and have a release be a self-contained single binary I can just drop in my PATH
22:11:00
xristos
it can spit out the client library code (if needed) in the same way it spits out configurations
22:12:43
xristos
a decentralized mode would also be nice, imo centralized package indices are a cardinal sin
22:14:03
xristos
but also having the dependencies be specified as URLs by the package author in the package itself
22:15:53
etimmons
The 0.4.0 release will be coming Real Soon Now (basically as soon as I get my hands on an M1 - probably ~2 weeks). I can pretty easily publish tarballs and bare executables when I post it
22:18:09
etimmons
I'm interested in what you mean by a decentralized mode. The problem with URLs specified by the package author is maybe they're using an old fork of a dep, or I want to use something slightly different.
22:21:57
xristos
if i publish a library, i specify the packages it uses, their location, their versions and the cryptographic checksums
22:22:01
etimmons
Hmmm, I've used go only a tiny bit and never really looked at its package management. I'll take a look and try to understand it
22:22:34
xristos
so the entire dependency tree is specified by the package author and not looked up at runtime
22:23:08
etimmons
But how does it reconcile another library using the same deps with different versions?
22:23:37
etimmons
Is go one of those languages where multiple versions of the same package can coexist at runtime?
22:25:22
etimmons
I'm not sure how to map that to CL. I know there was some discussion earlier about an ELS paper on strategic renaming of packages, but that doesn't seem ready for primetime
22:26:59
etimmons
I could forsee clpm easily supporting a mode where the person running clpm could provide sort of a local index that overrode the centralized remote indices, though
22:27:54
xristos
but for a library author to be able to specify his dependencies (with exact versions and cryptographic sums) as part of the package itself
22:28:44
xristos
and transparent software provenance without middlemen (thus being able to make guarantees)
22:30:54
etimmons
OK, so are you thinking of using this mostly when building applications? And not when using it as a library? Otherwise we'd have to deal with the inevitable case of systems A and B using C, but publishing different metadata about C
22:31:00
MichaelRaskin
I would believe in long chains of trust (because that's what you describe) _less_ than a single middleman with enough investment
22:32:18
xristos
but that's the least of it, the entire model is broken in ways that package management in Go (for example) doesn't suffer from
22:32:50
xristos
i'm not advocating against centralized package indices, but an alternative would be nice and we don't have that for CL
22:34:18
etimmons
Thanks for the pointer, I was unaware go was decentralized. I'll take a look at it
22:35:01
etimmons
My personal end goal has been a package index where CL developers could publish their projects at their own pace
22:35:51
MichaelRaskin
Well, you can use Ultralisp if you want faster (and less compatibility-tested) updates
22:37:47
xristos
MichaelRaskin: so no buy-in required, folks can keep doing what they're already doing, but now I have the option when writing a new library to specify dependencies in this manner
22:39:42
etimmons
Ultralisp is a step in the right direction, but it still suffers from some Quicklisp flaws (like lack of provenance metadata, system version numbers, and historical releases are difficult to discover)
22:39:55
xristos
as a .lisp file that's part of the library itself (equiv to go.mod and go.sum files)
22:40:13
xristos
and then folks that want to use it would need a package manager that supports this scheme
22:40:36
xristos
which is fine, especially if that package manager came as a single standalone executable
22:45:48
MichaelRaskin
Whatever library specifies dependencies in a unique way and not just as usual ASDF dependencies
22:47:33
etimmons
I assumed xristos meant the proposed metadata file would be in addition to ASDF dependencies
22:48:13
MichaelRaskin
> and then folks that want to use it would need a package manager that supports this scheme
22:51:02
MichaelRaskin
Sure, it would be nice if Quicklisp included the exact upstrean reference. In Nixpkgs I would probably switch to generating upstream fetches for Common Lisp packages.
22:52:51
etimmons
There was some initial talk of that at https://github.com/quicklisp/quicklisp-controller/issues/18
22:53:52
etimmons
anyways, dinner time! I'll add looking at go package management to my TODO list, to at least better understand what's out there
23:23:50
pjb
etimmons: (com.informatimago.tools.quicklisp:quick-where-from "alexandria") #| prints: (:system "alexandria" :distribution "quicklisp" :directory #P"/Users/pjb/quicklisp/dists/quicklisp/software/alexandria-20210411-git/" :where-from ("git" "https://gitlab.common-lisp.net/alexandria/alexandria.git")) --> nil |#
23:23:50
pjb
etimmons: (com.informatimago.tools.quicklisp:project-where-from "alexandria") #| --> ("git" "https://gitlab.common-lisp.net/alexandria/alexandria.git") |#
23:24:14
pjb
etimmons: on the other hand, it's implemented inly for "quicklisp" distribution. Patches welcome.
23:25:09
pjb
Note some surprises: (com.informatimago.tools.quicklisp:quick-where-from "cl-ppcre") #| prints: (:system "cl-ppcre" :distribution "quicklisp" :directory #P"/Users/pjb/quicklisp/dists/quicklisp/software/cl-ppcre-20190521-git/" :where-from ("ediware-http" "cl-ppcre")) --> nil |# is stored in a -git directory but it's ediware-http, not "git"…
23:43:22
stylewarning
Anybody have a SLIME hack top make (MAKE-INSTANCE foo <rest>) indent <rest> as body forms?
23:44:42
no-defun-allowed
I thought heisig had a list of modifications, with that being one, but I lost it.
0:00:42
stylewarning
yeah i understand it; i was just trying to exaggerate how easy and simple emacs is by improving it with One Weird Trick
1:18:13
White_Flame
here's a problem: define some *FEATURES* flags, load some systems, but some systems pull cached .fasls that were built with other *FEATURES* enabled
1:19:10
White_Flame
something that comes to mind is that .fasl files should record which #+/#- tests were performed
1:21:27
White_Flame
but if *features* is the wrong place for those, then the problem still exists in whatever arbitrary pre-load config is used
1:24:41
fiddlerwoaroof
lukego: I'm not sure if this goes best here, in #slime or in #clim :) but I now want a little widget area in my repl I can draw to with CLIM
1:25:52
fiddlerwoaroof
Like a toolbar or something, so that when do something like (+ (accept 'integer) (accept 'integer)), there's presentations "pinned" somewhere in my repl for quick access
1:30:48
fiddlerwoaroof
Also, interesting feedback about the macos situation: my work mac (x86,emacs 28) displays things correctly; my personal mac (arm64, emacs 27) doesn't
1:48:19
pjb
White_Flame: it's difficult to collect the tests, since #+/#- tests are performed at read-time (of compilation-time). Furthermore, some other tests of *features* could be performed explicitely in eg. eval-when at compilation-time or load-time.
1:49:07
pjb
White_Flame: in my build processes, notably for production, clearing the cache and compiling everything from scratch is usual.
1:49:49
White_Flame
right, I mean that the #+/#- readers need to notify their context of the test, and teh fasl file format might store the subset of tested symbols that are present/missing
1:50:14
White_Flame
it wouldn't work to store the entire features list, as only the tested ones matter for the building of that file
1:50:31
White_Flame
but yes, that detection can be foiled, but at least the standard boolean feature usage would be tracked
1:53:02
pjb
I don't see how it could be implemented conveniently in a conforming way (the dispatching reader macros could be substituted, but it would be more difficult for explicit tests that can use a number of different operators). The implementation could detect that *features* is passed as argument to certain functions, and record the test results.
1:54:07
White_Flame
yeah, my idea would simply be that the default reader macro implementations implicity perform the recording
1:54:23
White_Flame
if the info isn't known to the fasl, then it won't make any decision on that particular feature flag
1:54:32
pjb
White_Flame: well, I'm thinking about explicit tests too because we have a featurep CDR…
2:16:37
stylewarning
CDRs should be rejuvenated and a committee of lisp implementer representatives a should be formed imho
2:48:33
lukego
fiddlerwoaroof: pinned presentations are exactly what I'm about to hack! :-) I was thinking about this while walking the dog too. I'm thinking or now a `slime-clime-remember' command that just appends an image to some buffer, e.g. *clim remembered*, which you can then select from alongside the REPL. This should be easy and work well because in Emacs it already works to copy-paste the images anywhere you like
2:58:29
pjb
lottaquestions: #clschool also have a look at http://cliki.net/IRC http://cliki.net/Getting+Started http://cliki.net/Online+Tutorial
3:02:59
ahungry
I've always hated that that domain is very unfortunately named - what you would think it would be is not CL related at all - was the thought process, "Hey, this domain is taken, so drop the w and let many confused users hit the wrong site?"
3:04:42
lukego
I'm not really feeling an urgent need for CLIM "Commands" yet. Seems like if I have a REPL somewhere then I can get a lot of mileage out of just calling (ACCEPT 'FOO) and then manipulating it using code like (describe *) etc.
3:04:50
ahungry
thats not a bad idea, although all the literature has cliki.net propagated out there, and if someone goes to type it from memory, its very easy to incorrectly remember
3:06:37
ahungry
Hm, I'm not gonna try to visit it, but it looks like the missing 'w' domain isn't registered on whois anymore
4:16:24
fiddlerwoaroof
White_Flame: I put a little thing together with eclector that re-implemented those sharp sign macros
4:22:48
fiddlerwoaroof
I think it'd be nice to have a standardized IR for READ that's equivalent to the textual syntax that is then macro-expanded to the conforming behavior
4:25:15
fiddlerwoaroof
Although, this is probably impossible without forcing everyone to rewrite their reader macros :)
4:27:31
White_Flame
(btw, after entirely too long did I (presumably) parse your handel correctly, assuming the "wo" stands for "without" :) )
4:27:33
fiddlerwoaroof
Isn't the issue figuring out how much of the file a macro function will consume?
4:28:33
White_Flame
a reader macro is just given the stream; are there other things involved that need to predict the length that it will consume?
4:30:15
fiddlerwoaroof
White_Flame: no, but I think that makes it impossible to go from Text -> IR -> the conforming return value for read, right?
4:30:43
fiddlerwoaroof
Unless you do something like record what text was read and then pass it as a string to an intermediate reader-macro function
4:31:02
White_Flame
oh, you mean if #+ etc generated source that performed the test in the expanded code
4:32:23
fiddlerwoaroof
You can do this by re-implementing all the reader macros to be aware of the IR step
4:33:28
fiddlerwoaroof
Yeah, you could cheat by tracking the string position and passing the string contents as a string
4:33:38
fiddlerwoaroof
Or do something like this: https://github.com/fiddlerwoaroof/lisp-sandbox/blob/master/eclector-test.lisp
5:00:24
lukego
Is there a kind of wrapper stream that adds indentation? I'm writing some recursive DESCRIBE-OBJECT methods and I'd like to have the inner ones indented more but I don't think there's a standard printer variable to look at for this
5:08:00
lukego
Every time I try to do this via the pretty printer I end up failing :-| and doesn't it require every method at every level to use pretty printer directives? Or does it "just work" with normal code doing format with ~& and ~% ?