Memory management in shedskin

160 views
Skip to first unread message

Gearoid Murphy

unread,
Aug 24, 2012, 3:28:49 AM8/24/12
to shedskin...@googlegroups.com
I'm sure this has probably been vigorously debated already but has any thought been given to using reference counting instead of the garbage collection in shedskin?
If so, what was the rational?
Thanks.

Jérémie Roquet

unread,
Aug 24, 2012, 5:31:13 AM8/24/12
to shedskin...@googlegroups.com
Hi Gearoid,

2012/8/24 Gearoid Murphy <gearoid....@gmail.com>:
Issues with garbage collection have been raised several times indeed,
and more or less addressed, but I don't remember reference counting
having been considered as a serious alternative to it.
Implementing an efficient memory management system based on reference
counting like in CPython¹ is not a trivial task, as you have to handle
corner cases such as cyclic references for example. Mark and Sweep
does not have such issue.

But I guess the main reason for using BoehmGC is that it's ready to work :-)

Best regards,

¹ http://docs.python.org/extending/extending.html#reference-counts

--
Jérémie

Gearoid Murphy

unread,
Aug 27, 2012, 1:13:37 PM8/27/12
to shedskin...@googlegroups.com
Thanks for the info Jérémie. Are you familiar with the automated reference counting capability of Objective-C:

It's not perfect, in that reference loops are still possible if the user does not take care but it bypasses the terrible performance of GC when using lots of objects.

Jérémie Roquet

unread,
Sep 2, 2012, 5:56:16 PM9/2/12
to shedskin...@googlegroups.com
Hi again and sorry for the late reply.

2012/8/27 Gearoid Murphy <gearoid....@gmail.com>:
> Thanks for the info Jérémie. Are you familiar with the automated reference
> counting capability of Objective-C:
> http://clang.llvm.org/docs/AutomaticReferenceCounting.html
>
> It's not perfect, in that reference loops are still possible if the user
> does not take care but it bypasses the terrible performance of GC when using
> lots of objects.

No, I'm not familiar with it (I don't own any Apple device, actually).
This may be worth a look. In particular, it would be interesting to
know if this has been chosen for global performance reasons, or maybe
because working on mobile devices matters.

Best regards,

--
Jérémie

Mark Dufour

unread,
Sep 17, 2012, 11:29:24 PM9/17/12
to shedskin...@googlegroups.com
But I guess the main reason for using BoehmGC is that it's ready to work :-)


yeah, iirc, it took about an hour to get the boehm gc to "work". I've never really thought about refcounting after that, other than to note that it seems messy business.

I quote "work" above because I've encountered/received several python programs by now that trip up the GC after compilation (memory allocation goes through the roof because it is unable to deallocate anything). it would be great if anyone could look into this problem with some depth.. see for example one of the currently open issues.

thanks,
mark.
--
http://www.youtube.com/watch?v=E6LsfnBmdnk

Mark Dufour

unread,
Sep 17, 2012, 11:54:54 PM9/17/12
to shedskin...@googlegroups.com
On Tue, Aug 28, 2012 at 1:13 AM, Gearoid Murphy <gearoid....@gmail.com> wrote:
Thanks for the info Jérémie. Are you familiar with the automated reference counting capability of Objective-C:

It's not perfect, in that reference loops are still possible if the user does not take care but it bypasses the terrible performance of GC when using lots of objects.

not sure but I seem to remember C++ also has this capability (read: can be extended to have it), in the form of "smart" or "shared pointers". but again I've never really looked into this stuff . (note these may not be compatible with the boehm gc.. :S)

Farz Hemmati

unread,
Sep 18, 2012, 12:29:26 AM9/18/12
to shedskin...@googlegroups.com
Yes, there are scoped pointers, shared pointers, reference-counting pointers, etc. Currently, all allocators are from the boehm gc, but if shedskin allowed different allocators or at least allocation syntax, then you could swap in reference-counting pointers that take care of the reference counting internally to the pointer object (each construction/destruction for the same pointer value is a reference/dereference). With some more work, and likely escape-analysis, scoped pointers/stack allocation could be used (scoped pointers are usually used when creation of an object is conditional and there are multiple return points from the function, or as a instance variable that may come in as NULL but ownership is taken).

