Hi, I'm a relative outsider to core development (I'm just a Plone release manager), but'll allow myself a couple of questions. Feel free to ignore them, if you think they are not relevant at this point :-) I'd note that I'm generally enthusiastic and supportive of the proposal :) As a data point, I can add that all tests of Zope 2.12 / Plone 4.0 and their dependency set run fine under Unladen Swallow.
On Wed, Jan 20, 2010 at 11:27 PM, Collin Winter <collinwin...@google.com> wrote: > We have chosen to reuse a set of existing compiler libraries called LLVM > [#llvm]_ for code generation and code optimization. Would it be prudent to ask for more information about the llvm project? Especially in terms of its non-code related aspects. I can try to hunt down this information myself, but as a complete outsider to the llvm project this takes much longer, compared to someone who has interacted with the project as closely as you have. Questions like: - Who holds the copyright, is there a foundation or is there a risk of the project getting into trouble because of copyright issues? - What licence is the code and the tools under and what affect does that have on the code generated by the JIT compiler? - What's the bus factor of the project? Is it in practice dependent on a single BDFL or a single company like Apple? - What's the status of the documentation or web presence? Does the project consist only of developers or has it been able to attract people from other backgrounds? On the code related side you described general enthusiasm and support of the llvm community, but noted that some aspect of it aren't as mature as others. You also noted that given Python's good test coverage you have been able to find problems in llvm itself. This raises some questions to me: - Does the llvm project employ automated test driven development, are there functioning nightly test runs? - What do they do to ensure a good quality of their software, how many critical regressions have their been in final releases? - Is there a clearly distinguished core and stable part of the project that is separate from more experimental ideas? - What's the status of their known bugs? Do "important" issues get resolved in a reasonable time? - Did they have security problems related to their codebase, have those been handled in a professional manner? There's probably more of these questions you tend to ask yourself somewhat implicitly when trying to assess how mature and stable a given open-source project is. My feeling is that llvm is still a slightly new and up and coming project and it would be good to get a better idea about how mature they are. > Platform Support > ================ > > Unladen Swallow is inherently limited by the platform support provided by > LLVM, > especially LLVM's JIT compilation system [#llvm-hardware]_. LLVM's JIT has the > best support on x86 and x86-64 systems, and these are the platforms where > Unladen Swallow has received the most testing. We are confident in > LLVM/Unladen > Swallow's support for x86 and x86-64 hardware. PPC and ARM support exists, but > is not widely used and may be buggy. How does the platform support work with new versions of operating systems? If for example a Windows 8 is released, is it likely that llvm will need to be adjusted to support such a new version? What kind of effect does this have on how a Python release can add support for such a new version? Is there evidence from past releases that give an indication on the time if costs the llvm team to support a new version? Do they only add support for this to their latest release or are such changes backported to older releases? The Windows support doesn't seem to be a specific focus of the project. Are there core developers of llvm that run and support Windows or is this left to outside contributors? Is the feature set the same across different operating systems, or are there areas in which they differ in a significant manner? > Managing LLVM Releases, C++ API Changes > --------------------------------------- > > LLVM is released regularly every six months. This means that LLVM may be > released two or three times during the course of development of a CPython 3.x > release. Each LLVM release brings newer and more powerful optimizations, > improved platform support and more sophisticated code generation. How does the support and maintenance policy of llvm releases look like? If a Python version is pegged to a specific llvm release, it needs to be able to rely on critical bug fixes and security fixes to be made for that release for a rather prolonged time. How does this match the llvm policies given their frequent time based releases? Sorry if those questions aren't appropriate. It's what comes to my mind when thinking about a new and quite heavy dependency :-) Hanno _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com