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
aartaka has joined #lisp
Fare has joined #lisp
IPmonger has quit [Quit: ZNC 1.7.5+deb4 - https://znc.in]
IPmonger has joined #lisp
Fare has quit [Ping timeout: 260 seconds]
aartaka has quit [Ping timeout: 246 seconds]
nullman has joined #lisp
Nilby has joined #lisp
tamarindo has quit [Remote host closed the connection]
tamarindo has joined #lisp
nckx has quit [Quit: Updating my Guix System — https://guix.gnu.org]
shifty has joined #lisp
nckx has joined #lisp
pillton has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
pillton has joined #lisp
Fare has joined #lisp
Bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
Bhartrihari has joined #lisp
mbomba has joined #lisp
karlosz has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
luckless has joined #lisp
vutral has quit [Quit: Connection closed for inactivity]
Bhartrihari has left #lisp ["Disconnected: Replaced by new connection"]
Bhartrihari has joined #lisp
miasuji has quit [Ping timeout: 264 seconds]
Fare has quit [Ping timeout: 260 seconds]
dbotton has joined #lisp
rpg has joined #lisp
Lord_of_Life_ has joined #lisp
karlosz has quit [Quit: karlosz]
dbotton_ has quit [Ping timeout: 240 seconds]
Lord_of_Life has quit [Ping timeout: 260 seconds]
quazimodo has quit [Ping timeout: 264 seconds]
orivej has quit [Ping timeout: 258 seconds]
wxie has joined #lisp
IPmonger_ has joined #lisp
IPmonger has quit [Ping timeout: 264 seconds]
EvW has quit [Ping timeout: 268 seconds]
sympt has joined #lisp
Alloc has quit [Ping timeout: 272 seconds]
Alloc has joined #lisp
Fare has joined #lisp
jlarocco has joined #lisp
jlarocco has quit [Ping timeout: 260 seconds]
mbomba has quit [Quit: WeeChat 2.9]
space_otter has quit [Remote host closed the connection]
miasuji has joined #lisp
jlarocco has joined #lisp
jlarocco has quit [Ping timeout: 268 seconds]
ech has quit [Remote host closed the connection]
Fare has quit [Ping timeout: 260 seconds]
Alloc has quit [Ping timeout: 240 seconds]
Josh_2 has quit [Remote host closed the connection]
Fare has joined #lisp
Alloc has joined #lisp
toorevitimirp has joined #lisp
oxum has joined #lisp
Stanley00 has joined #lisp
wxie has quit [Ping timeout: 264 seconds]
wxie has joined #lisp
meowphius has quit [Ping timeout: 272 seconds]
oxum has quit [Remote host closed the connection]
Mixed_Case has joined #lisp
jlarocco has joined #lisp
Gerula has joined #lisp
thmprover has quit [Quit: Goodnight, ladies, good night, sweet ladies, good night, good night]
<dbotton> why did CLOS introduce a new term slots? For example could have called them fields from structures etc
jlarocco has quit [Ping timeout: 240 seconds]
Stanley00 has quit [Read error: Connection reset by peer]
Stanley00 has joined #lisp
<Mixed_Case> Hey all, I've got a slightly funky question. I've been playing around with a function that wraps FUNCALL. Let's call it SLOT-FUNCALL. Instead of a function, it takes an object and a slot name. It accesses the named slot of the object and the does a FUNCALL on the result. The objects it operates on are assumed to be immutable. So, if the
<Mixed_Case> object and slot name are known at compile time, I want to perform the lookup at compile time and emit a direct call to the function instead. I wrote a compiler macro that does that, but it gets a bit funky. Suppose the result of the slot lookup is the symbol BAR. If I just emit (BAR) then it might actually call a local function of the same name.
<Mixed_Case> That would be behaviorally different from the (FUNCALL 'BAR) that would have happened normally. So, that's not kosher. I could emit a FUNCALL form, but SBCL doesn't seem to want to do things like respect INLINE declarations for FUNCALLs of symbols. What's the easiest pattern for emitting a function call to the global function value for a symbol
<Mixed_Case> that won't be effected by lexical context and permits all normal optimizations to happen?
oxum has joined #lisp
oxum has quit [Remote host closed the connection]
qhong has quit [Remote host closed the connection]
miasuji has quit [Ping timeout: 264 seconds]
Alfr_ has joined #lisp
<beach> Good morning everyone!
Alfr has quit [Ping timeout: 268 seconds]
<beach> Mixed_Case: (funcall (fdefinition 'bar) ...)
<Mixed_Case> beach, yeah, but are implementations allowed to inline BAR when they encounter that call? Getting a call to the global definition is easy. I want a call that is equivalent to (BAR) in a nil lexical environment
<beach> I think your only possibility is to give it a different name then, like a gensym.
<beach> At least I can't think of anything else.
kir0ul_ has joined #lisp
kiroul has quit [Ping timeout: 260 seconds]
<Mixed_Case> I guess I'll just have to add it to my wish list for "things that I want the next revision of CL to address". You know, in case Santa is feeling pretty generous one year and decides to re-convene the standards committee
<beach> There is not going to be a next revision of the standard.
<Mixed_Case> I know
<White_Flame> yeah, I've been fiddling in my repl, and I agree with beach that if the point is to have a unique name that can't be shadowed, and act as a full defun, the proper solution is defun gensym
<Mixed_Case> But I can dream
<beach> Like I keep saying over and over, language design is hard, and adding a single feature may very well break lots of things.
<Mixed_Case> @beach White_Flame definitely, but its a bit awkward for my use case. The symbol is provided by someone else. I'd want to generate the wrapper function automatically, and that gets pretty awkward quickly. At least, for my use case it does
oxum has joined #lisp
<Mixed_Case> Anyway, inlinability isn't super important. I just thought it was a fun challenge. I don't think there is a clean solution to the challenge, so I'm going to just go with a simple (FUNCALL 'BAR) and be content with it
<White_Flame> since it doesn't need to be dynamic, a defun'd gensym is "clean" as well
<White_Flame> (meaning all is set up just once at compile time)
Gerula has quit [Ping timeout: 272 seconds]
<Mixed_Case> Gets awkward if I don't know the lambda list of the target function, though! I could take in a &REST and then APPLY the target function, but now I have to hope that the macro generating the gensym'd DEFUN is in a nil lexical environment!
Gerula has joined #lisp
<Mixed_Case> also, even if I knew the lambda list, I would have to hope that the DEFUN I output is evaluated in a nil lexical environment
<Mixed_Case> As best I can tell, there's no way to do it without a sharp edge somewhere
<Mixed_Case> other than just giving up on inlining, that is
saganman has joined #lisp
zacts has joined #lisp
rpg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Stanley00 has quit [Read error: Connection reset by peer]
Stanley00 has joined #lisp
<beach> Mixed_Case: Why don't you look up the symbol-function at compile time?
<beach> Then you get (funcall <some-function> ...)
<beach> I am sure SBCL can inline that.
<White_Flame> nope
<beach> Oh, OK.
<White_Flame> tried multiple variations on that
<White_Flame> and of course, with `(funcall ,(symbol-function ...)) it doesn't have a make-load-form for the function object
wxie has quit [Quit: wxie]
<Mixed_Case> Yep! I tried that
<beach> Sure.
<beach> Mixed_Case: Rather than working on a new revised standard, you may want to work on SBCL then.
<White_Flame> inlining really is just for named functions
<beach> I see.
<Mixed_Case> @beach it wouldn't be my first patch to SBCL!
<White_Flame> (which again points to the gensym solution)
<Mixed_Case> I have been trying to get more acquainted with its internals
<beach> Great!
<Mixed_Case> its tough, though. SBCL is complex! You wouldn't happen to know a good intro to SBCL's shenanigans would you?
<White_Flame> there is a #sbcl channel for the devs
<beach> Mixed_Case: Me? No, I am working on a different implementation. :)
<White_Flame> (ah, you're already in that channel, too)
<Mixed_Case> @beach which implementation are you working on?
frost-lab has joined #lisp
saganman has quit [Read error: Connection reset by peer]
<beach> minion: Please tell Mixed_Case about SICL.
<minion> Mixed_Case: SICL: SICL is a (perhaps futile) attempt to re-implement Common Lisp from scratch, hopefully using improved programming and bootstrapping techniques. See https://github.com/robert-strandh/SICL
<Mixed_Case> Ooo
karlosz has joined #lisp
kiroul has joined #lisp
space_otter has joined #lisp
galex-713 has quit [Ping timeout: 268 seconds]
kir0ul_ has quit [Ping timeout: 264 seconds]
quazimodo has joined #lisp
galex-713 has joined #lisp
jlarocco has joined #lisp
jlarocco has quit [Ping timeout: 260 seconds]
oxum has quit [Remote host closed the connection]
bocaneri is now known as Sauvin
oxum has joined #lisp
kiroul has quit [Ping timeout: 260 seconds]
astronavt has quit [Quit: Leaving]
narimiran has joined #lisp
mokulus_ has quit [Read error: Connection reset by peer]
mokulus_ has joined #lisp
jlarocco has joined #lisp
miasuji has joined #lisp
shka_ has joined #lisp
Fare has quit [Ping timeout: 260 seconds]
pankajsg has joined #lisp
quazimodo has quit [Ping timeout: 256 seconds]
Cymew has joined #lisp
ski has quit [Ping timeout: 240 seconds]
ski has joined #lisp
frost-lab has quit [Quit: Connection closed]
Jeanne-Kamikaze has quit [Ping timeout: 256 seconds]
oxum has quit [Remote host closed the connection]
oxum has joined #lisp
oxum has quit [Ping timeout: 264 seconds]
shifty has quit [Ping timeout: 240 seconds]
toorevitimirp has quit [Quit: Konversation terminated!]
jlarocco has quit [Ping timeout: 264 seconds]
orivej has joined #lisp
orivej has quit [Ping timeout: 260 seconds]
miasuji has quit [Ping timeout: 264 seconds]
ljavorsk has joined #lisp
aartaka has joined #lisp
frost-lab has joined #lisp
ski has quit [Ping timeout: 260 seconds]
oxum has joined #lisp
tiwEllien has joined #lisp
gbr___ has joined #lisp
akoana has quit [Quit: leaving]
treflip has joined #lisp
HDurer has quit [Remote host closed the connection]
oxum has quit [Ping timeout: 240 seconds]
toorevitimirp has joined #lisp
skapata has quit [Remote host closed the connection]
cosimone has joined #lisp
shifty has joined #lisp
Inoperable has quit [Excess Flood]
Inoperable has joined #lisp
pve has joined #lisp
Krystof has quit [Ping timeout: 260 seconds]
jprajzne has joined #lisp
Lord_Nightmare has quit [Quit: ZNC - http://znc.in]
liberliver has joined #lisp
Lord_Nightmare has joined #lisp
cosimone has quit [Remote host closed the connection]
cosimone has joined #lisp
Stanley00 has quit []
cosimone has quit [Remote host closed the connection]
cosimone has joined #lisp
orivej has joined #lisp
zacts has quit [Quit: leaving]
space_otter has quit [Remote host closed the connection]
hnOsmium0001 has quit [Quit: Connection closed for inactivity]
Inoperable has quit [Excess Flood]
Alloc has quit [Ping timeout: 264 seconds]
Stanley00 has joined #lisp
jlarocco has joined #lisp
Inoperable has joined #lisp
jlarocco has quit [Ping timeout: 264 seconds]
Alloc has joined #lisp
<_death> dbotton: CLOS did not introduce the term "slot".. it was introduced much earlier, and used for example in https://web.media.mit.edu/~minsky/papers/Frames/frames.html
Gerula has quit [Ping timeout: 240 seconds]
cosimone has quit [Remote host closed the connection]
Alloc has quit [Ping timeout: 240 seconds]
Alloc has joined #lisp
hendursa1 has joined #lisp
<luis> Mixed_Case: https://research.gold.ac.uk/id/eprint/2336/1/sbcl.pdf might not be a bad intro
hendursaga has quit [Ping timeout: 240 seconds]
<easye> Mornin' Anyone know how to wrangle ASDF to give me the simple list of dependent systems for a given systems wrt. the current *FEATURES*? <https://plaster.tymoon.eu/view/2107#2107>
<flip214> easye: does ql-dist:dependency-tree help?
<easye> flip214: I will check that now. Thanks! I looked first at ioa's grapher but that only very lightly goes into the jungle of ASDF.
<easye> Unfortunately, ql-dist:dependency-tree "just" seems to be walking its own database, not the ASDF graph. But I will study harder...
imode has quit [Ping timeout: 246 seconds]
<flip214> easye: is the ASDF graph different?
<easye> asd-graph has a slightly different mandate, and it is parsing ASDF syntax directly rather than interrogating the ASDF model.
<easye> Alright, I got something that looks like it will work for a generic ASDF system in the wild <https://plaster.tymoon.eu/view/2107#2107>
<easye> To paraphrase Barbie "ASDF is hard"
<madnificent> easye: XD
alexshendi has joined #lisp
duuqnd has joined #lisp
treflip has quit [Quit: WeeChat 2.6]
<Nilby> easye: Maybe something like this: (mapcar (_ (asdf/find-component:resolve-dependency-spec (asdf:find-system "some-system" nil) _)) (asdf:system-depends-on (asdf:find-system "some-system" nil)))
zacts has joined #lisp
<Nilby> easye: er actually (mapcar (lambda (x) (asdf/find-component:resolve-dependency-spec (asdf:find-system "some-system" nil) x)) (asdf:system-depends-on (asdf:find-system "some-system" nil)))
<easye> I think <https://plaster.tymoon.eu/view/2107#2107> now does what I want.
<Nilby> Nice.
<easye> ASDF should export something like this, mebbe I can patch it when I have time.
<Nilby> I agree. I could use this too.
<easye> Nilby: If ya got the cycles, please feel free to submit a merge request. I'm busy a) fixing abcl-1.8.0 and b) pursuing a standalone pgloader.jar
<zacts> is abcl the common lisp interpreter that runs on android?
<phoe> abcl runs on the JVM
<easye> And in the "wishlist for what should be done", ASDF could use a tutorial/more documentation on how to parse system dependencies.
<zacts> oh
<zacts> I see
<easye> zacts: Unfortunately no. I think that is ECL?
<zacts> ok
Alloc has quit [Ping timeout: 240 seconds]
<dim> I'm not sure it's the same thing that I wanted for ASDF, but it looks like what you're doing here easye could be useful: I wanted to convince ASDF to avoid loading again pgloader dependencies when started from the pgloader image and loading pgloader from sources (for installing/shipping a bug fix)
Alloc has joined #lisp
<dim> https://github.com/dimitri/pgloader/blob/master/src/hooks.lisp contains a sad state of things I tried that didn't work
<easye> dim: I think what you want could be done.
<Nilby> easye: I'll see what I can do. I'm going to test it in my dependency tree thingy. Then perhaps I'll try to overcome my phobia and backlog of asdf patches.
<easye> It isn't easy to understand if it could be done by manipulating *FEATURES* changed in ASDF defs, or if one would need to override ASDF operatios.
<dim> see https://github.com/dimitri/pgloader/issues/133 for context / information
luckless has quit [Quit: luckless]
luckless has joined #lisp
luckless has quit [Client Quit]
luckless has joined #lisp
<easye> dim: Your statement above is much clearer to me that issues/133, but I know what you want.
luckless has quit [Client Quit]
luckless has joined #lisp
<dim> issue 133 is from someone who tried to compile/load pgloader using pgloader image rather than SBCL ; the pgloader image contains SBCL and all pgloader dependencies, so it should work in theory, but ASDF dependency resolution insists on finding .asd files so if you don't have a “lisp hacker” setup you can't re-load pgloader from sources using the pgloader image
<Nilby> --self-upgrade seems like an ambitious but excellent feature
andinus has joined #lisp
<dim> it looked easy to provide when I got to understand that you actually have the whole of SBCL in the image of save-lisp-and-die
<dim> but ASDF got it the way
<easye> dim: In that case, one can probably manipulate the ASDF source registry programatically to do what you want.
<easye> It is possible to push a new dependency graph in memory, and tell ASDF to ignore searching the filesystem.
ski has joined #lisp
<easye> And one can use ASDF:CLEAR-SYSTEM to remove existing problematic references.
<dim> well I think I failed to learn how to do that
<dim> IOW it sounds like a good way to do it, yes
<Nilby> dim: There must be a way. Of course probably the crucial part is as noted, not reloading c libraries like ssl and mysql.
<dim> the mysql driver used by pgloader is all CL code: qmynd
<easye> ASDF:CLEAR-SYSTEM won't nuke CFFI entries to shared object.
<dim> protocol level implementation of the mysql protocol, missing MySQL 8.0.1 new default authentication ; if you like playing with low-level bits API and hashing algorithms, please see about fixing that ;-)
<easye> You'll have to special-case that (if possible, as I am not sure how all implementation actually implement CFFI's code to remove shared objects)
<dim> openssl is its own hell loop, be warned
<dim> security principles push towards depending on a solid shared implementation; still I wish someone would implement a pure CL modern TLS stack just like they did in Go
<_death> cl-tls is a start
<dim> it's a dream, not even a plan yet, or it has changed in the past year or two... last I had a look, actually trying to use it in your application was not on the roadmap (yet?), it was at the state of “if you feel adventurous you might do some interactive https connects with it”
<flip214> re-implementing is prone to fall in the same specification traps as all the other implementations... and might give rise to all kinds of compatibility problems
<dim> sometimes I feel like I should invest in one of the proprietary CL offerings and have a binary download section of pgloader with builds from either LispWorks or Allegro, at a high price, if it just works I guess some people would go ahead and buy it --- the ABCL .jar thing would be an alternative to that
<_death> dim: if no one does the work, it doesn't get done
<dim> _death: I know. I had to package 60+ CL libs for debian. I know.
<dim> the great news is that I'm left with 48 apparently now (https://qa.debian.org/developer.php?email=dim%40tapoueh.org), the others have been re-assigned from me to a proper maintenance team!
<Nilby> Wow, as individual debian packages that's quite an accomplishment.
<dim> _death: all I'm saying is that shipping software written in CL is hard, very hard, still so in 2020
<easye> dim: the ABCL thing will be slow to load.
<dim> using CL for your own local hacks, or within the CL community, is a great experience
<dim> using CL to ship software, I'm not sure I want to do it again :/
<dim> easye: is that because the .jar is not going to be a zip file of .class bytecode?
<_death> dim: these issues are not specific to CL.. that's why things like flatpak exist
ex_nihilo has quit [Read error: Connection reset by peer]
terpri has quit [Read error: Connection reset by peer]
<easye> dim: no, the root problem is that ABCL is still quite slow to load *any* code. It has to pass a bunch of bytes to the classloader, which has to verify, then add.
<easye> I have some ideas about how to speed this up, but no practical implementations at this point.
Oddity__ has joined #lisp
<dim> yeah well, I have only shipped software in a handful of stacks: C, Postgres extensions (mix of C, SQL, PLpgSQL), Common Lisp, and some in Python ; and CL has been the worst in every way you can think of, starting with the amount of efforts needed compared to the poor results (for a lot of people the result is *not* usable at all, I keep seeing users find other solutions that are half as good as pgloader, from their own reports, but easier to get working)
terpri_ has joined #lisp
ex_nihilo_ has joined #lisp
<dim> so I feel like I'm ranting here, sorry about that, I wish we had a known way to address those problems, and I would happily envision joining the team to make it happen
<Nilby> Thats sad becuase pgloader is probably one of the most widely used CL program.
<dim> easye: pgloader runs are from minutes (on very very small projects) to hours, up to several days, I don't think initial load time is going to matter that much
<easye> dim: good. That will help. The ability to use JDBC might make it more useful to people.
<aeth> days??
Oddity_ has quit [Ping timeout: 260 seconds]
<dim> Nilby: most people realise it's written in CL because of SBCL messages that heap is exhausted
<easye> aeth: databases can be huge these days.
<easye> As disk and memory are so cheap.
<dim> easye: the ability to use JDBC would allow me to stop maintaining qmynd and have a solution to authentication to Cloud MySQL instances, and also stop depending on FreeTDS(.so) for MS SQL and have native windows support, and also use JDBC Oracle drivers, etc etc ; basically removes the burden of finding/maintaining proper drivers for many databases
<easye> dim: right. But you would have to biurcate the lower levels of pgloader into ABCL vs. others?
<easye> Or would you just ship purely on ABCL?
<dim> yes, I would have to maintain conditional build of the software when targetting ABCL, can't use JDBC otherwise
<easye> So "stop maintaining" is more like "stop paying so much attention to"?
<dim> I would have to first learn how to do that, or maybe just maintain two different ASD definitions, with one only for ABCL
<dim> given the benefits, I would do it
<dim> stop maintaining as in pushing the pgloader.jar more
<dim> and then even playing with GraalVM to go from .jar to binary again if needed
<easye> Cool. I think we can subsume the existing ASDF definitions with ABCL: no need to maintain two completely separate descriptions.
<dim> at least tap into a much wider community where the hard problems have been solved with an army of developers and testers and validated by many many users
<easye> Yeah, GraalVM is one of the things I need to understand better.
zacts has quit [Quit: leaving]
<dim> when using the pgloader.jar channel I hope to stop loading openssl and use the JVM implementation of it, among other things
<dim> basically anytime we load a .so in pgloader, I think we can stop doing it when targeting the JVM, right?
<easye> ABCL runs on it when I last checked about a year ago, but it needs to use the abstractions to be more efficient.
<easye> dim: no need to disable the .so stuff: ABCL is a first class CFFI citizen. It will allow us to test the difference between the two methods of accessing the wire protocols.
<dim> I guess a target for me would be to continue using CCL/SBCL on my dev environment and have CI and public builds done as pgloader.jar, single file, just works
<dim> the need to disable the .so loading is because it never actually works for users, I'd rather use proven native JVM solutions and avoid suprises
<easye> Cool. Lemme get back to pgloader.jar then. Gotta run some errands in the next hour anyway.
<dim> the software I like has the “just works” capability, that's what I have been missing with shipping CL software
zacts has joined #lisp
<dim> easye: I have all the time in the world, and I very much appreciate your efforts, thanks a lot!
<easye> It would be sweet if ABCL could give ya "just works
<easye> But realistically its gonna take a couple months of work.
<dim> yeah I'm cool with that, and might even find the time needed to hook in JDBC at the call sites, provide a new layer/implementation for drivers
<Nilby> I appreciate both of your efforts!
<easye> Yep. I'd like to somehow thunk the drivers in a new layer. In general the abstractions aren't that different.
<easye> RE: couple months of work: mostly in getting the packaging stuff nicely done. And fixing bugs in ABCL, which should be pretty minor.
<pve> dim: regarding your difficulties: have you considered documenting the specific pain points? That would probably be quite valuable.
<easye> I intend to keep a "current" branch in somewhere like <https://github.com/armedbear/pgloader/tree/easye/abcl/current/20201102a>
<easye> And we'll figure out how to merge when it starts doing something useful.
Codaraxis has quit [Ping timeout: 264 seconds]
Gerula has joined #lisp
<dim> pve: it would be nice for the CL community and yet another way to push most people out of it, I reckon
dbotton_ has joined #lisp
tiwEllien has quit [Ping timeout: 265 seconds]
Codaraxis has joined #lisp
dbotton has quit [Ping timeout: 260 seconds]
Codaraxis has quit [Ping timeout: 256 seconds]
Codaraxis has joined #lisp
Bike has joined #lisp
jw4 has quit [Read error: Connection reset by peer]
jw4 has joined #lisp
Codaraxis has quit [Remote host closed the connection]
<phoe> dim: push most people out of what?
<dim> push people from tipping their toes in the CL world
<dim> it's a fine world until you try to interact too much with the non-CL world
aartaka_d has joined #lisp
<phoe> don't know why that would be a problem; it would also be a good reason to improve the parts that interoperate with the non-CL world
<phoe> it would be a deterrent only if it was written that way, e.g. as a rant
<dim> time allowing I'll think of a draft and see where that leads me
<phoe> sure, I'll be glad to review it
<dim> frankly my mood is all about ranting nowadays so not the best for this exercise I guess
<madnificent> phoe: I have your book! \o/ yay!
<dim> for instance I remember a colleague wanted to hack a little something on pgloader, but they didn't use Emacs and of course didn't want to have to ; SLIMV didn't work on their system, compiling pgloader with the Makefile would show lots of messages and not a single source file location (because it was hidden by buildapp --log ...), so much frustration, they never attempted to contribute again
aartaka has quit [Ping timeout: 268 seconds]
<phoe> dim: write it as it is in your mind, derantification can happen between that and publishing
<phoe> madnificent: <3
pj_ has joined #lisp
pj_ has quit [Client Quit]
meowphius has joined #lisp
<pve> To be honest, I'd be more interested in reading the rant than the PC version. It can give a better sense of the trauma caused by the pain points :)
Alloc has quit [Ping timeout: 258 seconds]
frgo has quit [Remote host closed the connection]
<_death> parenthetical advisory, explicit content
frgo has joined #lisp
madage has quit [Ping timeout: 240 seconds]
igemnace has joined #lisp
<dim> hehe
<dim> ToC would be like: .so symbols at load-time, compile-time, run-time, CL and the dynamic loader are not friends ; debian social contract and packaging all source dependencies, current sad state of CL in debian (no one is using debian packages to develop CL software) ; save-lisp-and-die with buildapp, quicklisp, and all the bits ; releasing a source bundle for non-debian packaging ; how to build from source when you're not a CL user ; contributing without
<dim> Emacs/SLIME
<dim> that'd be the main points that I can remember now, but if I want to be honest I would have to review past pgloader issues on github
<dim> and some of the current ones too
<dim> tl;dr: the happy place of Emacs/SLIME/Quicklisp is very hard to share with people who don't care about CL, and then it's a very sad place
<dim> oh see, I didn't even mention “heap exhausted: game over” which my users are still hitting *a lot*
<_death> what do you use all that memory for?
msk has quit [Quit: Leaving]
<dim> migrating whole databases from MySQL/MS SQL/SQLite/etc to Postgres, or loading CSV files etc
<dim> it's all streamed and split in batches, so really, I don't know why SBCL has a hard time
<dim> same data load can be exploding the heap in SBCL while working fine at 400MB used all along in CCL
<dim> of course it's twice as slow in CCL
<phoe> is this the difference between precise and conservative GC?
<dim> now if you can track that down to the code I have written and am maintaining, I will fix it
<dim> phoe: it's a practical difference of memory behavior of CCL and SBCL, I don't know more
<phoe> I know that SBCL has a conservative GC while CCL as a precise one; that's all I know about them
<Nilby> It's so very easy to run out of the default heap.
<dim> pgloader defaults to being built with a 4GB heap on 64 bits (linux) platforms
<_death> so you're saying it's because objects are not gced?
<dim> I wish I knew how to answer that question, all I can say is that it looks like that yeah, in particular thanks to the Clozure memory profile for the same workload
<_death> dim: did you investigate such a scenario (where you predict an upcoming heap exhausting) ?
<_death> *exhaustion
<dim> a long time ago I had a reproducer yeah, and tried to fix it in pgloader with sizing parameters for the queues and batches we keep in memory, but I failed to have any kind of memory profile or such, I just don't know how to do that
<_death> sbcl does expose some interfaces for monitoring/controlling its garbage collector (see manual)
<dim> I went as far as manually calling the gc when I think it's a good time for this to happen, to no avail
<dim> that's where pgloader tries to be helpful to SBCL and calls (sb-ext:gc :full t)
ljavorsk has quit [Ping timeout: 256 seconds]
frgo_ has joined #lisp
<_death> well, that kind of programming by magic incantations doesn't work as often as we like ;).. best is to understand the actual cause first
<dim> +1
<dim> I asked for help again and again, and that's the best I came up with
frgo has quit [Ping timeout: 240 seconds]
narimiran has quit [Ping timeout: 240 seconds]
narimiran has joined #lisp
<_death> you could look at sbcl's ROOM implementation and monitor the bytes used.. when it gets close to the dynamic space size, break into the debugger.. from there you're in a better position to find out what's going on
Stanley00 has quit []
<jdz> dim: I'd first suggest reducing the value of sb-ext:bytes-consed-between-gcs (which, according to SBCL documentation, defaults to 5% of dynamic-space-size).
<jdz> Or some other similar parameter related to generation sizes.
duuqnd_ has joined #lisp
<jdz> Or maybe garbage is promoted to older generations too soon.
duuqnd has quit [Read error: Connection reset by peer]
madage has joined #lisp
<phoe> still, the final GC before dying scans all generations in order to avoid crashing
<phoe> so generations shouldn't be an issue
EvW has joined #lisp
oxum has joined #lisp
oxum has quit [Remote host closed the connection]
<_death> one small thing you can do, if you think it's the batches, is to set the slots in the structure to empty states
lucasb has joined #lisp
FreeBirdLjj has joined #lisp
oxum has joined #lisp
torbo has joined #lisp
FreeBirdLjj has quit [Ping timeout: 268 seconds]
<pve> dim: Out of all the things you listed, I find the ones about building, deploying and contributing the most concerning, but that's just me.
shifty has quit [Ping timeout: 258 seconds]
skapata has joined #lisp
<dim> _death: patches welcome ;-)
<_death> dim: if only I had a database to pgload ;)
torbo has quit [Ping timeout: 260 seconds]
duuqnd_ has quit [Remote host closed the connection]
duuqnd_ has joined #lisp
duuqnd_ is now known as duuqnd
wsinatra has joined #lisp
DGASAU has quit [Read error: Connection reset by peer]
DGASAU has joined #lisp
ggole has joined #lisp
HDurer has joined #lisp
shifty has joined #lisp
<dim> well the repository contains some SQLite things, though small ones
<dim> if you want to find MySQL or MS SQL sample databases, that's also possible thanks to open data things too, but then it's more involved I guess
<Xach> docker makes it a bit easier to set up such things
<Xach> it simplifies the "download and configure postgres" bit, anyway
<dim> ah yeah there's this part for you guys, for me I can't remember when I had a computer to use without Postgres being the first thing I would setup, or almost, and both from sources and packaged...
duuqnd has quit [Remote host closed the connection]
<dim> if you're using a mac, Postgresapp.com is very good by the way
duuqnd has joined #lisp
<Xach> I use postgres a lot but sometimes I like to keep it contained/containerized if I'm testing something
<_death> I don't have an actual use case at the moment.. I did play with postgres a while ago (the manual is pretty good) but sqlite serves my personal needs just fine..
<dim> well Postgres is what I do mostly, CL is just for writing client app with Postgres in my use-case ;-)
<Xach> Hmm, how can I get clozure CL for arm? (trying to run it on a pi 3b+)
<phoe> linuxarm.tar.gz seems to be your target
<Xach> oh, i searched for "arm" but failed
<Xach> thank you
<dim> these days you could also use SBCL I believe, right?
<phoe> SBCL on ARM has no thread support, AFAIK
kiroul has joined #lisp
<flip214> phoe: sbcl on arm64 says :SB-THREAD in *FEATURES*
<flip214> sbcl on arm32 has no threads, IIRC
shifty has quit [Ping timeout: 256 seconds]
<phoe> oh right! arm32 it is
shifty has joined #lisp
EvW has quit [Ping timeout: 260 seconds]
pillton has quit [Ping timeout: 272 seconds]
yonkunas has joined #lisp
hendursa1 has quit [Quit: hendursa1]
hendursaga has joined #lisp
frost-lab has quit [Quit: Connection closed]
EvW has joined #lisp
Josh_2 has joined #lisp
<Josh_2> phoe: got my copy of CLCS today :)
Josh_2 has quit [Client Quit]
duuqnd has quit [Remote host closed the connection]
Josh_2 has joined #lisp
duuqnd has joined #lisp
skapate has joined #lisp
<phoe> <3
skapata has quit [Ping timeout: 272 seconds]
zacts has quit [Quit: leaving]
oxum has quit [Remote host closed the connection]
<Xach> Great, I'm able to make api calls from my raspberry pi to the data aggregator for my weather station and can tell that it is cold and windy outside. The power of lisp!
<Josh_2> Did you try a weather rock?
<Xach> that's no way to refer to cmucl
<Josh_2> bit primitive but I think they can also tell you if It's cold or windy ;)
<Josh_2> xD
kapilp has quit [Quit: ZNC 1.7.5 - https://znc.in]
toorevitimirp has quit [Remote host closed the connection]
random-nick has joined #lisp
rpg has joined #lisp
sjl_ has joined #lisp
kapil_ has joined #lisp
<ck_> I understand prefering alternatives to a weather rock. Those mostly require Windows to access.
sveit has quit [Quit: Bye]
sveit has joined #lisp
dlowe has quit [Quit: ZNC - http://znc.sourceforge.net]
EvW has quit [Ping timeout: 268 seconds]
swflint has quit [Ping timeout: 246 seconds]
Steeve has joined #lisp
winny has quit [Ping timeout: 246 seconds]
swflint has joined #lisp
kapil_ has quit [Quit: ZNC 1.7.5 - https://znc.in]
kapil_ has joined #lisp
winny has joined #lisp
cantstanya has quit [Ping timeout: 240 seconds]
orivej has quit [Ping timeout: 240 seconds]
cantstanya has joined #lisp
hnOsmium0001 has joined #lisp
choegusung has joined #lisp
gaqwas has joined #lisp
gaqwas has joined #lisp
orivej has joined #lisp
orivej has quit [Ping timeout: 246 seconds]
orivej has joined #lisp
kaftejiman has joined #lisp
igemnace has quit [Remote host closed the connection]
Jesin has quit [Ping timeout: 268 seconds]
miasuji has joined #lisp
miasuji has quit [Remote host closed the connection]
Cymew has quit [Ping timeout: 240 seconds]
Fare has joined #lisp
mrchampion has quit [Ping timeout: 258 seconds]
choegusung has quit [Ping timeout: 258 seconds]
mrchampion has joined #lisp
emys has joined #lisp
duuqnd_ has joined #lisp
oxum has joined #lisp
duuqnd has quit [Ping timeout: 260 seconds]
karlosz has quit [Quit: karlosz]
karlosz has joined #lisp
narimiran has quit [Ping timeout: 240 seconds]
dbotton has joined #lisp
dbotton_ has quit [Ping timeout: 246 seconds]
oxum has quit [Remote host closed the connection]
Nilby has left #lisp ["👽愛🆑"]
<_death> array-rank-limit decreased from 65529 to 100.. what will I do with all my 666-dimensional arrays
Xach has quit [Quit: Lost terminal]
Xach has joined #lisp
galex-713 has quit [Ping timeout: 260 seconds]
dbotton has quit [Read error: Connection reset by peer]
dbotton has joined #lisp
galex-713 has joined #lisp
shifty has quit [Ping timeout: 265 seconds]
shifty has joined #lisp
bsd4me has joined #lisp
oxum has joined #lisp
EvW has joined #lisp
luna_is_here has joined #lisp
oxum has quit [Remote host closed the connection]
luna_is_here_ has quit [Ping timeout: 256 seconds]
gabot has quit [Ping timeout: 246 seconds]
rumbler31 has joined #lisp
rumbler31 has quit [Read error: Connection reset by peer]
sympt_ has joined #lisp
rumbler31 has joined #lisp
rumbler31 has quit [Read error: Connection reset by peer]
rumbler31 has joined #lisp
rumbler31 has quit [Read error: Connection reset by peer]
rumbler31 has joined #lisp
emys has quit [Ping timeout: 256 seconds]
sympt has quit [Ping timeout: 240 seconds]
duuqnd_ has quit [Quit: Leaving]
rumbler31 has quit [Read error: Connection reset by peer]
meowphius has quit [Ping timeout: 260 seconds]
emys has joined #lisp
bsd4me has quit [Quit: Leaving]
rotty has quit [Quit: WeeChat 3.0-dev]
oxum has joined #lisp
choegusung has joined #lisp
Steeve has quit [Quit: end]
narimiran has joined #lisp
bsd4me has joined #lisp
Jesin has joined #lisp
C-16 has quit [Quit: leaving]
kapil_ has quit [Quit: ZNC 1.7.5 - https://znc.in]
madage has quit [Ping timeout: 240 seconds]
madage has joined #lisp
cosimone has joined #lisp
kapil_ has joined #lisp
imode has joined #lisp
hendursaga has quit [Ping timeout: 240 seconds]
hendursaga has joined #lisp
brainfunnel has joined #lisp
rippa has joined #lisp
brainfunnel has left #lisp [#lisp]
cosimone has quit [Quit: cosimone]
tiwEllien has joined #lisp
tfb has left #lisp [#lisp]
tfb has joined #lisp
liberliver has quit [Quit: liberliver]
mmohammadi9812 has quit [Quit: Quit]
Colleen has quit [Quit: Colleen]
shifty has quit [Ping timeout: 258 seconds]
Colleen has joined #lisp
Colleen has quit [Remote host closed the connection]
Colleen has joined #lisp
aartaka has joined #lisp
aartaka_d has quit [Ping timeout: 272 seconds]
amerlyq has joined #lisp
EvW has quit [Ping timeout: 240 seconds]
<ane> oh sweet, CLCS is now on amazon.de
madage has quit [Ping timeout: 240 seconds]
madage has joined #lisp
mbomba has joined #lisp
choegusung has quit [Ping timeout: 272 seconds]
amerlyq has quit [Quit: amerlyq]
mokulus_ has quit [Quit: WeeChat 2.9]
mokulus has joined #lisp
gabot has joined #lisp
EvW has joined #lisp
orivej has quit [Ping timeout: 258 seconds]
amerlyq has joined #lisp
gabot has quit [Ping timeout: 256 seconds]
shka_ has quit [Ping timeout: 240 seconds]
TwoNotes has joined #lisp
meowphius has joined #lisp
TwoNotes has quit [Client Quit]
nullheroes has joined #lisp
mmohammadi9812 has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
gabot has joined #lisp
amb007 has joined #lisp
emys has quit [Ping timeout: 260 seconds]
narimiran has quit [Ping timeout: 265 seconds]
dbotton_ has joined #lisp
amb007 has quit [Ping timeout: 260 seconds]
amb007 has joined #lisp
dbotton has quit [Ping timeout: 258 seconds]
ggole has quit [Quit: Leaving]
amb007 has quit [Read error: Connection reset by peer]
emys has joined #lisp
bsd4me has left #lisp ["Leaving"]
amb007 has joined #lisp
dbotton has joined #lisp
orivej has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
dbotton_ has quit [Ping timeout: 240 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
emys has quit [Ping timeout: 265 seconds]
choegusung has joined #lisp
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
oxum has quit [Remote host closed the connection]
bilegeek has joined #lisp
rogersm has joined #lisp
choegusung has quit [Quit: leaving]
bitmapper has quit [Quit: Connection closed for inactivity]
wsinatra has quit [Ping timeout: 260 seconds]
<aeth> _death: oh, wow, that's low enough that it proably breaks someone's code
<aeth> CCL's is 4096... ECL's appears to be 64, though.
<aeth> I guess what's more interesting is that it's not something like 128
<jfb4> Xach: sorry for the late reply to <Xach> I think there's plenty of room for nicer tools but not the skill or time to make it. ---- do you have ideas for what would be cool to have as a predictive completion framework for Lisp?
paul0 has quit [Quit: Leaving]
<jmercouris> jfb4: I think you should investigate markov chains for predictive technologies
<jmercouris> probably you will want to combine several models into a meta-model to have a good result
<jmercouris> maybe even use hidden markov models instead
oxum has joined #lisp
<aeth> phoe: honestly, that comment makes it worse. It should be 128 because when the human is a programmer and the number isn't a power of two, they get suspicious
<aeth> ime, since I've also had arbitrary numbers that aren't a power of 2
<jmercouris> I agree, make it 128
<aeth> in my engine, every constant I set that isn't a power of 2 has or will get someone to comment on it
<aeth> even though obviously in high level languages you don't really have to care about that
<jmercouris> I actually am more partial to powers of 2 these days than things divisible by powers of 10
<jfb4> jmercouris: thanks for the suggestion!
<jmercouris> jfb4: no problem, it will be a very simple start, but you can use it as a basis, there is a lot you can do by simply selecting the right features, that is 99% of the work
kaftejiman has quit [Ping timeout: 260 seconds]
<White_Flame> if it isn't a power of 2, it should be either a power of 2 minus 1, or a value used in 2^N
<jfb4> thanks, the original problem was to do a version of 'kite' for Lisp. I think it ought to be possible to do in Lisp, for the relevant cases. The other cases are problably not needed in Lisp due to the concise nature / less boilerplate
<jmercouris> jfb4: If you want to do kite for lisp, you can definitely just use markov chains to analyze all of the lisp codebases
<jmercouris> you can then weigh the results based on markov chains of different lengths in a meta model
<aeth> jmercouris: ime, the only time my brain enters powers-of-10 mode is metric
tiwEllien has quit [Ping timeout: 272 seconds]
<jmercouris> you may want to do some sanitzation in your models (like removing package prefixes)- or not.
<jmercouris> you will have to discover the right way to clean your source and select your features
<jmercouris> this is the "art"
oxum has quit [Ping timeout: 260 seconds]
<jmercouris> aeth: same, though I sometimes think in 12, 64, etc because I grew up with imperial
<aeth> well, 12 shows up a lot in math and arguably would've been a better numeric base before we moved to binary computers (since now base 8 or base 16 would make more sense)
<aeth> Also in time... or really, anywhere where you want to have a lot of divisions. 12 is a better way to slice a pizza.
Mixed_Case has quit [Ping timeout: 245 seconds]
amerlyq has quit [Quit: amerlyq]
<aeth> This is #lisp and Common Lisp has rationals and the advantages to 12 are similar with inverses like 1/12, 1/3, 1/4, etc., so it still is somewhat relevant in CL, if you're working with fractions.
<jmercouris> I have never really worked with fractions in CL, though I understand it has a lot of appeal to mathematicians
wsinatra has joined #lisp
alexshendi has quit [Remote host closed the connection]
rogersm has quit []
mmohammadi9812 has quit [Quit: Quit]
mmohammadi9812 has joined #lisp
jonatack has quit [Quit: jonatack]
dbotton_ has joined #lisp
dbotton has quit [Ping timeout: 240 seconds]
jonatack has joined #lisp
villanella has joined #lisp
villanella has quit [Quit: villanella]
jonatack has quit [Ping timeout: 265 seconds]
jonatack has joined #lisp
quazimodo has joined #lisp
orivej has quit [Ping timeout: 256 seconds]
<Xach> jfb4: not offhand - i haven't used them and don't know what sorts of things might be useful.
sjl has quit [Quit: WeeChat 2.2-dev]
Fare has quit [Ping timeout: 260 seconds]
pillton has joined #lisp
dbotton has joined #lisp
hendursa1 has joined #lisp
hendursaga has quit [Ping timeout: 240 seconds]
dbotton_ has quit [Ping timeout: 268 seconds]
pve has quit [Quit: leaving]
orivej has joined #lisp
mokulus has quit [Ping timeout: 268 seconds]
cer0 has joined #lisp
wsinatra has quit [Ping timeout: 256 seconds]
wsinatra has joined #lisp
torbo has joined #lisp
Fare has joined #lisp
torbo has quit [Remote host closed the connection]
amb007 has quit [Read error: Connection reset by peer]
torbo has joined #lisp
amb007 has joined #lisp
Aurora_v_kosmose has quit [Quit: Пока, мир.]
dbotton_ has joined #lisp
dim has quit [Ping timeout: 256 seconds]
Aurora_v_kosmose has joined #lisp
akoana has joined #lisp
dbotton has quit [Ping timeout: 264 seconds]
wsinatra has quit [Ping timeout: 264 seconds]
wsinatra has joined #lisp
sympt_ has quit [Read error: Connection reset by peer]
luckless_ has joined #lisp
noguchichan has joined #lisp
luckless has quit [Ping timeout: 240 seconds]
sjl_ has quit [Ping timeout: 260 seconds]
dim has joined #lisp
bookhead has joined #lisp
skapate is now known as skapata
orivej has quit [Ping timeout: 272 seconds]
dbotton has joined #lisp
<jfb4> Xach: thanks for considering the question
dbotton_ has quit [Ping timeout: 246 seconds]
dim has quit [Ping timeout: 268 seconds]
mbomba has quit [Ping timeout: 260 seconds]
perrier-jouet has quit [Quit: WeeChat 2.9]
dim has joined #lisp
perrier-jouet has joined #lisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #lisp
jealousmonk has joined #lisp
Alloc has joined #lisp
renzhi has joined #lisp
space_otter has joined #lisp
random-nick has quit [Ping timeout: 260 seconds]