jackdaniel changed the topic of #lisp to: Common Lisp, the #1=(programmable . #1#) programming language | <http://cliki.net/> <https://irclog.tymoon.eu/freenode/%23lisp> <https://irclog.whitequark.org/lisp> <http://ccl.clozure.com/irc-logs/lisp/> | SBCL 1.5.4, CMUCL 21b, ECL 16.1.3, CCL 1.11.5, ABCL 1.5.0
smaster has quit [Ping timeout: 276 seconds]
random-nick has quit [Ping timeout: 252 seconds]
varjag has quit [Ping timeout: 240 seconds]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 252 seconds]
Oddity has quit [Ping timeout: 245 seconds]
Necktwi has quit [Read error: Connection reset by peer]
Oddity has joined #lisp
Necktwi has joined #lisp
akoana has joined #lisp
dilated_dinosaur has quit [Ping timeout: 245 seconds]
smaster has joined #lisp
__jrjsmrtn__ has joined #lisp
_jrjsmrtn has quit [Ping timeout: 240 seconds]
smaster has quit [Ping timeout: 246 seconds]
clothespin_ has joined #lisp
Codaraxis has quit [Read error: Connection reset by peer]
jonatack has joined #lisp
clothespin has quit [Ping timeout: 240 seconds]
Codaraxis has joined #lisp
ym has quit [Ping timeout: 265 seconds]
smaster has joined #lisp
pierpal has joined #lisp
ealfonso has joined #lisp
wiselord has quit [Ping timeout: 265 seconds]
* logicmoo is trying to find the version of ECL that has teh least number of things implemented in C
logicmoo is now known as dmiles
mooch has quit [Remote host closed the connection]
mooch has joined #lisp
<dmiles> of course, aternatively i'd be happy with any full CL that has the least number of thing my interpreter would need to implement
<dmiles> i am using ECL 0.8 right now
<dmiles> i am trying to find a version that has the least ammount of "kernel" code
<Bike> for what purpose exactly?
<dmiles> I started implementing a new Common Lisp (of course, right?)
clothespin__ has joined #lisp
<dmiles> That uses no C or ASM
<dmiles> that there is where it is loading a .lisp file showing how its compiling
<dmiles> it is outputing github flavored markdown there
clothespin_ has quit [Ping timeout: 252 seconds]
<Bike> implementations sometimes are built in more complicated ways than like, having some lisp subset and then loading the rest of the language in like a library file
<Bike> ECL does do that, so you're on the right track there, i guess
<dmiles> there is probably even 3 levels... MinimalSupport + InitalCompiledToBackend + LibraryCompliedToBackendEachTime
<dmiles> yet the second might be called CL
<dmiles> why i bring that is that up is that the LibraryCompliedToBackendEachTime is sometimes hard for me to tell from 2nd
<dmiles> the 2nd (InitalCompiledToBackend) is stuff i see for sure becomes C files
<Bike> if i'm supposed to know what these "levels" mean based on their names i uh, don't, sorry
<dmiles> Sorry I should call them build passes
q9929t has joined #lisp
<dmiles> sorry.. i'll have to think a bit on how to phrase what i am asking
Kundry_Wag has joined #lisp
q9929t has quit [Client Quit]
libertyprime has joined #lisp
EvW1 has quit [Ping timeout: 276 seconds]
ebzzry has quit [Read error: Connection reset by peer]
Kundry_Wag has quit [Remote host closed the connection]
slyrus__ has joined #lisp
Kundry_Wag has joined #lisp
slyrus_ has quit [Ping timeout: 240 seconds]
ealfonso has quit [Ping timeout: 265 seconds]
Kundry_Wag has quit [Ping timeout: 252 seconds]
<dmiles> well what i should say.. is what be even more awesoem for me is if ECL wasnt bothering to make C files
<White_Flame> you mean an interepreter?
<Bike> "bothering"...? that's like, how it works
<dmiles> or better if a CL was never able to compile or translate anyhting.. if it was all merely an interpreter.. in which then i could decide where/when to compile things
<White_Flame> maybe you should look at older CLISP then
<Bike> if you have your own implementation it doesn't need to compile anything until compile or compile-file is called
<dmiles> ok, looking at older CLISP
<White_Flame> while I haven't poked into your details, are you wanting to compile CL into Prolog, or interpret CL from Prolog?
<dmiles> I have been so far compiling to Prolog (thus translating) then loading/executing the translated version
<dmiles> but I am starting to be jsut as happy if i was interpreting
shifty has joined #lisp
<dmiles> then finish off teh compiler later
<dmiles> the translator/compiler is mostly working but the last 29% of the code i need to write for it is still unknown.. heck it might be 50% still i need to do
<White_Flame> the first 90% of the code takes 90% of the time. The final 10% takes the other 90% of the time.
<dmiles> hehe .. that indeed is the problem
ravenousmoose has joined #lisp
<dmiles> one problem was even though ECL code was helping out i still have to remove anything related to C backend
ravenousmoose has quit [Ping timeout: 250 seconds]
<dmiles> but still open to suggestions if someone knows of a CL interpreter that 90% or more is just written in .lisp
<dmiles> such an interpreter would fake out compile/compile-file
<aeth> well, compiling in that context would be bytecode compiling
<dmiles> that be acceptable as long as if it expected to bytecode its system libs i can get in there and stop that
<White_Flame> do you want to interpret s-expressions directly?
<White_Flame> I think picolisp does that, but it's not CL
Oddity has quit [Read error: Connection reset by peer]
<dmiles> i want it (the impl) to have done that.. But I am actualyl compiling
<dmiles> if my compiler was broken one day.. it be nice to still have something that worked
Oddity has joined #lisp
<dmiles> yeah... like picolisp but common lisp :)
<Bike> i don't really get it
<Bike> if you just want an interpreter written in lisp t here's ones in sbcl and stuff
<Bike> but then you need a lisp to start with
<dmiles> even with such an interpreter .. i am still taking chunks out of its interpeter making it call my compiler first then executing
<dmiles> Bike: in the case with SBCL i would need to ensure it could be used with its compiler completely broken
<dmiles> Current version of SBCL that might not work, but maybe older versions
orivej has quit [Ping timeout: 276 seconds]
<Bike> i think the sb-interpreter package doesn't need the compiler, but i could be wrong
<dmiles> impls seem to start out close to what i am starting out with and then over time they drift futther away
<dmiles> (in order to become faster.. etc)
<Bike> using the compiler is really convenient.
<Bike> you could also write an interpreter yourself. i have most of a closure compiler (which would be portable) somewhere, i just didn't see a demand
<Bike> the annoying parts are parsing declarations and parsing lambda list bindings, but you can sorta jank code for that
Codaraxis_ has joined #lisp
<dmiles> in my host language i wrote a compiler and interpreter that handlers defun/defmacro/lamda etc... it parses the lambda lists and produces host language stub functions that call them etc.. i qualkify it as janky code :P
Codaraxis has quit [Ping timeout: 265 seconds]
<dmiles> Bike: "most of a closure compiler (which would be portable) somewhere" i'd love to look at it and see if i can use it
<Bike> uhm, i can throw it on github i guess
Oladon has joined #lisp
<Bike> https://github.com/Bike/compilerer i haven't touched this since 2014 apparently and don't remember how it works beyond the concept
<Bike> which is you "compile" forms into just closures
<dmiles> if it can compile loops to closures that helpfull
<Bike> i don't think it runs
<Bike> i mean you need to have a working lisp, too
<Bike> which is why i'm not sure i understand what you're going for here
<dmiles> well what io was thinking is it would have been a Full-CL-AST to a lessFullAST (but still CL)
<Bike> here, like for example look at how tagbody is defined https://github.com/Bike/compilerer/blob/master/tagbody-go.lisp
<dmiles> So the closures it would create might still be serializable to CL
<Bike> it takes a tagbody form, and returns this (lambda (stack) ...) closure
<dmiles> yep like that
<Bike> but to compile the compilerer system you need to have like a working loop macro and stuff, here
<dmiles> (just i might return the lambda quoted for me)
<dmiles> oh .. my lisp mostly works.. it passes quite a few ANSI tests
<White_Flame> do you compile LET into LAMBDA somewhere in there? seems like it would be the most obvious one
<White_Flame> ^Bike
<Bike> i don't remember
<White_Flame> I was just poking through and didn't notice it
<Bike> the annoying one is let* since you have to figure out which declarations go with which bindings
<White_Flame> ah, I could see that
<Bike> lambda is annoying because you have to pase the lambda list and also worry about special bindings
X-Scale` has joined #lisp
X-Scale has quit [Ping timeout: 265 seconds]
fengshaun has quit [Quit: bibi!]
X-Scale` is now known as X-Scale
fengshaun has joined #lisp
<dmiles> yeah i insert a closure of restoration of specials
<dmiles> i think my impl might be good enough to run sb-interpreter
<dmiles> i have a working package system.. readtables, arrays, hashtable .. quitre a bit of CL implemented
oxford has quit [Ping timeout: 260 seconds]
pierpal has quit [Read error: Connection reset by peer]
<dmiles> "yeah i insert a closure of restoration of specials" this is done gensyming a tempvar savign a value.. then SETQing the specials at LET[*] time .. then SETQing back at body exit time
oxford has joined #lisp
lxbarbosa has joined #lisp
ebzzry has joined #lisp
ebzzry_ has joined #lisp
ebzzry__ has joined #lisp
ebzzry has quit [Ping timeout: 240 seconds]
ebzzry has joined #lisp
<White_Flame> dmiles: as long as that still runs when unrolling from conditions or throws
<White_Flame> also you have to consider threading effects, as dynamic bindings should be thread-local
ebzzry_ has quit [Ping timeout: 276 seconds]
ebzzry___ has joined #lisp
ebzzry__ has quit [Ping timeout: 250 seconds]
ebzzry_ has joined #lisp
ebzzry has quit [Ping timeout: 240 seconds]
ebzzry has joined #lisp
<dmiles> i am using unwind-protect for the restorations .. but hrrm the threading side effect i realized i not actualyl done it correctly now
ebzzry__ has joined #lisp
ebzzry___ has quit [Ping timeout: 265 seconds]
<dmiles> -side
ebzzry_ has quit [Ping timeout: 250 seconds]
<dmiles> i maybe should do symbol-value as a thread local property
rumbler31 has quit []
<White_Flame> symbol-value has both a global binding and optionally a thread local one
ebzzry has quit [Ping timeout: 240 seconds]
<dmiles> oh right actually.. if no thread-local one had been started .. a SETQ would hit the global?
smaster has quit [Ping timeout: 276 seconds]
<White_Flame> yes, and all threads see that, if they haven't created their own binding
ym has joined #lisp
<White_Flame> in SBCL, referring to a special var's value checks the TLS value first, and if it's unbound, returns the global symbol-value
<dmiles> oh interesting.. after the SETQ that hits the Global i might start lettign this thread have the Binding it jsut set as if thread local
<White_Flame> the TLS value is mutated, storing old values on a stack, as you do
<dmiles> this thread will pretend from then on it is thread local
<White_Flame> and yeah, setting a variable has to check the TLS as well, to determine where it goes
techquila has joined #lisp
<dmiles> (this allows otehr threads to nanoselconds later to manip the Global and it wont hurt the thread that just did the same thing
ebzzry has joined #lisp
<White_Flame> (let ((*x* *x*)) ...)
<dmiles> (the thread that previously setq'd))
<White_Flame> would capture the current global value into tls (assuming no existing outer binding)
mindthelion has quit [Ping timeout: 245 seconds]
ebzzry__ has quit [Ping timeout: 250 seconds]
_whitelogger has joined #lisp
pierpal has joined #lisp
<dmiles> yeah... (let ((*x* *x*)) ...) == (let ((tempvar *x*)) (unwind-protect (progn (convert-to-tls '*x*) ... ) (setq *x* tempvar))
<dmiles> (oh, though that there leaves it as a TLS.. i should undo that)
kobain has quit [Ping timeout: 265 seconds]
ebzzry_ has joined #lisp
Kundry_Wag has joined #lisp
ebrasca has joined #lisp
smaster has joined #lisp
ebzzry has quit [Ping timeout: 240 seconds]
ebzzry__ has joined #lisp
ebzzry has joined #lisp
ebzzry_ has quit [Ping timeout: 240 seconds]
ebzzry_ has joined #lisp
Codaraxis__ has joined #lisp
smaster has quit [Ping timeout: 240 seconds]
ebzzry__ has quit [Ping timeout: 265 seconds]
Codaraxis_ has quit [Read error: Connection reset by peer]
ebzzry__ has joined #lisp
ebzzry has quit [Ping timeout: 252 seconds]
ebzzry has joined #lisp
Oladon has quit [Quit: Leaving.]
ebzzry_ has quit [Ping timeout: 276 seconds]
ebzzry_ has joined #lisp
ebzzry__ has quit [Ping timeout: 240 seconds]
ebzzry has quit [Ping timeout: 250 seconds]
ebzzry has joined #lisp
ebzzry__ has joined #lisp
ebzzry___ has joined #lisp
ebzzry_ has quit [Ping timeout: 265 seconds]
ebzzry_ has joined #lisp
ebzzry has quit [Ping timeout: 250 seconds]
Codaraxis__ has quit [Read error: Connection reset by peer]
ebzzry__ has quit [Ping timeout: 240 seconds]
ebzzry has joined #lisp
xkapastel has joined #lisp
ebzzry___ has quit [Ping timeout: 240 seconds]
ebzzry__ has joined #lisp
ebzzry___ has joined #lisp
ebzzry_ has quit [Ping timeout: 250 seconds]
libertyprime has quit [Ping timeout: 265 seconds]
ebzzry has quit [Ping timeout: 240 seconds]
ebzzry has joined #lisp
libertyprime has joined #lisp
ebzzry__ has quit [Ping timeout: 240 seconds]
ebzzry_ has joined #lisp
ebzzry___ has quit [Ping timeout: 240 seconds]
ebzzry__ has joined #lisp
ebzzry___ has joined #lisp
ebzzry has quit [Ping timeout: 265 seconds]
ebzzry has joined #lisp
ebzzry_ has quit [Ping timeout: 265 seconds]
smaster has joined #lisp
ebzzry__ has quit [Ping timeout: 240 seconds]
jeosol has joined #lisp
<jeosol> ping beach:
brettgilio has joined #lisp
<jeosol> Good morning everyone
ebzzry___ has quit [Ping timeout: 276 seconds]
ebzzry has quit [Ping timeout: 240 seconds]
<jeosol> I have a CLOS question: Do slots initialized with :default-initargs in the base case, are the values carried over in the derived class?
ebzzry has joined #lisp
<jeosol> *base case -> base class
<Bike> default-initargs are inherited. i think
ebzzry_ has joined #lisp
<jeosol> Thanks Bike. That's what I expected, but I am getting some weird behavior. Let me check my code again.
smaster has quit [Ping timeout: 276 seconds]
ebzzry__ has joined #lisp
libertyprime has quit [Ping timeout: 240 seconds]
ebzzry has quit [Ping timeout: 240 seconds]
ebzzry has joined #lisp
ebzzry_ has quit [Ping timeout: 265 seconds]
libertyprime has joined #lisp
ebzzry_ has joined #lisp
ebzzry__ has quit [Ping timeout: 240 seconds]
patrixl has quit [Quit: Leaving.]
ebzzry__ has joined #lisp
smaster has joined #lisp
ebzzry has quit [Ping timeout: 246 seconds]
akoana has left #lisp ["Leaving"]
<jeosol> Bike: I seem to get correct behavior if I re-specify default-initarg for the slot in the derived class. It doesn't appear it is carried over
ebzzry has joined #lisp
<Bike> paste?
<jeosol> This is excerpt is from PCL: This option is used to specify forms that will be evaluated to provide arguments for specific initialization parameters that aren't given a value in a particular call to MAKE-INSTANCE
ebzzry_ has quit [Ping timeout: 240 seconds]
<Bike> what does that have to do with inheritance
<Bike> (defclass foo () ((%slot :initarg :slot :accessor foo-slot)) (:default-initargs :slot 7)) (defclass bar (foo) ()) (foo-slot (make-instance 'bar)) => 7
<Bike> on my system
ebzzry__ has quit [Ping timeout: 246 seconds]
<jeosol> Thanks. That's what I am expecting.
ebzzry_ has joined #lisp
smaster has quit [Ping timeout: 240 seconds]
<Bike> if you paste your code i might be able to figure out your problem
<jeosol> My code is just messy now, I need to refactor a bit for clarity. I may have chosen a poor design for my class structures.
<jeosol> Let me see how I can do that, it's a fairly complex system with lots of files.
libertyprime has quit [Ping timeout: 265 seconds]
ebzzry has quit [Ping timeout: 265 seconds]
PuercoPope has quit [Remote host closed the connection]
ebzzry_ has quit [Ping timeout: 276 seconds]
<jeosol> Bike: Thanks. It was a bug in my code. I had 3-level inheritance and mixed up the inherited class at 2nd level
shifty has quit [Ping timeout: 245 seconds]
shifty has joined #lisp
_whitelogger has joined #lisp
<Bike> happy to be of assistance
ebzzry_ has joined #lisp
Codaraxis has joined #lisp
<jeosol> I picked a complex class structure where I am stringing a lot of concepts together (A,B,C,D), with each concept taking a few options/cases (e.g., A1, A2). I am now creating several classes: (defclass A-B-C-D () .) (defclass A1-B-C-D (A-B-C-D) () (:default-initargs ...))
<jeosol> It then became difficult to manage the options and possibilities. Perhaps a different design would have been more tractable. When I started, I modeled this case after the stream example in Sonja Keene's CLOS book.
ebzzry has joined #lisp
shifty has quit [Ping timeout: 265 seconds]
ebzzry_ has quit [Ping timeout: 240 seconds]
marusich has joined #lisp
shifty has joined #lisp
libertyprime has joined #lisp
lxbarbosa has quit [Read error: Connection reset by peer]
shifty has quit [Ping timeout: 252 seconds]
ebzzry has quit [Ping timeout: 265 seconds]
ebzzry has joined #lisp
vlatkoB has joined #lisp
ebzzry_ has joined #lisp
smaster has joined #lisp
ebzzry has quit [Ping timeout: 240 seconds]
smaster has quit [Ping timeout: 240 seconds]
ebzzry_ has quit [Ping timeout: 265 seconds]
ggole has joined #lisp
ebzzry_ has joined #lisp
orivej has joined #lisp
ebzzry has joined #lisp
ebzzry__ has joined #lisp
ebzzry_ has quit [Ping timeout: 250 seconds]
ebzzry_ has joined #lisp
ebzzry has quit [Ping timeout: 240 seconds]
ebzzry has joined #lisp
ebzzry__ has quit [Ping timeout: 276 seconds]
ebzzry_ has quit [Ping timeout: 276 seconds]
ebzzry has quit [Ping timeout: 265 seconds]
ebzzry has joined #lisp
<markasoftware> From the (defclass) CLHS docs: "The :accessor slot option specifies that an unqualified method is to be defined on the generic function named reader-function-name to read the value of the given slot and that an unqualified method is to be defined on the generic function named (setf reader-function-name) to be used with setf to modify the value of the slot. "
<markasoftware> How can the generic function be "named" as a form?
<markasoftware> (for the writer)
Kundry_Wag has joined #lisp
ebzzry_ has joined #lisp
ebzzry__ has joined #lisp
ebzzry has quit [Ping timeout: 265 seconds]
ebzzry has joined #lisp
<pjb> markasoftware: this is a special case. Functions can be named either by a symbol, or by a list where the first element is CL:SETF and the second a symbol.
ebzzry_ has quit [Ping timeout: 240 seconds]
<pjb> markasoftware: those functions can be used in the expansion of the setf macro.
<pjb> markasoftware: note: there are other ways to implement accessors used by setf that are not functions named (setf foo), such as setf-expanders, and other implementation specific ways.
<pjb> clhs setf
<pjb> see ^
<markasoftware> So there's no symbol whose function slot holds that setter?
<pjb> and Section 5.1.2 (Kinds of Places).
<pjb> markasoftware: this is implementation dependent.
<markasoftware> huh
<pjb> markasoftware: some implementation intern a symbol named |(SETF FOO)|, some put an entry in the symbol-plist of FOO, etc.
ebzzry__ has quit [Ping timeout: 276 seconds]
ebzzry_ has joined #lisp
ebzzry__ has joined #lisp
ebzzry has quit [Ping timeout: 240 seconds]
ebzzry has joined #lisp
ebzzry_ has quit [Ping timeout: 240 seconds]
smaster has joined #lisp
ebzzry__ has quit [Ping timeout: 240 seconds]
sauvin has joined #lisp
ebzzry has quit [Ping timeout: 252 seconds]
smaster has quit [Ping timeout: 240 seconds]
<beach> Good morning everyone!
Kundry_Wag has quit [Ping timeout: 265 seconds]
orivej has quit [Ping timeout: 240 seconds]
Dibejzer has joined #lisp
<beach> It is interesting to see that jmercouris seems to assume a particular way of bootstrapping Common Lisp, i.e., that it has to be built from a small subset of itself. As it turns out, that is a very painful way of bootstrapping a Common Lisp system.
libertyprime has quit [Ping timeout: 240 seconds]
<Dibejzer> Hey, can I ask a question
<beach> Of course.
<Dibejzer> The question is about running Lisp scripts
orivej has joined #lisp
<Dibejzer> I am trying the hello world script found here
<Dibejzer> i cannot run it with just typing hello-world.lisp in the terminal
<Dibejzer> Needless to say, I'm still a noob with Linux
<beach> Dibejzer: I'll let someone else answer. I never run my Common Lisp programs that way.
<Dibejzer> Thanks anyway beach :)
<Dibejzer> And, just for the sake of curiosity, what do you use Lisp for?
<beach> Me? Research.
<no-defun-allowed> Dibejzer: I think that is a shell problem, not a SBCL problem. Did you `chmod +x hello-world.lisp` first and run it using `./hello-world.lisp`?
<Dibejzer> sudo: ./hello-world.lisp: command not found
<Dibejzer> no-defun-allowed: nope, I didn't :)
<Dibejzer> gimme a sec
<no-defun-allowed> And most certainly, do NOT run it with sudo unless superuser permissions are necessary.
<Dibejzer> Hey, this worked!
<Dibejzer> Iiiif you could just be kind enough to tell me what I did there :)
<no-defun-allowed> If you run a program with sudo, it can pretty much do whatever with your computer, as it is run as the `root` user.
vaporatorius has quit [Read error: Connection reset by peer]
smaster has joined #lisp
<Dibejzer> hm, coming from windows this thing is a bit strange
<Dibejzer> i find myself using sudo way to often, yet again i'm advised not to
<Dibejzer> So I must be doing something wrong
<no-defun-allowed> It would be like rightclicking the program and selecting "Run as Administrator".
<no-defun-allowed> You absolutely are doing something wrong.
<Dibejzer> I'm on my "learning iteration" with Linux.
vaporatorius has joined #lisp
<no-defun-allowed> These are Unix problems and not Lisp problems though, so I should probably leave them though.
<Dibejzer> But, even "simple" actions, like entering folders quite often are impossible without sudo
<Dibejzer> Yeaaah, we're off topic at this point
<phoe> Dibejzer: if you can't enter a folder without sudo there's usually a very good reason for that
* no-defun-allowed facedesks <https://i.imgur.com/UAXaYar.mp4>
<aeth> usually log folders?
<Dibejzer> Nah, even opening nautilus asks me for password
<no-defun-allowed> Then you should change the permissions on those directories so that your regular user can read them instead of using a hammer^W^Wsudo on them.
<Bike> that's a pretty painful looking slam
<aeth> Dibejzer: you can always discuss it in #lispcafe (the off-topic channel) but that doesn't sound typical
<aeth> like some configuration is horribly wrong or something
smaster has quit [Ping timeout: 250 seconds]
<Dibejzer> So, is it a normal workflow that you have to manually change permissions for so many folders?
<aeth> no
xkapastel has quit [Quit: Connection closed for inactivity]
<Dibejzer> didn't think so :)
<aeth> pretty much everything in modern Linux/Unix is done in /home/your_name and permissions don't really come into play unless you e.g. want to make install SBCL globally (but you can install SBCL locally, I do... in fact, usually /home is much larger than / so you literally can't install everything globally)
<aeth> (since they're usually separate partitions)
<aeth> Literally all of my programming is done locally, including installed language implementations. The only thing related to #lisp that I have installed in the root partition under /usr is stumpwm, the window manager, afaik
<aeth> locally to my user rather than to all users, not like there are more than one user
<aeth> Users are kinda repurposed to sandbox certain things like httpd
dale has quit [Quit: My computer has gone to sleep]
* no-defun-allowed still grabs SBCL from the Arch repository since that's usually close to the newest version
xkapastel has joined #lisp
<Dibejzer> I understand the concept, but will take some time to understand how to implement it
<Dibejzer> i always just recklessly sudo apt-get install stuff
<Dibejzer> for now :D
<Dibejzer> but, for example, the script we chmoded back there was in the ~/.clisp/hello-world.lisp
<no-defun-allowed> Installing is one of the legitimate uses for sudo, running hello world programs probably is not.
* no-defun-allowed is off for dinner
<aeth> Installing things globally under root is dangerous because you can really mess things up if you're outside of your distro's package manager unless it's installed under /usr/local/ and even then it might mess up some things.
<aeth> If it's under your home directory ~/ then the worst case is that it can mess up everything in home, which is only 85% of everything that's important :-p
<aeth> Well, at least you can backup home.
smaster has joined #lisp
<Dibejzer> So, the "sudo" needed for /home/ is there for a reason?
<Dibejzer> instead, i should be going to /home/myname/?
<aeth> no, you should not need sudo to access anything under /home unless it's under another user's home, but you only really need one "real" user who has a home
<aeth> or, yes, under /home itself
<aeth> but /home is for usernames
<aeth> e.g. /home/aeth
<Bike> i don't think this is the ideal channel for untangling why your system is apparently so untrusting of you
<aeth> Do everything under /home/aeth, which if that's you is also ~/
<Dibejzer> Okay, gonna stop now with the off-topic. Thanks a lot guys, and I apologize :)
<aeth> Dibejzer: Anyway, the tldr is to write simple scripts under ~/bin (and chmod +x them) that set the correct environment variables (because often that's the only way to do it) and install stuff like SBCL locally. e.g. for SBCL I installed it to ~/.local I have a "export SBCL_HOME=/home/myname/.local/lib/sbcl" followed by the path to the ~/.local/bin/sbcl
smaster has quit [Ping timeout: 240 seconds]
<aeth> (then you only need sudo for updating the repo-provided CLs)
smaster has joined #lisp
Bike has quit [Quit: Lost terminal]
earl-ducaine has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
smaster has quit [Ping timeout: 246 seconds]
nirved_ has joined #lisp
smaster has joined #lisp
arma_ has joined #lisp
nirved has quit [Ping timeout: 276 seconds]
marusich has quit [Remote host closed the connection]
smaster has quit [Ping timeout: 265 seconds]
rippa has joined #lisp
gravicappa has joined #lisp
FennecCode has quit [Quit: ERC (IRC client for Emacs 26.2)]
smaster has joined #lisp
wiselord has joined #lisp
smaster has quit [Ping timeout: 265 seconds]
brown121408 has quit [Ping timeout: 240 seconds]
brown121407 has joined #lisp
brettgilio has quit [Quit: Quit]
brettgilio has joined #lisp
smaster has joined #lisp
ravenousmoose has joined #lisp
smaster has quit [Ping timeout: 265 seconds]
Codaraxis has quit [Remote host closed the connection]
Codaraxis has joined #lisp
nowhereman has joined #lisp
Kundry_Wag has joined #lisp
<Demosthenex> 5 second opinion, total noob looking for a simple testing framework while working in repl, what to use?
smaster has joined #lisp
<Shinmera> clhs assert
<beach> Heh, I agree with Shinmera.
<Shinmera> if you move on from the repl you might want to look into bigger things like parachute or whatever else. there's a thousand of them out there, so pyp.
Kundry_Wag has quit [Ping timeout: 240 seconds]
<Demosthenex> heh, assert. ;]
<Demosthenex> i'm seeing quite a few, that's why i asked. looks like alot of duplication, not alot of differences.
<Demosthenex> i think i read about parachute once before
<Demosthenex> just tinkering with a restful api, and wanted to start capturing things i'm doing in the repl as tests
smaster has quit [Ping timeout: 265 seconds]
dilated_dinosaur has joined #lisp
jfb4_ has joined #lisp
smaster has joined #lisp
<phoe> 1+ for assert
<phoe> in the REPL, you need no testing framework
jfb4 has quit [Ping timeout: 265 seconds]
<phoe> if you want to run a bunch of automated tests, choose one of the already existing ones - 1am, fiveam, parachute, fiasco, anything.
<phoe> UNDER NO CIRCUMSTANCES YOU SHOULD WRITE A NEW ONE.
<Demosthenex> phoe: i agree with that! ;]
<phoe> gosh I always feel bad after using full caps
<Demosthenex> no, i have no desire to reinvent the wheel
<phoe> but this needs to be pressed
<phoe> soon we will have more testing frameworks than lispers
<Demosthenex> and yes there is reason to use a testing framework with teh repl. i nail down a piece of code and test it on the repl, i need to record that in a test so it repeates later
<phoe> oh, so it's no longer REPL-only
<phoe> I default to 1am in the beginning since it is so dumb that I can fully understand it after reading its source
<phoe> it is also one page long
<phoe> then if that is inadequate, I migrate to parachute
smaster has quit [Ping timeout: 265 seconds]
<Shinmera> you can just (defun test () (assert ..) ..), you know
<phoe> but yes, Shinmera's solution is the simplest test framework you can do
<phoe> and (defun test-all () (test-1) (test-2) (test-3) (test-4) ...) is your test suite
smaster has joined #lisp
billstclair has quit [Ping timeout: 264 seconds]
smaster has quit [Ping timeout: 240 seconds]
billstclair has joined #lisp
Bourne has joined #lisp
smaster has joined #lisp
oni-on-ion has quit [Remote host closed the connection]
oni-on-ion has joined #lisp
<Demosthenex> caretul, that's dangerously close to writing your own
<Demosthenex> ideally libraries exhibit best practices anyway
<Shinmera> if only
<Demosthenex> ssh! let me keep my noobish optimism
gravicappa has quit [Ping timeout: 250 seconds]
<Shinmera> Also, almost any discussion in here about what a best practise might be will inevitably result in hours long discussions, so I don't even know if such practises exist :)
<Demosthenex> ha!
avicenna has quit [Ping timeout: 264 seconds]
vaporatorius has quit [Ping timeout: 265 seconds]
smaster has quit [Ping timeout: 246 seconds]
avicenna has joined #lisp
brown121407 has quit [Read error: Connection reset by peer]
brown121407 has joined #lisp
smaster has joined #lisp
<Demosthenex> wtf, gigamonkeys is down?
makomo has joined #lisp
smaster has quit [Ping timeout: 240 seconds]
<Demosthenex> hrm, archive.org shows a good copy as of nov 18
smaster has joined #lisp
smaster has quit [Ping timeout: 252 seconds]
dddddd has quit [Remote host closed the connection]
smaster has joined #lisp
smokeink has joined #lisp
<smokeink> can slime step-debug through macro-expanded code ? https://stackoverflow.com/a/3216672
smaster has quit [Ping timeout: 240 seconds]
vaporatorius has joined #lisp
smaster has joined #lisp
MichaelRaskin has joined #lisp
MichaelRaskin has left #lisp [#lisp]
smaster has quit [Ping timeout: 265 seconds]
gareppa has joined #lisp
gareppa has quit [Client Quit]
smaster has joined #lisp
puchacz has joined #lisp
random-nick has joined #lisp
jfb4_ has quit [Ping timeout: 240 seconds]
jfb4 has joined #lisp
smaster has quit [Ping timeout: 240 seconds]
smaster has joined #lisp
Bourne has quit [Read error: Connection reset by peer]
Kundry_Wag has joined #lisp
Kundry_Wag has quit [Ping timeout: 246 seconds]
gabiruh_ has joined #lisp
smaster has quit [Ping timeout: 252 seconds]
gabiruh has quit [Ping timeout: 240 seconds]
Bourne has joined #lisp
smaster has joined #lisp
<vydd> phoe: hm. does any of the frameworks you listed support parametrization? (I tried looking at all of their docs, but couldn't find any hints on that)
arma_ has quit [Quit: arma_]
fengshaun has quit [Quit: bibi!]
smaster has quit [Ping timeout: 240 seconds]
<smokeink> also check out this https://github.com/rpav/CheckL
clothespin__ has quit [Ping timeout: 246 seconds]
smaster has joined #lisp
fengshaun has joined #lisp
smaster has quit [Ping timeout: 240 seconds]
hiroaki has joined #lisp
nowhereman has quit [Ping timeout: 250 seconds]
<Xach> Hmm, is there a good way to get in touch with Leo Zovic other than filing bug reports?
smaster has joined #lisp
<samebchase> Well, his email is on his Github profile.
<Xach> Is anyone here a close personal friend or possibly housemate of Leo?
<Xach> samebchase: i think filing a bug report sends an email
<samebchase> ah
<phoe> vydd: parametrization as in running the same test body with different input each time?
<vydd> phoe: yes
<phoe> vydd: typically you do not need that in Lisp due to its functional nature; you can write a single test that has (dolist (test-datum *test-data*) (is (goodp test-data)))
<phoe> where *test-data* os specified elsewhere
smaster has quit [Ping timeout: 240 seconds]
jjkola has quit [Ping timeout: 265 seconds]
<vydd> phoe: wouldn't a test framework mark the whole test as failing in that case?
<phoe> yes, the test fails, but you then know which exactly forms have failed
<phoe> for which values of test-datum, that is
shka__ has quit [Ping timeout: 240 seconds]
<vydd> either I'm confused about how ..parachute in your case? works, or we're talking about different things... let me test that code and get back to you
<phoe> it's not idiomatic parachute code
<phoe> I'm in a bus, can't really use a proper emacs now - maybe Shinmera will be able to assist
<phoe> I'll be back around in 48 hours from now
<vydd> no problem, have a safe trip
stepnem_ has quit [Ping timeout: 265 seconds]
stepnem has joined #lisp
dilated_dinosaur has quit [Ping timeout: 276 seconds]
<vydd> phoe: it does work with dolist! that's cool https://plaster.tymoon.eu/view/1567#1567 ... Shinmera, maybe you could consider adding that to a FAQ?
<vydd> curious thing, btw. with no docs, I just tinker with the code and try to make stuff work through autocomplete. when docs are available, and especially as comprehensive as Shinmera's, I try searching in docs first, and when I fail, I kind of assume the feature is simply not supported
<phoe> so an example should perhaps be added, yes
<phoe> vydd: glad that you figured it out
<vydd> phoe: would've taken me much longer if you hadn't helped me out :)
shka__ has joined #lisp
<Shinmera> vydd: In those cases I typically construct my own test result instances instead of relying on IS etc, so that the overview shows the proper values.
<Shinmera> It's a bit cumbersome though, so I might have to look into a way to improve that and add it to the docs.
gravicappa has joined #lisp
<Shinmera> IS, etc. are just thin macros. If you expand one (or look in testers.lisp), you should be able to figure out how to get it done.
<Shinmera> Also, doing parametric tests like that can quickly explode the number of test cases. I should add a way to bundle tests or suppress them from being displayed in the overview.
<Shinmera> trying to run uax-9's tests with the default report will kill your emacs, for instance.
<Shinmera> (it expands to almost two million tests)
<vydd> oh wow..yeah, that ... sounds like a bit too much
<Shinmera> All in the name of unicode compliance :)
smokeink has quit [Ping timeout: 265 seconds]
Codaraxis has quit [Read error: Connection reset by peer]
Codaraxis has joined #lisp
arma_ has joined #lisp
shifty has joined #lisp
<vydd> Shinmera: here's a reason why first class support for parametrization might be needed: https://plaster.tymoon.eu/view/1568#1568
<vydd> (I've read with-shuffling, and I'm aware it won't work, I just wanted to get the point across)
<Shinmera> parametrisation is already supported.
<vydd> oh, it is? :) that's how this whole thing started - I couldn't find it in docs, and then phoe offered dolist as a solution... so, how do I do it?
<Shinmera> You don't use IS, as I said above.
<Shinmera> (loop for test in (alexandria:shuffle (loop for x from 0 to 10 collect (make-instance 'parachute:comparison-result ..))) do (parachute:eval-in-context *context* test))
<Shinmera> something like that.
<Shinmera> IS and all are just a wrapper around e-i-c and make-instance.
<Shinmera> you could also write a result that first gathers all tests, then shuffles them, and then evaluates them, then bind *context* before doing IS.
jjkola has joined #lisp
<Shinmera> Maybe with-shuffling ought to do that, but it might also be surprising. I don't know.
<jjkola> hi
Kundry_Wag has joined #lisp
<vydd> understood. I thought there was a way other than the cumbersome one (your words! :)) when you said "supported", that got me confused
<Shinmera> Ah, no, unfortunately not.
orivej has quit [Ping timeout: 265 seconds]
<vydd> do you accept PRs? I guess the real problem would be agreeing on the right API. maybe a new thing like DEFINE-PARAM-TEST could be introduced.. not sure
<Shinmera> Sure.
<Shinmera> Designing the right API is indeed the problem. I don't consider it urgent enough of a problem right now, though, since you can just construct the instances.
<vydd> true...well. you know what, when I get to the stage I want to have regression tests in the app I'm working on, I'll try with parachute, and if make-instance starts getting annoying, we can chat again
<Shinmera> Sounds good!
lucasb has joined #lisp
<Xach> Hmm! I need to provide an alternate name for http://beta.quicklisp.org/client/quicklisp.sexp because the "sex" substring is blocked for many people behind (very stupid) content filters.
<Xach> What do you think of quicklisp.plist?
pfdietz has joined #lisp
pfdietz has left #lisp [#lisp]
pfdietz has joined #lisp
Codaraxis has quit [Read error: Connection reset by peer]
Codaraxis has joined #lisp
<Shinmera> I think I typically do .dat.lisp or something.
<pfdietz> When using the RT test framework, I would use the idiom of having the form under test return NIL for success, otherwise it would return information about which specific input caused the failure.
<vydd> Xach: sounds good... just not sure if it would be interpreted in a special way on macOS
<vydd> or is it only Info.plist that's special?
<Shinmera> pfdietz: In Parachute the test-result instance typically returns the result of the form under test when evaluated.
<Shinmera> so you can do stuff like (is = 5 (thing (finish (make-instance '...))))
misterwhatever has joined #lisp
shifty has quit [Ping timeout: 265 seconds]
jonatack_ has joined #lisp
<pfdietz> I'm guessing the IS macro is so one can put several tests together that share some expensive set up and teardown code.
shifty has joined #lisp
<Shinmera> IS is just a comparsion test.
<Shinmera> FINISH is just a "does not error" test.
<Shinmera> so FINISH returns the result of make-instance after completing the test, which is then the value for the thing function, that serves the IS comparison.
<pfdietz> RT just has test definitions that look like (deftest <test-name> <test-form> <expected-results>)
<Shinmera> But yes, it's mostly to avoid expensive computations.
ym has quit [Remote host closed the connection]
<pfdietz> No "IS" needed.
Necktwi has quit [Read error: Connection reset by peer]
<pfdietz> But each test has to set things up and tear down by itself.
<Shinmera> I see.
jonatack has quit [Ping timeout: 276 seconds]
<pfdietz> One thing I added to rt in ansi-test was the ability to execute the tests repeatedly, in random order. This found a bug in SBCL (some persistent state in the handling of certain method combinations). Not quite the same as with-shuffling.
<Shinmera> Right.
<Shinmera> There's a lot of stuff that could be added to Parachute that's found in other frameworks, I'm sure :)
pierpal has quit [Ping timeout: 240 seconds]
Necktwi has joined #lisp
<pfdietz> I just want to understand what all the various frameworks are bringing to the table, so one can be extended to cover all bases.
<Shinmera> The latter is what Parachute tries to do. It has a very flexible evaluation model, which I tried to put to the test by writing compatibility layers that emulate the syntax and semantics of other frameworks.
<pfdietz> Interesting.
<Shinmera> I'd tackle more frameworks if I had time to spare.
pierpal has joined #lisp
fanta1 has joined #lisp
gareppa has joined #lisp
misterwhatever has quit [Remote host closed the connection]
Remavas has quit [Ping timeout: 240 seconds]
Remavas has joined #lisp
wxie has joined #lisp
emma has joined #lisp
emma has quit [Changing host]
emma has joined #lisp
FreeBirdLjj has joined #lisp
Kundry_Wag has quit [Ping timeout: 252 seconds]
xkapastel has quit [Quit: Connection closed for inactivity]
shifty has quit [Ping timeout: 240 seconds]
shifty has joined #lisp
ebzzry_ has joined #lisp
shifty has quit [Ping timeout: 240 seconds]
jjkola has quit [Ping timeout: 276 seconds]
shifty has joined #lisp
wxie has quit [Ping timeout: 245 seconds]
<pfdietz> I need to find that usage summary for the various test frameworks in quicklisp systems. A few had most of the "market".
Lycurgus has joined #lisp
Bike has joined #lisp
shifty has quit [Ping timeout: 265 seconds]
shifty has joined #lisp
orivej has joined #lisp
kobain has joined #lisp
smaster has joined #lisp
Inline has joined #lisp
shifty has quit [Ping timeout: 276 seconds]
shifty has joined #lisp
<puchacz> hi, I can't find in ccl manual - are hash tables thread safe? is there a special keyword to make them safe?
<pfdietz> In SBCL there is a keyword, but I don't know about CCL. It's not from the CL standard in any case.
<puchacz> I remember in sbcl :synchronized t
<puchacz> I did not even install ccl, just want to try something, because there might be a bug in sbcl /hunchentoot when running on multiple cores.
<puchacz> I will wrap it in with-lock myself
<puchacz> actually not easy, gethash is not a generic function :-)
shifty has quit [Ping timeout: 276 seconds]
shifty has joined #lisp
smaster has quit [Ping timeout: 240 seconds]
<puchacz> so maybe there is a library that would let me define around defuns, like in CLOS, so I can wrap calls to gethash and similar?
shifty has quit [Ping timeout: 240 seconds]
shifty has joined #lisp
gareppa has quit [Quit: Leaving]
<Bike> you can't redefine standard functions
<Bike> you could make your own function with the same name in a different package
<beach> Bah, GETHASH should already be generic. :)
<puchacz> Bike: I found a rumour ccl hashtables are thread safe and lock free
<Bike> well there you go then.
Codaraxis has quit [Read error: Connection reset by peer]
<puchacz> I am going to build ccl now and see how much code in my program needs adapting :)
Codaraxis has joined #lisp
<_death> note that your hunchentoot handlers may run in different threads
<puchacz> death: I am not sure what crashes, would you expect for example a bug in my code to crash sbcl image like this? (hold on, need pastebin)
shifty has quit [Ping timeout: 240 seconds]
<puchacz> when running the same delivered image locally on my PC, which is 4 cores virtual box, it is not crashing
shifty has joined #lisp
<puchacz> but I rented a 32 core virtual computer and use it remotely
<pfdietz> I wonder if SBCL could use a threading mode that does things more randomly, so bugs could be exposed with fewer cores.
<puchacz> it is running a numerical model fitting, hunchentoot is for giving arguments to the cost function, it does the calculations in multiple threads, joins into a single result and returns it via hunchentoot to the "driver" routine
<puchacz> the "driver" minimization routine runs on my PC
<puchacz> I am trying now with sbcl 1.5.5, to see if there is a difference
<_death> puchacz: this log indicates (i) corruption (ii) use of a bad file descriptor (maybe after being closed) .. do you know the reason for ii?
<pfdietz> beach: it is of course conforming for an implementation to make GETHASH be generic, but no conforming program can exploit that.
<puchacz> death: I don't read any files
<pfdietz> (well, unless it first tested for it)
<_death> puchacz: it's a socket file descriptor
<puchacz> death: as if http connection was corrupted?
<puchacz> it happens only after few hundred goal calls
<_death> puchacz: I would guess that the socket got closed but still its fd being passed around
<beach> pfdietz: Right.
<puchacz> death: what does it mean and anything I can do about it?
<_death> puchacz: as for the memory corrutpion, I don't know that it has to do with the fd trouble.. for that I would either pepper my source code with log forms to try to localize the problem, or try to use sbcl's debugger (ldb) to figure out more, or maybe use other tools.. maybe good to consult #sbcl to get tips on how to debug that
<mister_m> Can someone help me find documentation on the `:read-file-form` function I see used when defining some asdf systems? For instance, when loading a version -- :version (:read-file-form "version.txt"). Google is really failing me.
<puchacz> death: it seems it may be time for me to learn about ldb on sbcl channel
<_death> at least it's good to log the thread ids and their roles (e.g., "hunchentoot handler thread", "acceptor thread", etc.).. the thread id where the corruption is detected is in the error message
<_death> that of course does not mean that that's where the corruption happens.. but may provide clues
<puchacz> is it possible to corrupt the image by improper use of threading you think?
<puchacz> I understand I can corrupt data structures in my program in a sense of having something unexpected in a variable or cons cell, but can I break lisp itself?
<mister_m> Bike: thank you!
<puchacz> as of thread names, mind that it crashed before reaching my computations code
<puchacz> so within hunchentoot
<_death> puchacz: #sbcl is better informed than me on that.. but note that your program uses ffi (cl+ssl)
<puchacz> hunchentoot loads it
<puchacz> so I unload before deliverying the image and then load it back
<puchacz> I think it is hunchentoot, I just checked that it was loaded, so I unloaded it
<_death> you can also consider sb-bsd-sockets to have ffi qualities
<puchacz> yes, anything that talks to operating system I think
<_death> maybe it's possible to break into the debugger when corruption is detected
<_death> again, you should ask #sbcl :)
<puchacz> will do
<puchacz> thank
<puchacz> s
<puchacz> mind that I was in the debugger - I typed foreground, and then backtrace
Oladon has joined #lisp
Lycurgus has quit [Quit: https://meansofproduction.biz Exit Quassel.]
<_death> yeah, you landed there because of the second issue, I'm guessing. but I'm talking about the low-level sbcl debugger
<_death> (ldb)
<puchacz> ok
<puchacz> will talk to sbcl people
<puchacz> as we speak, sbcl 1.5.5 is running just fine now, for about 30 minutes
shifty has quit [Ping timeout: 276 seconds]
<_death> if it's a multithreading-related bug, it's not really indicative :)
shifty has joined #lisp
<puchacz> of course
<_death> I wonder if valgrind could work with sbcl
<puchacz> I don't know C/C++
<_death> well, if there's memory corruption some low-level knowledge may be needed to find out the problem
ljavorsk has joined #lisp
<puchacz> learn-by-doing then
shifty has quit [Ping timeout: 240 seconds]
ljavorsk_ has joined #lisp
gabiruh_ has quit [Quit: ZNC - 1.6.0 - http://znc.in]
ljavorsk has quit [Remote host closed the connection]
raghavgururajan has joined #lisp
dddddd has joined #lisp
ravenousmoose has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
ljavorsk_ has quit [Read error: Connection reset by peer]
Davd33 has joined #lisp
jmercouris has joined #lisp
<jmercouris> Anyone know of a CL LSP or efforts to create one to allow for easier editing of CL outside of the Emacs ecosystem?
Davd33 has quit [Remote host closed the connection]
FreeBirdLjj has quit [Remote host closed the connection]
samsepi01 has joined #lisp
FreeBirdLjj has joined #lisp
<beach> jmercouris: Yes, I am working on SICL, and I am planning (with a lot of help) and IDE that is not Emacs based.
<jmercouris> beach: CLIMACS will use a LSP?
<beach> Maybe. I know there are attempts to create an editor using the LSP, but I don't know whether it will be Second Climacs.
<jmercouris> I see
<beach> You might want to ask scymtym. He knows more about it than I do.
<jmercouris> did you read the conversation yesterday about creating a CL?
<beach> I did.
<jmercouris> Have you thought about creating a "blue" and "yellow" pages?
<beach> There is no unique smallest subset of Common Lisp like the one you are asking about.
<jmercouris> would you know if it is calculatable?
<jmercouris> is there a way to write a program to figure it out?
<beach> I doubt it. First of all, we have no measure about "smallest".
<jmercouris> This is true
Davd33 has joined #lisp
<jmercouris> I guess we would have to define size by some measure
<beach> About splitting Common Lisp, it is very tricky. Everything is intertwined.
<jmercouris> but let's say we could, do you still think it would be very unlikely?
FreeBirdLjj has quit [Ping timeout: 245 seconds]
Kundry_Wag has joined #lisp
<beach> I have not thought about it for some time. When I realized I was unable to write code using only a subset of the language, it became impossible for me to imagine starting with a small subset and building the rest from there.
<oni-on-ion> or did he mean something like https://sep.yimg.com/ty/cdn/paulgraham/jmc.lisp?t=1564708198&
<jmercouris> I am just thinking about it from a porting perspective, that's really why I am curious
<oni-on-ion> jmer is couris. =P
<jmercouris> I did read about clasp a b c intermediate languages
<beach> jmercouris: What kind of porting do you mean?
<jmercouris> I mean allowing CL to be compiled by different compilers
<jmercouris> as we had discussed yesterday, compiling a CL implementation using Potato lang
<beach> I saw it, yes.
<jmercouris> and kind of minimizing that work by making it so you only have to make a very small amount of Potato lang functions to get everything started
<samsepi01> When using SBCL timers, I get messages like "WARNING: Starting a poll (2) without a timeout while interrupts are disabled." I can’t understand what am I doing wrong?
Davd33 has quit [Remote host closed the connection]
<jmercouris> that's why I am so hung up on figuring out how to reduce the amount of work you would have to do in Potato lang to get started
heredoc has quit [Quit: ZNC 1.6.5+deb1+deb9u2 - http://znc.in]
<beach> jmercouris: I have no idea why you would want that. Why not generate native code directly?
heredoc has joined #lisp
<_death> sounds like you want a retargetable compiler
<jmercouris> beach: whether you are generating the code or writing it by hand, there is an amount of work in making your CL code compile via the Potato lang compiler
<jmercouris> _death: that sounds correct based on my knowledge of words, but I don't know exactly what that is
brown121407 has quit [Quit: Quit]
<beach> jmercouris: I don't see why the Potato compiler would be required at all.
brown121407 has joined #lisp
<jmercouris> beach: let's say you wanted to make your own version of ABCL, but instead of that it is PCL, potato common lisp
<jmercouris> wouldn't you need the Potato compiler to get started?
<jmercouris> maybe I'm not being clear, I'm not talking about compiling CL via Potato lang
<jmercouris> I'm talking about using Potato lang to build a CL
jonatack_ has quit [Read error: Connection reset by peer]
<beach> jmercouris: So you want to take an existing Common Lisp system written in some language L1 (which i not Common Lisp), and you want to have it written in a language L2 instead (which is also not Common Lisp). Is that it?
smaster has joined #lisp
<jmercouris> No, let me try toe xplain again
<jmercouris> We have a language X
jonatack_ has joined #lisp
<jmercouris> We have a compiler Y
<jmercouris> I want to know how I can write code in Y language to compile X language with the smallest amount of work
<jmercouris> after the initial compilation/bootstrapping, of course I could use X language to recompile X language
raghavgururajan has quit [Read error: Connection reset by peer]
<beach> But what I am trying to tell you is that you don't need the initial step.
<jmercouris> This is something I've never understood
<beach> SICL is written entirely in Common Lisp.
<jmercouris> you said something like that two years ago as well I believe
<jmercouris> I still don't understand how you could do that without an initial step
<beach> I use an existing Common Lisp system to execute the code.
<jmercouris> Well, someone at some point must have done that initial step then
<beach> Rather than some other language which would be much less convenient.
<beach> I don't care how we arrived at the current situation, but it is there, and I can take advantage of it.
<jmercouris> OK
brown121407 has quit [Quit: Quit]
<jmercouris> are there any advantages to bootstrapping with Potato lang?
brown121407 has joined #lisp
<jmercouris> could we potentially build some sort of interop with Potato lang by using its compiler?
<beach> That may be true.
maxxcan has joined #lisp
<jmercouris> What really got me thinking about this was Clasp
<jmercouris> I've been thinking and thinking about it, and I was wondering why there is so much C++ code
<pjb> jmercouris: the only reason you may have to do bootstrapping, is if you're lost on Mars, can't communicate with Earth, and have built a new computer from scratch.
<jmercouris> I'm sure it is necessary, but I'm wondering exactly *how much* is necessary
<pjb> (there's a lot of sand on Mars, I hear).
anewuser has joined #lisp
<beach> jmercouris: Mainly because drmeister "lives and breathes C++" as he put it himself.
<jmercouris> what about when people make new instruction sets and processors?
smaster has quit [Ping timeout: 265 seconds]
<jmercouris> don't they have to write new C compilers and bootstrap all over again?
<beach> jmercouris: You cross compile.
<pjb> jmercouris: you can cross-compile!
<jmercouris> How does cross compilation work?
<beach> You run on one computer and you generate code for a different one.
<beach> So all you need to do is modify the code generator.
<pjb> Already in the 60s, people DID NOT bootstrap anymore. At IBM, they implemented emulators of new computers to be able to develop the software with old computers for the new computer before the hardware was ready. Bootstrapping is so '40s!
<jmercouris> 11
<jmercouris> that's hilarious
<jmercouris> "Bootstrapping is so '40s"
<jmercouris> I do hear the term used quite frequently though
<_death> pjb: potatos are also relevant there, if you believe The Martian ;)
<pjb> Truth is, bootstrapping is intriguing and funny.
<oni-on-ion> we used bootstraps on our kids in the 40s ?
Kundry_Wag has quit [Read error: Connection reset by peer]
<jmercouris> That's how we'd pull ourselves up every morning!
<jmercouris> and walk uphill both ways to school
<oni-on-ion> aha
Kundry_Wag has joined #lisp
<oni-on-ion> with medicine full of morphine cocaine and wiskey
<beach> jmercouris: I call it "bootstrapping" in SICL, but it is not that kind of bootstrapping.
<jmercouris> beach: what is it really doing then?
<beach> jmercouris: I use an existing Common Lisp system to execute SICL code that generates (or will generate) native code.
<jmercouris> in this context what is "native" code?
<jmercouris> it often helps me to imagine a concrete example
<beach> X86-64.
<jmercouris> ah, okay I see
<jmercouris> so you have not yet made the part that generates X86?
<beach> Not yet.
<jmercouris> I will be interested to see how that looks
<beach> jmercouris: For something existing, you can look at Mezzano or even SBCL.
fe[nl]ix has quit [Ping timeout: 276 seconds]
Blkt has quit [Ping timeout: 276 seconds]
<jmercouris> Ah, right, Mezzano *must* do that since it runs on bare metal
Blkt has joined #lisp
fe[nl]ix has joined #lisp
<pjb> jmercouris: already, people implementing new compilers by bootstrapping nowadays cheat, since they use top-notch macOS systems to edit and debug their code. They should bootstrap it using a KIN-1 !!! http://oldcomputers.net/kim1.html
<beach> jmercouris: There is a paper by Xof (= Krystof) about how SBCL is built.
<pjb> s/KIN/KIM/
<beach> jmercouris: The title is "SBCL, Sanely Bootstrappable Common Lisp".
Kundry_Wag has quit [Ping timeout: 252 seconds]
gigetoo has quit [Ping timeout: 240 seconds]
<beach> jmercouris: My guess with respect to Common Lisp is that there is this idea that Common Lisp has to be created using some lower-level language, but that is not the case, of course.
gigetoo has joined #lisp
<beach> jmercouris: Now, building a Common Lisp system is considerably harder than (say) writing a C compiler in C.
<beach> Or, forget the "in C" even.
<Xach> frodef's assembler was interesting to read
<beach> jmercouris: The reason is that a C compiler is a simple file translator, whereas a Common Lisp system contains a complex graph of objects right from the start.
<jmercouris> I found the paper
<Xach> jmercouris: i found it helpful to understand that code to run on a machine is just a sequence of bits, and it's not hard to make a program in any language create a sequence of bits, either in memory on on disk. sometimes it's tricky to know what bits to put in what order, but they are all bits at the bottom.
<Xach> this is also true of e.g. PNG files, or font files, or the X protocol, or PDFs, etc.
<jmercouris> That's true, they are all indeed bits
<beach> jmercouris: And, the best way of creating that graph is to execute code. And it is best if that code is Common Lisp code.
<jmercouris> I never thought about the common denomenator
maxxcan has quit [Quit: maxxcan]
<jmercouris> Maybe one day I will try to write a CL in CL that compiles to x86 directly
<Xach> so if the bits on x86 to test for zero and jump are 42, and on arm it's 31, it's not a big deal to make a compiler on x86 generate arm, as long as you configure it to produce the right bits.
<Xach> the higher-level management of program meaning is one thing and generating the right bits is another.
<jmercouris> Right, I was just thinking about stuff like RISC or something which is quite different than x86
<jmercouris> I guess you could of course compose all of x86 using RISC
<Xach> so there may be more or less bits to faithfully represent the intent to the machine
<jmercouris> I bet it would be insanely difficult to formally prove that they are computionally equivalent
<jmercouris> I did study some formal verification in graduate school, I ended up leaving the class feeling like it was a toy that could never really be used
<_death> Turing already did the work
<jmercouris> thanks for the explanations and links, more to think about, I'm off to cook some dinner now
bacterio has quit [Write error: Connection reset by peer]
jjkola has joined #lisp
<puchacz> so I started ccl locally, I can see its make-hash-table non-standard keyword arguments, but where is it documented?
xkapastel has joined #lisp
<puchacz> okay, I will guess
<puchacz> from the source
ebrasca has quit [Remote host closed the connection]
jonatack_ has quit [Quit: jonatack_]
jonatack has joined #lisp
Kundry_Wag has joined #lisp
brown121408 has joined #lisp
brown121407 has quit [Ping timeout: 265 seconds]
Oladon has quit [Quit: Leaving.]
Kundry_Wag has quit [Ping timeout: 276 seconds]
gravicappa has quit [Ping timeout: 276 seconds]
slyrus_ has joined #lisp
Kundry_Wag has joined #lisp
slyrus__ has quit [Ping timeout: 240 seconds]
smaster has joined #lisp
FreeBirdLjj has joined #lisp
smaster has quit [Ping timeout: 265 seconds]
FreeBirdLjj has quit [Ping timeout: 245 seconds]
lnostdal has joined #lisp
brown121408 has quit [Read error: Connection reset by peer]
brown121407 has joined #lisp
smaster has joined #lisp
<pjb> puchacz: have you tried the documentation of ccl?
<puchacz> pjb: yes
<puchacz> does not seem to have information on make-hash-table extensions
<pjb> Then the sources, yes.
<puchacz> :(
<pjb> You can write a patch to the doc.
<puchacz> well, it is all guesswork
Dibejzer has quit [Remote host closed the connection]
Zanitation has joined #lisp
arma_ has quit [Quit: arma_]
smaster has quit [Ping timeout: 252 seconds]
Lord_of_Life has joined #lisp
X-Scale has quit [Ping timeout: 250 seconds]
X-Scale` has joined #lisp
jonatack has quit [Read error: Connection reset by peer]
X-Scale` is now known as X-Scale
Mandus has quit [Ping timeout: 246 seconds]
pierpal has quit [Ping timeout: 240 seconds]
smaster has joined #lisp
<puchacz> okay, ccl is much slower than sbcl, for my simulations it matters a lot
<puchacz> btw, 1.5.5 also has this memory corruption error
<puchacz> (if you are still here death)
smaster has quit [Ping timeout: 240 seconds]
cosimone has joined #lisp
cosimone has quit [Client Quit]
cosimone has joined #lisp
gravicappa has joined #lisp
Mandus has joined #lisp
gareppa has joined #lisp
jlarocco has quit [Remote host closed the connection]
gareppa has quit [Client Quit]
asarch has joined #lisp
Lord_of_Life has quit [Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine]
gareppa has joined #lisp
gareppa has quit [Remote host closed the connection]
<_death> have you tried reducing the amount of code that runs? if it's only a trivial handler, does it still happen?
varjag has joined #lisp
<puchacz> _death this is going to be my next step I think, to isolate the problem
smaster has joined #lisp
techquila has quit [Quit: Drops mic, and fucks off back to wherever he crawled out of.]
Lord_of_Life has joined #lisp
fanta1 has quit [Ping timeout: 250 seconds]
Oladon has joined #lisp
space_otter has joined #lisp
space_otter has quit [Client Quit]
space_otter has joined #lisp
ggole has quit [Quit: Leaving]
asarch has quit [Quit: Leaving]
Lord_of_Life has quit [Quit: Laa shay'a waqi'un moutlaq bale kouloun moumkine]
Lord_of_Life has joined #lisp
Kundry_Wag has quit [Remote host closed the connection]
Kundry_Wag has joined #lisp
pfdietz has quit [Remote host closed the connection]
bars0 has quit [Ping timeout: 240 seconds]
Kundry_Wag has quit [Read error: Connection reset by peer]
Kundry_Wag has joined #lisp
atgreen has quit [Ping timeout: 276 seconds]
izh_ has joined #lisp
sjl has quit [Quit: WeeChat 2.2-dev]
gravicappa has quit [Ping timeout: 276 seconds]
oni-on-ion has quit [Ping timeout: 240 seconds]
oni-on-ion has joined #lisp
mathrick has quit [Ping timeout: 250 seconds]
EvW has joined #lisp
mathrick has joined #lisp
pierpal has joined #lisp
dale has joined #lisp
atgreen has joined #lisp
kajo has quit [Quit: From my rotting body, flowers shall grow and I am in them and that is eternity. -- E. M.]
EvW has quit [Ping timeout: 246 seconds]
smaster has quit [Ping timeout: 265 seconds]
kajo has joined #lisp
nowhereman has joined #lisp
anewuser has quit [Quit: anewuser]
sjl has joined #lisp
jmercouris has quit [Remote host closed the connection]
xkapastel has quit [Quit: Connection closed for inactivity]
smaster has joined #lisp
EvW1 has joined #lisp
brettgilio has quit [Quit: Quit]
smaster has quit [Ping timeout: 276 seconds]
vlatkoB has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
rippa has quit [Quit: {#`%${%&`+'${`%&NO CARRIER]
<mfiano> Heh, Ultralisp sounds like the worst idea ever. Anyone use this?
nowhereman has quit [Ping timeout: 250 seconds]
<puchacz> have we got "threading and allocation torture test"?
bars0 has joined #lisp
<mfiano> Suppose I make a project on my github called "alexandria" and click the big blue button on ultralisp.org to add it. Everyone that updates their dist and loads a system that depends on it (nearly anything transitively), and they likely won't know that it secretly deletes / recursively until it's too late. I can't believe there is no review process and it updates every 5 minutes. Maybe I'm missing
<mfiano> something, but these MITM-like attacks seem quite easy with this model.
Oladon has quit [Quit: Leaving.]
bars0 has quit [Ping timeout: 240 seconds]
buffergn0me has joined #lisp
varjag has quit [Remote host closed the connection]
varjag has joined #lisp
<borodust> Xach: hi! anything new with PGP for quicklisp dists? i apologize in advance, if i missed some critical news regarding that feature
<borodust> was super busy with work lately :/
smaster has joined #lisp
smaster has quit [Ping timeout: 265 seconds]
clothespin has joined #lisp
nowhereman has joined #lisp
nowhereman has quit [Ping timeout: 276 seconds]
izh_ has quit [Quit: Leaving]
oni-on-ion has quit [Ping timeout: 250 seconds]
smaster has joined #lisp
hiroaki has quit [Ping timeout: 245 seconds]
EvW1 has quit [Ping timeout: 245 seconds]
smaster has quit [Ping timeout: 252 seconds]
oni-on-ion has joined #lisp
lucasb has quit [Quit: Connection closed for inactivity]
hiroaki has joined #lisp
hiroaki has quit [Remote host closed the connection]
hiroaki has joined #lisp
pierpal has quit [Read error: Connection reset by peer]
makomo has quit [Quit: WeeChat 2.4]
Jesin has quit [Quit: Leaving]
Jesin has joined #lisp
smaster has joined #lisp
clothespin has quit [Ping timeout: 276 seconds]
smaster has quit [Ping timeout: 252 seconds]
bitmapper has joined #lisp
EvW has joined #lisp
ljavorsk has joined #lisp
<fiddlerwoaroof> mfiano: sounds like npm
<fiddlerwoaroof> :)
khisanth__ has quit [Ping timeout: 250 seconds]
mooch has quit [Remote host closed the connection]
clothespin has joined #lisp
nowhereman has joined #lisp
khisanth__ has joined #lisp
<luis> Alexandria has a parse-ordinary-lambda-list. Is there a parse-macro-lambda-list somewhere?
mooch has joined #lisp
clothespin_ has joined #lisp
cosimone has quit [Read error: Connection reset by peer]
cosimone has joined #lisp
cosimone has quit [Client Quit]
cosimone has joined #lisp
<Bike> implementations probably has it, but it's not as easy to define, since the recursive structure means the multiple value return isn't enough
clothespin has quit [Ping timeout: 276 seconds]
cosimone_ has joined #lisp
cosimone has quit [Read error: Connection reset by peer]
dilated_dinosaur has joined #lisp
jonatack has joined #lisp
clothespin has joined #lisp
clothespin_ has quit [Ping timeout: 252 seconds]
atgreen has quit [Ping timeout: 240 seconds]
sindan has quit [Ping timeout: 276 seconds]
nowhereman has quit [Ping timeout: 265 seconds]
smaster has joined #lisp
cosimone_ has quit [Quit: Quit.]
smaster has quit [Ping timeout: 276 seconds]
clothespin has quit [Ping timeout: 240 seconds]
Kundry_Wag has quit [Remote host closed the connection]
Kundry_Wag has joined #lisp
Oladon has joined #lisp
Kundry_Wag has quit [Ping timeout: 265 seconds]
smokeink has joined #lisp
anewuser has joined #lisp
wiselord has quit [Read error: Connection reset by peer]
brown121407 has quit [Read error: Connection reset by peer]
brown121407 has joined #lisp
wiselord has joined #lisp
varjag has quit [Ping timeout: 246 seconds]
buffergn0me has quit [Ping timeout: 250 seconds]
<pjb> luis: what about a (parse-lambda-list ll :macro)?
<pjb> luis: cf. com.informatimago.common-lisp.lisp-sexp.source-form:parse-lambda-list