--
You received this message because you are subscribed to the Google Groups "tinypy" group.
To post to this group, send email to tin...@googlegroups.com.
To unsubscribe from this group, send email to tinypy+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/tinypy?hl=en.
I'd certainly like to learn more about this! |
!!Dean
Andy, are you going to pycon in March?
!!Dean
On Feb 17, 2011, at 09:12 , Andy O'Meara wrote:
Hi Tim and all,
We're actually almost finished with a major recode of tinypy that I've been waiting to share with the group. For some background and further info:
http://groups.google.com/group/tinypy/browse_thread/thread/02426e115e6026aa/385a6fc608569eef?#385a6fc608569eef
So, we've actually been working on this stuff considerably over the last couple months, and the only piece left until we've reached the first major milestone (code cleanup, compartmentalization, API formalization, and project cleanup) is making some decisions about a hybrid gc system (ref counting vs pure gc). As it stands, we have things looking pretty sexy and clean, with the one exception that the gc load can start to be wasteful/scary under normal conditions of a embedded interpreter running for long periods of time in a real-time application (e.g. high performance game). For example, in a typical embedded application ("embedded" as in embedding tp in an app, not as in an app running on "small"/embedded hardware), the interpreter could persist and be run incrementally for hundreds of scripts while other more critical real-time load is present, so if every non-trivial allocated object (e.g. a runtime string) passed into tp from the outside world has to be put into the gc tracker, the gc start to get gc load can start to get ugly. We've been considering strategies that will detect objects that quickly become unreferenced (rather than just letting them be throwin into the gc pool for general collection). Am I explaining this well? It's hard to describe without typing a book.
In any case, I wanted to wait a little longer before announcing all this, but I didn't want folks to dive into a rework w/o knowing about our progress. I've presented our work to a couple companies, including to Enthought based here in Austin, and we've gotten a LOT of interest. If there's real interest here, I can go into where we're at and posting an archive of what we have. If I got the blessing from folks here, I could also just commit it as a branch.
Andy O'Meara
SoundSpectrum Inc
On Thu, Feb 17, 2011 at 8:07 AM, Tim Cas <darku...@gmail.com> wrote:
Well, to begin, I think we should decide whether TinyPy should be recoded from scratch or not; furthermore, exactly how much of "big" Python to implement, if and where to extend it (say, tail call optimization).
Also one important question is, should bytecode try to remain compatiable with that of CPython? I think not (I'll give reasons later if anyone disagrees), but I want to hear your ideas.
On 15 February 2011 22:08, Tim Cas <darku...@gmail.com> wrote:
This is the main thread to discuss reorganizing the TinyPy project (recode or not).
--
You received this message because you are subscribed to the Google Groups "tinypy" group.
To post to this group, send email to tin...@googlegroups.com.
To unsubscribe from this group, send email to tinypy+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/tinypy?hl=en.
--
You received this message because you are subscribed to the Google Groups "tinypy" group.
To post to this group, send email to tin...@googlegroups.com.
To unsubscribe from this group, send email to tinypy+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/tinypy?hl=en.
Andy, are you going to pycon in March?
Andy, are you going to pycon in March?
!!Dean
On Feb 17, 2011, at 09:12 , Andy O'Meara wrote:
Hi Tim and all,
We're actually almost finished with a major recode of tinypy that I've been waiting to share with the group. For some background and further info:
http://groups.google.com/group/tinypy/browse_thread/thread/02426e115e6026aa/385a6fc608569eef?#385a6fc608569eef
So, we've actually been working on this stuff considerably over the last couple months, and the only piece left until we've reached the first major milestone (code cleanup, compartmentalization, API formalization, and project cleanup) is making some decisions about a hybrid gc system (ref counting vs pure gc). As it stands, we have things looking pretty sexy and clean, with the one exception that the gc load can start to be wasteful/scary under normal conditions of a embedded interpreter running for long periods of time in a real-time application (e.g. high performance game). For example, in a typical embedded application ("embedded" as in embedding tp in an app, not as in an app running on "small"/embedded hardware), the interpreter could persist and be run incrementally for hundreds of scripts while other more critical real-time load is present, so if every non-trivial allocated object (e.g. a runtime string) passed into tp from the outside world has to be put into the gc tracker, the gc start to get gc load can start to get ugly. We've been considering strategies that will detect objects that quickly become unreferenced (rather than just letting them be throwin into the gc pool for general collection). Am I explaining this well? It's hard to describe without typing a book.
In any case, I wanted to wait a little longer before announcing all this, but I didn't want folks to dive into a rework w/o knowing about our progress. I've presented our work to a couple companies, including to Enthought based here in Austin, and we've gotten a LOT of interest. If there's real interest here, I can go into where we're at and posting an archive of what we have. If I got the blessing from folks here, I could also just commit it as a branch.
Andy O'Meara
SoundSpectrum Inc
On Thu, Feb 17, 2011 at 8:07 AM, Tim Cas <darku...@gmail.com> wrote:
Well, to begin, I think we should decide whether TinyPy should be recoded from scratch or not; furthermore, exactly how much of "big" Python to implement, if and where to extend it (say, tail call optimization).
Also one important question is, should bytecode try to remain compatiable with that of CPython? I think not (I'll give reasons later if anyone disagrees), but I want to hear your ideas.
On 15 February 2011 22:08, Tim Cas <darku...@gmail.com> wrote:
This is the main thread to discuss reorganizing the TinyPy project (recode or not).
--
You received this message because you are subscribed to the Google Groups "tinypy" group.
To post to this group, send email to tin...@googlegroups.com.
To unsubscribe from this group, send email to tinypy+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/tinypy?hl=en.
--
You received this message because you are subscribed to the Google Groups "tinypy" group.
To post to this group, send email to tin...@googlegroups.com.
To unsubscribe from this group, send email to tinypy+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/tinypy?hl=en.
--
Your work sounds awesome. What license will it be available under when you
release it?
On Thu, Feb 17, 2011 at 02:19:40PM -0600, Andy O'Meara wrote:
> Over the years I've been discouraged by folks who say they're interested in
> contributing but don't in the end, so that's why we've taken this project on
> privately and quietly thus far. I've spent hundreds of hours going back and
> forth with certain people in the CPython dev community that frankly were
> just unwilling to listen to the needs and priorities of commercial app
> developers. And frankly we're done with them, and they can have their
> butt-slow, lumbering, and thread-restrictive CPython. They can also have
> their GIL while we do with Python what should have been done years ago (and
> why Lua is used over Python today by commercial developers that ship
> software that everyday people pay for--like us).
Thousands of people ship software every day that people pay for using CPython.
I am extremely grateful to the CPython devs for making such an awesome language
available as Free Software so that so many of us can benefit.
I look forward to seeing the source code and trying out your new iteration of
TinyPy, and I'm especially excited reading your comparisons to lua.
Cheers,
Chris.
-------------------
http://mccormick.cx
1) Will it be written in C or C++?
2) Will it compile with MinGW on Windows (as opposed to -- or along with -- MSVC)
tp_result tp_compile( const tp_buf& inSrcBuf, const char* inDesc, tp_buf* outTPC, tp_Console* inConsole );
Internally, it's implemented via a simple multi-threaded dispatching system, where each thread has its own tp_Interpreter that's been bootstrapped to run as a compiler (the number of threads created is trivially changed and is set to be the number of cores on the system). So now when an interpreter VM executes exec(), it now simply calls tp_compile() above (instead of calling back into itself). You guys will see when you get a look at the code, but this approach has simplified how things work and made the footprint of a tp_Interpreter very small since it doesn't have to carry around its compilation code anymore. I took a lot of care to make sure all the stuff can scream on a well-endowed, multi-core system. In other words, if you had an 8 core system, you could be running 7 interpreters at the same time while occasional calls to tp_compile() (either from the running interpreters or from the user) won't have any impact on performance -- well, y'all get the idea. :)
As for MinGW, we're talking plain-vanilla C99 and C++ code (and no templates or other packages) so this should compile under anything that can compile win32 (which would include mingw). In fact, I've taken the liberty and basically no longer use the old way tp was being build. Now, it's simply a set of files intended to be build via the the Xcode project file, MSVS project file, or makefile. The "interpreter" app is now simply a page of source that makes a tp_Interpreter, feeds it a stock tp_FileSys and tp_Console object, and calls the tp_Interpreter instance method to execute the given pathname.
There's more cool stuff we've added, but I'd say it's best categorized as growing tinypy into:
(a) something a serious commercial developer will consider
(b) something a serious developer will consider contributing to (modules, performance, compiler, etc)
Just a couple thoughts: - MIT license is quite important for tinypy to be useful. Other licenses are too restrictive or too obscure to be generally useful. - I think we'll all be quite interested to take a look at what you've got put together. - "For example, modules are not permitted to have any static/global variables ..." What does that mean? Best I understand a modules contents is all global variables? - "I just don't want to be in a situation where SoundSpectrum has to quibble with people or convince anyone of anything." I totally understand. I think the people here will need to see what SS has created, and if it matches what we all want as tinypy
then it could become the new edition of tinypy. If it doesn't really match what we want, then it'll become it's own python variant. Either way a situation where SS was at odds with anyone is to be avoided. Cheers! -Phil |
--- On Fri, 2/18/11, Andy O'Meara <and...@gmail.com> wrote: |
|