Discussion:
Activity
Andrew McDowell
2005-07-14 04:57:34 UTC
Permalink
Anything happening out there in Goo land?

-Drew
Jonathan Bachrach
2005-07-14 15:32:33 UTC
Permalink
Been finishing up a few other projects before getting back to goo.
Any specific requests would be appreciated.

jonathan

-----Original Message-----
From: googoogaga-***@lists.csail.mit.edu
[mailto:googoogaga-***@lists.csail.mit.edu] On Behalf Of Andrew McDowell
Sent: Thursday, July 14, 2005 12:58 AM
To: ***@lists.csail.mit.edu
Subject: [Googoogaga] Activity

Anything happening out there in Goo land?

-Drew
Raffael Cavallaro
2005-07-15 04:29:50 UTC
Permalink
Post by Jonathan Bachrach
Any specific requests would be appreciated.
Here's a pretty specific one - could you try to ensure that all of
goo's features are implemented on Mac OS X, specifically compatible
with gcc 4.0 which is now the default on that platform. Chicken seems
to have this working - that is one can compile scheme->c->.so and
load the resulting .so into the interpreter on Mac OS X - so it is
doable.

Thanks for any consideration you give to this.

regards,

Ralph

Raffael Cavallaro, Ph.D.
***@mac.com
Scott Graham
2005-07-29 21:21:16 UTC
Permalink
My requests:

I'd like to be able to use goo on an embedded system. Ideally, I'd
bring up the goo interpreter on the target machine (that doesn't, for
example, have much in the way of stdio, tty, process control) and have
it talk to the host over a user-defined channel (possibly a socket, or
some weird thing for that platform; just some simple read/write
functions). Requests to compile C code to DLLs would also go over that
channel.

A related request, that's possibly the first step in that direction:
clearly defining all the interfaces to the system, and assuming less
availability of various posix, etc. functions. Being able
enable/disable: bignums, tty, stdio. This would also help with at
least minimal ports to other (possibly smaller/simpler) OSs.

And finally, I'd like to see a less restrictive license (at least LGPL
if you're set on GPL). Is the intention that all goo code ever must be
GPLd? I think that's what it means, as in order to run any code you
need to include the goo runtime in your exe, so then you have to GPL
all your code?

I have no idea if these are any direction you're interested in going
in, but goo seems like a great language design and this is where I'd
like to see the implementation go. Feel free to ignore me. :-)