--
You received this message because you are subscribed to the Google Groups "shedskin-discuss" group.
To post to this group, send email to shedskin...@googlegroups.com.
To unsubscribe from this group, send email to shedskin-discu...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/shedskin-discuss?hl=en.

Alex Susu

unread,
May 26, 2013, 3:47:52 PM5/26/13
to shedskin...@googlegroups.com
  Hi,
    Did anybody implement a different memory management for ShedSkin than the current Boehm GC?
    I am thinking to use shared_ptr and smart_ptr available in more recent C++ (for example, GCC 4.6, part of boost). C++11 compliant compilers have these classes part of the std C++ lib.
   Best regards,
      Alex

srepmub

unread,
May 30, 2013, 3:19:34 PM5/30/13
to shedskin...@googlegroups.com
hi alex,


    Did anybody implement a different memory management for ShedSkin than the current Boehm GC?

I'm not aware of any such attempt..

thanks,
mark.
 

Stephen Kennedy

unread,
Oct 17, 2013, 1:12:27 PM10/17/13
to shedskin...@googlegroups.com
On Tuesday, 18 September 2012 04:29:25 UTC+1, srepmub wrote:
But I guess the main reason for using BoehmGC is that it's ready to work :-)


yeah, iirc, it took about an hour to get the boehm gc to "work". I've never really thought about refcounting after that, other than to note that it seems messy business.

Does shedskin have enough type information so that an accurate gc sytem could be used instead of boehm or refcounting? 

Stephen.

Mark Dufour

unread,
Oct 27, 2013, 3:42:58 PM10/27/13
to shedskin-discuss
hi stephen,


Does shedskin have enough type information so that an accurate gc sytem could be used instead of boehm or refcounting? 


theoretically, yes, you could do anything that, say, a Java implementation, does. in practice I'm afraid it would mean having to write our own garbage collector. or add a Java backend.. :-)

RCU

unread,
Nov 29, 2013, 4:06:01 AM11/29/13
to shedskin...@googlegroups.com
Hi.
I see there are a few people asking about replacing Boehm's GC in ShedSkin and using
C++ smart pointers (see emails below).
I played a bit with Boehm's GC and I played with C++ smart pointers, etc.

Anybody interested in collaborating on such topic?
You can find here a sketch with ideas on static/hybrid memory management for
ShedSkin: https://sites.google.com/site/alexsusu/shedskin . The work is not trivial, and
there are already a lot of results in research on this topic.

Best regards,
Alex
On 10/17/2013 8:12 PM, Stephen Kennedy wrote:
> On Tuesday, 18 September 2012 04:29:25 UTC+1, srepmub wrote:
>
> But I guess the main reason for using BoehmGC is that it's ready to work :-)
>
>
> yeah, iirc, it took about an hour to get the boehm gc to "work". I've never really
> thought about refcounting after that, other than to note that it seems messy business.
>
>
> Does shedskin have enough type information so that an accurate gc sytem could be used
> instead of boehm or refcounting?
>
> Stephen.


> --
> You received this message because you are subscribed to the Google Groups
> "shedskin-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to
> shedskin-discu...@googlegroups.com.
> To post to this group, send email to shedskin...@googlegroups.com.
> Visit this group at http://groups.google.com/group/shedskin-discuss.
> For more options, visit https://groups.google.com/groups/opt_out.
> Thanks for the info J�r�mie. Are you familiar with the automated reference
> counting capability of Objective-C:
> http://clang.llvm.org/docs/AutomaticReferenceCounting.html
> <http://clang.llvm.org/docs/AutomaticReferenceCounting.html>
>
> It's not perfect, in that reference loops are still possible if the user
> does not take care but it bypasses the terrible performance of GC when
> using lots of objects.
>
>
> not sure but I seem to remember C++ also has this capability (read: can be
> extended to have it), in the form of "smart" or "shared pointers". but again
> I've never really looked into this stuff . (note these may not be compatible
> with the boehm gc.. :S)
>
> <http://www.youtube.com/watch?v=E6LsfnBmdnk>
>
> --
> You received this message because you are subscribed to the Google Groups
> "shedskin-discuss" group.
> To post to this group, send email to shedskin...@googlegroups.com.
> To unsubscribe from this group, send email to
shedskin-discu...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/shedskin-discuss?hl=en
> <http://groups.google.com/group/shedskin-discuss?hl=en>.

