Subject: Garbage Collection

From: Moshe Zadka <[email-masked]>
Date: Sat, 20 May 2000 11:10:46 +0300 (IDT)

After much thought, I decided I want to write my own Scheme implementation
for the SchemeOS. The one place I'm still unsure of is garbage collection.
Does anyone have a really good online reference to garbage collection?

--
Moshe Zadka <[email-masked]>
http://www.oreilly.com/news/prescod_0300.html
http://www.linux.org.il -- we put the penguin in .com

---

From: Omer Mussaev <[email-masked]>
Date: Sun, 21 May 2000 09:17:18 +0300

> Does anyone have a really good online reference to garbage collection?

You are on the right way, but, still, do not start doing nothing until
we have a design. Which is halfway there. About implementation, I dream
of gmayer helping us to optimize the bloody sucker to death.

--
Omer Mussaev    051-308-214   mailto:[email-masked]
systems programmer, Mercury Interactive/RND/Conduct/core

---

From: Moshe Zadka <[email-masked]>
Date: Sun, 21 May 2000 12:28:55 +0300 (IDT)

> of gmayer helping us to optimize the bloody sucker to death.

Of course, but I'm currently in the pre-design, throwing out ideas phase.
Here are some issues racing around in my head: Compacting or Mark-n-Sweep
collector? Byte codes or list interpretation? Exception system? Module
system? Object system? Smalltalk objects-all-the-way system (I have an
idea about how to do it and remain R5RS compliant? Toss file system in
favour of serialized s-expressions? How about canonical
XML-to-s-expressions translation? How to store serialized trees in a way
that's *extremely* fast to reparse?

Just a brain dump.

---

From: [email-masked]
Date: Sun, 21 May 2000 12:38:20 +0300

consider:
http://www.mulberrytech.com/xsl/xsl-list/archive/msg08238.html

--
Chen Shapira	Web Developer and Linux Activist
The algorithm for finding the longest path in a graph is NP-complete.
For you systems people, that means it's *real slow*.

---

From: Omer Mussaev <[email-masked]>
Date: Sun, 21 May 2000 12:39:38 +0300

> that's *extremely* fast to reparse?

find / -name "core" | xargs rm ; limit core 0; echo ":)"

Are you sure you are after just another elephantine system?

My thoughts: correct me if I am wrong: /* can't happen :) */

a micro (i.e. small and fast and efficient ) kernel, which will
provide us with lambda objects and closure tags as basic objects
and message passig as basic functionality. in addition, it will
make sence to insert continuation support there.

memory/cpu/hardware manager as separate entity.
virtual machine as separate entity.
lambda object manager as separate entity.
thread manager as a separate entity.
unix emulation package.

Why:
(let*
  ((kernel '(hardware manager))
   (continuum '(micro kernel))
   (vm   '(virtual machine))
   (broker '(lambda object system))
   (proc   '(thread manager))
   (vmunix '(unix emulation)))
(
    kernel is the place where low-level gc and interrupts are allowed to happen.
    Basicly, this one should be the kernel, but it would be nice to have
    multiple kernels/distributed kernels out there. this one will surely be bound

    to specific hardware, which is not a good idea. However, it will provide us
    with the very notion of redundancy, upgradeability, and whatsoever. the right

    thing (tm). Of course, no other entity is allowed to touch hardware.

    Continuum is what makes a scheme machine. and it should be fast. In fact,
    by using interrupts on ix86, you are able to pass continuum to kernels, and
    make it know of other kernels. By passing a continuum to kernel, you are
    instantiating kernel of given state. Think stack passing.

    vm is where things are done. By storing track of all child vms, you are
allowed
    to debug "scheme machine" in user space. And to make vm transparent from
    thread's point of view.

    broker - is the type system. Continuum will provide us with closure tags,
which
    in turn will be evaluated in kernels space. Broker will make perstistent
    objects possible, so that we will have a "functional filesystem" :))

    proc - think mach threads.

    vmunix - for bootstrapping new ideas.

)

for a beginnig, it would be nice to use QNX as a kernel. or Exokernel.
check for David Wise's essays of implementation of useful functional filesystems.

Note that I did not mentioned network, security, GUI, whatsoever. It is _not_
that important on this stage of design. What is important is correctness, speed
and reliability.

---

From: Moshe Zadka <[email-masked]>
Date: Sun, 21 May 2000 15:53:44 +0300 (IDT)

> that important on this stage of design. What is important is correctness, speed

A typicial MIT approach. I should mention that I'm a New Jersey kind of guy, so I think simplicity is more important then correctness.

still-assimilitaing-omer's-ideas-ly y'rs, Z.
--
Moshe Zadka <[email-masked]>
http://www.oreilly.com/news/prescod_0300.html
http://www.linux.org.il -- we put the penguin in .com

---

From: Omer Mussaev <[email-masked]>
Date: Sun, 21 May 2000 15:15:54 +0300

> A typicial MIT approach. I should mention that I'm a New Jersey kind of guy, so I think simplicity is more important then correctness.

:)) really? so, inserting network, security, GUI and, of course, whatsoever, for
random values of whatsoever into kernel is simplicity, and is more important than
simple demand for correctness of small and functional (robust and working, not applicative and referntially transparent - those are
tools, not aims) system?

You shoud'nt mention yor New-Jerseyness, really:)))))

> still-assimilitaing-omer's-ideas-ly y'rs, Z.

you'd-better-try-harder-to-read-plain-english-ly y'rs, omerm

---

From: Moshe Zadka <[email-masked]>
Date: Sun, 21 May 2000 16:28:31 +0300 (IDT)

On Sun, 21 May 2000, Omer Mussaev wrote:

> random values of whatsoever into kernel is simplicity

Hell no! But neither is splitting the kernel into 10 distinct parts.
I hope to have a working kernel in less then 200KB of code.

> You shoud'nt mention yor New-Jerseyness, really:)))))

I've talked about it with Chen: I told her that Scheme has so much MIT in
it, a bit of New Jerseyness is all it needs to take over the world.
--
Moshe Zadka <[email-masked]>
http://www.oreilly.com/news/prescod_0300.html
http://www.linux.org.il -- we put the penguin in .com

---

From: [email-masked]
Date: Sun, 21 May 2000 16:53:45 +0300

> it, a bit of New Jerseyness is all it needs to take over the world.

IIRC we talked about the module system and I disagreed, but never mind :-)

In anycase we didn't reach the corectness vs. simplicity debate yet.
Infact this isn't even micro vs. macro kernel debate.

Moshez is suggesting to build schemeOS ontop of linux.
Omerm claims this ranges between stupid to insane.

Summary:

Schemos should be build on top of linux because it means that we won't have to
reimplement a whole new OS, we can just build an interpeter into linux and have
a thin translation layer. this way we can have a schemos on top of linux
reasoanbly fast, and have a complete working system RSN.

Schemos shouldn't be built on top of linux - it'll be inefficient, cause
unresolvable design problems. The only reason for a schemos if the resulting
system is clean, simple, lightweight and easy to modify and debug, and assure 0
unplanned downtime. We already have 1 linux, no need for more. using a
microkernel seems like a good way to do that, and if we use an existing MK
(mach/flux) it saves the low level work.

---

From: Moshe Zadka <[email-masked]>
Date: Sun, 21 May 2000 17:15:17 +0300 (IDT)

> IIRC we talked about the module system and I disagreed, but never mind :-)

Re-read what I've posted. I didn't say you agreed.

> In anycase we didn't reach the corectness vs. simplicity debate yet.

Right

> Infact this isn't even micro vs. macro kernel debate.

Right.

> Omerm claims this ranges between stupid to insane.

Wrong: I've decided to agree with Omer.

changing-the-facts-from-beneath-the-argument-ly y'rs, Z.

> microkernel seems like a good way to do that, and if we use an existing MK

That's a good idea, but I'm not sure -- p[erhaps the Scheme VM should *be* 
the kernel.
--
Moshe Zadka <[email-masked]>
http://www.oreilly.com/news/prescod_0300.html
http://www.linux.org.il -- we put the penguin in .com

---

From: Omer Mussaev <[email-masked]>
Date: Mon, 22 May 2000 11:07:26 +0300

> Does anyone have a really good online reference to garbage collection?

http://www.cs.indiana.edu/ftp/techreports/index.html
http://www.amazon.com/exec/obidos/ASIN/0471941484/richardjones/002-4609091-7049825

> ------------------------------------------------------------------------
> 72% off on Name brand Watches!
> Come and buy today and get free shipping!
> http://click.egroups.com/1/4011/9/_/_/_/958810277/
> ------------------------------------------------------------------------
>
> To unsubscribe from this group, send an email to:
> [email-masked]