scott
Post by Jonathan Bachrach
Been finishing up a few other projects before getting back to goo.
Any specific requests would be appreciated.
jonathan
-----Original Message-----
Sent: Thursday, July 14, 2005 12:58 AM
Subject: [Googoogaga] Activity
Anything happening out there in Goo land?
-Drew
_______________________________________________
Googoogaga mailing list
http://lists.csail.mit.edu/mailman/listinfo/googoogaga
_______________________________________________
Googoogaga mailing list
https://lists.csail.mit.edu/mailman/listinfo/googoogaga
Jonathan Bachrach
2005-08-02 15:07:40 UTC
Permalink
Post by Jonathan Bachrach
-----Original Message-----
Sent: Friday, July 29, 2005 5:21 PM
To: Jonathan Bachrach
Subject: Re: [Googoogaga] Activity
I'd like to be able to use goo on an embedded system. Ideally, I'd
bring up the goo interpreter on the target machine (that doesn't, for
example, have much in the way of stdio, tty, process control) and have
it talk to the host over a user-defined channel (possibly a socket, or
some weird thing for that platform; just some simple read/write
functions). Requests to compile C code to DLLs would also go over that
channel.
What sort of embedded platform are you thinking of? In particular, how much
memory would your target system have? I am also thinking of embedded
systems. Currently goo doesn't have memory/code space as its primary
implementation goal. I was thinking about doing an extremely small
footprint VM implementation combined with a JIT.
Post by Jonathan Bachrach
clearly defining all the interfaces to the system, and assuming less
availability of various posix, etc. functions. Being able
enable/disable: bignums, tty, stdio. This would also help with at
least minimal ports to other (possibly smaller/simpler) OSs.
This could be done and is desirable. Not sure what the plan would be. Goo
can definitely be run without bignums and the rest. It's really about
designing and teasing out the modules.
Post by Jonathan Bachrach
And finally, I'd like to see a less restrictive license (at least LGPL
if you're set on GPL). Is the intention that all goo code ever must be
GPLd? I think that's what it means, as in order to run any code you
need to include the goo runtime in your exe, so then you have to GPL
all your code?
I'm open to all of that. It's really just about getting MIT lawyers to do
something.
Post by Jonathan Bachrach
I have no idea if these are any direction you're interested in going
in, but goo seems like a great language design and this is where I'd
like to see the implementation go. Feel free to ignore me. :-)
Thanks again for your interest and appreciation.
Post by Jonathan Bachrach
scott
Post by Jonathan Bachrach
Been finishing up a few other projects before getting back to goo.
Any specific requests would be appreciated.
jonathan
-----Original Message-----
McDowell
Post by Jonathan Bachrach
Sent: Thursday, July 14, 2005 12:58 AM
Subject: [Googoogaga] Activity
Anything happening out there in Goo land?
-Drew
_______________________________________________
Googoogaga mailing list
http://lists.csail.mit.edu/mailman/listinfo/googoogaga
_______________________________________________
Googoogaga mailing list
https://lists.csail.mit.edu/mailman/listinfo/googoogaga
Scott Graham
2005-08-02 18:47:04 UTC
Permalink
Warning: a bit long-winded...
Post by Jonathan Bachrach
Post by Scott Graham
I'd like to be able to use goo on an embedded system. Ideally, I'd
...
What sort of embedded platform are you thinking of? In particular, how much
memory would your target system have? I am also thinking of embedded
systems. Currently goo doesn't have memory/code space as its primary
implementation goal. I was thinking about doing an extremely small
footprint VM implementation combined with a JIT.
My "real job" is a console game programmer. 99% of console games are
written entirely in C/C++, and having made games that way for the last
6-7 years, I strongly believe the time for that is over. I'd love to
bring goo up on an Xbox or PSP. These are probably larger embedded
systems than you were thinking of. The "embeddedness" of game consoles
is: limited memory, though a reasonable amount (~16-64meg, and larger
now), no virtual memory, soft real time constraints (especially for
GC), multiple hardware threads, and the general unavailability of TTY
and some general posix-y things (environment variables, etc.). There's
also the question of targetting a variety of different processors: at
least PPC, x86, MIPS. Anyhow, I'm not hoping you'll magically sort
through all those problems, but I think goo would be the perfect thing
to build on/around for a language that's very suitable for game
programming.

The JIT sounds like a neat/fun idea, though possibly quite a lot of
work, depending on what hardware it was to run on. The small footprint
VM (sans JIT) could certainly be very useful in a variety of
situations though. Personally, I'd like to see just two (possibly
simpler) levels: the straight interpreted/VM version, and the
compiled-through-C version. As long as both the interpreter and the
compiled version have the same semantics, and the interpreter
"overrides" and interacts with the compiled code cleanly, this seems
like the best of both worlds. Generally, the workflow could be compile
everything through C, then iterate using the interpreter
(re-re-defining methods, etc.), and when you take a break, or need to
restart the application, recompile all to C and start over. I'm
assuming that the C compiler can do crazy hardware-specific
optimizations that goo can then get relatively for free. (Is that
actually true? I'm not sure how amenable to optimization the goo->c
code is for the C compiler).
Post by Jonathan Bachrach
Post by Scott Graham
clearly defining all the interfaces to the system, and assuming less
availability of various posix, etc. functions. Being able
enable/disable: bignums, tty, stdio. This would also help with at
least minimal ports to other (possibly smaller/simpler) OSs.
This could be done and is desirable. Not sure what the plan would be. Goo
can definitely be run without bignums and the rest. It's really about
designing and teasing out the modules.
I can certainly look into this. I don't know too much about the
internals of goo at this point, but it doesn't seem too big and scary
:-), so I'm sure I could make a first attempt at factoring out the
things that I'm concerned about (at least as a test). Is the released
0.155 what I should work against?
Post by Jonathan Bachrach
Post by Scott Graham
And finally, I'd like to see a less restrictive license (at least LGPL
...
I'm open to all of that. It's really just about getting MIT lawyers to do
something.
Ah, OK. I didn't realize that had to involve lawyers. The license
commonly known as the "MIT License" would be perfect, though obviously
I have no idea if your institution has deprecated or otherwise doesn't
like that license. Perhaps it's more permissive than you want too.