Mark Dufour

unread,
Dec 2, 2013, 6:17:51 AM12/2/13
to shedskin-discuss
hi alex,

I'm of course happy to try and answer any questions about the shedskin internals. but I also have a bit of personal interest in especially escape analysis. I even did a simple implemention early on, and described this in my thesis.. I think though that I tried to allocate objects on the stack even, which complicated things too much for my taste at the time (since in C you then have to use either '.' or '->' to access members) so I backed out again (it also distracted a bit from my 'core business' :P).

in any case, it sounds like using smart pointers in combination with a simple escape analysis might be a relatively simple but useful approach. you could perhaps start with a simple visitor class to track local variable names, analyze the resulting graph, and insert smart pointers where possible..

cheers,
mark.


>                 Thanks for the info Jérémie. Are you familiar with the automated reference

>                 counting capability of Objective-C:
>                 http://clang.llvm.org/docs/AutomaticReferenceCounting.html
>                 <http://clang.llvm.org/docs/AutomaticReferenceCounting.html>
>
>                 It's not perfect, in that reference loops are still possible if the user
>                 does not take care but it bypasses the terrible performance of GC when
>                 using lots of objects.
>
>
>             not sure but I seem to remember C++ also has this capability (read: can be
>             extended to have it), in the form of "smart" or "shared pointers". but again
>             I've never really looked into this stuff . (note these may not be compatible
>             with the boehm gc.. :S)
>
>             thanks,
>             mark.
>             --
>             http://www.youtube.com/watch?v=E6LsfnBmdnk
>             <http://www.youtube.com/watch?v=E6LsfnBmdnk>
>
>             --
>             You received this message because you are subscribed to the Google Groups
>             "shedskin-discuss" group.
>             To post to this group, send email to shedskin...@googlegroups.com.
>             To unsubscribe from this group, send email to shedskin-discu...@googlegroups.com.
>             For more options, visit this group at
>             http://groups.google.com/group/shedskin-discuss?hl=en
>             <http://groups.google.com/group/shedskin-discuss?hl=en>.
--
You received this message because you are subscribed to the Google Groups "shedskin-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to shedskin-discuss+unsubscribe@googlegroups.com.
To post to this group, send email to shedskin-discuss@googlegroups.com.

RCU

unread,
Dec 13, 2013, 9:36:13 AM12/13/13
to shedskin...@googlegroups.com
Hi, Mark,
Please tell me where you treated in your Master's thesis the escape analysis part.

I need to understand well the translation of objects from Python to C++. I see that
this translation does the following:
- Python local function constant strings (e.g, "test str Python") are translated into C++
global str objects (has to do, I guess, with the call-by-object semantics of Python). This
does not give any opportunity for using smart pointers;
- Python local function list variables (e.g., l1 = [1, 2]) are declared in C++ as
a local function list which can be used as a smart pointers;
- etc
Is this aspect of the translation described in your MSc thesis?

Best regards,
Alex

