freenode/#lisp - IRC Chatlog
Search
7:15:52
MichaelRaskin
To be fair, as underlying implementations have no explicit goal to break everything twice a year (unlike Chromium), Common Lisp packages are typically not too prone to breaking changes, unless they are FFI wrappers of something constantly-breaking
7:17:16
MichaelRaskin
beach: https://european-lisp-symposium.org/static/proceedings/2017.pdf#section.0.2
7:17:47
fiddlerwoaroof
The thing I appreciate about CL is that my code stays as broken as I left it, for the most part
7:21:07
MichaelRaskin
beach: notice that speaking of multiple applications, package name conflicts are not the only problem in practice, say, on SBCL
7:21:11
fiddlerwoaroof
I think identifiers being objects rather than strings makes a big difference here
7:22:26
MichaelRaskin
Well, if strings were patchable (like library references in ELF), it would also be not too bad to brute force…
7:23:59
MichaelRaskin
fiddlerwoaroof: re: churn — I guess people who value active maintenance regardless of presence of reported bugs or whatever are succesfully filtered out by the stuck standard (which could benefit from maintenance but there is no clear path to do it…)
7:25:07
fiddlerwoaroof
Interestingly, I think linux control groups enable you to namespace things like ports and other system resources on a thread-by-thread basis
7:25:35
fiddlerwoaroof
I wonder if that could be leveraged to eliminate othe issues with multiple applications in the same lisp image
7:32:13
MichaelRaskin
fiddlerwoaroof: I don't like that we do not have any surviving venue to centrally recognise something the definitive list of minor mistakes in the standard, or something like that
7:32:57
fiddlerwoaroof
MichaelRaskin: yeah, although I think the compatability-library route like bt and usocket is fairly successful
7:33:58
MichaelRaskin
beach: I think I have tried to run StumpWM as just another thread in an image with an interactive REPL; I remember StumpWM doing interesting things with error handling globally
7:35:20
fiddlerwoaroof
beach: one of these days I've been planning to look into your "virtualization" technique you've mentioned a couple times
7:35:49
moon-child
MichaelRaskin: hmm. I think your memory management structure looks a bit like a lattice in that case
7:35:50
Nilby
I run multiple applications in the image, but I try to avoid FFI except at the kernel level, and I try minimize dependencies.
7:36:03
moon-child
because you want both an environment-local and a thread-local cache, to optimize locality and reduce contention
7:36:11
MichaelRaskin
beach: well, depends on what happens when something tries to allocate too much…
7:36:57
lukego
I'd like to see a lisp that tried replacing threads with some proper way to do concurrency/parallelism :)
7:37:00
MichaelRaskin
fiddlerwoaroof: compatibility libraries are somewhat «worse than Javascript» in the sense of recognising just the implementation name and dispatching on that
7:37:44
MichaelRaskin
So, a new implementation needs to be mentioned everywhere even if it mimics one of the existing ones (but different ones for different things)
7:38:24
MichaelRaskin
And, a very low level change an implementation can leave a wrapper without a good response to support both versions (see hu.dwim.walker)
7:39:19
splittist
My vision for the spec would be: 1. an acknowledged starting point - dpANS (+ issues); 2. a community-developed and recognized 'notebook' (for replication) that transformed that source material into 3. a canonical object representation (with spec-specific objects like 'glossary reference', 'return value', 'chapter'); and 4. as many output formats as folks wanted to create from that object representation - a pretty PDF
7:39:19
splittist
for printing; a pretty PDF for reading on devices; my-kewl-html version; your-kewler-js version; etc. etc.
7:40:38
Nilby
I use thread pools with lparallel a lot, and run applications in threads from the repl.
7:41:41
lukego
Maybe I'm channeling Graydon Hoare but for me if there are threads and shared state on the bottom layer then I don't want to even try building something reliable. Just too many things that can go wrong in too many places. This is the main reason I wouldn't even want a Lisp Machine if there was a modern one.
7:42:21
no-defun-allowed
Hm, yes, Graydon Hoare. Famous for avoiding mutable state. And making a language which attempts to make mutable state safe.
7:42:26
MichaelRaskin
fiddlerwoaroof: trivial-features would need to grow a decimal order of magnitude to approach being an answer to anything
7:42:51
lukego
fiddlerwoaroof: okay, sure. but you can put in hard boundaries. Linux kernel-user barrier contains the threads there for example. Likewise BEAM. The application code is not exposed to the underlying shared memory threading at all.
7:43:04
no-defun-allowed
ACTION uploaded an image: (180KiB) < https://matrix.org/_matrix/media/r0/download/matrix.org/RCDSrrvjRDUZxoWjMgWVwjMt/hello-cringe-department.png >
7:43:35
fiddlerwoaroof
Lisps are all about not having that sort of hard boundary between the system-designer and the end developer
7:43:40
lukego
fiddlerwoaroof: Yeah. I am usually that guy too, enthusiastically embracing features that scare off other people, but not on threads. I just say no.
7:43:45
Nilby
I do think if there was a Lispy way to properly optionally isolate threads / resources, that would be good.
7:43:50
nij
With that I can just call any library I like out there, without worring its updateing, no?
7:44:15
lukego
fiddlerwoaroof: Yeah. And I appreciate that about Lisp. But it's also the reason I wouldn't want to do too much important work inside a Lisp image.
7:44:15
fiddlerwoaroof
The thing is, if you have the necessary primitives, I think it can be mostly safe?
7:44:26
no-defun-allowed
But even Haskell and Clojure people don't complain about software transactional memory.
7:45:37
nij
fiddlerwoaroof: Say my program depends on xad..aslkjd-hello-2.10, it it's updated I don't really have to care.
7:45:52
fiddlerwoaroof
That's a big part of the reason why, when I left Python, I didn't settle on Ocaml, Ruby, Node, etc...
7:46:00
no-defun-allowed
"When I said 'falliable shared state', the 'falliable' was in massive sarcasm quotes. I could take a bath in this stuff. Put it on cereal, rub it right into my eyes. Honestly, it's not deadly at all... to me."
7:46:09
lukego
fiddlerwoaroof: I have plenty of scars from production outages on "mostly safe" systems though. even BEAM we once spent a whole week chasing a production problem that turned out to be a C routine calling a non-reentrant libc function and this routine just happening to be exercised by more threads on this particular deployment. that was standard file I/O code in BEAM that had been written years before with the bug dormant
7:46:58
lukego
fiddlerwoaroof: but lparallel seems really awesome to me. I understand that it can coordinate a bunch of forked lisp images each producing partial results. that's that kind of stuff I like.
7:48:31
no-defun-allowed
In my opinion, you can try to do a supervisor tree-type thing with shared state by treating anything which touched that state as faulty and restarting it. But it is just an opinion as I haven't worked on my supervisor tree-type thing implementation for ages.
7:49:30
fiddlerwoaroof
lukego: I think the thing is I've tended to design around immutable state anyways
7:49:40
lukego
Nilby: but everyone is different. I don't write multithreaded applications and I don't write string processing code in C. beyond that I am game for most things :)
7:50:29
lukego
I only like immutability if it's real. Not just a quasi-immutable layer as a leaky abstraction. That's also why I'm not really interested in clojure.
7:51:00
lukego
but sorry I am sure that if we scrolled back 15 years in the channel log I would have said all of these things before ad naseum so I will put a sock in it now :)
7:51:06
no-defun-allowed
Perhaps you can rationalise that by saying "well, a shared mutable object is just a cheap poorly synchronised faux-process, so the same rule applies for when a process you need crashes".
7:51:55
MichaelRaskin
lukego: I also like false branches of if really not being executed and definitely not leaking data, but well…
7:52:40
fiddlerwoaroof
Yeah ever since Spectre, I've just assumed that computers are broken from bottom to top
7:54:16
Nilby
fiddlerwoaroof: They really are, especially when you consider all the crap hiddnen in firmware, and microcode.
7:54:17
engblom
And even without spectre, I consider OS broken. As any bigger OS is written in C/C++, I can not trust them.
7:54:28
MichaelRaskin
Rowhammer is just too much cost cutting with clear remedy that costs not too much
7:55:13
MichaelRaskin
Speculative execution is something people discussed making safe for a decade (always failing to find a convincing solution), Intel saying that nah it's all safe, then Meltdown
7:55:14
engblom
I can not trust anything that is written in a language not taking care of memory management. In any bigger project there are 100% sure bugs because of bad memory management.
7:55:17
no-defun-allowed
I usually don't mess up with shared mutable state (which is mostly immutable except for concurrent hash tables, queues, etc, sure). And, while I am never going to test it, my coping mechanism suggests that I would mess up synchronisation about as much with CSP or actors or whatever else.
7:56:17
moon-child
MichaelRaskin: rowhammer and spectre are both the result of side channels--that is, details which were not correctly modeled
7:56:51
fiddlerwoaroof
My impression, though, is that rowhammer isn't an issue in the design of memory, it's a result of memory manufacturers being cheap
7:57:11
lukego
splittist: I'm learning a lot of CLIM-fu from your examples! I had no idea about stuff like FORMATTING-TABLE as seen in https://snipboard.io/Z84UlJ.jpg. I must be reading the wrong parts of the manuals.
7:57:36
MichaelRaskin
Like, it is well known you need to refresh charges, it is well known if you do not do it enough you get noise…
7:58:09
moon-child
yes, but presumably they had sufficient refreshes to get sufficiently good reliability for non-pathalogical/malicious scenarious
7:58:41
moon-child
in many cases, to exploit rowhammer you needed to explicitly tell the cpu to flush a cache line to memory. Meaning that with normal cpu memory access patterns the flaw would not have been exploitable
7:59:03
moon-child
s/the flaw would not have been exploitable/bitflips would not have generally occurred/
8:01:38
nij
Hello! Is there a de facto way to compute a fingerprint of a CLOS object? I want to get the hash of an asdf system.
8:04:10
beach
nij: The term "CLOS object" is meaningless. Every Common Lisp datum is an object, and every object is an instance of some class, and all classes are part of CLOS.
8:05:33
nij
Hmmm I thought we went through this last time beach. I wasn't pretty convinced that the class named T as an object is an instance of some class in CLOS.
8:06:22
nij
no-defun-allowed I don't want a minor change in the source code to change the hash.. e.g. (1 2 3) and ( 1 2 3)
8:08:37
nij
system class n. a class that may be of type built-in-class in a conforming implementation and hence cannot be inherited by classes defined by conforming programs.
8:09:02
no-defun-allowed
That doesn't leave it open! Seriously, stop trying to sound smart with this.
8:09:36
nij
no-defun-allowed I'm not trying to sound smart. I've spent some hours really wanting to get this right. If it's not right, I'm always happy to learn.
8:10:27
no-defun-allowed
A further hint is that there are no exceptional situations for CLASS-OF. i.e. any object that is described by the standard has a class.
8:10:58
no-defun-allowed
Yes, we don't necessarily know which class #.(find-class 't) is an instance of, but it is an instance of SOME class.
8:12:32
no-defun-allowed
As I understand it, anything you could call CLASS-OF with is necessarily an object. And CLASS-OF does not signal errors. Ergo, every object is an instance of some class.
8:13:48
nij
(beach I'm not de-valuing your comment. I'm just interested in this and want to get it right.. Thanks for your comment!)
8:14:18
jdz
nij: Are you now convinced that the "class named T as an object is an instance of some class"?
8:17:18
no-defun-allowed
If we keep calling CLASS-OF with the class of the last object, we will invariably get to STANDARD-CLASS. Is STANDARD-CLASS "a part of CLOS"?
8:17:37
lukego
splittist: the new CLIME text stuff is all working great on my machine so far! awesome :-) actually it's at the point now where I think I'll write some real application code rather than just throw-away tests
8:18:17
lukego
I don't feel ready to attack the Commands / Command Tables stuff yet. have only glanced at that API. need to read and digest a bit.
8:18:22
nij
no-defun-allowed: hmmmmm makes more sense to me now. It seems that I was in the pitfall of thinking that a class must be well-defined in CLHS in order to be a CLOS class.
8:19:38
jdz
nij: So you've been told to not use the acronym. And you'll notice, that when you drop it, the intended meaning of your sentences does not chaneg.
8:20:32
nij
mfiano: in #clschool beach told me that AMOP might not be fully compatible with CLHS. So I'm afraid no..
8:21:19
nij
phoe: hmm what makes it special is that CLHS leaves system class as an implementation dependent thing? But it's still a class in CLHS.
8:21:54
nij
jdz: I mean I'm just a curious noob that tries to learn. I will keep updating my knowledge if there's a chance.
8:22:26
nij
phoe by that I mean it is still an instance of the class named CLASS, according to CLHS.
8:23:06
nij
jdz: How so? Err.. I'm sorry if I act differently than my word. That would be off-topic, but I'm open to talk about it in another place! I'd be grateful if you could point it out.
8:24:30
jdz
nij: If you were curious and wanted to learn, you'd just go and read AMOP, and then come back and ask more informed questions.
8:25:45
phoe
and since classes are an integral part of CLOS, it also teaches about how to make classes work
8:26:42
phoe
AMOP is a book that contains a description of how to implement CLOS and also has an example simple implementation of CLOS called Closette
8:28:22
nij
jdz: I see. I had the mis-impression that CLOS is the object system described by the common lisp standard.
8:28:33
mfiano
Here you can see all types graphically, which is a superset of all classes: https://sellout.github.io/media/CL-type-hierarchy.png
8:29:00
jdz
nij: Common Lisp standard describes the language Common Lisp, pretty sure you know that.
8:29:18
phoe
the standard describes the interfaces that the programmer can use to interface with CLOS as a part of ANSI CL
8:29:54
phoe
but it doesn't say anything about how the whole machinery works underneath - it actually refers to AMOP for a description of that.
8:30:51
jdz
nij: Are you convinced now that the acronym "CLOS" in "CLOS class" and "CLOS object" in the context of Common Lisp is redundant?
8:31:21
phoe
the standard and AMOP are both talking about the same CLOS, just from different points of view
8:32:49
phoe
nij: http://www.lispworks.com/documentation/HyperSpec/Body/26_glo_m.htm#metaobject_protocol
8:35:06
nij
Indeed, a class given in CLHS doesn't have have to be implementation independent. I now did not know why I insisted on that.
8:35:08
phoe
the standard talks about the part of CLOS visible to an average CL programmer, whereas AMOP talks about the parts that make it work
8:41:49
nij
Thanks for your patience jdz phoe. My blindspot was that I falsely insisted on that a well-defined concept in CLHS must be implementation independent.
8:43:08
phoe
if CLHS defines that something must be true, then every implementation must follow this in order to conform to it
8:43:28
phoe
if CLHS defines that something *may* be true, then implementations are free to do whatever
8:45:15
nij
zacts nope. As a newbie too, I just recently found CLHS amazing. It provides a definition for CL, and it's never going to change.
8:51:48
fiddlerwoaroof
lukego / splittist: it all works right on 27.2/linux/gtk/cairo but I get weird results on 28/macos/cocoa/quartz
9:04:30
beach
lukego: Hey, you didn't have to leave #sicl. We could just quit discussing that particular topic.
9:07:47
Nilby
nij: simple naïve system checksum using ironclad: https://plaster.tymoon.eu/view/2438#2438
11:09:32
lukego
splittist: How do you judge that :HUGE is the appropriate text size for a short string inside a 100x100 square? text sizing is a bit of a mystery to me
11:09:54
lukego
ACTION realizes he has not read the relevant part of the CLIM docs and goes to do that
11:14:02
lukego
Seems that you can also provide a point size but what does that mean in terms of pixels and/or normal CLIM geometry?
11:14:44
lukego
Just now for example I'd like to draw a string centered in a circle and I'd like for ~ 10 characters to fit before spilling out of the sides. is there a good way to specify that?
11:14:44
jackdaniel
currently it means em on 72dpi (so if you have 144 dpi screen, then it will be twice as large as it should be)
11:15:21
lukego
or in splittist's example - what you care about is the size of the lambda relative to the size of the rectangle
11:16:14
jackdaniel
say you have text style size 10. then you call text-size on your string with that text style, that gives you metrics for the string
11:16:54
jackdaniel
otherwise you have things like kerning and different character widths/heights in a way
11:17:36
lukego
I'm not looking for exactness here though, I'd like to e.g. just say how wide an M should be in pixels or something. I'll draw a thousand circles, labelled with a string in the middle of each, and aesthetically I'd like them all to be the same size and "not too many" of them to spill out
11:18:57
jackdaniel
it returns couple of values, so it is possible to determine pixel-perfect bounding box of the particular text, or the size in font metrics (height = ascent+descent, width = left-bearing + text-width + right-bearing)
11:21:14
jackdaniel
since we are sharing lambdas: https://pbs.twimg.com/media/EYaTG60XgAMVNX1?format=jpg&name=4096x4096 :-) (an old picture)
11:21:18
lukego
ok. I was kind of hoping for a (with-font-height (10 :units :pixels) ...) or something but it sounds like such a beast could be written based on these apis
11:23:46
lukego
I'm tempted to use CLIM's nice utility functions for drawing tabular data but since this is CAD data I need to be careful e.g. about one unit == one millimeter and can't really rely on automatic sizing of anything but decorations like labels
11:25:29
jackdaniel
(draw-text* s "foo" 35 35 :align-x :center :align-y :center :transformation *scaling* :transform-glyphs t)
11:28:14
lukego
narrator: He had already made up his mind to hard-code a magic number because it sounded too complicated.
11:32:40
_death
apparently presentation translators are not invoked when typing something for accept? mouse battery died..
11:33:39
nij
I'm about to push a repo to quicklisp. It requires me to test it on at least to implementation. How should I do that? Or if anyone can help? Thanks :)
11:33:57
jackdaniel
_death: I think that you are right, translators are checked for the pointer input
11:34:38
jackdaniel
nij: by "test" it means that you ensure that it runs at least on two implementations
11:35:08
jackdaniel
so run it i.e on sbcl and on ccl, if it works on both then you should be good to go
11:35:38
splittist
nij: you can get a docker image with lots of implementations specifically for this purpose
11:39:01
nij
"Fourth, make sure it builds with ASDF.." What does it mean by "builds"? I've put my repo in local-projects, and loaded with (ql:quickload..) successfully. Does that count?
11:40:13
Xach
some projects require extra steps, like running ./configure or setting environment variables etc, and those are not compatible with quicklisp
11:40:35
nij
Yes, then I think that's fine. There's no ./configure or anything like that. Just a plain .asd file.
11:40:59
nij
I better learn the testing part carefully tomorrow. After that I'll try to raise an issue. :-)
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.