Anyway, thanks for your comments. I hope you can find time to continue
to work on goo.

scott
Raffael Cavallaro
2005-08-02 19:26:31 UTC
Permalink
Post by Scott Graham
The "embeddedness" of game consoles
is: limited memory, though a reasonable amount (~16-64meg, and larger
now), no virtual memory, soft real time constraints (especially for
GC), multiple hardware threads, and the general unavailability of TTY
and some general posix-y things (environment variables, etc.). There's
also the question of targetting a variety of different processors: at
least PPC, x86, MIPS. Anyhow, I'm not hoping you'll magically sort
through all those problems, but I think goo would be the perfect thing
to build on/around for a language that's very suitable for game
programming.
Along these lines, how difficult would it be to do goo's object
system in scheme/on top of scheme? Then goo could run anywhere that a
scheme implementation ran - I was thinking of chicken which compiles
to ANSI C, but of course any scheme should work.

regards,

Ralph

Raffael Cavallaro, Ph.D.
***@mac.com
Jonathan Bachrach
2005-08-02 20:27:55 UTC
Permalink
Unfortunately, it's very hard to write an efficient object system on top of
scheme. In order to implement efficient objects in scheme, you need either
an amazing scheme compiler or you need access to low level primitives. Now
I'm not saying that this isn't possible in chicken (which I think is pretty
cool btw) but you definitely can't write an efficient object system directly
on top of vanilla scheme. The other thing that gets complicated is how to
interoperate with Scheme. Goo attempts to present an elegant objects all
the way down model to the user which would be harder to maintain when on top
of Scheme. I think CLOS fails in this regard.



Jonathan



_____

From: googoogaga-***@lists.csail.mit.edu
[mailto:googoogaga-***@lists.csail.mit.edu] On Behalf Of Raffael
Cavallaro
Sent: Tuesday, August 02, 2005 3:27 PM
To: ***@lists.csail.mit.edu
Subject: Re: [Googoogaga] Activity





On Aug 2, 2005, at Tue, Aug 2, 2:47 04 PM, Scott Graham wrote:





The "embeddedness" of game consoles

is: limited memory, though a reasonable amount (~16-64meg, and larger

now), no virtual memory, soft real time constraints (especially for

GC), multiple hardware threads, and the general unavailability of TTY

and some general posix-y things (environment variables, etc.). There's

also the question of targetting a variety of different processors: at

least PPC, x86, MIPS. Anyhow, I'm not hoping you'll magically sort

through all those problems, but I think goo would be the perfect thing

to build on/around for a language that's very suitable for game

programming.



Along these lines, how difficult would it be to do goo's object system in
scheme/on top of scheme? Then goo could run anywhere that a scheme
implementation ran - I was thinking of chicken which compiles to ANSI C, but
of course any scheme should work.



regards,



Ralph



Raffael Cavallaro, Ph.D.

***@mac.com
Michael Vanier
2005-08-02 21:10:10 UTC
Permalink
Date: Tue, 2 Aug 2005 15:26:31 -0400
Along these lines, how difficult would it be to do goo's object
system in scheme/on top of scheme? Then goo could run anywhere that a
scheme implementation ran - I was thinking of chicken which compiles
to ANSI C, but of course any scheme should work.
regards,
Ralph
Raffael Cavallaro, Ph.D.
There are several multimethod-based object systems that run on top of
scheme. Last time I checked (a few years ago), Guile scheme had GOOPS,
which was a generic function-based object system. Given the slow pace of
Guile development, it's probably still there (though apparently no longer
maintained). And Eli Barzilay wrote a multimethod based object system for
PLT scheme called swindle which he still maintains. So if you don't need
the _exact_ goo object system, these might be worth looking into.

