jackdaniel changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | offtopic --> #lispcafe
rgherdt has quit [Ping timeout: 264 seconds]
Jeanne-Kamikaze has quit [Quit: Leaving]
makomo has joined #lisp
emacsomancer has quit [Ping timeout: 268 seconds]
Nilby has joined #lisp
emacsomancer has joined #lisp
benjamindc has quit [Remote host closed the connection]
luckless has joined #lisp
gaqwas has quit [Ping timeout: 272 seconds]
<charles`> When I call "error" it only give me the abort option. if I want options like "continue" or "retry", do I have to make my own condition?
<frodef> charles`: you have to make your own restarts, rather.
<frodef> for example: (with-simple-restart (continue "Never mind.") (error "I don't know what to do!"))
kam1 has joined #lisp
<Nilby> You can also use cerror if you only want continue.
<frodef> right, cerror is basically the same as above.
zaquest has quit [Quit: Leaving]
<charles`> Thank you a lot
zaquest has joined #lisp
<frodef> retry: (loop until (with-simple-restart (retry "Have another go") .. (error "huh?") ... (compute-non-nil-value)))
mindCrime has joined #lisp
jjong has joined #lisp
galex-713 has quit [Ping timeout: 272 seconds]
<charles`> and "restart-case" is the right way to define custom restarts
<frodef> w-s-restart often does the trick, but sometimes restart-case or even restart-bind is the way to go.
<charles`> and what if I want to use my custom ones with the default continue, should I nest them?
matryoshka has quit [Quit: ZNC 1.8.2 - https://znc.in]
matryoshka has joined #lisp
<Nilby> If you call a restart ‘continue’ it's the same as the default.
matryoshka` has joined #lisp
matryoshka has quit [Remote host closed the connection]
aorst has quit [Quit: WeeChat 3.0]
cantstanya has quit [Remote host closed the connection]
random-nick has quit [Ping timeout: 264 seconds]
<frodef> The function CONTINUE will go to the innermost restart called continue. But any decent interactive debugger will let you chose which exact restart (inner or outer) you want.
cantstanya has joined #lisp
<frodef> programmatically, see COMPUTE-RESTARTS. You can invoke any one of them, regardless of what they are named.
galex-713 has joined #lisp
vhost- has quit [Ping timeout: 256 seconds]
matryoshka` has quit [Quit: ZNC 1.8.2 - https://znc.in]
matryoshka has joined #lisp
<charles`> so a restart is not much more than a dynamically bound function?
<frodef> exactly, it's not very magic at all.
<charles`> And what is the proper way to define them: RESTART-CASE or RESTART-BIND?
<frodef> The magic is just in the framework, or the ideas behind it. Having proper restarts available can make or a beautiful system.
<Nilby> but dynamically bound functions are a bit magic, especially in compiled code.
karlosz has joined #lisp
<frodef> ... make for ...
<frodef> Usually RESTART-CASE, but RESTART-BIND if your restart would benefit from the dynamic context of the error.
kam1 has quit [Ping timeout: 264 seconds]
matryoshka has quit [Client Quit]
matryoshka has joined #lisp
<frodef> ...much like HANDLER-BIND vs. HANDLER-CASE.
<frodef> These are really some of the most profoundly and uniquely beautiful corners of CL, IHMO.
matryoshka has quit [Client Quit]
matryoshka has joined #lisp
matryoshka has quit [Client Quit]
matryoshka has joined #lisp
matryoshka has quit [Read error: Connection reset by peer]
matryoshka has joined #lisp
vhost- has joined #lisp
gaqwas has joined #lisp
gaqwas has quit [Changing host]
gaqwas has joined #lisp
matryoshka` has joined #lisp
matryoshka has quit [Client Quit]
matryoshka` has quit [Read error: Connection reset by peer]
matryoshka has joined #lisp
matryoshka has quit [Client Quit]
judson_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
matryoshka has joined #lisp
matryoshka has quit [Read error: Connection reset by peer]
matryoshka has joined #lisp
jjong has quit [Ping timeout: 256 seconds]
rumbler31 has joined #lisp
Jeanne-Kamikaze has joined #lisp
varjag has quit [Ping timeout: 256 seconds]
GuerrillaMonkey has joined #lisp
FreeBirdLjj has joined #lisp
Jeanne-Kamikaze has quit [Ping timeout: 240 seconds]
junkicide has joined #lisp
FreeBirdLjj has quit [Ping timeout: 256 seconds]
Jeanne-Kamikaze has joined #lisp
GuerrillaMonkey has quit [Ping timeout: 256 seconds]
gaqwas has quit [Ping timeout: 260 seconds]
makomo has quit [Ping timeout: 246 seconds]
kam1 has joined #lisp
jjong has joined #lisp
kam1 has quit [Ping timeout: 260 seconds]
frodef has quit [Ping timeout: 256 seconds]
bilegeek has joined #lisp
scymtym_ has joined #lisp
scymtym has quit [Ping timeout: 264 seconds]
rumbler31 has quit [Remote host closed the connection]
kam1 has joined #lisp
euandreh has joined #lisp
bilegeek_ has joined #lisp
semz has quit [Ping timeout: 260 seconds]
bilegeek has quit [Ping timeout: 260 seconds]
pfdietz has joined #lisp
cyraxjoe has joined #lisp
<charles`> if CONTINUE can be used to continue, what can be used to retry
abhixec has joined #lisp
ralt has quit [Quit: Connection closed for inactivity]
[d] has joined #lisp
luckless has quit [Ping timeout: 240 seconds]
luckless has joined #lisp
ebrasca has quit [Remote host closed the connection]
semz has joined #lisp
no-defun-allowed has joined #lisp
choegusung has joined #lisp
junkicide has quit [Ping timeout: 246 seconds]
matryoshka has quit [Quit: ZNC 1.8.2 - https://znc.in]
pagnol has joined #lisp
matryoshka has joined #lisp
surabax has quit [Quit: Leaving]
kam1 has quit [Ping timeout: 240 seconds]
judson_ has joined #lisp
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
contrapunctus has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
kam1 has joined #lisp
contrapunctus has joined #lisp
vhost- has quit [Ping timeout: 256 seconds]
matryoshka has quit [Quit: ZNC 1.8.2 - https://znc.in]
matryoshka has joined #lisp
zulu-inuoe__ has joined #lisp
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
murtagh has joined #lisp
matryoshka has quit [Quit: ZNC 1.8.2 - https://znc.in]
matryoshka has joined #lisp
zulu-inuoe_ has quit [Ping timeout: 240 seconds]
KREYREEN has quit [Remote host closed the connection]
KREYREEN has joined #lisp
madage has quit [Ping timeout: 240 seconds]
madage has joined #lisp
benjamindc has joined #lisp
benjamindc has quit [Remote host closed the connection]
choegusung has quit [Quit: leaving]
vhost- has joined #lisp
benjamindc has joined #lisp
GuerrillaMonkey has joined #lisp
galex-713 has quit [Ping timeout: 264 seconds]
Jeanne-Kamikaze has quit [Ping timeout: 246 seconds]
Jeanne-Kamikaze has joined #lisp
vhost- has quit [Ping timeout: 256 seconds]
Josh_2 has quit [Remote host closed the connection]
GuerrillaMonkey has quit [Ping timeout: 240 seconds]
<beach> Good morning everyone!
kam1 has quit [Ping timeout: 264 seconds]
<oni-on-ion> good morning happy new year !
<oni-on-ion> (still current here)
<beach> Thanks. You too!
GuerrillaMonkey has joined #lisp
<sauvin> Ubuntu installed a pile of cl-* files when I installed Common Lisp but I have no idea how to load or use them. Figuring out how to use them is my problem, but could anybody help me with using them and/or with a package manager? Quicklisp doesn't seem to like gcl.
galex-713 has joined #lisp
Alfr_ has joined #lisp
<no-defun-allowed> I don't know how to use the Ubuntu (or Debian) packages (though you could always try locate to find them), but you probably don't want to use GCL these days.
<contrapunctus> sauvin: by 'installed Common Lisp' do you mean installed gcl? What did gcl say that makes you think that Quicklisp doesn't like it?
Jeanne-Kamikaze has quit [Ping timeout: 260 seconds]
<aeth> I'm not an Ubuntu expert, but you generally don't use the distro packages for languages that have their own package manager. They're mostly for dependencies of things that the distro ships, like e.g. Maxima.
<aeth> Or maybe pgloader. Or whatever else a distro might ship.
<no-defun-allowed> Oh, looking at the file listings, they are stored in /usr/share/common-lisp/source/ but I don't know what you do with them. If you installed ASDF from the package manager, it might know to search there for systems, or it might not.
<aeth> If GCL isn't complete enough to run Quicklisp, it probably can't run any of the libraries, either. e.g. I think its CLOS is incomplete.
Alfr has quit [Ping timeout: 264 seconds]
<sauvin> contrapunctus, it won't load the quicklisp.quicklisp in /usr/share/..../quicklisp, complaining about ASDF.
<sauvin> aeth, what you're saying is familiar to a perl person. I'll take the risk, but I'd really like to check out this pile of cl-* files that Ubuntu put on the hard drive but I'm at a loss for loading.
<sauvin> The form (require "asdf") failes.
<sauvin> The gcl I'm using is 2.6.12, is that not recent enough?
<sauvin> If this stupid thing vexes me much longer, I'm gonna say "screw you" and start using sbcl.
<aeth> Why GCL?
charles` has quit [Ping timeout: 256 seconds]
euandreh has quit [Ping timeout: 272 seconds]
vhost- has joined #lisp
<sauvin> I _usually_ like gnu stuff and don't know enough about lisp - ANY recent implimentation - to make anything like an informed choice.
<aeth> I'm under the impression, perhaps mistaken, that GCL was never completed. Even CLISP is a more mature GNU CL, but CLISP hasn't had a release in 10 years.
<aeth> But generally people use SBCL, CCL, or ECL, I think. A bit of ABCL (on the JVM) in here.
<sauvin> Hrm, yea, it's been about six years for gcl.
<contrapunctus> sauvin: this guided me in my choices as a newcomer to the CL world, hope it helps you too - https://github.com/emacs-tw/awesome-emacs
<aeth> ECL's LGPL, CCL's Apache, SBCL's mostly public domain. They're all GPL-compatible.
<contrapunctus> Whoops
<sauvin> contrapunctus, thanks, but I'm not smart enough for emacs. I'm a geany person.
<contrapunctus> sauvin: this https://github.com/CodyReichert/awesome-cl
<benjamindc> does anyone know why the asdf package-inferred-system class doesn't work with pathname?
<aeth> GNU has two CLs (CLISP and GCL) and maybe 3-4 Schemes (Guile, Kawa, MIT/GNU, and I'm sure they have another one or two hiding because Schemes are common)...
<sauvin> aeth, for example gauche, I think it is? :D
<aeth> but unfortunately, neither of the CLs are that active. CLISP's last release was 10 years ago. GCL's was 6. Meanwhile, SBCL's on a monthly release cycle.
<benjamindc> Why not use SBCL?
<sauvin> Again, rank newbie: its REPL has no readline.
<aeth> rlwrap
<benjamindc> or sly/slime
<sauvin> Everything you're telling me, though, suggests I oughta spend a few minutes rethinking my cathexis to gcl.
<sauvin> slime is also eamcs, no?
<beach> sauvin: You really should learn Emacs and SLIME.
<no-defun-allowed> How fast can you say "Eh, maybe not then?" You need about that long to make a decision.
<beach> sauvin: Programming in Common Lisp without those will make you hate the experience.
<sauvin> I'm a perl guy. :D
<no-defun-allowed> There's also...SLIMV for Vim, SLIMA for Atom, and Alive for VS Code.
<sauvin> Also, I'm a geany guy.
<benjamindc> sauvin: you know vim keybindings?
<sauvin> Nope. I've never learned any of the TUI editors.
<no-defun-allowed> Well, none of the three mentioned other than Vim are really TUI editors.
<beach> sauvin: I don't know what it means to be a "Perl guy" or any "<tool> guy". You should learn the tools that will make you the most productive. It is not personal.
<benjamindc> Really, Emacs is the best tool for the job for CL programming.
<oni-on-ion> back in the day all we had was a repl, no fancy editor shenanigans
__jrjsmrtn__ has joined #lisp
<sauvin> I didn't take it as a personal affront, but one also uses what one knows, especially since this is strictly armchair stuff. My day job is "forklift driver".
GuerrillaMonkey has quit [Quit: Leaving]
<beach> oni-on-ion: That was a long time ago.
Jeanne-Kamikaze has joined #lisp
<beach> oni-on-ion: I used Multics Emacs (written in MacLisp) in 1985 or so.
<aeth> sauvin: I don't remember where I saw the original, but I made a few modifications iirc...
<beach> sauvin: That is the wrong attitude. If one always uses what one knows, then one will never learn anything new.
<oni-on-ion> beach, nice =) 10 years later i was just starting emacs
_jrjsmrtn has quit [Ping timeout: 256 seconds]
<aeth> sauvin: But I just use the rlwrapped SBCL as a fallback. It's no replacement for SLIME.
<sauvin> Probably not, but I think I'll learn a few things about the language itself before simultaneously wrestling with an unfamiliar editor.
<beach> oni-on-ion: Oh, did I say 1985? More like 1981.
<aeth> sauvin: but if you absolutely need built-in readline, then CLISP will probably be a bit less painful than GCL, although it's increasingly common not to support it with libraries
<sauvin> On the subject of which, is there a way to use emacs lisp without also having to use emacs itself? O:)
<aeth> (e.g. package local nicknames aren't on CLISP)
<sauvin> OK, well, small loss. I'll use sbcl.
<aeth> sauvin: Common Lisp is close enough to Emacs Lisp that there's not much of a need to use it outside of Emacs, although there is an implementation of it in CL iirc.
<sauvin> I wonder why gcl is lagging so much, though.
<beach> sauvin: Stepping out of one's comfort zone is part of the learning experience. The more uncomfortable one feels, the faster the learning.
<beach> sauvin: GCL is lagging because nobody is working on it. Nobody is paid to do this stuff.
<sauvin> Oh, I know this, but I'm an older fella; sometimes, learning too fast isn't very wise.
<sauvin> beach, that's the FOSS reality. Who's backing sbcl?
<beach> sauvin: Volunteers. Convinced by the argument of what's-his-name-again who forked it off of CMUCL.
<aeth> At least 24 financial contributors, too. https://fundrazr.com/61kPgb?ref=ab_44p9NqQUZKv44p9NqQUZKv
<benjamindc> sauvin check out portacle https://portacle.github.io
<beach> sauvin: CMUCL used to be the fastest free Common Lisp implementation, but it was a mess to build. So this guy forked the code and turned it into SBCL. And some smart and knowledgeable people were convinced.
<sauvin> Then maybe the stuff I'd been reading is dated. I didn't pay attention. A couple of online books roasted sbcl as being sub-par and strongly preferred gcl. Didn't understand all the arguments and don't remember most of them.
<aeth> probably 20 years dated, then?
<sauvin> Very damn well could be.
<aeth> circa 2008-2010, a lot of people preferred CLISP to SBCL, but then... CLISP didn't get a release in 10 years and started bitrotting. It's also a slow interpreter rather than a fast compiler.
<oni-on-ion> beach, yep. i started coding early 90s so most revolutions were before my timev
<aeth> the good thing about CL is that if you write portable-enough code, it's not too hard to move to whatever's trendy
<sauvin> That's one of the virtues of an older language.
<beach> sauvin: The name of the guy who started SBCL is William Newman.
<sauvin> The actor?
<beach> I doubt it.
<sauvin> Jeebus crap, SBCL is is 21 years old and has a stable release just three days ago!?
Nilby has quit [Read error: Connection reset by peer]
Nilby has joined #lisp
<beach> Monthly releases, yes.
<aeth> heh, I was thinking "oh, no, it's not that old, it's from the late 90s"
<sauvin> Right there with ya, pal. I'm a boomer who can't get used to the idea of not being 17 anymore.
<oni-on-ion> also, SBCL is 2.1 , now its 2021 =)
<sauvin> dpkg says I have 2.2.mumble.
<oni-on-ion> that is strange
<aeth> CCL started in 1984. https://ccl.clozure.com/history.html
<sauvin> Oh, wait, I might be misreading. The version field from the dpkg listing is 2:2.0.1-3
<aeth> CMUCL, which SBCL forked from, started in "the early 1980s". https://www.cons.org/cmucl/credits.html
<aeth> I wouldn't be surprised if there's a 1970s (or older?) CL if it started as some other Lisp first.
<oni-on-ion> mocl is a nice idea
<sauvin> OK, well, like I said, small loss. As far as lisp is concerned, I'm now an sbcl guy.
<sauvin> I can't remember, seems like there was a Kyoto Lisp when I was still swearing at a 286.
<aeth> Looks like GCL, ECL, and MKCL are all descended from it. https://en.wikipedia.org/wiki/Kyoto_Common_Lisp
<beach> aeth: CMUCL started as Spice Lisp.
<beach> sauvin: KCL turned into AKCL (Austin-) which turned into GCL.
<beach> Someone has a diagram of all the Common Lisp history. Maybe jackdaniel?
<benjamindc> Does anyone have experience with ASDF package-inferred-system and the :pathname option for defsystem? I'm having an issue where my test system isn't finding packages defined in "test/" even though I've got pathname set.
<sauvin> beach, that link is a 404 on my end.
<aeth> benjamindc: if you have a foo/test, then make a test.lisp at the top level that contains a package
<sauvin> Ah! Thanks!
<benjamindc> Thanks aeth!
<beach> I still don't know what problem package-inferred systems are supposed to solve. They seem to make everything harder.
<aeth> jackdaniel: hmm, that history diagram in beach's link doesn't look that good to me... I think it might just be me. I have a dark UI, so it's probably automatically putting it in dark mode in Firefox.
<aeth> I switched browsers to Chromium (which doesn't use the host's UI, and so uses a light UI, and so doesn't request dark mode CSS) and it's a white background and looks fine
galex-713 has quit [Ping timeout: 272 seconds]
<beach> aeth: I think it is just you. It looks fine in Firefox to me.
bilegeek_ is now known as bilegeek
<aeth> yeah, it's because the image has a transparent background which doesn't go with dark mode, which is automatically selected
<aeth> since the lines are very close to the dark mode background color
<beach> Oh, I see.
easye has joined #lisp
<sauvin> OK, well, dudes, thank you very much for your time. We'll find out if sbcl gives me any less grief than gcl does.
* beach doesn't think of himself as a "dude".
<aeth> sauvin: you're welcome
<aeth> beach: Whether or not package inferred systems are useful really depends on the problem. I definitely wouldn't use it for every repository, but it seems more useful than not in my game engine.
<oni-on-ion> with FIrefox i've got to often switch on/off dark mode for sites that break with it on
<oni-on-ion> (usually background images that somehow become foreground, covering everything0
<oni-on-ion> )
<beach> I still don't know what problem they are supposed to solve. But we have been through this before, and all you could come up with to solve the problems they introduce were more unnecessary complications.
<beach> aeth: ^
<benjamindc> beach what do you suggest instead?
<beach> benjamindc: Not using them?
<beach> benjamindc: I organize my code into "modules"....
<beach> benjamindc: Each "module" is in one directory, has one (or two) .asdf file(s), and one (or two) packages.lisp file(s).
<Nilby> beach: But would you say that automatic dependencies that worked well, would not be desirable?
<aeth> beach: It makes every file into a system, which means that any file with the same name of a directory also becomes a system, so as a whole it does reduce boilerplate for certain kinds of projects, but it only really works with some of them, not all of them.
<aeth> Something similar, but with directories instead of files (and the more idiomatic package.lisp in each directory) would probably work more generally.
<oni-on-ion> oh that sounds useful
<beach> Nilby: How would one module infer automatically what other modules it depends on?
<aeth> beach: it parses the defpackage. If you use prefixes, you have it in an IMPORT-FROM with nothing other than the package name iirc. Otherwise, USE (not recommended in most cases) or manually IMPORT-FROM various symbols.
Jeanne-Kamikaze has quit [Quit: Leaving]
<aeth> iirc
<beach> aeth: Yes, as I said, we have been through this before, and all it would do for me would be to have each file be huge. And you came up with various fixes for that problem that made everything even more complicated.
<Nilby> beach: By what symbols it uses, and some heuristics.
<aeth> Nilby: No, I think it's literally just (:import-from #:alexandria) and now it knows you're using (alexandria:foo)
<aeth> beach: it's definitely not for every project, I don't use it in my Scheme-in-CL project
luckless has quit [Ping timeout: 240 seconds]
<aeth> but my game engine's bordering on a "monorepo" so it's very useful there.
<Nilby> aeth: Yes, but I'm dreaming of something more fully automatic.
<benjamindc> beach, do you have an example of what you mean that I can check out on gitlab or github?
<aeth> Nilby: impossible in the general case because of features like EVAL
<beach> benjamindc: Sure, hold on...
<beach> benjamindc: Maybe Cluffer.
<benjamindc> thanks, beach
<aeth> benjamindc: Idiomatic CL is structured so that there's either a top level package.lisp or a bunch of subdirectories, each with one package.lisp
<benjamindc> I'm coming to CL from Clojure and I like the one package per file style as it somewhat maps to clojure's namespaces. But if that's not idiomatic, when I should reasses.
<beach> I think it's a silly idea. I mean, setting up a "module" is (or should be) a tiny fraction of the total amount of work on the real code of the module. And if instead package-inferred systems make the code for the module huge and unmanageable, then what's the point?
luckless has joined #lisp
<no-defun-allowed> I have files that average 40LOC or so; should I make a package for each of them?
<beach> Exactly!
<aeth> it really depends on what you're trying to do
<Nilby> aeth: Some very useful things are impossible in the general case. I don't see it as a problem.
<no-defun-allowed> And how do I export symbols from each file, in a way that lets me use symbols inside my "modules", but without the user being able to use them?
<no-defun-allowed> There are a fair few things that I need to use between files, which a user could easily use to break the state of the system.
<beach> Well put.
<aeth> no-defun-allowed: Well, I mean, for one, I have a file with 5 lines of code, 4 being the defpackage, in one of my projects that doesn't use package-inferred-system. https://gitlab.com/mbabich/airship-scheme/-/blob/master/scheme-boolean.lisp
<beach> no-defun-allowed: And I think the answer is that one has to put all the code of the module in one huge file.
<aeth> So it really depends on the problem...
saganman has joined #lisp
<aeth> no-defun-allowed: Another thing is, you have no real privacy that's not privacy-by-convention in Common Lisp outside of lexical closures. So you change the expectations of certain packages. That is, you have to have "internal" packages that if the user uses directly, you don't guarantee a stable interface.
<aeth> So you just introduce another convention...
<no-defun-allowed> beach: It reminds me of when the Java teacher at university told us how having a class Class being in a file Class.java was a good idea. Sure, I know that the definition of stuff in that Class is in that file, but now I just have to find the method I want in a 3kLOC file.
<aeth> File organization is... very subjective. In the end, you get there by M-.
<beach> no-defun-allowed: Wow.
<no-defun-allowed> aeth: If you use internal symbols, you're on your own. There are only a few ways you can break my system from exported symbols, which are mutating sequences I can only tell you that you shouldn't mutate.
<aeth> no-defun-allowed: And if you use a package in package-inferred-system that's clearly for use by other packages rather than the user, then you're also on your own.
<no-defun-allowed> At one point, I wished you could pass out immutable "mirrors" of objects somehow, but it would have to be transitive, and it got too messy in my head.
<aeth> Package-inferred-system encourages "internal" packages more than other styles, but that's an issue that can come up in other places.
<no-defun-allowed> On the other hand, I have one package with like 100 symbols, and that feels a bit big (here we go again with the disbelief that I wrote 10,000 lines of code and all). But then I remember CLIM defines about a magnitude more symbols, and I don't feel so bad.
<aeth> no-defun-allowed: It really depends on the domain you're doing. Java treats everything like it's a big, important project that's full of complexity and importance. Most projects aren't like that. trivial-left-pad doesn't need package-inferred-system.
<aeth> But sometimes, you do a project where that sort of organization makes sense. Where there are a *ton* of files, and they all really need their own package because they do their own thing. E.g. I have a file that deals with SDL2. A file. Nothing else needs to know that SDL2 even exists.
galex-713 has joined #lisp
<no-defun-allowed> I try to do "one file per concept", which leads to a somewhat pleasing LOC distribution.
* Nilby is so tired of the old cliché of files and filesystems.
<no-defun-allowed> Yeah, the damned filesystem makes organising code a fair bit harder than it should be.
<aeth> Well, files are somewhat useful. If you write a bunch of macros with their own functions, and those functions are elaborate, then you probably want those functions to be in another file so you don't have to wrap them in a gigantic, hundreds-of-lines-long EVAL-WHEN.
<aeth> And... that's it.
<aeth> Beyond that, it's aesthetics.
<jeosol> aeth: I had a conversion with Fare when I was trying to understand the use of :package-inferred-system for a code base. His article seems to suggested it helps compilation for large code bases but I never did a test to verify
luckless has quit [Ping timeout: 240 seconds]
luckless has joined #lisp
<aeth> jeosol: It definitely helps CI for very large systems because not everything needs to be tested in the CI. e.g. all of the FFI stuff, if cleanly separated, doesn't need to be loaded.
* no-defun-allowed uploaded an image: loc-distribution-function.png (41KiB) < https://matrix.org/_matrix/media/r0/download/matrix.org/LxrkPifVjClIzILMEKUPbWgl/loc-distribution-function.png >
<jeosol> I remember I used it in my code base, but like beach said, it can be difficult to work with sometimes, as in some cases, you'd then define another package.lisp file to aggregate everything later on
<no-defun-allowed> For reference, I graphed the cumulative distribution functions of my largest two codebases.
<aeth> no-defun-allowed: I tend to prefer 300-1000 lines, but I also have a lot of extremely tiny files, too. Lots of special cases exist as real outliers, too, e.g. tests, which can be 7 lines or infinite.
<pyc> Follow up question on our discussion on the importance of backward compatibility in the CL community. How did this breakage happen? "Doesn't work with the current version of Hunchentoot anymore!"
<no-defun-allowed> It would be nice if they said why.
<jeosol> aeth: I do have some 1000 loc files. Sometimes I want to break them but it will be more of a hassle as related functions are not together then.
<benjamindc> jeosol, do you have a link to his article?
<jeosol> what article?
<jeosol> you mean Fare's?
<benjamindc> yeah
<oni-on-ion> scratch.lisp
<jeosol> ok, let me see if I can pull it up. For context, I had a large system and I was running into issues where I wanted things to load faster and Fare suggested to look into that, and also some and to look at the dependency graph
<jeosol> benjamindc: http://fare.tunes.org/files/asdf3/asdf3-2014.html#%28part._asdf-package-system%29
<jeosol> See section 2.10 for package-inferred-system
<jeosol> The second to last paragraph is the statement about "scaling" but I never verified this
<benjamindc> thank you
<aeth> jeosol: Oh, it probably *reloads* faster
vhost- has quit [Ping timeout: 246 seconds]
notzmv has quit [Remote host closed the connection]
<aeth> Since it'll only reload the file you modified and the files that depend on it.
<jeosol> aeth: may be that's what it is.
<jeosol> I did notice that, when I changed a few, only the file that's change is reload
notzmv has joined #lisp
<aeth> I do notice that zombie-raptor loads faster than airship-scheme when it's not a from scratch load (so not e.g. a new version of SBCL)
<aeth> Even though zombie-raptor is larger.
<jeosol> aeth: I would think that's one of the benefit - at least what I observed
<jeosol> I looked at your zombie-raptor link I realized I did something similar, have the separate files, then aggregate with a common package and use-reexport later.
notzmv has quit [Remote host closed the connection]
<aeth> yeah, that's because having directory-level modularity makes a lot of sense
<aeth> It's very monorepo
notzmv has joined #lisp
<aeth> The only reason I spun off zr-utils is because it would be strange for airship-scheme to either (1) depend on a game engine or (2) actually be hosted in a game engine monorepo
<jeosol> aeth: makes sense
<jeosol> I remember the airship-scheme project you mentioned before, how is that coming along
hiroaki has quit [Ping timeout: 268 seconds]
<aeth> I'm taking a bit of a break from it now that the reader, which took longer than I had expected, is done
<aeth> it wound up being 1024 lines :-/
<benjamindc> I just keep getting this error when trying to run (asdf:test-system "ramsay") even though the file lexer.lisp is in the test dir. Component "ramsay/test/lexer" not found, required by #<PACKAGE-INFERRED-SYSTEM "ramsay/test">
<jeosol> that's good. Allow the brain cells to heal ...
<aeth> I do multiple projects so I can cycle between them when there's a good breaking point so I don't burn out of them
<jeosol> benjamindc: can you paste the *.asd file
<no-defun-allowed> Most of the time, I reload with C-c C-c; only reloading when I replace a macro or something more invasive.
<benjamindc> ;;;; ramsay.asd
<benjamindc> :description "Lisp like language for the EVM"
<benjamindc> (defsystem #:ramsay
<benjamindc> :author "benjamin cassidy <benjamin@cassidy.io>"
<benjamindc> :license "GPL-3.0"
vhost- has joined #lisp
<benjamindc> :version "0.0.1"
<benjamindc> :class :package-inferred-system
<benjamindc> :pathname "src/"
<benjamindc> :depends-on ("alexandria"
<benjamindc> "ramsay/lexer")
<jeosol> aeth: I think that's a good strategy, I working on multiple projects too,
<benjamindc> :in-order-to ((test-op (test-op "ramsay/test"))))
<benjamindc>
<benjamindc> (defsystem #:ramsay/test
<benjamindc> :class :package-inferred-system
<no-defun-allowed> Hey, use a paste or copy the link please.
<benjamindc> :depends-on ("rove" "ramsay" "ramsay/test/lexer")
<jeosol> benjamindc: use pastebin, its better
<benjamindc> :perform (test-op (o c) (symbol-call :rove :run c)))
notzmv has quit [Remote host closed the connection]
<benjamindc>
<benjamindc> sorry :(
<benjamindc> will use pastebin in the future
<aeth> no-defun-allowed: I'm talking about QL:QUICKLOAD, though. When you have a large project, you could go months without touching 80% of it, and unless you touched the core stuff that everything else depends on, that means you can go months without compiling almost 80% of it... unless you update SBCL monthly.
notzmv has joined #lisp
<no-defun-allowed> So, is every file a component in ASDF?
<no-defun-allowed> Oh, that's generally true, not just for package-inferred-system.
<no-defun-allowed> If I had said "system" or "module" or something, and it was true, then I'd wonder how long (ql:register-local-projects) would take, when scanning SICL takes a good 20 seconds.
<jeosol> aeth: 1024 lines is not bad. I once had a component, 3d graphical ray tracing, took me a month to complete for a challenge (circa 2017) - early days. The guys over at comp.lang.lisp helped a lot
<jeosol> aeth: I have to work on something with python pandas last few days, dealing with python version hell drove me mad. I wished I could have used some CL library for the data manipulation piece
<jeosol> I think the vellum library is a step in that direction, and clml
<no-defun-allowed> I get uncomfortable around 200 to 250 lines.
<jeosol> if not for M-. , it will definitely be hard to work with large files
skapate has joined #lisp
<aeth> jeosol: for me what bothers me with that sort of thing is Jupyter... Everything will be fine until I need to run it again because of the implicit state in the out-of-order evaluation of the cells that I did while programming it.
skapata has quit [Ping timeout: 258 seconds]
<aeth> That and it's frustratingly missing certain features like a spellchecker or an integrated linter (and you need a linter when you run Python)
<aeth> (Plus, I like Emacs keys)
<no-defun-allowed> Hypothetically, you could use the reads and writes each cell makes to topologically sort them, but that requires hooks in places no real Common Lisp implementation gives you.
<jeosol> out-of-order is a pain in jupyter notebooks for sure.
hiroaki has joined #lisp
varjag has joined #lisp
<aeth> Something based in CL probably could implement a similar literate-programming thing in a smarter way than Jupyter (since CL already expects things to be redefined constantly), where it would make sure that running it from start-to-finish still produces the current results or something.
<jeosol> i guess the cl-jupyter is the same issue right? I followed a clml tutorial. It's probably just to show things I suppose, I also tried to use VS code for it. The workflow is certainly not easy
<jeosol> The problem with the project if implemented in CL, is that client may complain that they don't understand it if they need to take it over
<oni-on-ion> aeth, CL-listener ?
varjag has quit [Ping timeout: 265 seconds]
thmprover has quit [Quit: Happy new year!]
luckless has quit [Ping timeout: 240 seconds]
kam1 has joined #lisp
luckless has joined #lisp
luckless has quit [Ping timeout: 240 seconds]
karlosz has quit [Quit: karlosz]
benjamindc has quit [Remote host closed the connection]
abhixec has quit [Read error: Connection reset by peer]
mrno1 has joined #lisp
kam1 has quit [Ping timeout: 260 seconds]
mrno1 has quit [Remote host closed the connection]
imode has quit [Quit: System (literal) crash, need to recover, brb.]
gioyik_ has joined #lisp
gioyik has quit [Ping timeout: 260 seconds]
<solideogloria[m]> Why does `cl-json` parse the string "!BFYazLCNOAsYDPxIDn:matrix.org" as the symbol !+BF+-YAZ-+LCNO+-AS-+YD+-PX-I-DN:MATRIX.ORG
<no-defun-allowed> cl-json only interns keys, from memory. But if you're using it to parse Matrix events, then the number of keys isn't finite, so you probably want to use another library, like jsown.
<no-defun-allowed> But some parsers treat a key a:b as the symbol printed as a:b; I think there was also another XML parser that did that.
waleee-cl has quit [Quit: Connection closed for inactivity]
<saturn2> you can override that by binding json:*json-identifier-name-to-lisp* and json:*identifier-name-to-key* to #'identity
<aeth> solideogloria[m]: that's a camelCase to hyphen translation.
judson_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
imode has joined #lisp
<solideogloria[m]> got it saturn2
<loke[m]> I tend to use st-json
<loke[m]> It uses strings as keys, which is better (no risk of intern attacks with untrusted data).
<loke[m]> Also, it allows you to define custom datatype converters.
lottaquestions has quit [Remote host closed the connection]
lottaquestions has joined #lisp
<jackdaniel> the one you have linked illustrates only ecl family and influences
<beach> Ah, OK, thanks!
imode has quit [Quit: Rebooting, updates.]
shka_ has joined #lisp
imode has joined #lisp
<jackdaniel> sure
aartaka has joined #lisp
Oladon has quit [Quit: Leaving.]
orivej has joined #lisp
luckless has joined #lisp
luckless has quit [Remote host closed the connection]
luckless has joined #lisp
narimiran has joined #lisp
<solideogloria[m]> loke: st-json looks like a better choice
<solideogloria[m]> thanks
jrm has quit [Quit: ciao]
jrm has joined #lisp
akoana has left #lisp ["Leaving"]
edgar-rft has joined #lisp
mindCrime has quit [Ping timeout: 260 seconds]
skapate has quit [Remote host closed the connection]
mindCrime has joined #lisp
<oni-on-ion> what is stored in the [sbcl] lisp image? just compiled code?
<beach> Documentation strings.
<beach> Lambda lists.
<beach> Maybe some FUNCTION-LAMBDA-EXPRESSIONs
luckless has quit [Ping timeout: 240 seconds]
<beach> Various objects, like classes, generic functions, symbols, packages.
<oni-on-ion> ahh right. hmm
<beach> And if you are not restricted to SBCL, in SICL, I store the entire source text of all the code that has been loaded into the image.
<oni-on-ion> oh nice ! great!
<no-defun-allowed> I think everything in memory (after a full GC).
<oni-on-ion> oh oh: "Cannot save core with multiple threads running."
<saturn2> you can see what's in your lisp image with (room t)
<oni-on-ion> no-defun-allowed, i wonder what an 'empty' session would have as live objects? aside from classes, packages, symbols etc.
<beach> oni-on-ion: I use the source text for reporting errors and warnings, and for backtraces.
<oni-on-ion> saturn2, oh cool
<beach> oni-on-ion: Methods and generic functions are objects, and there may be data structures involved for organizing those. Most certainly, you have hash tables in your package objects and such.
<oni-on-ion> ROOM is awesome. so on a plain start, it takes about 100Mb ram? (Summary Total)
<beach> oni-on-ion: Method combinations involve data structures as well.
<oni-on-ion> beach, hmm yes i see. have you played around with Squeak at all? having the source in the image allows for some very useful things. like ChangeSet
<beach> I have not used Squeak, but my experience from staring at compiler output from SBCL and trying to match it to source code made me think about other ways of doing it.
<oni-on-ion> beach, ahh, never had thought of CLOS. i mistakenly think it is bare knuckles, i had been accustomed to the seperation of FoundationKit and AppKit from other lands
<oni-on-ion> beach, nice. good =)
<beach> Thanks.
<beach> Common Lisp being a dynamic language, lots of stuff must be kept track of to allow for incremental updates to the image.
<oni-on-ion> can't save image with threads, i dont know
<oni-on-ion> yep - Squeak/Smalltalk is similar in that regard
<beach> Sure.
<no-defun-allowed> 100 megabits? After compression, a SBCL image is about 100 megabits on disk.
andreyorst has joined #lisp
<beach> Tiny.
<no-defun-allowed> (save-lisp-and-die "foo" :executable t :compression 9) gives me a 96 megabit image.
<shka_> who measures disk space in bits?
<no-defun-allowed> oni-on-ion: After making sure not to load Quicklisp, (room) tells me I'm using about 25MB of dynamic space, and 12.8MB of immobile space. The rest is negligible.
<no-defun-allowed> shka_: Well, oni-on-ion measured 100 megabits of RAM.
mindCrime has quit [Ping timeout: 260 seconds]
hendursa1 has joined #lisp
hendursaga has quit [Ping timeout: 240 seconds]
<Nilby> When you compare the size of a CL image to most other program binaries, make sure to add the size of most shared libraries, the compiler tool chain, and the debugger.
<no-defun-allowed> No need - appimages and Electron programs blow most CL images out of the water in terms of size.
pve has joined #lisp
rgherdt has joined #lisp
rjcks has joined #lisp
luckless has joined #lisp
birdwing has joined #lisp
<sauvin> beach, everybody, you were right: sbcl is a better choice.
<beach> Great!
<sauvin> I poked around the nets for a while looking at all kinds of different things regarding lisp, then remembered I wanted quicklisp, so, I fired up sbcl, loaded the quicklisp.lisp file and it just took right off. Slicker than CPAN.
<beach> Sounds like you're in business then. Good.
<sauvin> I think so. A beginner doesn't need to have to try to wrestle with the language implimentation while he's still trying to figure out how to say "sub stuff { 3.14159 * 2**$_[0]}" or "sub chunk { [ split ] }"
<beach> What on earth is that? Line noise?
<sauvin> It's perl, you semiliterate LUNK!
<no-defun-allowed> Whoa, that's rude.
<sauvin> I've been perling (strictly on an armchair basis, mind) for about twenty years. Lisp gonna be a new way to think.
contrapunctus has left #lisp ["Disconnected: closed"]
<saturn2> (defun stuff (x) (* 3.14159 (expt 2 x)) the other one doesn't quite have a direct equivalent
VincentVega has joined #lisp
<no-defun-allowed> "a new way to think" is the wrong way to approach it, in my opinion. Writing in Lisp is frequently "the way I wanted to think about it", except for the times in which it isn't, but those times are much less frequent.
contrapunctus has joined #lisp
<sauvin> Direct, maybe not, but it's what got me wanting libraries to begin with. I didn't want to have to come up with a BASIC-like equivalent.
otwieracz has left #lisp ["WeeChat 2.7"]
<VincentVega> is there some trick to specify synonyms in &key?
<no-defun-allowed> What would you consider a synonym?
<VincentVega> :w and :width for instance
luckless has quit [Ping timeout: 240 seconds]
<VincentVega> in initialize-instance for some geometric object
<VincentVega> so far i just do (... &key (w nil) (width nil)) and check for mutual exclusivity but it's a runtime check
<VincentVega> and the defaults aren't obvious
<Nilby> a repl or editor that does :w<tab> -> :width
<saturn2> i'm not aware of any such trick
<Nilby> but if you really want to parse synonyms for the keys with &rest yourself, you can
<Nilby> and even make a macro for it
<VincentVega> yeah ok
<saturn2> you could write your own object making function with a compiler macro for the compile time check
<Alfr_> Nilby, which editor does that? And not also suggesting all keywords starting with w ?
<VincentVega> a macro like that actually sounds pretty interesting
<no-defun-allowed> I think sticking to the long names is a good idea, generally.
<Nilby> Probably emacs w/SLY/SIME, vim w/VLIME or something, vs code with some lisp extension, etc. but I don't know since I use my own thing.
<no-defun-allowed> For geometric objects, w, h, x and y can be assumed to be width, height, X and Y positions, but it's usually nicer to use full names when someone else is supposed to look at a lambda-list and guess what they can call your functions with.
<VincentVega> no-defun-allowed: i see your point there (sorry for the pun)
<no-defun-allowed> That was a recurring theme in a funny Usenet thread I read, in which the verbosity of many Common Lisp libraries is supposed to be a problem (as it apparently is bad for "scripting").
<Alfr_> Nilby, hm. I must have somehow misconfigured slime.
<no-defun-allowed> If you write (make-instance 'some-class, then SLIME will pop up with a lambda list like (&key this-initarg that-initarg ...) ;; and because unbalanced parens tick me off )
<Alfr_> I mean it's doesn't complete :e<TAB> to :element-type for make-array for me.
hnOsmium0001 has quit [Quit: Connection closed for inactivity]
<no-defun-allowed> Here, I have to press C-M-i (or ESC TAB or M-TAB, whatever floats your boat) to complete, unless I'm in the REPL, as TAB indents.
<Nilby> Alfr_: I just tried it with no configuration on emacs 25.2 and slime 2.26 from melpa. But I'm probably not the person to ask, since I don't use it. SLIME doesn't come close to working on my real configuration.
gaqwas has joined #lisp
gaqwas has quit [Changing host]
gaqwas has joined #lisp
<Nilby> oh and most recent sbcl
<Alfr_> Nilby, after removing slime-fuzzy-complete-symbol from slime-completion-at-point-functions it works here as well. Thank you. :)
gaqwas has quit [Remote host closed the connection]
gaqwas has joined #lisp
gaqwas has joined #lisp
gaqwas has quit [Changing host]
<Nilby> Alfr_: Nice! I've saved myself many hours of pointless work by always trying stuff in a clean setup first.
<Alfr_> For that one has to know how it's supposed to work in the first place and until you mentioned it, I didn't.
<Nilby> I usually just think what I want it to do, and figure somebody must have already done it.
<Nilby> and if not someone on #lisp will usually know
<Nilby> When I used to work on emacs the philosophy was, most of your code that isn't docstring should be written by <tab> completion. Snippets really help with that too.
heisig has joined #lisp
lotuseater has quit [Ping timeout: 272 seconds]
villanella has joined #lisp
mirchael has joined #lisp
mirchael has quit [Client Quit]
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
murtagh has quit [Ping timeout: 246 seconds]
cantstanya has quit [Remote host closed the connection]
cantstanya has joined #lisp
igemnace has joined #lisp
igemnace has quit [Client Quit]
galex-713 has quit [Ping timeout: 260 seconds]
varjag has joined #lisp
cantstanya has quit [Ping timeout: 240 seconds]
vegansbane6 has quit [Quit: The Lounge - https://thelounge.chat]
Inline has quit [Remote host closed the connection]
bilegeek has quit [Quit: Leaving]
akoana has joined #lisp
cantstanya has joined #lisp
galex-713 has joined #lisp
luckless has joined #lisp
gutter has quit [Remote host closed the connection]
galex-713 has quit [Ping timeout: 258 seconds]
galex-713 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
v_m_v has joined #lisp
akoana has quit [Quit: leaving]
galex-713 has quit [Ping timeout: 260 seconds]
amb007 has joined #lisp
galex-713 has joined #lisp
euandreh has joined #lisp
rumbler31 has joined #lisp
vegansbane6 has joined #lisp
Inline has joined #lisp
scymtym_ has quit [Remote host closed the connection]
rumbler31 has quit [Ping timeout: 246 seconds]
kaftejiman has quit [Ping timeout: 264 seconds]
mbomba has joined #lisp
pagnol has quit [Ping timeout: 256 seconds]
mbomba has quit [Client Quit]
Inline has quit [Read error: Connection reset by peer]
ebrasca has joined #lisp
frgo has quit [Remote host closed the connection]
frgo has joined #lisp
scymtym has joined #lisp
liberliver has joined #lisp
v_m_v has quit [Remote host closed the connection]
v_m_v has joined #lisp
v_m_v has quit [Ping timeout: 264 seconds]
v_m_v has joined #lisp
[d] has quit [Ping timeout: 272 seconds]
cosimone has joined #lisp
aorst has joined #lisp
random-nick has joined #lisp
joshcom has joined #lisp
fanta1 has joined #lisp
charlie770 has joined #lisp
frgo has quit []
aorst has quit [Ping timeout: 265 seconds]
cosimone has quit [Quit: cosimone]
akrl has joined #lisp
v88m has quit [Ping timeout: 246 seconds]
contrapunctus has left #lisp ["Disconnected: Replaced by new connection"]
contrapunctus has joined #lisp
aorst has joined #lisp
surabax has joined #lisp
kam1 has joined #lisp
zulu-inuoe__ has quit [Read error: Connection reset by peer]
makomo has joined #lisp
frgo has joined #lisp
kam1 has quit [Ping timeout: 264 seconds]
VincentVega has quit [Remote host closed the connection]
rumbler31 has joined #lisp
rumbler31 has quit [Ping timeout: 256 seconds]
joshcom has quit [Ping timeout: 256 seconds]
hendursa1 has quit [Quit: hendursa1]
hendursaga has joined #lisp
cosimone has joined #lisp
joshcom has joined #lisp
andreyor1 has joined #lisp
aorst has quit [Ping timeout: 264 seconds]
C-16 has joined #lisp
waleee-cl has joined #lisp
nicktick has joined #lisp
joshcom has quit [Ping timeout: 256 seconds]
C-16 has quit [Quit: leaving]
charlie770 has quit [Quit: thatsit]
Lycurgus has joined #lisp
<beach> Xach: Do you still check Quicklisp systems with SICL LOOP? I am asking because Alexandria contains two illegal LOOP forms.
SpaceIgor2075 has joined #lisp
rwcom60280385034 has quit [Ping timeout: 268 seconds]
rwcom60280385034 has joined #lisp
<ebrasca> beach: what do you mean with "illegal LOOP forms"?
<beach> It violates the clause order defined by the standard.
<beach> Oh, wait, it has been fixed. I just need to update my Alexandria distribution.
gutter has joined #lisp
<beach> So how do I update a single distribution in Quicklisp?
<phoe> (ql:update-dist "quicklisp")
SpaceIgo` has joined #lisp
<beach> It is Alexandria that I want to update.
<phoe> it's not a distribution, it's a system
<beach> Oh? OK, sorry.
[d] has joined #lisp
<beach> It is under "dists" in ~/quicklisp
<phoe> no, under "dists" is most likely "quicklisp"
<phoe> and only then there's alexandria
<phoe> unless you have a separate alexandria dist, which would be the first time I've seen one!
<beach> Right you are.
<phoe> anyway - I'd clone alexandria into your local-projects and checkout whatever commit you need
<phoe> that'll take precedence over whatever quicklisp downloads for you
<beach> Are you saying I can't update just Alexandria in Quicklisp?
<beach> I guess I could update everything.
<beach> Some stuff will break as usual.
kaftejiman has joined #lisp
<phoe> yes, you cannot easily update just system X in quicklisp
<phoe> quicklisp dists are snapshots of multiple projects built together
<beach> Got it.
<phoe> at least the standard dists, that is
<beach> Might as well bite the bullet now.
SpaceIgo` has quit [Remote host closed the connection]
SpaceIgor2075 has quit [Read error: Connection reset by peer]
<loke[m]> beach: When was the last time you did a QL update?
<beach> I don't remember.
SpaceIgor2075 has joined #lisp
<beach> But things did break, as predicted.
<beach> Oh, well.
<loke[m]> It's easier to deal with if one updates every time QL updates.
<beach> Yes, but I don't want to deal with it at all.
<beach> I need a system administrator.
<beach> This is going to be hell, as predicted again.
villanella has quit [Ping timeout: 260 seconds]
<troydm> I have a weird thing going with jsonrpc on MacOS and inside bordeaux thread
<troydm> if I bind to a port inside a thread jsonrpc:server-listen is not working
<phoe> beach: need help?
<troydm> however if I bind to a port in main thread, everything works fine
<beach> phoe: That would be great.
<beach> phoe: Shall we do it in #sicl?
<troydm> I'm using SBCL 2.0.11 on MacOS
<phoe> beach: OK
<phoe> troydm: sounds like some deal with dynamic variables
<phoe> these are thread-local
<troydm> doesn't seem so, as only variables that are used inside thread is global *server* and local port
judson_ has joined #lisp
liberliver has quit [Quit: liberliver]
<troydm> basicly what I'm doing is debugging why https://github.com/cxxxr/cl-lsp is not working on MacOS as expected, as when I start cl-lsp with args tcp 10003
<troydm> it doesn't binds to a port
judson_ has quit [Client Quit]
<troydm> moving jsonrpc:server-listen call outside of bt:make-thread makes it work fine
<troydm> I'm using this cl-lsp fork https://github.com/ailisp/cl-lsp
<troydm> but it doesn't seems like it's something cl-lsp related, more probably related to jsonrpc and bordeaux-threads
_paul0 has joined #lisp
paul0 has quit [Ping timeout: 256 seconds]
SpaceIgor2075 has quit [Remote host closed the connection]
SpaceIgor2075 has joined #lisp
andreyorst has quit [Ping timeout: 260 seconds]
andreyor1 has quit [Ping timeout: 265 seconds]
ykm has joined #lisp
rwcom60280385034 has quit [Ping timeout: 260 seconds]
<phoe> "Value of 'NIL in (THE NIL (PROGN 'NIL)) is NIL, not a NIL."
<phoe> poetry
saganman has quit [Quit: WeeChat 1.6]
ykm has quit [Quit: leaving]
ykm has joined #lisp
<contrapunctus> phoe: wat
charlie770 has joined #lisp
<phoe> contrapunctus: (ql:quickload :cl-unicode) on my machine
karlosz has joined #lisp
SpaceIgor2075 has quit [Remote host closed the connection]
SpaceIgor2075 has joined #lisp
<troydm> after ton of debugging, found the root cause of the problem
<phoe> troydm: what was it?
<troydm> it seems like jsonrpc is designed this way that when you bind a server on tcp it needs to load (ql:quickload "jsonrpc/transport/tcp" :silent t)
<troydm> but this gets stuck if it runs inside bt thread
<troydm> I don't know why it gets stuck
<troydm> but it gets stuck
<troydm> maybe I'm using older quickload
<troydm> I'm not sure
SpaceIgo` has joined #lisp
<phoe> weird architecture
SpaceIgor2075 has quit [Ping timeout: 246 seconds]
v88m has joined #lisp
paul0 has joined #lisp
emma has joined #lisp
emma has joined #lisp
_paul0 has quit [Ping timeout: 260 seconds]
kinope has quit [Quit: Idle for 30+ days]
karlosz has quit [Quit: karlosz]
makomo has quit [Ping timeout: 264 seconds]
imode has quit [Ping timeout: 256 seconds]
hiroaki has quit [Ping timeout: 272 seconds]
<Xach> beach: i have not tried in a while
<troydm> opened an issue for this https://github.com/cxxxr/jsonrpc/issues/27
andreyorst has joined #lisp
mrios has joined #lisp
charlie770 has quit [Ping timeout: 260 seconds]
hiroaki has joined #lisp
mrios is now known as mrios22
charlie770 has joined #lisp
charlie770 has left #lisp [#lisp]
mindCrime has joined #lisp
SpaceIgo` has quit [Remote host closed the connection]
SpaceIgor2075 has joined #lisp
_paul0 has joined #lisp
<SpaceIgor2075> Hello! Can anybody recommend any resources to learn about modules,packages, asdf and projects? i am a newbie
frodef has joined #lisp
<phoe> SpaceIgor2075: yes, one second
jjong has quit [Ping timeout: 240 seconds]
<SpaceIgor2075> (a CL newbie)
<phoe> http://www.flownet.com/gat/packages.pdf <- this one is a first
<phoe> it has an unfortunate title but pretty good content
TMA has quit [Ping timeout: 256 seconds]
<phoe> once you've absorbed this document and played in the REPL with the knowledge you've gained this way, please come back for a bit more about ASDF, systems, and projects
paul0 has quit [Ping timeout: 240 seconds]
<SpaceIgor2075> phoe: Thanks.
<SpaceIgor2075> (This title is awesome, i love it)
<phoe> (depends on the person; some people like the sarcasm, some are allergic to it)
villanella has joined #lisp
<Xach> i don't like its POV of "isn't this dumb system dumb? well, here's how it works" - I'd prefer an explanation from someone with less contempt for it.
<Xach> IIRC the explanation in PCL is ok
<phoe> yes, I see
<beach> Xach: It's OK. I see Alexandria fixed the incorrect clause order. That's all I need for now.
<Xach> beach: whenever i increase strictness (by updating my sbcl), something that is 5-10 years since last maintenance breaks
<Xach> the current problem is a widely-used library named "access" which uses function designators wrong
<beach> I can very well imagine.
<phoe> Xach: is it possible for you to also test on high safety/debug settings? this exposes bugs that are not exposed otherwise, like this cl-unicode bug that I just encountered
<phoe> can I anyhow help with this process if help is needed?
<Xach> phoe: oh, that would be interesting
<phoe> Xach: see https://github.com/edicl/cl-unicode/issues/25 for some poetry
<phoe> only seems to appear with SBCL compiler restricted to debug 3 safety 3.
<phoe> it's fixed now, but the unpatched version is in the current dist
jurov_ has joined #lisp
<beach> Oh, so you tried it with lower safety? And it passed?
jurov has quit [Ping timeout: 256 seconds]
kam1 has joined #lisp
makomo has joined #lisp
galex-713 has quit [Quit: No Ping reply in 180 seconds.]
contrapunctus has left #lisp ["Disconnected: closed"]
contrapunctus has joined #lisp
FreeBirdLjj has joined #lisp
* Xach gives hi debug/safety a try
<phoe> beach: yes
<phoe> on default optimization settings it seems no error is generated
<phoe> I assume that is why this cl-unicode issue was not noticed by Xach when preparing the QL distribution
<beach> Yes, I see.
<phoe> obviously we need to lower our expectations about safety to properly use cl-unicode
<beach> Definitely a good idea to test systems that way then.
<beach> Heh, no way!
amb007 has quit [Read error: Connection reset by peer]
<phoe> no unicode for you then, you must make-do with ISO-8859-1
amb007 has joined #lisp
<beach> :(
<phoe> (or download the patched version, which seems that you have already done)
<beach> Indeed.
FreeBirdLjj has quit [Ping timeout: 260 seconds]
jurov has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
<heisig> In case anyone is wondering, the correct way to restrict SBCL's compiler policy is (sb-ext:restrict-compiler-policy 'safety 3).
<heisig> (Just posting it here, because I didn't know it some time ago)
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
jurov_ has quit [Ping timeout: 264 seconds]
amb007 has quit [Read error: Connection reset by peer]
jurov_ has joined #lisp
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
jurov has quit [Ping timeout: 256 seconds]
amb007 has joined #lisp
makomo_ has joined #lisp
makomo has quit [Ping timeout: 246 seconds]
galex-713 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
saganman has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
VincentVega has joined #lisp
makomo has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
makomo_ has quit [Ping timeout: 264 seconds]
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
<VincentVega> guys, i am reading the cl-containers docs for red-black trees and don't get one thing: is there really no function to find the closest element to a given or am i just not seeing it?
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
judson_ has joined #lisp
judson_ has quit [Ping timeout: 260 seconds]
<ck_> VincentVega: what about best-item ?
<VincentVega> ck_: i think best item computes the function on each node
mindCrime has quit [Ping timeout: 260 seconds]
<ck_> yes, looks that way. It depends on what you mean by 'closest' then. If you're looking for something like a range test for the ordering that the tree uses.. well I don't see one either
karlosz has joined #lisp
<VincentVega> ck_: yep, that one : )
Colleen has quit [Quit: Colleen]
<ck_> looks like you get to implement your own tree walking then, have fun
charles` has joined #lisp
Colleen has joined #lisp
rogersm has joined #lisp
<VincentVega> ck_: looks like it, thanks for the sanity check!
Bike has joined #lisp
<ck_> if you need this type of look-up often or mostly, maybe a different data structure would be a better choice
<ck_> an Interval Tree for example
notzmv has quit [Remote host closed the connection]
<SpaceIgor2075> is (set 'x 13) equivalent to (setq x 13)?
aindilis` has joined #lisp
<VincentVega> ck_: nah, it's for some occasional queries, so it's cool : )
aindilis has quit [Ping timeout: 256 seconds]
<Xach> SpaceIgor2075: no
rogersm has quit []
<Xach> SpaceIgor2075: consider (let ((x 42)) (setq x 13))
notzmv has joined #lisp
skapata has joined #lisp
benjamindc has joined #lisp
notzmv has quit [Remote host closed the connection]
notzmv has joined #lisp
Nilby has quit [Ping timeout: 272 seconds]
euandreh has quit [Remote host closed the connection]
aindilis` has quit [Remote host closed the connection]
orivej has quit [Ping timeout: 256 seconds]
orivej has joined #lisp
notzmv has quit [Remote host closed the connection]
notzmv has joined #lisp
<benjamindc> IS there a way to get "(asdf:test-system "system")" to return an exit code of 1 when executed in a script for CI pipelines?
notzmv has quit [Remote host closed the connection]
Inline has joined #lisp
<phoe> benjamindc: the convention is generally that if asdf:test-system signals an error, then it has failed
SpaceIgor2075 has quit [Ping timeout: 272 seconds]
<phoe> so you can do it like (handler-bind ((error (lambda (x) (print x) (print stacktrace) (exit 1)))) (asdf:test-system :foo) (exit 0))
<aeth> benjamindc: In general, just ignore asdf:test-system in CI pipelines and just directly use the non-portable return value of whatever test suite you're using. ASDF doesn't want to have asdf:test-system return a non-portable return value, making it near-useless for CI
<aeth> phoe's answer is the correct answer, but it winds up being like 5 lines of code just to return something that your test suite already returns that asdf:test-system is blocking...
<aeth> (non-portable as in not portable between test suites)
renzhi has quit [Ping timeout: 260 seconds]
<aeth> benjamindc: Sorry, phoe's answer is almost the correct answer. You want to exit with (uiop:quit 1)
<benjamindc> aeth are you using a custom test suite for your zombi-raptor library?
<aeth> no, but I'm not very happy with any of them having used almost all of them in different projects of mine over the years
<aeth> if you merged them all together you might have a decent feature set :-p
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
<benjamindc> aeth i follow your advice, but my script returns 0 when there are failing tests: https://pastebin.com/zgKD6F4n
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
<phoe> depends on your test framework
<phoe> if your test framework returns gracefully when you run the test suite and there are failures, then you get what you see
<benjamindc> curses
<aeth> benjamindc: most of them return the number of failed tests or can be configured to do so
<phoe> you'll need to analyze the results manually and if there are any failures then you'll need to (exit 1)
notzmv has joined #lisp
<benjamindc> alright. thanks for the advice
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
surabax_ has joined #lisp
surabax has quit [Ping timeout: 260 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
Lord_of_Life_ has joined #lisp
surabax__ has joined #lisp
Lord_of_Life has quit [Ping timeout: 256 seconds]
amb007 has joined #lisp
surabax__ has quit [Client Quit]
Lord_of_Life_ is now known as Lord_of_Life
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
hnOsmium0001 has joined #lisp
surabax_ has quit [Ping timeout: 256 seconds]
saganman has quit [Quit: WeeChat 1.6]
amb007 has quit [Read error: Connection reset by peer]
rumbler31 has joined #lisp
amb007 has joined #lisp
thmprover has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
Jesin has quit [Quit: Leaving]
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
KREYREEN has quit [Remote host closed the connection]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
KREYREEN has joined #lisp
kam1 has quit [Ping timeout: 264 seconds]
heisig has quit [Quit: Leaving]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
KREYREEN has quit [Remote host closed the connection]
KREYREEN has joined #lisp
random-nick has quit [Quit: quit]
amb007 has quit [Read error: Connection reset by peer]
kam1 has joined #lisp
amb007 has joined #lisp
random-nick has joined #lisp
benjamindc has quit [Remote host closed the connection]
ykm has quit [Remote host closed the connection]
oni_on_ion has joined #lisp
oni-on-ion has quit [Ping timeout: 260 seconds]
Jesin has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
Inline has quit [Quit: Leaving]
rumbler31 has quit [Remote host closed the connection]
fanta1 has quit [Quit: fanta1]
birdwing has quit [Ping timeout: 264 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
KREYREEEN has joined #lisp
galex-713 has quit [Ping timeout: 256 seconds]
KREYREEN has quit [Ping timeout: 240 seconds]
cosimone has quit [Quit: cosimone]
Inline has joined #lisp
Jeanne-Kamikaze has joined #lisp
<emma> Not exactly lisp but do any of you enjoy electronic music like trance, house, or techno?
* phoe gently guides the discussion to #lispcafe
<phoe> I think there will be some people in there who'd like to indulge in that discussion
<phoe> (possibly including me)
Inline has quit [Quit: Leaving]
rumbler31 has joined #lisp
aindilis has joined #lisp
KREYREEEN has quit [Remote host closed the connection]
KREYREN has joined #lisp
xanderle has joined #lisp
rumbler31 has quit [Ping timeout: 260 seconds]
v_m_v has quit [Remote host closed the connection]
v_m_v has joined #lisp
cosimone has joined #lisp
barbanegra has left #lisp ["User left"]
jw4 has quit [Read error: Connection reset by peer]
andreyorst has quit [Remote host closed the connection]
jw4 has joined #lisp
andreyorst has joined #lisp
shka_ has quit [Ping timeout: 260 seconds]
notzmv has quit [Remote host closed the connection]
notzmv has joined #lisp
v_m_v has quit [Remote host closed the connection]
notzmv has quit [Remote host closed the connection]
cosimone has quit [Quit: cosimone]
hiroaki has quit [Ping timeout: 272 seconds]
kam1 has quit [Ping timeout: 246 seconds]
entre-parenteses has joined #lisp
wsinatra has joined #lisp
ech has joined #lisp
<Xach> phoe: building with safety 3/debug 3 is a lot slower
<phoe> Xach: hmmm
<phoe> I can imagine the generated code must contain much more debug information and runtime checks
<Xach> almost done though
<phoe> possibly that's why generating it is slower, too
<phoe> but it's just speculation on my side
<phoe> did that uncover any new issues so far?
<Xach> no report until the end
* phoe wiggles in anticipation
rjcks_ has joined #lisp
Lycurgus has quit [Ping timeout: 240 seconds]
v_m_v has joined #lisp
ebrasca has quit [Remote host closed the connection]
rjcks has quit [Ping timeout: 272 seconds]
charles` has quit [Ping timeout: 256 seconds]
<Xach> almost at the end
v_m_v has quit [Remote host closed the connection]
v_m_v has joined #lisp
wsinatra_ has joined #lisp
<Xach> phoe: http://report.quicklisp.org/2021-01-02/failure-report.html has the report but there's a lot of noise from the things sbcl broke recently
<Xach> but some other things are in there too
<Xach> gtirb breakage seems new
<phoe> Unhandled SIMPLE-CONDITION in thread #<SB-THREAD:THREAD "main thread" RUNNING {1001A50103}>: break
<phoe> well
<phoe> The constant MINUTES-PER-INTERNAL-TIME-UNIT is being redefined (from 1.6666668e-8 to 1.6666666e-8)
<phoe> this one is interesting
<phoe> there's lots of those
<Xach> yes
<Xach> i don't get the increased # of arithmetic error COMMON-LISP:FLOATING-POINT-INVALID-OPERATION signalled
<Xach> I don't know if the "unknown type specifier" errors are sbcl or debug/safety
<phoe> floating-point-invalid-operation? hmmmmm
<phoe> which SBCL did you build on?
<phoe> current master?
<Xach> phoe: not quite current. 2.0.11.142-1b0795826 (it's at the top of the report)
<phoe> oh
<phoe> the current master includes some floating point stuff that me and mfiano have coerced stassats into adding
<phoe> so it's good that it's not because of this
<phoe> oh
<phoe> it's trying to #'< two NaNs
<phoe> or rather, it's trying to make a numeric type with NaNs...
<Xach> Which?
<phoe> (SB-KERNEL:MAKE-NUMERIC-TYPE :CLASS COMMON-LISP:FLOAT :FORMAT COMMON-LISP:SINGLE-FLOAT :COMPLEXP :REAL :LOW #<SINGLE-FLOAT quiet NaN> :HIGH #<SINGLE-FLOAT quiet NaN> :ENUMERABLE COMMON-LISP:NIL)
<phoe> this cannot end well
<Xach> there are other failures with the same message
<Xach> ryeboy and others
<phoe> yes
<Xach> are they all from the same root cause?
<phoe> no idea
<phoe> hmmmm
<phoe> yes, seems so
Alfr_ has quit [Remote host closed the connection]
<Xach> would it help to use latest sbcl instead?
<phoe> I don't think so
karlosz has quit [Remote host closed the connection]
* Xach does not know what it all means
Alfr has joined #lisp
<phoe> ryeboy chokes on protobuf
<phoe> osmpbf does, too
<Xach> ah ok
<phoe> for some reason, this causes the SBCL compiler to try and compare two NaNs via #'>
<phoe> which traps the FPU
<phoe> which bubbles up as an error.
mindCrime has joined #lisp
<phoe> gtirb also chokes on protobuf
<phoe> I can reproduce the protobuf failure
<Xach> oh loard
<mfiano> Is it time for the ecosystem to start adopting versioned dependencies yet?
<Xach> i don't think that would help my recent problems, which stem from SBCL detecting more invalid code at compile-time.
narimiran has quit [Ping timeout: 256 seconds]
v_m_v has quit [Remote host closed the connection]
<phoe> (declaim (sb-ext:shut-up-and-compile-it-worked-on-the-previous-release))
pve has quit [Quit: leaving]
<phoe> mfiano: versioned dependencies can't help you if all versions are broken
<Xach> phoe: do you think the error is a mistake in protobuf or a mistake in sbcl?
<phoe> Xach: I have no idea - it is on the intersection
<phoe> lemme check real quick
<phoe> ...
<phoe> this is a SBCL bug
<phoe> (cl:define-symbol-macro foo #.(sb-kernel:make-single-float -1)) works fine on default safety/speed
<Xach> NOOOO
<phoe> but chokes on debug 3/safety 3
<mfiano> Does not choke here
edgar-rft has quit [Quit: Leaving]
<phoe> try wrapping that in compile nil lambda
junkicide has joined #lisp
<mfiano> That fails even with default debug/safety
<phoe> welp
<phoe> no idea then! it built fine for Xach on default debug/safety
<mfiano> Minimum reproducible error: (compile nil (lambda () #.(sb-kernel:make-single-float -1)))
<phoe> nice
<phoe> why did it work previously though?
<phoe> why does protobuf seem to compile on default settings?
* phoe thonk
<phoe> enough thonking for today
<phoe> good night
villanella has quit [Quit: villanella]
<slyrus> nice find phoe!
<phoe> slyrus: wasn't me
<slyrus> ah, mfiano?
<phoe> all I did was tell Xach to build with a different safety/debug
<phoe> the rest is directed by robert b. weide
<slyrus> got it, thanks
<mfiano> Wasn't me this time. I did find about a dozen SBCL bugs over the last few weeks that have all been fixed, but not this one
rjcks_ has quit [Quit: leaving]
entre-parenteses has quit [Ping timeout: 240 seconds]
travv0 has joined #lisp
dhil has joined #lisp
imode has joined #lisp
hiroaki has joined #lisp
v0|d has joined #lisp
_paul0 has quit [Quit: Leaving]
<thmprover> Is there a way to verify `double-float` is in fact IEEE 754 double precision (since the CL standard doesn't require it)?
<aeth> there's an :IEEE-FLOATING-POINT in *features* but they might not all have that because I don't think that's standard
<phoe> #+ieee-floating-point t #+ieee-floating-point nil
<aeth> CCL doesn't have it
<aeth> so you could do (or ccl ieee-floating-point)
<aeth> weird, then, that CCL doesn't have it
charles` has joined #lisp
<thmprover> I'd prefer to have an error raised if the CL implementation does not support IEEE 754, so the user would know and be sufficiently alarmed/informed.
<mfiano> CCL is non-conforming in this regard. I brought it up a while ago to them
<aeth> thmprover: based on the implementation support of float-features, IEEE is pretty much guaranteed to be present on any living implementation unless you stretch the definition of "living" to include CLISP. https://github.com/Shinmera/float-features
<phoe> mfiano: oh? what do you mean?
<phoe> you mean the missing feature?
<mfiano> :ieee-floating-point
<mfiano> If present, indicates that the implementation purports to conform to the requirements of IEEE Standard for Binary Floating-Point Arithmetic.
<mfiano> Their documentation purports to conform
<phoe> yes, I've made an issue for it now
<frodef> did clisp die?
<charles`> What is the deal with base64 there seems to be two packages for it
<phoe> frodef: depends on your definition of "die"
<aeth> Airship Scheme does #+(or ccl ieee-floating-point) and probably will have to for some time even if CCL adds it to *features*.
<phoe> charles`: only two?
<thmprover> aeth: I hoped that most modern Lisp implementations support it, but I am doing numerical analysis, so I want to be *certain*.
<aeth> thmprover: Then use float-features and if it doesn't run, then it's uncertain :-)
<phoe> there's base64, cl-base64, qbase64, and s-base64, that's four in Quicklisp
<charles`> two being loaded in and arguing with each other
<phoe> charles`: oh
<aeth> thmprover: you probably want float-features:with-float-traps-masked anyway
<phoe> nickname conflicts?
<charles`> indeed
<aeth> frodef: No release in 10 years as of last July... So 10.5 years now, I guess.
<phoe> escalate to the maintainers and tell them to fix their stuff up. we've been in this ground multiple times now, and local nicknames exist nowadays.
<phoe> s/in/on/
<mfiano> There is plenty of alive software that has not made a release
<aeth> frodef: And the pile of things that it's missing because of that is climbing, e.g. package local nicknames
<thmprover> aeth: good to know about the package; but you mean, I should wrap all floating point computation in a `(with-float-traps-masked ...)`?
<aeth> thmprover: and t, i.e. mask them all
<aeth> So you get NaN/inf
<aeth> Instead of errors.
<phoe> aeth: there's a MR with PLNs waiting
<aeth> Then at the end error
rumbler31 has joined #lisp
<thmprover> aeth: gotchya, thanks for the heads up :)
<phoe> just not merged.
<aeth> mfiano: Plenty of alive software hasn't made a release in 10 years. However, Common Lisp gets this ecosystem stability because it shifts the burden of a lot of bitrot onto the implementations, which must continue to add things over time.
<aeth> mfiano: Sure, portable CL will continue to run in CLISP as long as it remains ANSI compliant with no compliance bugs (which undoubtably exist in every implementation)
<aeth> mfiano: But most nontrivial CL uses some nonportable code, either as extensions or libraries.
<mfiano> C++ is over there if you require implementations to change
<aeth> e.g. If you use package local nicknames, you can't say that CLISP is living because you're actively working to break large parts of the Quicklisp ecosystem in CLISP.
<aeth> That's just the most popular one, there's lots of other assumptions people make that don't work on CLISP.
<mfiano> One can use defpackage-plus to gracefully fall back to global nicknames if you need to test your code on CCL
<aeth> float-features is another one. Most numerical code should have with-float-traps-masked, and maybe you can have a fallback for implementations that float-features doesn't support, but if you're using it, you might also want to be able to deal with infinities and NaNs
<mfiano> I try not to use implementation features apart from PLN because I value portability, and it took a look time before I accepted I would like to use PLN because of this
<mfiano> s/look/long/
<mfiano> also s/CCL/CLISP/
<mfiano> I cant think today apparently. Off to go read a book
<aeth> I don't test in or support CLISP anymore because enough of my dependencies are broken in it these days that it's not worth the effort to figure out exactly what subset I can test in it.
<mfiano> Reminds me of cl-opengl and how it is incredibly slow because of traps
<aeth> The worst dependency of mine is probably cl-sdl2, which I need to replace at some point. I tested it in Roswell a while back and it only ran in SBCL, CCL, and ECL.
<aeth> And barely in ECL.
<mfiano> It wraps float trapping around every call, and on the way out in unwind-protect, which accounted for about 30% of the runtime last time I made a flamegraph
dhil has quit [Ping timeout: 240 seconds]
<charles`> Speaking of CLISP, can it do threads?
<phoe> AFAIK yes
<mfiano> One can push a feature, but a large number of shader programs would fail to link on Intel/Mesa.
<phoe> what feature?
<mfiano> forget off hand. the one cl-opengl uses to control masking traps
<phoe> oh, I see
<mfiano> Here is a flamegraph view of one draw call for example. Look at that that time spent: https://i.lisp.cl/JmiUBd.png
orivej has quit [Ping timeout: 260 seconds]
kaftejiman has quit [Ping timeout: 240 seconds]
karlosz has joined #lisp
<mfiano> Xach: curious, I recall recently you did some image thing with an octree. Did you write the octree yourself, or use some library?
varjag has quit [Remote host closed the connection]
wsinatra has quit [Quit: WeeChat 3.0]
frgo has quit [Remote host closed the connection]
frgo has joined #lisp