freenode/#lisp - IRC Chatlog
Search
12:09:29
edvardo_
Why is the standard way to perform recursion in the lambda calculus the Y combinator instead of Lf.Lx.f f x?
12:10:59
lukego
woo woo I'm starting to write real application code with CLIME now :) visualizing Xilinx BGA pinouts https://twitter.com/lukego/status/1392449057814196228/photo/1
12:16:04
lukego
Here's where I'll need good zoom support though. In each of those little circles I want to be able to write a label like "MGTVCCAUX_RS" and that will take some extra pixels :-) but I'm hoping that since this is vector graphics (SVG) that scaling can just be done locally by Emacs at arbitrary magnification without bothering Lisp for a new version.
12:16:34
lukego
Gonna also need a convenient way to toggle viewing the latest CLIM presentation in a full screen window
12:17:41
lukego
Maybe actually zooming could be done in such a dedicated buffer/window with a specialized keymap
12:18:31
Shinmera
Is there a relatively supported vector graphics format that's not insane like svg?
12:19:54
jackdaniel
I don't understand what's insane in embedding a programming language in the vector graphics format
12:25:35
White_Flame
does Cairo have some file format for graphics, or is it all function call based?
12:37:23
jackdaniel
White_Flame: it may be serialized to uchar* but there is no format specification
12:57:59
etimmons
nij fiddlerwoaroof : Both CLPM and Qlot can do version pinning, including of git repos.
12:58:44
etimmons
I think the best solution to version pinning encouraging not updating is to make a regular CI job that updates and runs tests for you. That's trivial with CLPM, I assume it is with Qlot as well
13:01:26
etimmons
nij: I'm not entirely sure about what you want regarding <hash>-hello-2.10. But presumably if you really want such a scheme to be reproducible, you need some service to distribute those hashes as well, no?
13:12:10
etimmons
Does anyone have tools they use to help ensure license compliance when distributing Lisp executables?
13:12:51
etimmons
I've been accumulating ad-hoc procedures and scripts, but would very much like to use something else if it already exists
13:13:25
jackdaniel
I did something similar in one gig - traversed asdf dependency tree and printed system names and licenses to a csv file
13:14:27
splittist
following lukego's lead (as always), clime used in anger: https://snipboard.io/GYZ7So.jpg
13:15:17
etimmons
Did you deal with reproducing copyright statements? ("Redistributions in binary form must reproduce the above copyright notice [...]")
13:15:50
etimmons
That seems to be the tricky part, especially given the lack of such an explicit copyright statement in many CL projects
13:17:33
jackdaniel
no, I was putting them in predefined license categories (using spdx identifiers) and acted on that. custom licenses were not accepted into dependencies
13:18:28
jackdaniel
(if a particular string was not recognized, then the debugger popped out so I could add it manually and use that from then on)
13:20:57
jackdaniel
by "no" I mean that this was not a purpose of the tool. this act was to ensure, that there are no undesired dependencies (direct or indirect), not to decide what should be redistributed
14:30:43
luis
lukego: sadly Emacs is not DPI-aware on Windows (hopefully the situation is better on Mac/Linux)
14:33:26
jackdaniel
I think that Mac requires so many workarounds to make software written for Linux run (and more with each release) that mentioning them together may be slightly misleading
14:40:11
xristos
Emacs (mitsuharu branch) looks great on macOS, incl hidpi support, double buffering and so on
14:57:43
lukego
I haven't exercised it too hard but I get quite beautiful basic results running Emacs on a 34" 4K display with xrandr dpi option to boost the size way up (uncorrelated with the /actual/ DPI because I am just using it as a magnification knob...)
14:58:30
lukego
I'm now imagining that I could edit on my laptop and have the whole 4K screen automatically showing an insanely zoomed-in copy of the most recently selected CLIME image. that could be something :)
14:59:17
pbaille
I'm wondering if a lisp can have only quasiquote and no regular quote. What would be the downsides ? (sorry if this message appears for the second time, I can't tell if it was posted or not)
15:00:51
_death
`(foo ',bar).. you don't need either of course, (list (quote foo) (list (quote quote) bar))
15:02:51
lukego
pbaille: Guessing that's fine provided that you use (QUOTE x) instead of 'x. But if you plan to use quasiquote instead of quote it will become confusing in certain kinds of code that uses nested quote/quasiquote e.g. `(foo ',(...)) because more quasiquotes means more levels of unquoting
15:03:23
pbaille
yes it is equivalent but why the regular quote is needed , if it is a subset of quasiquote ?
15:04:19
phoe
if you wanted to avoid this, you'd need to have quasiquote as a special operator of sorts, likely along with unquote
15:04:31
pbaille
Yes I understand, but if someone was creating a new dialect of lisp that only has quasiquote it would be acceptable ?
15:05:09
beach
pbaille: You still haven't answered my question, because the answer to yours depends on it.
15:06:54
pbaille
(I'm not a CL person (I came from clojure) so I may not understand all CL sutleties)
15:07:00
phoe
basically, you need some means of preventing standard evaluation rules from kicking in
15:07:45
phoe
where "special operator", in CL-speech, means "an operator that does not obey standard evaluation rules and also is not a macro"
15:08:02
phoe
basically, you need some primitive that will fulfill the role that CL:QUOTE fulfills in standard CL
15:08:23
phoe
if your backquote is such an operator, then bingo, you can implement QUOTE in terms of it
15:09:20
jackdaniel
if you implement a "new dialect of lisp" then you don't need quote because you are designing a new programming language
15:10:15
jackdaniel
but you need a PR team that will argue on reddit that your new dialect of lisp is a lisp :-)
15:11:30
lukego
pbaille: I think that for some kinds of code you would miss having ' e.g. in macro-writing macros or html-writing macros and such. The simplest example I can think of it (let ((arg 'quote-me)) `(f ',arg)) => (F 'QUOTE-ME). here you want to preserve the quote inside the backquote while unquoting its argument. If you used two backquotes it would be... different.
15:12:31
pbaille
I was studying this dialect of lisp (which maybe isn't one): https://convex.world/documentation/tutorial
15:12:44
lukego
pbaille: I'm taking your question in the spirit of, "Is quote just there for historical reasons and obsolete with respect to quasiquote?" and the answer to that in practice is no, you want to use both in real programs.
15:14:21
lukego
pbaille: I vaguely remember wondering the same thing and being surprised at how useful plain ol' quote turns out to be :)
15:31:00
lukego
yeah ll1-discuss is where they _finally_ got the right people in the room to settle a bunch of questions that had been a source of flame wars for decades :)
15:54:19
lukego
splittist: oh btw I'm churning out little CLIME pictures that have 1500 presentations each and nothing anywhere is breaking a sweat. I can do ACCEPT and pick which of the 1517 little circles I'm interested in
16:35:42
flip214
scymtym: re clim.flamegraph branch advice-backend: ; The function CLIM:DRAW-ELLIPSE* is called with odd number of keyword arguments.
16:38:11
flip214
and if I choose threads, start/stop without there being any activity, start is MOST-POSITIVE-FIXNUM, end is MOST-NEGATIVE-FIXNUM, and the duration doesn't make any sense ;/
16:46:54
flip214
I just cloned _your_ clim, to be on the safe side ... but ASDF stops because of DRAW-ELLIPSE
16:50:54
scymtym
i was going to ask about the DRAW-ELLIPSE error. i cloned everything in a fresh environment and i cannot reproduce that. can you describe in more details what happens?
16:52:14
flip214
COMPILE-FILE-ERROR while compiling #<CL-SOURCE-FILE "clim.flamegraph.view" "timeline" "presentations">
16:53:11
flip214
If I just comment out the DRAW-ELLIPSE* via #+(or), I can load the advice-backend branch.
16:55:40
flip214
and trying to use (clim.flamegraph.examples.recording:with-recording () ...) freezes my SBCL so hard that I have to kill -9 it....
17:00:45
scymtym
flip214: i see the DRAW-ELLIPSE* problem. can you disable the sprof source in WITH-RECORDING? i was trying to keep up with the upstream sprof changes but i probably messed something up so that it doesn't work with your SBCL version. and you wanted deterministic profiling anyway, right?
17:02:20
flip214
but WITH-RECORDING is only run _after_ loading, and loading fails because of D-E, so how should that help?
17:07:07
sjl
jackdaniel: etimmons: someone turned my hack into a library https://github.com/vindarel/print-licenses
17:07:08
_death
I think I mentioned this the other day on #sbcl, but with-profiling is currently a bit broken: https://github.com/sbcl/sbcl/blob/master/contrib/sb-sprof/interface.lisp#L90 (no such thing as max-traces)
17:07:10
flip214
scymtym: no problem at all!!! sorry if that sounded sarcastic or so, I tried to be funny (and failed, obviously ;)
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