Mike
Jonathan Bachrach
2005-08-02 22:42:42 UTC
Permalink
Swindle is very impressive but I worry about it being above a full scheme
language and still having efficiency and integration issues. I would love
to try swindle out to find out how well it works. Eli looks to be quite a
hacker!
Post by Jonathan Bachrach
-----Original Message-----
Sent: Tuesday, August 02, 2005 5:10 PM
Subject: Re: [Googoogaga] Activity
Date: Tue, 2 Aug 2005 15:26:31 -0400
Along these lines, how difficult would it be to do goo's object
system in scheme/on top of scheme? Then goo could run anywhere that a
scheme implementation ran - I was thinking of chicken which compiles
to ANSI C, but of course any scheme should work.
regards,
Ralph
Raffael Cavallaro, Ph.D.
There are several multimethod-based object systems that run on top of
scheme. Last time I checked (a few years ago), Guile scheme had GOOPS,
which was a generic function-based object system. Given the slow pace of
Guile development, it's probably still there (though apparently no longer
maintained). And Eli Barzilay wrote a multimethod based object system for
PLT scheme called swindle which he still maintains. So if you don't need
the _exact_ goo object system, these might be worth looking into.
Mike
_______________________________________________
Googoogaga mailing list
https://lists.csail.mit.edu/mailman/listinfo/googoogaga
Chris Double
2005-08-02 22:30:52 UTC
Permalink
Post by Jonathan Bachrach
What sort of embedded platform are you thinking of? In particular, how much
memory would your target system have? I am also thinking of embedded
systems. Currently goo doesn't have memory/code space as its primary
implementation goal. I was thinking about doing an extremely small
footprint VM implementation combined with a JIT.
I'd be very interested in this too. You may recall I attempted to get
Goo running on a cellphone a while back:

http://radio.weblogs.com/0102385/2002/07/28.html

I was able to get going but I couldn't port the Boehm collector at the
time, so it quickly ran out of memory. Cellphones these days have much
more memory so there is probably a better chance of getting it going.
I'm not sure if Boehm is working on Symbian OS yet though.

I'm also intersted in getting it working on the Nintendo DS handheld
gaming system. There's a fairly good 'homebrew' community around it and
it would make an interesting language to develop with. The DS has two
CPU's, two screens, 4MB of RAM and is ARM based (one ARM7 and one ARM9).
The cellphones I develop for are ARM based as well btw, with from 4-80MB
of memory.

A small footprint VM with or without a JIT would be perfect.