On 12/2/2013 1:17 PM, Mark Dufour wrote:
> hi alex,
>
> I'm of course happy to try and answer any questions about the shedskin internals. but I
> also have a bit of personal interest in especially escape analysis. I even did a simple
> implemention early on, and described this in my thesis.. I think though that I tried to
> allocate objects on the stack even, which complicated things too much for my taste at the
> time (since in C you then have to use either '.' or '->' to access members) so I backed
> out again (it also distracted a bit from my 'core business' :P).
>
> in any case, it sounds like using smart pointers in combination with a simple escape
> analysis might be a relatively simple but useful approach. you could perhaps start with a
> simple visitor class to track local variable names, analyze the resulting graph, and
> insert smart pointers where possible..
>
> cheers,
> mark.
>
>
> On Fri, Nov 29, 2013 at 10:06 AM, RCU <alex....@gmail.com
> <mailto:alex....@gmail.com>> wrote:
>
> Hi.
> I see there are a few people asking about replacing Boehm's GC in ShedSkin and
> using C++ smart pointers (see emails below).
> I played a bit with Boehm's GC and I played with C++ smart pointers, etc.
>
> Anybody interested in collaborating on such topic?
> You can find here a sketch with ideas on static/hybrid memory management for
> ShedSkin: https://sites.google.com/site/__alexsusu/shedskin
> <https://sites.google.com/site/alexsusu/shedskin> . The work is not trivial, and there
> are already a lot of results in research on this topic.
>
> Best regards,
> Alex
>
> On 10/27/2013 9:42 PM, Mark Dufour wrote:
>
> hi stephen,
>
>
> Does shedskin have enough type information so that an accurate gc sytem could
> be used
> instead of boehm or refcounting?
>
>
> theoretically, yes, you could do anything that, say, a Java implementation, does. in
> practice I'm afraid it would mean having to write our own garbage collector. or
> add a Java
> backend.. :-)
>
> thanks,
> mark.
> --
> http://www.youtube.com/watch?__v=E6LsfnBmdnk
> <http://www.youtube.com/watch?v=E6LsfnBmdnk>
>
>
>
> On 10/17/2013 8:12 PM, Stephen Kennedy wrote:
> > On Tuesday, 18 September 2012 04:29:25 UTC+1, srepmub wrote:
> >
> > But I guess the main reason for using BoehmGC is that it's ready to work :-)
> >
> >
> > yeah, iirc, it took about an hour to get the boehm gc to "work". I've never really
> > thought about refcounting after that, other than to note that it seems messy
> business.
> >
> >
> > Does shedskin have enough type information so that an accurate gc sytem could be used
> > instead of boehm or refcounting?
> >
> > Stephen.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "shedskin-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to
> shedskin-discuss+unsubscribe@__googlegroups.com
> <mailto:shedskin-discuss%2Bunsu...@googlegroups.com>.
> To post to this group, send email to shedskin-discuss@googlegroups.__com
> <mailto:shedskin...@googlegroups.com>.
> Visit this group at http://groups.google.com/__group/shedskin-discuss
> <http://groups.google.com/group/shedskin-discuss>.
> For more options, visit https://groups.google.com/__groups/opt_out
> <https://groups.google.com/groups/opt_out>.
> <mailto:gearoid....@gmail.com>> wrote:
> >
> > Thanks for the info J�r�mie. Are you familiar with the automated
> reference
> > counting capability of Objective-C:
> > http://clang.llvm.org/docs/__AutomaticReferenceCounting.__html
> <http://clang.llvm.org/docs/AutomaticReferenceCounting.html>
> > <http://clang.llvm.org/docs/__AutomaticReferenceCounting.__html
> <http://clang.llvm.org/docs/AutomaticReferenceCounting.html>>
> >
> > It's not perfect, in that reference loops are still possible if the
> user
> > does not take care but it bypasses the terrible performance of GC when
> > using lots of objects.
> >
> >
> > not sure but I seem to remember C++ also has this capability (read: can be
> > extended to have it), in the form of "smart" or "shared pointers". but
> again
> > I've never really looked into this stuff . (note these may not be
> compatible
> > with the boehm gc.. :S)
> >
> > thanks,
> > mark.
> > --
> > http://www.youtube.com/watch?__v=E6LsfnBmdnk
> <http://www.youtube.com/watch?v=E6LsfnBmdnk>
> > <http://www.youtube.com/watch?__v=E6LsfnBmdnk
> <http://www.youtube.com/watch?v=E6LsfnBmdnk>>
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "shedskin-discuss" group.
> > To post to this group, send email to shedskin...@googlegroups.com
> <mailto:shedskin...@googlegroups.com>.
> > To unsubscribe from this group, send email to
> shedskin-discu...@__googlegroups.com <mailto:shedskin-discu...@googlegroups.com>.
> > For more options, visit this group at
> > http://groups.google.com/__group/shedskin-discuss?hl=en
> <http://groups.google.com/group/shedskin-discuss?hl=en>
> > <http://groups.google.com/__group/shedskin-discuss?hl=en
> <http://groups.google.com/group/shedskin-discuss?hl=en>>.
>
> --
> You received this message because you are subscribed to the Google Groups
> "shedskin-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to
> shedskin-discuss+unsubscribe@__googlegroups.com
> <mailto:shedskin-discuss%2Bunsu...@googlegroups.com>.
> To post to this group, send email to shedskin-discuss@googlegroups.__com
> <mailto:shedskin...@googlegroups.com>.
> Visit this group at http://groups.google.com/__group/shedskin-discuss
> <http://groups.google.com/group/shedskin-discuss>.
> For more options, visit https://groups.google.com/__groups/opt_out
> <https://groups.google.com/groups/opt_out>.
>
>
>
>
> --
> http://www.youtube.com/watch?v=E6LsfnBmdnk
>
> --
> You received this message because you are subscribed to the Google Groups
> "shedskin-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to
> shedskin-discu...@googlegroups.com.
> To post to this group, send email to shedskin...@googlegroups.com.

