<ixelp>
GitHub - sionescu/static-vectors: Allocate SIMPLE-ARRAYs in static memory
alcor` has joined #commonlisp
josrr has quit [Remote host closed the connection]
alcor has quit [Ping timeout: 276 seconds]
bh34e5 has joined #commonlisp
X-Scale has joined #commonlisp
jon_atack has quit [Ping timeout: 246 seconds]
jonatack has joined #commonlisp
jonatack has quit [Read error: Connection reset by peer]
jonatack has joined #commonlisp
jon_atack has joined #commonlisp
jonatack has quit [Read error: Connection reset by peer]
alXsei has joined #commonlisp
alXsei has quit [Quit: Leaving]
X-Scale has quit [Quit: Client closed]
Lord_of_Life has quit [Ping timeout: 264 seconds]
Lord_of_Life has joined #commonlisp
Noisytoot has quit [Excess Flood]
Noisytoot has joined #commonlisp
Noisytoot has quit [Remote host closed the connection]
bh34e5 has quit [Ping timeout: 246 seconds]
lucasta has quit [Remote host closed the connection]
Pixel_Outlaw has quit [Quit: Leaving]
Noisytoot has joined #commonlisp
Noisytoot has quit [Remote host closed the connection]
Noisytoot has joined #commonlisp
triffid has quit [Remote host closed the connection]
triffid has joined #commonlisp
decweb has quit [Ping timeout: 260 seconds]
puke has quit [Ping timeout: 248 seconds]
puke has joined #commonlisp
istewart has quit [Quit: Konversation terminated!]
Noisytoot has quit [Remote host closed the connection]
Noisytoot has joined #commonlisp
Noisytoot has quit [Remote host closed the connection]
meaty has quit [Ping timeout: 276 seconds]
cinerion has quit [Quit: WeeChat 4.2.1]
Noisytoot has joined #commonlisp
troojg has joined #commonlisp
beach` has joined #commonlisp
beach has quit [Killed (NickServ (GHOST command used by beach`!~user@2a01:cb19:682:4600:8186:fecf:123b:4ef0))]
beach` is now known as beach
cinerion has joined #commonlisp
amb007 has joined #commonlisp
amb007 has quit [Ping timeout: 265 seconds]
amb007 has joined #commonlisp
amb007 has quit [Ping timeout: 265 seconds]
amb007 has joined #commonlisp
drewjose has quit [Ping timeout: 244 seconds]
drewjose has joined #commonlisp
amb007 has quit [Ping timeout: 265 seconds]
amb007 has joined #commonlisp
triffid has quit [Remote host closed the connection]
triffid has joined #commonlisp
troojg has quit [Ping timeout: 246 seconds]
Noisytoot has quit [Excess Flood]
Noisytoot has joined #commonlisp
ym has joined #commonlisp
wacki has joined #commonlisp
synchromesh has quit [Read error: Connection reset by peer]
synchromesh has joined #commonlisp
spdegabrielle has joined #commonlisp
rtypo has joined #commonlisp
donleo has joined #commonlisp
pve has joined #commonlisp
cage has joined #commonlisp
cage has quit [Excess Flood]
cage has joined #commonlisp
dnhester26 has joined #commonlisp
chomwitt has joined #commonlisp
chomwitt has quit [Ping timeout: 260 seconds]
herjazz has joined #commonlisp
<dnhester26>
Can someone please explain what he means by the word different in the last paragraph in this article: http://lispm.de/why-lisp-is-different
<dnhester26>
Lisp implementations which are different on today's computers: Allegro CL, LispWorks, CMUCL, Clozure CL, SBCL and many others. They are meant to help us write software. But we need to be willing to Think Different.
<dnhester26>
I was trying to learn what the point of lisp OSs or machines was
younder has quit [Remote host closed the connection]
<dnhester26>
Does it just mean that those lisp implementations have the unique features which make them different from other languages that he describes throughout the essay? If so, wouldn't they just be regular lisps then?
McParen has joined #commonlisp
<edgar-rft>
dnhester26: I think the main difference between Lisp Machines and Common Lisp implementations running on other computer designs was that on Lisp Machines the type tagging was implemented in hardware.
<dnhester26>
edgar-rft: thanks for the reply. type tagging meaning attaching a type to the data being referenced? would that make it faster?
younder has joined #commonlisp
<edgar-rft>
dnhester26: most Lisp machines used 36-bit memory where you had 32 bit e.g. for an integer or floating-point number plus 4 bit for the type tag. But to make this really faster you also need a CPU that can handle 36 bits at once plus other chips using 36 instead of 32 bits. On standard 32 or 64 bit architectures you need additional tricks to handle the type tag, what makes Lisp on 32 or 64 bit systems
<edgar-rft>
slightly slower that on Lisp machines.
treflip has joined #commonlisp
<younder>
Been looking at the static-vectors code. It seems that in SBCL a memory area that is not managed by the GC must be implemented almost from scratch. For other implementations it is just veneer. In CMUCL (, which SBCL is derived from,) you just (make-array ... :allocate malloc). Why is it so difficult in SBCL?
<dnhester26>
edgar-rft: thanks for the explanation! now it makes much more sense to me. So it needed a whole different architecture to run lisp faster, and since demand wasn't high enough that's why the companies making them stopped. But the idea for a lisp machine is something that makes sense even today, it was just a "let's make everything run on lisp", but rather let's make an architecture to run lisp faster
<dnhester26>
A while back I saw some common lisp based OS, according to this, it's completely unrelated to the purpose of the original lisp machines, and it was just someone who wanted to use CL to make an OS. edgar-rft did I understand correctly? or is there something about the OS as well which would make lisp faster/better?
<edgar-rft>
dnhester26: from time to time there are people who are trying to build Lisp CPUs from FPGAs (programmable logic hardware chips) but it's a *lot* of work so I can't remember any project that ever got finished :-)
<dnhester26>
edgar-rft: thanks! :D
<younder>
C still defaults to making int 32 bits on Linux so actually lisp's integer type is bigger.
<younder>
tags and all
<younder>
It does explain why fload and not double is the default floating point size. It's the tag..
treflip` has joined #commonlisp
drewjose has quit [Ping timeout: 252 seconds]
treflip has quit [Ping timeout: 248 seconds]
drewjose has joined #commonlisp
<younder>
It must have been hell trying to shoe-horn it into fitting into 32 bits. Things are better now..
<dnhester26>
younder: ah, that makes sense. thanks for explaining about the floats.
<edgar-rft>
there are two often-used strategies for type-tag trickery, either 1) steal some bits from the data, for example Emacs Lisp has 27-bit integers because the remaining five bits are used for the type tag, or use "boxed" data type where the full 32 or 64 bits are used for the data and a *second* memory place is used for the tag.
<edgar-rft>
the practical problem is that the implementation-internal code that talks to the computer hardware must use untagged 32 or 64 bit data, otherwise number crunching algorithms become *very* slow, and it's not really easy to find the right balance between tagged Lisp data and untagged hardware data that possibly works good and fast for *all* cases.
pranavats has joined #commonlisp
<aeth>
younder: right, tagging a fixnum makes you lose at least 2 bits (1 for the most efficient way to type-tag a fixnum, which SBCL does, but only in 64-bit x86 and not 32-bit x86... and 1 because it has to be signed when you might want unsigned's extra positive range at the expense of having no negatives)... in practice, more
<aeth>
and then most limits in the language (like array sizes) must be positive-fixnums
alternateved has joined #commonlisp
<aeth>
in 64-bit, you don't really notice or care because 18 quintillion is big enough that halving that a few times rarely matters
pranavats has left #commonlisp [Error from remote client]
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester_ has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester_ has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
spdegabrielle has quit [Quit: Connection closed for inactivity]
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
mwnaylor has quit [Ping timeout: 276 seconds]
ym has quit [Read error: Connection reset by peer]
ym has joined #commonlisp
dnhester26 has joined #commonlisp
<beach>
dnhester26: Lisp runs just fine on ordinary processors available today. But as Lisp-inspired operating system can indeed make applications run faster, because it can avoid expensive context changes that are a necessity in today's "modern" operating systems.
<beach>
*But a Lisp-inspired...
<beach>
dnhester26: But I am not sure what lispm (I think that's Rainer Joswig's nick) means by that last phrase.
<beach>
dnhester26: So the idea of a Lisp machine does not make much sense today, because a processor would have to be built, and it would be an order of magnitude slower than a modern processor (unless you could make it sufficiently popular that it would be profitable to make it the way modern processors are made).
<beach>
dnhester26: And it would not execute Lisp code sufficiently faster to compensate for that.
<dnhester26>
beach: thanks for replying. yeah, that is Rainer Joswig's website. What do you mean by context switch?
malaclyps has quit [Ping timeout: 248 seconds]
<beach>
Er, when the processor switches from one process to another process.
<dnhester26>
ah. ok, thanks
<beach>
dnhester26: There are two existing Common Lisp operating systems that work, Movitz and Mezzano, and one that is planned.
<dnhester26>
hm, not following though why if it's a lisp processor it would make it avoid that? because everything is running in a lisp image? but isn't that just the same? having to switch between two lisp programs running in tandem? or is it just because it would have a lisp image already loaded and would have to reload everything again?
<dnhester26>
"that work" meaning are functional or are useful for something today?
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
<beach>
dnhester26: The problem with modern operating systems is that they try to make every application work as if it has an entire physical machine at its disposal, including direct access to the stack and the heap. Lisp doesn't have to work that, so an OS based on Lisp does not have to remap the address space when a function is called.
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
<beach>
dnhester26: The concept of a "process" on so, called "modern operating systems" is a very expensive way of providing isolation between applications, and needed only because of the low level of languages like C.
dnhester26 has joined #commonlisp
<beach>
*so called
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester26 has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester_ has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
dnhester_ has quit [Remote host closed the connection]
dnhester26 has joined #commonlisp
dnhester26 has quit [Remote host closed the connection]
<beach>
Some of those ideas were present in existing operating systems in the 1970s, but then an OS that was meant to run on a machine without a memory-management unit (so each application had access to the entire main memory) became very popular, and since then, all OSes are based on the same antiquated idea, that is also the reason for most security problems today.
<younder>
beach that sounds like micro-threads alla Erlang or Go to me
<beach>
What does?
<younder>
Do you need to that on a OS level?
<younder>
Threads without context switching
<beach>
I am not sure how to answer that.
<younder>
Neither am I
<beach>
I am not suggesting that each function call in Lisp would create a new thread. I am suggesting that security/safety does not require a different process, so that most applications in such an OS could just be a Lisp function.
edgar-rft_ has joined #commonlisp
<younder>
I am suggesting that something like lparallel could use micro-threads for lambda pools. Like the pmap family
<beach>
Unix was created so that each application could fit in a small address space, so then to make applications communicate, swapping was used. But then that means that applications can communicate only with byte streams, and that a context switch was necessary for two applications to communicate.
treflip`` has joined #commonlisp
<beach>
I am afraid I don't know how a micro thread is different from an ordinary thread.
treflip` has quit [Ping timeout: 276 seconds]
edgar-rft has quit [Ping timeout: 246 seconds]
<beach>
And I am also not sure why it is related to the preceding topic.
<beach>
s/why/how/
<younder>
Well Linux doesn't have threads. It has processes that can share memory and file-handles. If you look a pthreads you will see that for the tuple process-id thread-id - thread-id is always 0. This is not the case of other Unix implementations like Solaris or Free/Open BDS
<younder>
BSD
edgar-rft_ is now known as edgar-rft
<beach>
Why are we still talking antiquated "modern" operating systems?
<beach>
I thought we were exploring how Lisp could make applications faster by abandoning this antiquated model of how an OS should work. No?
<younder>
Well a Lisp OS would have to have a host of applications or be able to interop wit other OS's anyhow. I mean there is no Concordia (word processor/desktop publishing) for McClim. I like the idea of a 'island' floating in a bigger OS pool (VM).
<beach>
I am a researcher, and I am interested in how things could be made better, not whether there is enough available labor to actually do it.
<beach>
... there very likely isn't.
treflip`` has quit [Ping timeout: 246 seconds]
<younder>
Anyhow I have been writing some Clim apps to get a better idea of how to use it.
<beach>
Great!
<younder>
Today a program that reads the processor temperature sensors and plots them over time.
dnhester26 has joined #commonlisp
Guest10 has joined #commonlisp
Guest10 has quit [Client Quit]
decweb has joined #commonlisp
<Bubblegumdrop>
any tips for getting started with Clim?
<ixelp>
McCLIM/McCLIM: An implementation of the Common Lisp Interface Manager, version II. - Codeberg.org
<McParen>
yea, since microsoft announced github copilot will use repos to train the ai
<beach>
Bubblegumdrop: I think we have the beginning of a manual that gives examples.
skeemer has quit [Ping timeout: 272 seconds]
<dnhester26>
beach: wow! thank you so much for the explanation! Thank you for that document, that's amazing. I am looking forward to reading it. "Most security problems" is it because one program has access to another one's memory so it can access private data or rewrite data stored which represents commands to be executed, and with managed memory there would be no such access. Did I understand what you meant correctly?
<beach>
dnhester26: It is because malware can rewrite the stack so that return goes to some arbitrary code that can then destroy your files or send your personal files to some outside program.
<dnhester26>
got it, thanks
<beach>
dnhester26: Applications don't have access to each other's address space.
<beach>
dnhester26: But the stack can be altered because languages like C don't prevent it. You can take the address of an automatic variable, for instance. No such possibility exists in Lisp.
<random-nick>
dnhester26: most security problems are with the same program erroneously (because of bugs) accessing its own memory, and those bugs being exploitable from another program or computer via some communication mechanism
<dnhester26>
beach: random-nick: thanks both of you
<beach>
Pleasure.
alcor` has quit [Remote host closed the connection]
alcor has joined #commonlisp
deadmarshal_ has quit [Quit: IRCNow and Forever!]
<dnhester26>
beach: in page 11: "The planned LispOS will be able to have parts of it updated, just as an ordinary Common Lisp system is able to do, without rebooting.". How would you prevent a "user application" from not overwriting an OS function and then having access to the whole system? I imagine just like we can do (defun some-packacge:foo ...). Or is it because any program running in the OS doesn't have access to the OS image itself?
<beach>
dnhester26: Oh, there will be access control of course, just not using the very coarse mechanism of processes.
<dnhester26>
thanks
<beach>
Sure.
chomwitt has joined #commonlisp
kevingal has joined #commonlisp
yitzi has joined #commonlisp
bh34e5 has joined #commonlisp
treflip has joined #commonlisp
chomwitt has quit [Ping timeout: 265 seconds]
alternateved has quit [Remote host closed the connection]
alternateved has joined #commonlisp
deadmarshal_ has joined #commonlisp
treflip has quit [Ping timeout: 260 seconds]
wacki has quit [Read error: Connection reset by peer]
wacki has joined #commonlisp
McParen has quit [Ping timeout: 265 seconds]
chomwitt has joined #commonlisp
treflip has joined #commonlisp
herjazz has quit [Quit: leaving]
treflip has quit [Remote host closed the connection]
yitzi has quit [Ping timeout: 276 seconds]
shawnw has quit [Ping timeout: 248 seconds]
treflip has joined #commonlisp
ym has quit [Ping timeout: 265 seconds]
X-Scale has joined #commonlisp
<beach>
dnhester26: Oh, one more interesting fact. Multics, the system that Unix was supposed to be a small subset of, already did not distinguish between primary and secondary memory. So Unix was a giant leap backward in this respect. And we still live with the consequences.
<Demosthe1ex>
shame that memristors didn't work out so well
Demosthe1ex is now known as Demosthenex
<Demosthenex>
the proposal was persistent memory == storage, replacing both
yitzi has joined #commonlisp
yitzi has quit [Remote host closed the connection]
ym has joined #commonlisp
<Bubblegumdrop>
should I be loading mcclim from quicklisp still? (ql:quickload :mcclim)
<dnhester26>
beach: was there ever a full Lisp OS back in the day? Would those running on Lisp Machines coded to be very specific to those architectures and they couldn't be run in what today are the normal x86 64 bit architectures?
varjag has joined #commonlisp
treflip has quit [Remote host closed the connection]
<Demosthenex>
"normal"
kevingal has quit [Ping timeout: 265 seconds]
<edgar-rft>
there exists a free x86 port of Symbolics Genera but I've never played with it
kevingal has joined #commonlisp
skeemer has joined #commonlisp
ym has quit [Ping timeout: 276 seconds]
mm007emko has joined #commonlisp
<varjag>
is there?
<varjag>
like, free for real rather than, uh, available
<random-nick>
mezzano also exist as a x86_64 lisp OS, which is written (entirely except for the third party bootloader which is written in C) in CL and some assembly
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
amb007 has quit [Ping timeout: 265 seconds]
zxcvz has joined #commonlisp
amb007 has joined #commonlisp
ym has joined #commonlisp
zxcvz has quit [Quit: zxcvz]
X-Scale has quit [Ping timeout: 256 seconds]
ym has quit [Ping timeout: 248 seconds]
mala has joined #commonlisp
pabs3 has quit [Remote host closed the connection]
pabs3 has joined #commonlisp
ym has joined #commonlisp
benjaminl has quit [Read error: Connection reset by peer]
benjaminl has joined #commonlisp
JuanDaugherty has joined #commonlisp
<dnhester26>
Oh my gosh, can someone please explain this? Why ,(cond (NIL 1) (#() 2) (T 3)) is 2 and ,(when #() 2 3) is 3?
<dnhester26>
it was very hard to find that bug in my code, I did not expect that to happen. Why is it not consistent?
<nil>
when is not if. #() is true. when has a single body which is a progn
<dnhester26>
nil: can you please elaborate?
<JuanDaugherty>
doesn call for elaboration
<JuanDaugherty>
a concise and complete explanation
<dnhester26>
I'm not understanding. Both cond and when evaluate a test form and execute a body, how is the test form resulting in different results?
<nil>
(when #() 2 3) goes like: #() is true, so evaluate 2 then evalute 3, return 3
<dnhester26>
ohhhh got confused
<dnhester26>
thanks
<dnhester26>
not an if, got it
prokhor has quit [Remote host closed the connection]
dnhester26 has quit []
meaty has joined #commonlisp
kevingal has quit [Read error: Connection reset by peer]
<nil>
Are people just running "cat > lisp" ? How are people in a envrionment where parameters and docstring are not a keystroke away?
kevingal has joined #commonlisp
synchromesh has quit [Read error: Connection reset by peer]
synchromesh has joined #commonlisp
JuanDaugherty has quit [Quit: JuanDaugherty]
wacki has quit [Read error: Connection reset by peer]
wacki has joined #commonlisp
Akbar-Birbal has left #commonlisp [Error from remote client]
<younder>
(with-slots (geometry-width geometry-height) *frame* from a CLIM frame gives me a error that the slots don't exist. Yet they show up in the inspector. What gives?
shka has joined #commonlisp
ym has quit [Ping timeout: 260 seconds]
amb007 has quit [Read error: Connection reset by peer]
Noisytoot has quit [Ping timeout: 260 seconds]
amb007 has joined #commonlisp
bh34e5 has quit [Ping timeout: 260 seconds]
chiselfuse has quit [Ping timeout: 260 seconds]
<younder>
When i wrap it in (with-application-frame (*frame*) .. and then use clim-internals::geometry-height.. it works
ym has joined #commonlisp
chiselfuse has joined #commonlisp
bh34e5 has joined #commonlisp
Noisytoot has joined #commonlisp
ym has quit [Ping timeout: 265 seconds]
chomwitt has quit [Ping timeout: 265 seconds]
wobbol has quit [Quit: WeeChat 4.4.2]
cage has quit [Quit: rcirc on GNU Emacs 29.4]
robin has quit [Remote host closed the connection]
zxcvz has joined #commonlisp
zxcvz has quit [Client Quit]
jadzi has joined #commonlisp
chomwitt has joined #commonlisp
jadzi has quit [Ping timeout: 272 seconds]
shawnw has joined #commonlisp
brokkoli_origin has quit [Remote host closed the connection]
amb007 has quit [Ping timeout: 244 seconds]
brokkoli_origin has joined #commonlisp
mwnaylor has joined #commonlisp
jadzi has joined #commonlisp
synchromesh has quit [Read error: Connection reset by peer]
shawnw has quit [Ping timeout: 260 seconds]
synchromesh has joined #commonlisp
robin has joined #commonlisp
jon_atack has quit [Ping timeout: 265 seconds]
bh34e5 has quit [Ping timeout: 255 seconds]
jonatack has joined #commonlisp
jadzi has quit [Ping timeout: 244 seconds]
lucasta has joined #commonlisp
alcor has quit [Ping timeout: 272 seconds]
amb007 has joined #commonlisp
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
arbn has joined #commonlisp
arbn has quit [Client Quit]
arbn has joined #commonlisp
varjag has quit [Quit: ERC 5.5.0.29.1 (IRC client for GNU Emacs 29.2)]
chomwitt has quit [Ping timeout: 272 seconds]
alcor has joined #commonlisp
kevingal has quit [Ping timeout: 244 seconds]
amb007 has quit [Ping timeout: 265 seconds]
wacki has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
troojg has joined #commonlisp
Eoco_ has quit [Quit: WeeChat 4.1.1]
kevingal has joined #commonlisp
alternateved has quit [Remote host closed the connection]
Eoco has joined #commonlisp
skeemer has quit [Ping timeout: 265 seconds]
Eoco has quit [Quit: WeeChat 4.1.1]
Eoco has joined #commonlisp
Eoco has quit [Client Quit]
Eoco has joined #commonlisp
Eoco has quit [Client Quit]
Eoco has joined #commonlisp
Eoco has quit [Quit: WeeChat 4.4.2]
Eoco has joined #commonlisp
robin has quit [Remote host closed the connection]