Chris.
--
Chris Double
***@double.co.nz
Jonathan Bachrach
2005-08-02 22:54:42 UTC
Permalink
I have to say that you caught me at a good time. I've been experimenting
with both multimedia apps written in C and experimental languages for new
paradigms of computation. I intentionally departed from goo to free myself
to concentrate on the tasks at hand and to not be unduly biased. I am now
ready to integrate the results of my research back into goo.
Post by Jonathan Bachrach
-----Original Message-----
Sent: Tuesday, August 02, 2005 2:47 PM
Subject: Re: [Googoogaga] Activity
Warning: a bit long-winded...
Post by Jonathan Bachrach
Post by Scott Graham
I'd like to be able to use goo on an embedded system. Ideally, I'd
...
What sort of embedded platform are you thinking of? In particular, how
much
Post by Jonathan Bachrach
memory would your target system have? I am also thinking of embedded
systems. Currently goo doesn't have memory/code space as its primary
implementation goal. I was thinking about doing an extremely small
footprint VM implementation combined with a JIT.
My "real job" is a console game programmer. 99% of console games are
written entirely in C/C++, and having made games that way for the last
6-7 years, I strongly believe the time for that is over. I'd love to
bring goo up on an Xbox or PSP. These are probably larger embedded
systems than you were thinking of. The "embeddedness" of game consoles
is: limited memory, though a reasonable amount (~16-64meg, and larger
now), no virtual memory, soft real time constraints (especially for
GC), multiple hardware threads, and the general unavailability of TTY
and some general posix-y things (environment variables, etc.). There's
also the question of targetting a variety of different processors: at
least PPC, x86, MIPS. Anyhow, I'm not hoping you'll magically sort
through all those problems, but I think goo would be the perfect thing
to build on/around for a language that's very suitable for game
programming.
I'm very excited about getting goo apps to run on xbox/psp etc! What does
someone need to be able to develop code for such a system? How would I get
started?
Post by Jonathan Bachrach
The JIT sounds like a neat/fun idea, though possibly quite a lot of
work, depending on what hardware it was to run on. The small footprint
VM (sans JIT) could certainly be very useful in a variety of
situations though. Personally, I'd like to see just two (possibly
simpler) levels: the straight interpreted/VM version, and the
compiled-through-C version. As long as both the interpreter and the
compiled version have the same semantics, and the interpreter
"overrides" and interacts with the compiled code cleanly, this seems
like the best of both worlds.
This is the way it works right now. You can create a very small system
without the full c compiler in the runtime with only the interpreter
instead.
Post by Jonathan Bachrach
Generally, the workflow could be compile
everything through C, then iterate using the interpreter
(re-re-defining methods, etc.), and when you take a break, or need to
restart the application, recompile all to C and start over. I'm
assuming that the C compiler can do crazy hardware-specific
optimizations that goo can then get relatively for free. (Is that
actually true? I'm not sure how amenable to optimization the goo->c
code is for the C compiler).
Yes this is true.
Post by Jonathan Bachrach
Post by Jonathan Bachrach
Post by Scott Graham
clearly defining all the interfaces to the system, and assuming less
availability of various posix, etc. functions. Being able
enable/disable: bignums, tty, stdio. This would also help with at
least minimal ports to other (possibly smaller/simpler) OSs.
This could be done and is desirable. Not sure what the plan would be.
Goo
Post by Jonathan Bachrach
can definitely be run without bignums and the rest. It's really about
designing and teasing out the modules.
I can certainly look into this. I don't know too much about the
internals of goo at this point, but it doesn't seem too big and scary
:-), so I'm sure I could make a first attempt at factoring out the
things that I'm concerned about (at least as a test). Is the released
0.155 what I should work against?
I really want to resurrect goo and fold in some changes that never got
released.
Post by Jonathan Bachrach
Post by Jonathan Bachrach
Post by Scott Graham
And finally, I'd like to see a less restrictive license (at least LGPL
...
I'm open to all of that. It's really just about getting MIT lawyers to
do
Post by Jonathan Bachrach
something.
Ah, OK. I didn't realize that had to involve lawyers. The license
commonly known as the "MIT License" would be perfect, though obviously
I have no idea if your institution has deprecated or otherwise doesn't
like that license. Perhaps it's more permissive than you want too.
Any software work that I do on MIT's time must be released by permission of
MIT. I got "them" to agree to release goo under GPL. I chose GPL. I could
have chosen another license. I would just need to get them to change the
licensing.
Post by Jonathan Bachrach
Anyway, thanks for your comments. I hope you can find time to continue
to work on goo.
scott
_______________________________________________
Googoogaga mailing list
https://lists.csail.mit.edu/mailman/listinfo/googoogaga
Raffael Cavallaro
2005-08-02 22:23:11 UTC
Permalink
Goo attempts to present an elegant objects all the way down model
to the user... I think CLOS fails in this regard.
Yes, this is the attraction of goo.

regards,

Ralph

Raffael Cavallaro, Ph.D.
***@mac.com
Eduardo Cavazos
2005-08-03 18:36:17 UTC
Permalink
Other Scheme oriented systems that are objects all the way down are
RScheme and Gauche. RScheme's strength is it's compiler. Gauche is a
really polished system from a users point of view in that it has great
documentation and lot's of very useful libraries for "scripting"
tasks. Gauche's C ffi still being designed and documented. Gauche is
lacking language level pre-emptive threads like Gambit has. RScheme
has threads, but is lacking on the documentation side. There is a ton
of great RScheme code to study in the available modules.

Way back I wrote to this list about Goo supporting methods with
non-congruent parameters. Gauche supports this by default. RScheme can
if you include a certain module.

Donovan (the author of RScheme) manages the RScheme code base using a
web application called Axis. Axis is written in RScheme and I think is
a commercial application. You can browse the RScheme axis repository
on the web:

