<ixelp>
Constrictor/Code/conditions.lisp at master · robert-strandh/Constrictor · GitHub
<nij->
This worked for me.
wacki has joined #commonlisp
<jmercouris>
nij-: ...?
<jmercouris>
that doesn't quite help in this context, I'd need to define separate conditions for EVERY variant of message
<jmercouris>
fuck me, OK I'll do it
<bike>
jmercouris: you want the "socket already exists" message when the error shows up?
<jmercouris>
bike: yes
<bike>
then you just need a :report on the condition type
<nij->
Hmm sorry that didn't help :(
<jmercouris>
bike: I want to use the same condition for several variants
<bike>
I'm not sure what that means
<jmercouris>
bike: so we have a generic "interface-launch" condition, triggered by several predicates
<bike>
oh, i see, and you put in different messages
<jmercouris>
but you know what, that is totally wrong, I should have specific conditions for each invariant
<jmercouris>
it was a stupid idea I had, forget it, I will do as you both suggest
<bike>
well then first you need to give the condition type a slot for the message
<bike>
and then you have the reporter print out that message, and that's it
<bike>
but different condition types are usually cleaner, indeed
<jmercouris>
ah, I was missing having the reporter in my other trial!
<jmercouris>
in any case, it seems the wrong way, condition with report PER type of condition seems more logical
<jmercouris>
allows for better flow control
<bike>
different types means you can handle them different in handler-case, etc
wacki has quit [Ping timeout: 268 seconds]
<jmercouris>
yes indeed
<jmercouris>
it is much smarter this way
rtypo has quit [Ping timeout: 264 seconds]
nij- has quit [Ping timeout: 268 seconds]
tertek has quit [Quit: %quit%]
tertek has joined #commonlisp
waleee has quit [Ping timeout: 272 seconds]
nij- has joined #commonlisp
wacki has joined #commonlisp
istewart has joined #commonlisp
wacki has quit [Ping timeout: 256 seconds]
pfdietz has quit [Quit: Client closed]
X-Scale has quit [Quit: Client closed]
josrr has quit [Remote host closed the connection]
johnjaye has quit [Ping timeout: 260 seconds]
johnjaye has joined #commonlisp
wacki has joined #commonlisp
igemnace has joined #commonlisp
ym has quit [Ping timeout: 272 seconds]
wacki has quit [Ping timeout: 272 seconds]
pranav has quit [Remote host closed the connection]
decweb has quit [Ping timeout: 255 seconds]
ec_ has quit [Ping timeout: 260 seconds]
synchromesh has quit [Read error: Connection reset by peer]
ec_ has joined #commonlisp
synchromesh has joined #commonlisp
mehbark has quit [Ping timeout: 268 seconds]
wacki has joined #commonlisp
wacki has quit [Ping timeout: 256 seconds]
wacki has joined #commonlisp
jmercouris1 has joined #commonlisp
jmercouris1 has left #commonlisp [#commonlisp]
jmercouris1 has joined #commonlisp
pve has joined #commonlisp
chomwitt has joined #commonlisp
jmercouris1 has quit [Quit: jmercouris1]
nij- has quit [Ping timeout: 268 seconds]
Pixel_Outlaw has quit [Remote host closed the connection]
amb007 has quit [Ping timeout: 255 seconds]
istewart has quit [Quit: Konversation terminated!]
chomwitt has quit [Ping timeout: 272 seconds]
amb007 has joined #commonlisp
rgherdt has joined #commonlisp
alcor has joined #commonlisp
danza has joined #commonlisp
even4void has quit [Quit: leaving]
alcor` has joined #commonlisp
alcor has quit [Ping timeout: 240 seconds]
even4void has joined #commonlisp
alcor` is now known as alcor
alcor has quit [Changing host]
alcor has joined #commonlisp
zetef has joined #commonlisp
shka has joined #commonlisp
amb007 has quit [Ping timeout: 255 seconds]
mm007emko has quit [Read error: Connection reset by peer]
mm007emko has joined #commonlisp
chomwitt has joined #commonlisp
amb007 has joined #commonlisp
dino_tutter has joined #commonlisp
danza has quit [Ping timeout: 240 seconds]
zetef has quit [Ping timeout: 268 seconds]
attila_lendvai has joined #commonlisp
varjag has joined #commonlisp
mgl has joined #commonlisp
zetef has joined #commonlisp
igemnace has quit [Read error: Connection reset by peer]
danse-nr3 has joined #commonlisp
synchromesh has quit [Read error: Connection reset by peer]
synchromesh has joined #commonlisp
shka has quit [Read error: Connection reset by peer]
zetef has quit [Ping timeout: 272 seconds]
johnjaye has quit [Ping timeout: 272 seconds]
johnjaye has joined #commonlisp
shka has joined #commonlisp
chomwitt has quit [Ping timeout: 255 seconds]
igemnace has joined #commonlisp
msavoritias has joined #commonlisp
zetef has joined #commonlisp
mgl has quit [Ping timeout: 272 seconds]
chiselfuse has quit [Remote host closed the connection]
chiselfuse has joined #commonlisp
chiselfuse has quit [Remote host closed the connection]
chiselfuse has joined #commonlisp
danse-nr3 has quit [Ping timeout: 255 seconds]
chiselfuse has quit [Remote host closed the connection]
chiselfuse has joined #commonlisp
chiselfuse has quit [Remote host closed the connection]
danse-nr3 has joined #commonlisp
chiselfuse has joined #commonlisp
danse-nr3 has quit [Read error: Connection reset by peer]
danse-nr3 has joined #commonlisp
chiselfuse has quit [Remote host closed the connection]
chiselfuse has joined #commonlisp
chiselfuse has quit [Remote host closed the connection]
chiselfuse has joined #commonlisp
donleo has joined #commonlisp
zxcvz has joined #commonlisp
zxcvz has quit [Client Quit]
pfdietz has joined #commonlisp
mgl has joined #commonlisp
chiselfuse has quit [Ping timeout: 260 seconds]
chiselfuse has joined #commonlisp
zetef has quit [Ping timeout: 268 seconds]
rgherdt has quit [Quit: Leaving]
rgherdt has joined #commonlisp
amb007 has quit [Ping timeout: 268 seconds]
amb007 has joined #commonlisp
decweb has joined #commonlisp
mgl has quit [Ping timeout: 268 seconds]
rtypo has joined #commonlisp
kevingal has joined #commonlisp
amb007 has quit [Ping timeout: 268 seconds]
amb007 has joined #commonlisp
wacki has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
X-Scale has joined #commonlisp
Lord_of_Life has quit [Ping timeout: 255 seconds]
Lord_of_Life has joined #commonlisp
zetef has joined #commonlisp
danse-nr3_ has joined #commonlisp
nij- has joined #commonlisp
danse-nr3 has quit [Ping timeout: 272 seconds]
zetef has quit [Remote host closed the connection]
random-nick has joined #commonlisp
zetef has joined #commonlisp
danse-nr3_ has quit [Read error: Connection reset by peer]
zetef has quit [Ping timeout: 255 seconds]
varjag has quit [Quit: ERC (IRC client for Emacs 27.1)]
meritamen has joined #commonlisp
wacki has joined #commonlisp
zetef has joined #commonlisp
nij- has quit [Ping timeout: 256 seconds]
X-Scale has quit [Quit: Client closed]
nij- has joined #commonlisp
kevingal has quit [Remote host closed the connection]
kevingal has joined #commonlisp
zetef has quit [Ping timeout: 252 seconds]
psj has joined #commonlisp
brokkoli_origin has quit [Remote host closed the connection]
danse-nr3 has joined #commonlisp
brokkoli_origin has joined #commonlisp
amb007 has quit [Ping timeout: 268 seconds]
chomwitt has joined #commonlisp
chomwitt has quit [Client Quit]
X-Scale has joined #commonlisp
<dbotton>
I am looking to redirect *query-io* to a stream I would correct and feed using my GUI. Where would I find information or tips on best way to create such a stream programmatically? thanks :)
nij- has left #commonlisp [Using Circe, the loveliest of all IRC clients]
<holycow>
dbotton: i am a noob, i don't know the answer. if you are around, i have a question about clog.
<beach>
dbotton: I would think that depends a lot on the GUI in question. But you might be able to create a Gray stream.
<holycow>
i need to construct a table and output a bunch of results into table rows / columns with a loop. (create-div ..) is not the correct way obviously, how might that be done?
<holycow>
programmatically i mean, i am using an editor and not builder.
<dbotton>
beach is there a place I can find information on Gray stream creation?
<dbotton>
an example would be amazing
<beach>
dbotton: Try the system TRIVIAL-GRAY-STREAMS.
<dbotton>
the GUI would not matter, it may just be me programming the interactions
<dbotton>
holycow you just use create-tr and create td in your loop
<holycow>
oh that is what it is! thank you.
<dbotton>
anytime
<holycow>
and autocomplete in editor gives me all of the create-* that is awesome.
attila_lendvai has quit [Ping timeout: 256 seconds]
<dbotton>
yes the auto completely in CLOG builder is pretty amazing :) I have to add it to the builder repl soon
<holycow>
2.0 release is awesome, thx btw
<dbotton>
thanks
meritamen has quit [Quit: Client closed]
<dbotton>
beach in case this is helpful - I would collect writes to the stream in a buffer, a read from the buffer would prompt a dialog with that text and an input and return the results of that input
<beach>
Sounds like a Gray stream to me.
<dbotton>
thanks has anyone written a tutorial on them?
<beach>
Did you look at the system? You just define methods on a few generic functions for reading and writing a character, an you are done.
<beach>
In those methods, you would then manipulate your buffer.
<dbotton>
starting to look now
<beach>
You can check the Incrementalist repository. We use it there to read from an editor buffer.
nickiminjaj has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
nickiminjaj has joined #commonlisp
nickiminjaj has joined #commonlisp
nickiminjaj has quit [Changing host]
tasty has quit [Quit: bye bye!]
nickiminjaj has quit [Client Quit]
tasty has joined #commonlisp
tasty has quit [Changing host]
tasty has joined #commonlisp
nickiminjaj has joined #commonlisp
nickiminjaj has quit [Changing host]
nickiminjaj has joined #commonlisp
mm007emko has quit [Ping timeout: 256 seconds]
mm007emko has joined #commonlisp
jmercouris1 has joined #commonlisp
cage has joined #commonlisp
nerap has joined #commonlisp
wacki has joined #commonlisp
amb007 has joined #commonlisp
jmercouris1 has quit [Quit: jmercouris1]
yitzi has quit [Remote host closed the connection]
jeosol has quit [Ping timeout: 250 seconds]
davep has quit [Quit: Connection closed for inactivity]
fererrorocher has quit [Quit: WeeChat 4.2.1]
pranav has joined #commonlisp
mgl has joined #commonlisp
igemnace has quit [Quit: WeeChat 4.2.1]
mesaoptimizer has quit [Ping timeout: 268 seconds]
mm007emko has quit [Read error: Connection reset by peer]
mm007emko has joined #commonlisp
zxcvz has quit [Quit: zxcvz]
kevingal has joined #commonlisp
attila_lendvai has joined #commonlisp
NotThatRPG has joined #commonlisp
nickiminjaj_ has joined #commonlisp
nickiminjaj_ has quit [Changing host]
nickiminjaj_ has joined #commonlisp
jmercouris1 has joined #commonlisp
jmercouris1 has quit [Client Quit]
nickiminjaj has quit [Ping timeout: 260 seconds]
pranav has quit [Remote host closed the connection]
jmercouris1 has joined #commonlisp
nij- has joined #commonlisp
attila_lendvai has quit [Ping timeout: 272 seconds]
<younder>
Aren't the Gray Streams as they were purposed somewhat inefficient?
waleee has joined #commonlisp
<younder>
Don't remember the exact details of the discussion, but I remember that. Could someone explain the issues?
nij- has left #commonlisp [Using Circe, the loveliest of all IRC clients]
<gilberth>
Why should they? Just implement stream-read-sequence.
<gilberth>
I mean READ-CHAR must do some dispatch anyways, doesn't matter much whether it's a Gray Stream or some standard stream.
yitzi has joined #commonlisp
mgl has quit [Ping timeout: 246 seconds]
<yitzi>
younder: There were some objections raised when the proposal was submitted than it contained an excessive amount of generic functions. Most implementations have fast generic dispatch, so this isn't as much of an issue now.
tedwing has joined #commonlisp
decweb has quit [Ping timeout: 264 seconds]
<yitzi>
There is also "simple streams" which the Allegro people came up with (as I recall). They claimed that Gray streams is too "high level" to be efficient and that the proposal doesn't make it clear what method to implement. Personally, I think their arguments are silly and it really just boils down to "we don't like them." I have used Gray streams to implement streams at a lot of different abstraction levels and I think they are pretty awesome. As usual,
<yitzi>
the naming of methods isn't always the best.
mgl has joined #commonlisp
<gilberth>
What I would like to see is two things: a READ-SEQUENCE that blocks only for the first element read like read(2) and then some means to get all buffered data and then only consume some of it.
<gilberth>
Both are crucial to avoid a function call per char or byte read. The first is important for network applications while the latter is important for modularity.
<yitzi>
Yes, blocking vs non-blocking isn't great.
<gilberth>
And of course a repaired LISTEN. LISTEN as it is is useless.
<yitzi>
Well, the spec also implies that LISTEN is only good for character streams, so that is problem.
nij- has joined #commonlisp
<gilberth>
Even character streams might have an EOF.
nickiminjaj_ has quit [Read error: Connection reset by peer]
<nij->
Is there a syscall in linux or mac that freezes, saves, and kills a process immediately? Next time the saved file is run, it starts as if it's never killed?
nickiminjaj has joined #commonlisp
nickiminjaj has quit [Changing host]
nickiminjaj has joined #commonlisp
<nij->
If so, is save-lisp-and-die implemented using this way?
<gilberth>
Anyhow, ANSI-CL never considered network connections and means to have fast i/o. The number one thing that kills all your performance is doing a function call per char/byte read.
mgl has quit [Ping timeout: 246 seconds]
<gilberth>
nij-: Not anymore. No.
<nij->
Not anymore (for which part)? How is SLAD implemented?!
<yitzi>
nij-: s-l-a-d is implementation specific. Most implementations walk through the object references and serialize them along with closing dynamic libraries, etc. It is highly nontrivial.
<gilberth>
For the OS part.
<gilberth>
Anyhow, I wondered why a Lisp must kill itself after dumping.
<nij->
gilberth I wonder the same thing too.
<nij->
gilberth Maybe when it walks through, it's changing its internal state?
<nij->
gilberth Oh no, why doesn't OS support this *anymore*?
<gilberth>
First of you may want to run cleanup forms. I mean all the threads that are currently running won't run anymore when the dump is started again.
varjag has joined #commonlisp
<gilberth>
nij-: I don't know. Perhaps it's not modern?
<nij->
Lemme ask #linux.
<nij->
Thanks for the input.
<gilberth>
Programs aren't created anymore by dumping the contents of the heap and turning that into an executable.
<nij->
Also.. the serialization technique troubles me a bit..
<nij->
I wonder if the saved lisp is really identical to itself when it was killed.
<gilberth>
There isn't that much magic. All you need to do is to write out your heap.
<nij->
The diff between the current heap and the init heap (i.e. the heap when a fresh lisp is launched)?
<nij->
I think the diffing part is quite magical..
<gilberth>
There however is some magic. Dynamic libraries were mentioned. And CCL e.g. would invalidate all your foreign pointers. They would point to non-sense in the new image.
<gilberth>
nij-: Not a diff.
<nij->
What are foreign pointers?
<gilberth>
The whole thing is dumped. And usually just mmap(2)ed on startup.
<nij->
(Oh yeah you don't need diff. I understand it now.)
<gilberth>
nij-: Pointers into foreign memory. Some objects you got from some C lib.
<nij->
But this strat sounds different from what yitzi said.
<nij->
gilberth Oh yes indeed... what about those parts?
<nij->
Those parts can't be saved when killed?
<gilberth>
CCL just kills all threads, runs a final GC, invalidates said pointers, and then writes out the whole Lisp heap. On startup that file is mmap(2)ed and ready for use. It's even immobile. It cannot be mapped to some different address.
yitzi has quit [Remote host closed the connection]
<gilberth>
nij-: No, that would be tricky. C libraries are not prepared for that. A dynamic library on starting the dumped image would still run its init routines. Think of e.g. malloc(3).
<gilberth>
And when started again the exact dynamic lib might even be a different one. With a different layout of its internal data structures. So the C heap is not dumped.
nij- has quit [Killed (NickServ (GHOST command used by nij_))]
nij_ has joined #commonlisp
nij_ is now known as nij-
mariari has quit [Ping timeout: 260 seconds]
<gilberth>
Oh and btw. IMHO the most silly idea is to have a compressed image/core file.
<nij->
gilberth I see (I did read the log.)
<nij->
Why is that silly?
<gilberth>
Because we have demand paging.
<gilberth>
I have an image/core file of about 1GB. When you mmap(2) it this happens instantly. What would happen when you compress it? Also to RAM usage? And to RAM usage when you run it more than once?
<gilberth>
So all you save is some disk space and trade cycles and RAM for it. How much is 1MB of disk space?
<nij->
But it can make load time shorter?
<nij->
"Better" for writing CL scripts?
<gilberth>
Shorter? Longer.
<gilberth>
Especially with scripts.
<nij->
Hmmm?! Why is that? The saved file is smaller..
<nij->
Oh, it needs to recompute, and load it anyways.
<bike>
has to be decompressed
<nij->
Ah, so it *is* stupid. Heh!
<bike>
decompression ain't free
chomwitt has joined #commonlisp
<gilberth>
See, when the Lisp starts it doesn't need to read all the image. All it has to do is make the heap be present. When you compress it, you must read all of it and decompress it. And the OS doesn't have a clue that what you get is the very same data as before.
fererrorocher has joined #commonlisp
<nij->
Got it
<gilberth>
Not so with mmap(2). The data is just mapped into the address space. There is no need to bring it in from disk at all. Only when objects therein are actually looked at by your program. And for scripts: You may want to run it a second time. Chances are that the pages you looked at are still in the file system cache. And when you run the script twice at the same time, those pages can be shared even.
<holycow>
wow. that is really interesting. i had no clue.
<gilberth>
By compressing it you rob the OS of the opportunity to recognize that the heap this time or with this process is mostly the same as last time or with the other process.
<holycow>
thanks for the info on that.
<gilberth>
It then acts almost like a shared library.
<nij->
holycow! wow!
<gilberth>
This is why the text segment usually is r/o. Even very ancient UNIX arranged it so that when you run two copies of /bin/sh the text segment is in RAM only once.
mariari has joined #commonlisp
<holycow>
this needs to be a blog post somewhere
ldb has joined #commonlisp
<nij->
There's a reddit thread where people asked about how to get smaller CL executables, and a solution.
<nij->
You can post this part of the conversation in the log to those threads :-)
random-jellyfish has quit [Ping timeout: 255 seconds]
matt` has joined #commonlisp
Pixel_Outlaw has joined #commonlisp
nij- has left #commonlisp [Using Circe, the loveliest of all IRC clients]
matt` has quit [Remote host closed the connection]
cage has quit [Quit: rcirc on GNU Emacs 29.2]
nickiminjaj has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<ldb>
better not expect to run cl on handheld calculator
fererrorocher has quit [Quit: WeeChat 4.2.1]
jmercouris1 has quit [Ping timeout: 264 seconds]
<gilberth>
nij-: I'm tired of that decade old discussion. It's more about UNIX and Lisp having a different culture. And besides when people really care about size they shouldn't use the largest CL implementation to begin with. Besides: Again, how much 1MB of disk space? How long does it take to transfer 1MB? This all was somewhat relevant in the 90s at which time a 20MB CMUCL core file was huge. Today it's tiny.
fererrorocher has joined #commonlisp
matt` has joined #commonlisp
random-jellyfish has joined #commonlisp
<reb>
I wonder who implemented compressed core image files for SBCL.
<ixelp>
Optional support for zlib-based in-memory deflate/inflate for core files · sbcl/sbcl@7976926 · GitHub
nickiminjaj has joined #commonlisp
<random-nick>
I remember reading about a CL for unix-likes which was built around shared objects/dynamic linking, but I can't remember what it was called
<reb>
The best use case for core compression that I can think of is a situation where you want to distribute an application to many places and would like to reduce the amount of data transferred.
<gilberth>
reb: Since when do we distribute mass data uncompressed?
<reb>
I know, pretty tenuous.
reb has quit [Remote host closed the connection]
nickiminjaj has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<random-nick>
WSCL is Well-Specified Common Lisp, which isn't and implementation
<random-nick>
an*
<holycow>
it is supposed to produce tiny executables
<gilberth>
Then WCL or something.
<holycow>
i only managed to compile a simple thing on it and not much else
<holycow>
the original author is still around but doesn't check messages on github often
<gilberth>
I don't recall that well either. But mentioning shared libs made me remembering once having read a paper. There was a "W" in the name. But I might as well mix up things.
* gilberth
was slow. WCL was mentioned already.
nerap has quit [Ping timeout: 260 seconds]
nickiminjaj has joined #commonlisp
decweb has joined #commonlisp
tedwing has quit [Quit: leaving]
synchromesh has quit [Read error: Connection reset by peer]
synchromesh has joined #commonlisp
nickiminjaj has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
matt` has quit [Remote host closed the connection]
<dbotton>
I am trying to bind *query-io* to my fundamental-character-* based streams using (let (*query-io* (make-two-way-stream in-str out-str)) - the streams are never being called invoke-restart-interactively when in theory should (if I remove the binding shows on console)
<dbotton>
any idea why that would not work (streams are working)
nickiminjaj has joined #commonlisp
<pfdietz>
As you wrote it there you are missing two parentheses.
<pfdietz>
Three, even.
<dbotton>
outside of that :)
nickiminjaj has quit [Client Quit]
ldb has quit [Ping timeout: 260 seconds]
<dbotton>
is there some magic for binding *query-io*
<dbotton>
is make-two-way-stream the correct way to make the bidirectional stream it needs?
mesaoptimizer has joined #commonlisp
nickiminjaj has joined #commonlisp
nickiminjaj has quit [Client Quit]
nickiminjaj has joined #commonlisp
pfdietz has quit [Quit: Client closed]
pfdietz has joined #commonlisp
amb007 has quit [Ping timeout: 260 seconds]
chomwitt has quit [Ping timeout: 272 seconds]
attila_lendvai has joined #commonlisp
amb007 has joined #commonlisp
nij- has joined #commonlisp
<nij->
Does mezanno depend on a linux kernel?
ldb has joined #commonlisp
<varjag>
no
<nij->
holycow
<ldb>
but it depends on x86
<nij->
It has to depend on something..
<varjag>
ldb: no
<nij->
varjag no?
<varjag>
it runs on arm64 too
<ldb>
that's a good start
<aeth>
If you wish to make a LispOS from scratch, you must first invent the universe.
<nij->
aeth you don't if that lispos doens't have to be running
<aeth>
In theory yes, but in practice, unrun code has undiscovered bugs. That's why iteration time between making a change and seeing the change needs to be as short as possible.
amb007 has quit [Read error: Connection reset by peer]
amb007 has joined #commonlisp
<nij->
Hmm.. how does mezanno handle concurrent "processes"?
alcor has quit [Ping timeout: 268 seconds]
<dbotton>
answer was missing implementation sb-gray:stream-line-column
<nij->
In mezanno, is the underlying CL implementation running as well, or does it get stripped away?
kaskal has joined #commonlisp
kaskal- has quit [Ping timeout: 255 seconds]
shka has quit [Ping timeout: 264 seconds]
wacki has quit [Quit: My iMac has gone to sleep. ZZZzzz…]
amb007 has quit [Remote host closed the connection]
amb007 has joined #commonlisp
kaskal has quit [Ping timeout: 264 seconds]
<ldb>
nij-: you must haven't heard about scheduling
kaskal has joined #commonlisp
attila_lendvai has quit [Ping timeout: 272 seconds]
dino_tutter has quit [Ping timeout: 256 seconds]
random-jellyfish has quit [Ping timeout: 255 seconds]
<varjag>
nij-: same way any other operating system does
nij- has quit [Ping timeout: 272 seconds]
donleo has quit [Ping timeout: 255 seconds]
nij- has joined #commonlisp
<nij->
varjag I see.
<nij->
Is there a common lisp runtime embedded in mezzano?
<bike>
pretty sure it has its own compiler and everything, yes.
<random-nick>
mezzano is basically a CL implementation which is made to run on bare metal
<nij->
... to make a CL implementation itself is a lot of work already..
<bike>
it sure is
kevingal has quit [Ping timeout: 268 seconds]
<nij->
I wonder if it just embed the a cl implementation into it directly.
<bike>
"its own compiler", i said
rgherdt has quit [Quit: Leaving]
<random-nick>
it would probably be possible to port another implementation with a native code compiler like SBCL to run on bare metal, but that would be a substantial task on its own and might require adapting/rewriting a bunch of its parts
<nij->
Ah right.. especially for the parts that depend on the kernel (e.g. syscalls)>
<nij->
So amazing !
jmdaemon has joined #commonlisp
<random-nick>
mezzano essentially consists of a CL implementation, a simple kernel (called the supervisor) and some additional stuff like the desktop compositor, simple desktop applications like a REPL application, etc.
<random-nick>
it's all written in common lisp expect for the bootloader, but the supervisor is written in "supervisor safe" code which is essentially a restricted subset of CL (has restrictions like avoiding allocations, mostly operating with wired memory, I don't really know all of them) and also there are many things written as LAP functions, essentially assembler code written in CL source files
<nij->
:O
<random-nick>
oh, and to answer your question, it's all a single CL system and there are no processes (as in separate address spaces/environments/systems), but there are threads (and a scheduler of course)
<dbotton>
mezzano was written for a commercial project?
<random-nick>
no, it's a hobby OS
<dbotton>
does it have a web browser?
<random-nick>
no
varjag has quit [Ping timeout: 264 seconds]
<random-nick>
mezzano isn't compatible with any other OS, so any non-CL application would require porting using Iota (which is an LLVM backend which compiles things to some CL code that can run on mezzano), and any CL application would require porting in how it interfaces with the OS
<random-nick>
unless it uses CL libraries which are already ported to mezzano, e.g. usockets and mcclim
<aeth>
it's a major effort to write your own browser from scratch for a from scratch OS
<aeth>
the browser being much harder than the OS
<aeth>
not Common Lisp, but the only notable example of this is https://ladybird.dev/
<ixelp>
The Ladybird browser project
<aeth>
so, that's, what? one out of dozens? hundreds? not a good sign if someone wants to try it.
<aeth>
and porting a major web browser by compiling C++ (etc.) to CL would be about as hard of a project