RCU

unread,
Dec 13, 2013, 2:19:25 PM12/13/13
to shedskin...@googlegroups.com
Mark,
Just figured out that your thesis available at
http://mark.dufour.googlepages.com/shedskin.pdf is not a searchable PDF. Would it be
possible to share with me/us a searchable version of it?

Thanks a lot,
Alex

On 12/2/2013 1:17 PM, Mark Dufour wrote:
> hi alex,
[]
> ...I even did a simple
> implemention early on, and described this in my thesis..

[]
> cheers,
> mark.
>

Mark Dufour

unread,
Dec 21, 2013, 3:52:36 PM12/21/13
to shedskin-discuss
hi alex,

sorry for the late response..

I'm afraid I don't have the source code for my thesis anymore, but probably only section 2.2 is relevant for this discussion. I don't think my thesis goes into any detail about translation details as you mention, but this should mostly be straightforward.. a local variable on one side corresponds to a local variable on the other side, and so on. of course there are some complications for constructs that are not available in C++..


thanks,
mark.


        <mailto:shedskin-discuss@googlegroups.com>.
     >                 Thanks for the info Jérémie. Are you familiar with the automated


--
You received this message because you are subscribed to the Google Groups
"shedskin-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
--
You received this message because you are subscribed to the Google Groups "shedskin-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to shedskin-discuss+unsubscribe@googlegroups.com.
To post to this group, send email to shedskin-discuss@googlegroups.com.

RCU

unread,
Feb 3, 2014, 3:59:53 AM2/3/14
to shedskin...@googlegroups.com
Hi, Marc,
I've OCRed your Master thesis - now I have a searchable PDF. You can find it at
https://sites.google.com/site/alexsusu/myfilecabinet/shedskin_OCRed.pdf . If anybody does
a better job do let me know.

I'll get back on the topic of Memory management in Shedskin when I have a bit of time...

Best regards,
Alex