http://axis.rscheme.org:7973/
Goo attempts to present an elegant objects all the way down model to the
user... I think CLOS fails in this regard.
Yes, this is the attraction of goo.
regards,
Ralph
Raffael Cavallaro, Ph.D.
_______________________________________________
Googoogaga mailing list
https://lists.csail.mit.edu/mailman/listinfo/googoogaga
Chris Double
2005-08-02 23:00:11 UTC
Permalink
On Tue, 2 Aug 2005 18:54:42 -0400, "Jonathan Bachrach"
Post by Jonathan Bachrach
I'm very excited about getting goo apps to run on xbox/psp etc! What does
someone need to be able to develop code for such a system? How would I get
started?
There are a number of ways of doing it on the Nintendo DS, but the
easiest is probably a compatible Wifi card, a GBA flash cartridge, and
the GCC compiler for ARM. I have details here:

http://www.double.co.nz/nintendo_ds/

There are emulators available but they are at a very early stage. I
suspect it wouldn't be difficult to get a simple Goo system running on
it, if the GC could be ported easy enough.

Chris.
--
Chris Double
***@double.co.nz
Jonathan Bachrach
2005-08-03 23:37:59 UTC
Permalink
Post by Jonathan Bachrach
-----Original Message-----
Sent: Tuesday, August 02, 2005 7:36 PM
To: Jonathan Bachrach
Subject: Re: [Googoogaga] Activity
Hi again,
Post by Jonathan Bachrach
I have to say that you caught me at a good time. I've been
experimenting
Post by Jonathan Bachrach
with both multimedia apps written in C and experimental languages for
new
Post by Jonathan Bachrach
paradigms of computation. I intentionally departed from goo to free
myself
Post by Jonathan Bachrach
to concentrate on the tasks at hand and to not be unduly biased. I am
now
Post by Jonathan Bachrach
ready to integrate the results of my research back into goo.
That sounds pretty exciting. Has any of that research been presented
anywhere?
I presented at LL4 and the talk is on

ll4.csail.mit.edu

I'm also working on a series of languages for programming sensor networks
and ultimately amorphous computers.
Post by Jonathan Bachrach
I'd be curious to read about it. One of the things that
C/C++ are especially bad at is dealing with, which is quite common in
games, is the concept of time or things occuring over many frames. The
code ends up being very clumsy just because it's not really possible
to extend the language in a coherent way to deal with that.
I'm still working on that sort of support but Gooze and other similar
languages make a large part of dealing with time easier.
Post by Jonathan Bachrach
Post by Jonathan Bachrach
I'm very excited about getting goo apps to run on xbox/psp etc! What
does
Post by Jonathan Bachrach
someone need to be able to develop code for such a system? How would I
get
Post by Jonathan Bachrach
started?
Officially, you have to be a licensed developer, and buy a piece of
development hardware. For PSP though, there's a "homebrew" scene that
has done a decent port of GCC. If you have or can find a regular
consumer PSP that is firmware revision 1.50 or 1.0 (1.50 is pretty
common), it's easy to set up. You basically install cygwin under
Windows, and then there's an "autobuild" script which wget's gcc and
some utilities, builds them and sets you up with an SDK and a build
environment. You can get the autobuild script from
http://www.oopo.net/consoledev/ (the last link on the page). I'm sure
you can ebay a PSP with the right firmware revision (1.50), or, if you
check local electronics stores/Walmart, etc., this page
(http://edge.i-hacked.com/archives/507) will tell you what to look for
to make sure you get the right revision.
Do they have opengl bindings and audio support?
Post by Jonathan Bachrach
Post by Jonathan Bachrach
I really want to resurrect goo and fold in some changes that never got
released.
Ah, OK, it'll be good to have a new release. Well, I'll putz around
with the current released version for now, just to get familiar with
the internals a little more.
Ok.

-- jonathan
Scott Graham
2005-08-04 00:54:40 UTC
Permalink
Post by Jonathan Bachrach
Post by Jonathan Bachrach
development hardware. For PSP though, there's a "homebrew" scene that
...
Do they have opengl bindings and audio support?
All current consoles have their own graphics and audio APIs that are
more suited to the design of the hardware. The PSP is easy to
understand if you're familiar with GL, but it's not actually GL.

scott

Loading...