Noisytoot has quit [Remote host closed the connection]
Noisytoot has joined #commonlisp
mesuutt has joined #commonlisp
mgl_ has quit [Ping timeout: 256 seconds]
emaczen has quit [Read error: Connection reset by peer]
gorignak has quit [Quit: quit]
mgl_ has joined #commonlisp
mesuutt has quit [Ping timeout: 252 seconds]
mgl_ has quit [Ping timeout: 246 seconds]
waleee has joined #commonlisp
mm007emko has quit [Read error: Connection reset by peer]
mm007emko has joined #commonlisp
mgl_ has joined #commonlisp
Inline has quit [Quit: Leaving]
Inline has joined #commonlisp
chrcav has quit [Quit: leaving]
jonatack has joined #commonlisp
nij- has joined #commonlisp
nij- has left #commonlisp [Using Circe, the loveliest of all IRC clients]
admich1 has quit [Ping timeout: 260 seconds]
admich1 has joined #commonlisp
wacki has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
lucasta has joined #commonlisp
mgl_ has quit [Ping timeout: 255 seconds]
amb007 has quit [Remote host closed the connection]
amb007 has joined #commonlisp
msavoritias has quit [Remote host closed the connection]
wacki has joined #commonlisp
Inline has quit [Ping timeout: 255 seconds]
nij- has joined #commonlisp
<nij->
Is there any full conforming CL implementation that only has an interpreter?
<nij->
(so it's not compiling to any other language, including any bytecode)
josrr has quit [Remote host closed the connection]
<edgar-rft>
nij-: the only thing I know that comes close is XLISP-PLUS (originally written by David Betz, now maintained by Tom Almy) -> https://almy.us/xlisp.html
<edgar-rft>
it's a Lisp-2 interpreter but it's not fully ANSI CL conformant
<ixelp>
XLISP-PLUS Home Page
<gilberth>
Common Lisp would need at least what is called minimal compilation.
<gilberth>
In a nutshell: Macros must be expanding at compile time and not during runtime.
<nij->
gilberth Yes, and that is to expand (() or compiler) macros and load-time-value correctly.
<nij->
Yes
<nij->
But that's not compiling to 'another lang' so I count it out :D
<nij->
edgar-rft Thanks! A newer version of it. ..: "however Xlisp 3.0 does have a bytecode compiler and probably will run faster."
<gilberth>
XLISP 3.0 wants to be Scheme and not a CL.
<nij->
Ah.. Hmm interesting.
<edgar-rft>
nij-: XLISP-3 is a Lisp-1, not a Lisp-2
<gilberth>
Unlike XLISP 1.6 which wanted to become a Common Lisp. I don't know on which side XLISP-PLUS is.
<gilberth>
If you're curious: You may play with XLISP-1.6 and XLISP-3.3 at <https://lispcafe.org/xlisp/>, if you wish.
<ixelp>
Emscripted XLISP
<nij->
1985.. so ancient
<edgar-rft>
XLISP-PLUS is Tom Almy's derivate of XLISP-2, it's closer to Common Lisp and has a more CLOS-like object system instead of the XLISP-2 Smalltalkish object system
<nij->
online 1.6 doesn't have #'format
<gilberth>
XLISP 1.6 never had a FORMAT.
<edgar-rft>
no XLISP version has FORMAT, only PRINT and derivates
<nij->
(time (fib 32)) => ;; took 2.258s gilberth
micro has quit [Ping timeout: 256 seconds]
<nij->
Does it use my browser for computation power?
<gilberth>
It's WASM.
<gilberth>
So you pay for the cycles.
micro has joined #commonlisp
<nij->
Nice.
thuna` has joined #commonlisp
<gilberth>
I should host documentation. And some means to have files of some sort. And for that CLISP I should find a way to load Quicklisp systems. But you cannot really do anything from within that Webworker.
<gilberth>
And one day I should ask Microsoft to release sources of muLISP.
<gilberth>
nij-: Perhaps I missed links to figures entirely.
<nij->
Apparently.. just add it to todo if you care, there's no rush. Thanks for novaspec. It's wonderful.
yitzi has quit [Remote host closed the connection]
<gilberth>
I find WASM is a great tool to preserve software. Like this Interlisp. Or the CADR <https://lispcafe.org/cadr/usim.html>. The Computer History Museum hasn't gotten it yet that software can not only be stared at but also be run.
<ixelp>
CADR Emulator
<gilberth>
I'd like to see more of this. And there is plenty available. It would be great when all this can be made to run with WASM, so that every curious person can have a look without too much hassle installing and configuring emulators.
lucas_ta has joined #commonlisp
lucasta has quit [Ping timeout: 245 seconds]
<nij->
Why is it a great to preserve?
<nij->
tool*
<gilberth>
Because a web browser is all you need to run it.
akoana has joined #commonlisp
<gilberth>
E.g. You find the very original LISP implementation for that IBM 704. You would need to install an emulator and follow some instructions to run it. The just curious would not make this effort. Or you can run MULTICS with MacLisp and the original Emacs. Also takes quite some effort.
<gilberth>
btw this Emacs is in sofar surprising as you can get around just fine. Same with that Emacs that the CADR has. Not much of the key bindings have changed.
<nij->
? Why not C.., but wasm?
<gilberth>
You would still need to download something, compile it, and fix bugs or otherwise try to get it to run somehow.
<gilberth>
That's never easy. And C rots. You usually cannot run something like ten years old or older. Especially so, when you need more than ISO C, which you almost always would need.
<gilberth>
And btw all that is C. But compiled to WASM.
<nij->
For wasm to run you need a browser too.
<nij->
And C.. if with good discipline and writing only ISO and portable code, that should have the same advantage as WASM?
<gilberth>
nij-: Even DOS is a challenge. I install Debian 8.11 from 2015 just to be able to run dosemu. I was not able to compile dosemu with any more recent Linux distribution.
<gilberth>
nij-: You can't run an Emacs e.g. using ISO C. Nor can you do graphics.
<nij->
i c what you mean now
<gilberth>
And you would still need to compile it. I think there is value in that about any person who is curious could look at ancient GUIs. Like Interlisp. Or perhaps the XEROX GUI.
<gilberth>
Or play with ancient Emacs. Or with that original LISP on that IBM 704. Just to see what was there already and realize that we moved about nowhere.
Inline has joined #commonlisp
<gilberth>
I mean, would I need to own a workshop and have knowledge in car mechanics to visit an automible museum? Or take a journey with some classic car?
<nij->
pretty cool
lucas_ta has quit [Quit: Leaving]
<nij->
How does dynamic envs differ from global envs?
<gilberth>
What you mean?
<nij->
When evaluating a dynamic var, doesn't lisp just go to the highest global env and get that binding?
<gilberth>
What about threads? And even without its an implementation detail. Some implementation might save the old value and store the new value to the global cell, some might keep a list of bindings that are in effect and keep the global cell intact. One is called shallow binding the other deep binding.
<edgar-rft>
gilberth, bug report: w3m https://lispcafe.org/xlisp/xlisp-1-6/xlisp.html - prints: emscripten <newline> Downloading <newline> Ready - then leaves me with an unresponsive window
<ixelp>
XLISP version 1.6, Copyright (c) 1985, by David Betz
<gilberth>
edgar-rft: Since when can w3m execute JS and run WASM?
mesuutt has joined #commonlisp
<bike>
nij-: you can bind dynamic variables locally, honestly
<bike>
er
<bike>
obviously
<bike>
but also honestly.
<gilberth>
I could however see that the web page says so. Also I need to run a Webworker, which isn't available everwhere.
<nij->
OH.. the locally .. declare special thing.. Right.
<nij->
Hmm, then I didn't understand what dyn envs are. I must think it through then.
<edgar-rft>
gilberth: I had at least expected the website to send an error message and not force me to kill -9 w3m
<gilberth>
edgar-rft: Then report the bug with w3m and not with me.
<nij->
bike When an evaluator is evaluating an AST, how does it tell which variable is dynamic or not?
<bike>
it is lexically apparent
<bike>
there's either a global proclamation or a local declaration. usually the former
<gilberth>
Yes, and when there is neither the compiler would usually complain.
NotThatRPG has quit [Remote host closed the connection]
<bike>
a local special binding isn't established by a declaration, it's established by binding
mesuutt has quit [Ping timeout: 245 seconds]
<bike>
you can do, like, (let ((*print-circle* t)) ...) and then the dynamic variable has a local binding
<bike>
the declaration might make a binding special, but it's not needed if the variable has been globally proclaimed special
cage has quit [Quit: rcirc on GNU Emacs 29.2]
<nij->
I see.
<bike>
the reason it's a dynamic environment and not a lexical environment is that you can do e.g. (defvar *foo*) (defun foo () *foo*) (let ((*foo* 18)) (foo)) => 18
<bike>
within the body of the foo function - lexically - *foo* has no value
<bike>
when you call foo it has to look up *foo* in the dynamic environment at runtime
<bike>
sure, but lexical variables work the same way there, so it's not a useful example
<nij->
*x* is globally special. Why does it still use the lexical binding?
<bike>
it doesn't. that's a special binding.
<nij->
Oh
<nij->
So there are also multiple sets of dynamic bindings, and they form a DAG like sets of lexical bindings?
<bike>
that sounds pretty gibberishy to me
<bike>
i don't know why you would involve DAGs or lexical bindings in a description of dynamic bindings
<nij->
Maybe this is implementation details.. but a lexical environment should usually (be implemented in such a way that it) has a parent environment, right?
<bike>
lexical environments have parents, yes.
<nij->
And the bindings in the children environments shadow the bindings of parent envs.
<bike>
sure.
<nij->
Right. But do dynamic envs have parents too?
<nij->
(I came here today thinking there's only one dyn env.. so I wonder about this now.)
<bike>
sure they do.
<nij->
Right. So are the trees of {dyn envs} and {lexical envs} related in any way?
<nij->
Or.. maybe they only meet at the global environment?
<bike>
i suppose you could think of them as meeting at the global environment.
<bike>
otherwise they are unrelated, although some dynamic names have a lexical presence. like how (declare (special ...)) has a lexical effect, or how block names are available only lexically.
<nij->
Great! As I thought :) Thank you!
<nij->
(That makes thinking about first class global env more difficult..)
<younder>
I have the MIT DEC10 with ITS and TECO EMACS and MacLisp running in a emulator. The config seems to be from 1984. The setup is fairly straightforward.
<younder>
PDP10
<bike>
if you want to know what's in a global environment, you can just look at clostrum.
jonatack has quit [Ping timeout: 268 seconds]
amb007 has quit [Ping timeout: 255 seconds]
mgl_ has joined #commonlisp
<nij->
bike Does clostrum have a special operator (say, use-globenv) that forces all forms in the body uses the designated global env?
<nij->
s/?/..as the default root env?/
ocra8 has quit [Quit: WeeChat 4.2.2]
kanuba has joined #commonlisp
mesuutt has joined #commonlisp
X-Scale has quit [Quit: Client closed]
nij- has quit [Ping timeout: 255 seconds]
<bike>
nij-: i'm pretty sure we already talked about something similar and beach or i explained that you can't do anything like that without support from the evaluator for god's sake
<bike>
the disconnects...
chomwitt has joined #commonlisp
mesuutt has quit [Ping timeout: 255 seconds]
amb007 has joined #commonlisp
jonatack has joined #commonlisp
amb007 has quit [Ping timeout: 255 seconds]
ocra8 has joined #commonlisp
mgl_ has quit [Ping timeout: 268 seconds]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
random-jellyfish has joined #commonlisp
random-jellyfish has quit [Changing host]
random-jellyfish has joined #commonlisp
NotThatRPG has joined #commonlisp
admich1 has quit [Ping timeout: 245 seconds]
admich1 has joined #commonlisp
ronald_ has joined #commonlisp
ronald has quit [Read error: Connection reset by peer]
wacki has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
mesuutt has joined #commonlisp
ronald_ has quit [Ping timeout: 245 seconds]
mesuutt has quit [Ping timeout: 260 seconds]
jmercouris1 has joined #commonlisp
ronald has joined #commonlisp
alcor has quit [Ping timeout: 260 seconds]
ronald has quit [Read error: Connection reset by peer]
admich1 has quit [Remote host closed the connection]
admich1 has joined #commonlisp
shka has quit [Ping timeout: 268 seconds]
jmercouris1 has quit [Client Quit]
NotThatRPG has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
mgl_ has joined #commonlisp
ronald has joined #commonlisp
ronald_ has joined #commonlisp
ronald has quit [Ping timeout: 240 seconds]
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
mgl_ has quit [Ping timeout: 264 seconds]
dino_tutter has quit [Ping timeout: 268 seconds]
rgherdt has quit [Remote host closed the connection]
mesuutt has joined #commonlisp
rtypo has quit [Ping timeout: 268 seconds]
chomwitt has quit [Ping timeout: 268 seconds]
mesuutt has quit [Ping timeout: 252 seconds]
amb007 has quit [Ping timeout: 256 seconds]
Noisytoot has quit [Remote host closed the connection]
Guest98 has quit [Quit: Client closed]
Noisytoot has joined #commonlisp
nij- has joined #commonlisp
<nij->
bike Sorry, I remembered part of that conversation. But I thought it wasn't clear; or maybe I misunderstood.
donleo has quit [Ping timeout: 268 seconds]
<bike>
i'll say it again: all existing lisp implementations operate in terms of just one global environment. the environment can't be swapped out.
<nij->
Yes, that's right. I'm thinking about bocl though.. how it should handle envs in the first place.
Noisytoot has quit [Ping timeout: 272 seconds]
<bike>
okay, but you asked about clostrum
<bike>
providing a special operator is way out of scope for clostrum to begin with
Noisytoot has joined #commonlisp
mesuutt has joined #commonlisp
pve has quit [Quit: leaving]
josrr has joined #commonlisp
mesuutt has quit [Ping timeout: 245 seconds]
akoana has quit [Quit: leaving]
<nij->
I see.
<nij->
Ah! If a CL implementation want to provide first class global env, besides providing clostrum, another thing it could do is to expose a special operator for it!!
mesuutt has joined #commonlisp
<nij->
I wonder if such a special op will break the conformance..