On 12/21/2013 10:52 PM, Mark Dufour wrote:
> hi alex,
>
> <mailto:alex....@gmail.com <mailto:alex....@gmail.com>>__> wrote:
>
> Hi.
> I see there are a few people asking about replacing Boehm's GC in
> ShedSkin and
> using C++ smart pointers (see emails below).
> I played a bit with Boehm's GC and I played with C++ smart pointers, etc.
>
> Anybody interested in collaborating on such topic?
> You can find here a sketch with ideas on static/hybrid memory management for
> ShedSkin: https://sites.google.com/site/____alexsusu/shedskin
> <https://sites.google.com/site/__alexsusu/shedskin>
> <https://sites.google.com/__site/alexsusu/shedskin
> <https://sites.google.com/site/alexsusu/shedskin>> . The work is not trivial, and
> there
> are already a lot of results in research on this topic.
>
> Best regards,
> Alex
>
> On 10/27/2013 9:42 PM, Mark Dufour wrote:
>
> hi stephen,
>
>
> Does shedskin have enough type information so that an accurate gc
> sytem could
> be used
> instead of boehm or refcounting?
>
>
> theoretically, yes, you could do anything that, say, a Java
> implementation, does. in
> practice I'm afraid it would mean having to write our own garbage
> collector. or
> add a Java
> backend.. :-)
>
> thanks,
> mark.
> --
> http://www.youtube.com/watch?____v=E6LsfnBmdnk
> <http://www.youtube.com/watch?__v=E6LsfnBmdnk>
> <http://www.youtube.com/watch?__v=E6LsfnBmdnk
> <http://www.youtube.com/watch?v=E6LsfnBmdnk>>
>
>
>
> On 10/17/2013 8:12 PM, Stephen Kennedy wrote:
> > On Tuesday, 18 September 2012 04:29:25 UTC+1, srepmub wrote:
> >
> > But I guess the main reason for using BoehmGC is that it's ready
> to work :-)
> >
> >
> > yeah, iirc, it took about an hour to get the boehm gc to "work". I've
> never really
> > thought about refcounting after that, other than to note that it seems
> messy
> business.
> >
> >
> > Does shedskin have enough type information so that an accurate gc sytem
> could be used
> > instead of boehm or refcounting?
> >
> > Stephen.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "shedskin-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to
> shedskin-discuss+unsubscribe@____googlegroups.com <http://googlegroups.com>
> <mailto:shedskin-discuss%__2Buns...@googlegroups.com
> <mailto:shedskin-discuss%252Buns...@googlegroups.com>__>.
> To post to this group, send email to shedskin-discuss@googlegroups.____com
> <mailto:shedskin-discuss@__googlegroups.com
> <mailto:shedskin...@googlegroups.com>>.
> Visit this group at http://groups.google.com/____group/shedskin-discuss
> <http://groups.google.com/__group/shedskin-discuss>
> For more options, visit https://groups.google.com/____groups/opt_out
> <https://groups.google.com/__groups/opt_out>
> <mailto:mark....@gmail.com <mailto:mark....@gmail.com>>> wrote:
> >
> >
> > On Tue, Aug 28, 2012 at 1:13 AM, Gearoid Murphy
> <gearoid....@gmail.com <mailto:gearoid....@gmail.com>
> <mailto:gearoid....@gmail.com <mailto:gearoid....@gmail.com>>__> wrote:
> >
> > Thanks for the info Jérémie. Are you familiar with the
> automated
> reference
> > counting capability of Objective-C:
> > http://clang.llvm.org/docs/____AutomaticReferenceCounting.____html
> <http://clang.llvm.org/docs/__AutomaticReferenceCounting.__html>
> <http://clang.llvm.org/docs/__AutomaticReferenceCounting.__html
> <http://clang.llvm.org/docs/AutomaticReferenceCounting.html>>
> > <http://clang.llvm.org/docs/____AutomaticReferenceCounting.____html
> <http://clang.llvm.org/docs/__AutomaticReferenceCounting.__html>
> <http://clang.llvm.org/docs/__AutomaticReferenceCounting.__html
> <http://clang.llvm.org/docs/AutomaticReferenceCounting.html>>>
> >
> > It's not perfect, in that reference loops are still
> possible if the
> user
> > does not take care but it bypasses the terrible
> performance of GC when
> > using lots of objects.
> >
> >
> > not sure but I seem to remember C++ also has this capability
> (read: can be
> > extended to have it), in the form of "smart" or "shared
> pointers". but
> again
> > I've never really looked into this stuff . (note these may not be
> compatible
> > with the boehm gc.. :S)
> >
> > thanks,
> > mark.
> > --
> > http://www.youtube.com/watch?____v=E6LsfnBmdnk
> <http://www.youtube.com/watch?__v=E6LsfnBmdnk>
> <http://www.youtube.com/watch?__v=E6LsfnBmdnk
> <http://www.youtube.com/watch?v=E6LsfnBmdnk>>
> > <http://www.youtube.com/watch?____v=E6LsfnBmdnk
> <http://www.youtube.com/watch?__v=E6LsfnBmdnk>
> <http://www.youtube.com/watch?__v=E6LsfnBmdnk
> <http://www.youtube.com/watch?v=E6LsfnBmdnk>>>
> >
> > --
> > You received this message because you are subscribed to the
> Google Groups
> > "shedskin-discuss" group.
> > To post to this group, send email to
> shedskin...@googlegroups.com <mailto:shedskin...@googlegroups.com>
> <mailto:shedskin...@__googlegroups.com <mailto:shedskin...@googlegroups.com>>.
> > To unsubscribe from this group, send email to
> shedskin-discu...@__googlegrou__ps.com <http://googlegroups.com>
> <mailto:shedskin-discu...@__googlegroups.com
> <mailto:shedskin-discu...@googlegroups.com>>.
> > For more options, visit this group at
> > http://groups.google.com/____group/shedskin-discuss?hl=en
> <http://groups.google.com/__group/shedskin-discuss?hl=en>
> <http://groups.google.com/__group/shedskin-discuss?hl=en
> <http://groups.google.com/group/shedskin-discuss?hl=en>>
> > <http://groups.google.com/____group/shedskin-discuss?hl=en
> <http://groups.google.com/__group/shedskin-discuss?hl=en>
> <http://groups.google.com/__group/shedskin-discuss?hl=en
> <http://groups.google.com/group/shedskin-discuss?hl=en>>>__.
>
> --
> You received this message because you are subscribed to the Google Groups
> "shedskin-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to
> shedskin-discuss+unsubscribe@____googlegroups.com <http://googlegroups.com>
> <mailto:shedskin-discuss%__2Buns...@googlegroups.com
> <mailto:shedskin-discuss%252Buns...@googlegroups.com>__>.
> To post to this group, send email to shedskin-discuss@googlegroups.____com
> <mailto:shedskin-discuss@__googlegroups.com
> <mailto:shedskin...@googlegroups.com>>.
> Visit this group at http://groups.google.com/____group/shedskin-discuss
> <http://groups.google.com/__group/shedskin-discuss>
> For more options, visit https://groups.google.com/____groups/opt_out
> <https://groups.google.com/__groups/opt_out>
> http://www.youtube.com/watch?__v=E6LsfnBmdnk
> <http://www.youtube.com/watch?v=E6LsfnBmdnk>
>
> --
> You received this message because you are subscribed to the Google Groups
> "shedskin-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to
> shedskin-discuss+unsubscribe@__googlegroups.com
> <mailto:shedskin-discuss%2Bunsu...@googlegroups.com>.
> To post to this group, send email to shedskin-discuss@googlegroups.__com
> <mailto:shedskin...@googlegroups.com>.
> You received this message because you are subscribed to the Google Groups
> "shedskin-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to
> shedskin-discuss+unsubscribe@__googlegroups.com
> <mailto:shedskin-discuss%2Bunsu...@googlegroups.com>.
> To post to this group, send email to shedskin-discuss@googlegroups.__com
> <mailto:shedskin...@googlegroups.com>.
> Visit this group at http://groups.google.com/__group/shedskin-discuss
> <http://groups.google.com/group/shedskin-discuss>.
> For more options, visit https://groups.google.com/__groups/opt_out
> <https://groups.google.com/groups/opt_out>.
>
>
>
>
> --
> http://www.youtube.com/watch?v=E6LsfnBmdnk
>
> --
> You received this message because you are subscribed to the Google Groups
> "shedskin-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to
> shedskin-discu...@googlegroups.com.
> To post to this group, send email to shedskin...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages